Strumenti Utente

Strumenti Sito


it:start

FIXME Questa pagina non è ancora completamente tradotta. Chi può potrebbe aiutarne il completamento.
(Rimuovere questo paragrafo a lavoro completato)

AgOpenGPS Dokuwiki

AgOpenGPS

* ATTENZIONE *

Questo programma è utilizzato per discutere e conoscere gli algoritmi e le tecniche relative all’ agricoltura di precisione. Non deve essere utilizzato in alcun modo nel mondo reale, è pensato solo per essere un simulatore.

L’uso di AgOpenGps su qualsiasi mezzo non è consigliato, è anzi vietato, sia che si voglia usarlo fuori strada che su strada.

Non può essere usato in sicurezza, non sono presenti limiti per garantire la sicurezza, integrati o impliciti.

AgOpenGPS è un esempio di programmazione in #C a solo scopo dimostrativo e non deve essere utilizzato per altri fini.

Software per l'Agricoltura di Precisione e Controllo di Sezione

Questo software legge le stringhe di dati NMEA al fine di registrare e mappare la posizione a scopo agricolo. Possiede fino a 8 Controlli di Sezione per gestire gli elementi utilizzati nell’ applicazione di prodotti, evitandone un uso eccessivo.

Può mostrare anche il delta angolare e la distanza dalla linea di riferimento, permettendo così di seguire un percorso lineare A – B e la linea di contorno del campo.

È inclusa un' applicazione per pc, una cartella con i file sorgente, assieme ai protocolli UDP, TCP/IP, e un simulatore seriale di stringhe NMEA.

Configurazione passo-passo di software ed hardware

Questa guida sta per subire notevoli cambiamenti, quindi al momento potrebbero essere presenti errori e sviste. Attenersi alla seguente procedura

Per utilizzare la funzione di sterzo automatico presente in AgOpenGps sono necessari 5 componenti:

  1. Un tablet/pc Windows
  2. Un Ricevitore GPS che emetta messaggi NMEA 0183
  3. Il PCB v2 di Brian

Portatile/Tablet

AgOpenGPS gira su sistema operativo Windows. Usa il .NET framework (4.0 minimo).

La rosluzione minima dello schermo affinché AgOpenGps funzioni è 1024 x 768, hd-ready.

E' preferita la risoluzione full-hd 1920 x 1080, risoluzioni maggiori, come quelle dei portatili Acer transformer 300, Acer Switch 12, Microsoft Surface, o Samsung, funzionano anche meglio.

Il Touchscreen rende più facile l'uso di AgOpenGPS.

Nella scelta del tablet, assicurati che abbia almeno una porta USB libera e che il caricabatterie sia sempre collegato. E' necessario caricare il tablet e mantenerlo connesso ad un dispositivo esterno (arduino) allo stesso tempo. Altra cosa da tenere in considerazione è la luminosità dello schermo, 1000 NITS sono l'ideale. Agopengps farà uso del cavo ethernet in futuro, quindi se devi cambiare pc/tablet tienilo a mente.

Scarica il software da questo indirizzo https://github.com/farmerbriantee/AgOpenGPS Ci sono alcuni file:

agopengps: è una versione stabile anche se superata

  • Click AgOpenGPS:
  • Click pulsante verde: Clone or download / Download zip
  • unzip

La cartella contiene:

  • AgOpenGPS: il software
  • Applicazione: AgOpenGPS -questa è l'icona del software →
  • Source: -il codice sorgente
  • Modules: -qui sono contenuti gli sketch di arduino

GPS e guida visiva

Per cominciare puoi usare qualsiasi GPS che emetta dati NMEA attraverso una porta (seriale) USB Per informazioni ulteriori guarda la sezione miglioramenti.

Ora puoi scorrere tra i menu e le configurazioni del software. Se vuoi utilizzarlo semplicemente come guida per fertilizzare o spargere il concime, ora hai tutto quello che ti serve.

Controllo delle Sezioni

https://www.youtube.com/watch?v=QM06A332rwU

Hai bisogno di un arduino UNO/NANO

a relay board

Vai a questo indirizzo https://www.arduino.cc/ e scarica Arduino IDE.

è necessario per i driver USB e la configurazione del tuo arduino.

Troverai una versione diversa per lo sketch del controllo delle sezioni, che non è la stessa dello sterzo automatico.

Puoi usarne una qualsiasi per lo sterzo automatico (è presente anche quella che utilizza la comunicazione ethernet)

Vai nella cartella di agopengps/Autosteer e apri lo sketch autosteer.ino

apri lo sketch relays.ino e togli il commento a tante linee quante sono le sezioni che vuoi controllare

void SetRelays(void)
 {
    //use either "relay" for sections, or "uTurn" for uTurn signals and relays
    if (bitRead(relay,0)) bitSet(PORTD, 5); //Digital Pin 5
    else bitClear(PORTD, 5); 
    //if (bitRead(relay,1)) bitSet(PORTD, 6); //Digital Pin 6
    //else bitClear(PORTD, 6); 
    //if (bitRead(relay,2)) bitSet(PORTD, 7); //Digital Pin 7
    //else bitClear(PORTD, 7); 
    //if (bitRead(relay,3)) bitSet(PORTB, 0); //Digital Pin 8
    //else bitClear(PORTB, 0); 
    //if (bitRead(relay,4)) bitSet(PORTB, 1); //Digital Pin 9
    //else bitClear(PORTB, 1); 
    //if (bitRead(relay,5)) bitSet(PORTB, 2); //Digital Pin 10
    //else bitClear(PORTB, 2); 
    //if (bitRead(relay,6)) bitSet(PORTC, 4); //analog Pin A4
    //else bitClear(PORTC, 4); 
    //if (bitRead(relay,7)) bitSet(PORTC, 5); //Analog Pin A5
    //else bitClear(PORTC, 5); 
  }

In questo codice vedrai sempre a quali pin connettere i tuoi relé ( pin 6-10 and a4,a5)

Sterzo Automatico

Se vuoi utilizzare lo sterzo automatico “base” fai riferimento a questo schema di collegamentoautosteer_switch_minimum_config.jpg

Componenti minimi richiesti
convertitore da 12V a 5V
IBT2 motor driver(BTS7960)
Sensore per l'angolo di sterzo(Delphi ER10031)Click for more info
Microswitch o pulsante
Arduino Nano
Motore elettrico (fai riferimento a sezione motore elettrico)
Se non vuoi installare un motore elettrico all'interno dell'abitacolo e sei interessato ad un sistema di sterzatura idraulicasterzo idraulico )
Cavetteria per ardunio conn vari terminali(m/m, m/f, f/f)
Breadboards
Connettori elettrici e cavetti
materiale per saldatura a stagno
Parti opzionali
scheda di espansione SHIELD per Arduino Nano
convertitore da 12v a 24v (se vuoi usare un motore a 24v)
multipla usb a 12V (per alimentare altri componenti)

Se vuoi un sistema di sterzatura automatica capace di compensare l'inclinazione del trattore sulle colline e/o migliorare la direzione (heading) del trattore unendola a quella generata dal segnale GPS, fai riefimento a questo schemaautosteer_switch_full_20config.jpg

Componenti richiesti
tutto quello che è richiesto nella configurazione minima più…
BNO 055 IMU
MMA 8452 Inclinometro
Componenti opzionali
ADS 1115 Convertitore Analogico-Digitale More info

  • L'IMU BNO055 funziona in maniera affidabile solo quando è posizionato il più distante possibile dal metallo. Solitamente è posizionato sul tettuccio, all'interno di un contenitore impermeabile, oppure molto in alto nel parabrezza. Il cavo che connette questo sensore ad arduino non deve superare i 50 cm, tieni a mente queste cose mentre assembli il tu sistema.
  • Ci sono due versione del sensore MMA 8452/1, una a 3,3v e l'altra a 5v. Se usi la versione a 3,3v puoi alimentarla direttamente dal pin 3,3v di arduino, ma metti in serie un resistore da 330 ohm al collegamento SCL ed SDA.
  • Se non vuoi usare il convertitore Analogico-Digitale ADS (ALTAMENTE SCONSIGLIATO!) connetti il cavo del segnale dal sensore per l'angolo di sterzo al pin A0 di arduino.

Assemblato il tuo sistema vai su https://www.arduino.cc/ e scarica Arduino IDE.

è necessario per i driver di riconoscimento di arduino e per la configurazione dello stesso.

Vai nella cartella in cui hai scaricato AGopenGps, entra nella sottocartela / Modules e apri indifferentemente autosteer_switch o autosteer_button. Apri la cartella con il nome del file che hai scelto e apri il file .ino che vi troverai all'interno.
Scegli Autosteer_switch.ino se pensi di installare uno microswitch che si aziona, permettendo l'alimentazione, quando il motore elettrico si aggancia al volante.
Scegli Autosteer_button.ino se pensi di installare un pulsante che tolga o dia l'alimentazione al motore.
Una volta aperto con Arduino IDE, ti troverai nella zona di configurazione dello sketch. Queste opzioni dovranno essere modificate per adattarsi al tuo sistema di sterzatura automatica. Per modificare questi parametri dovrai sostituire il numero di fianco all'istruzione con uno che corrisponda al tuo sistema. Preparare il codice per Arduino
Lascia il parametro SteerPosZero così com'è per adesso. Collega Arduino al pc. Apri Arduino IDE ed assicurati di selezionare la porta COM a cui è collegato il tuo arduino. Scegli la porta corretta (se hai dei problemi nel collegamento cerca su google come connettere Arduino tramite porta COM) Se usi una scheda Arduino obsoleta potresti dover cambiare l'impostazione del processore. Vai su Strumenti/processore e scegli atmega328 old bootloader. Prova a caricare il codice.


Tutorial su https://www.arduino.cc/en/Guide/ArduinoUno o https://www.youtube.com/watch?time_continue=11&v=d8_xXNcGYgo


Se hai caricato il codice con successo e tutto è configurato, allora apri AgOpenGps e prova a connettere Arduino al programma.
Apri prima il programma e poi collega arduino.
Cicca sull'icona a forma di ingranaggio in basso a destra. {gear_button.jpg?200}}
Apri PORTS, scegli la porta corretta per lo sterzo automatico e premi connect. Una volta connesso, clicca sull'icona a forma di ingranaggio e apri GPS IMU. Apri il pannello chiamato gps imu.
Assicurati di essere su un piano perfettamente dritto e premi il pulsante centrale che so trova sotto il Roll/Pitch Zero
Se non lo hai ancora fatto clicca nuovamente sull'icona a forma di ingranaggio e inserisci le caratteristiche del tuo veicolo
Clicca ancora una volta sull'icona ingranaggio e seleziona il pannello di controllo dello sterzo automatico “autosteer”
Clicca sul pannello “drive”drive_config.jpg
(parte obsoleta e non più presente nelle ultime versioni di AOG) Assicurati che le ruote siano dritte e clicca sullo Steer Wizard
Guarda i dati grezzi che arrivano dal sensore di angolo di sterzo. steer_wizard.jpg
Se il valore letto non è 0 torna indietro e clicca su Steer Config. steer_config.jpg
Regola su e giù il valore 0 del sensore di angolo dello sterzo fino a che non leggi 0 dal sensore. Qualora non ci riuscissi, apri lo sketch di Arduino e modifica il valore “steerposzero” e ricarica lo sketch su Arduino. Chiudi Arduino IDE, apri AgOpenGps e esegui nuovamente la stessa procedura per ottenere 0 quando le ruote sono dritte.
Una volta che il sensore legge 0 a ruote dritte, chiudi il wizard e clicca sul pulsante rosso “DRIVE”. Il pulsante diventrà verde e il motore per lo sterzo dovrebbe rispondere quando fai scorrere la barra. Muovi la barra a destra e a sinistra e assicurati che il veicolo risponda correttamente agli input inviati. Qualora ciò non fosse, potresti dover invertire le letture del sensore per l'angolo di sterzo dal codice di Arduino, chiudi agopengps, ricarica il codice corretto e prova ancora.
Una volta che il veicolo risponde correttamente agli input, apri lo steer wizard e segui le istruzioni.
Ottenuto il valore dei conteggi per grado, apri il pannello “steer”. Inserisci il valore dei conteggi per grado. Max steer angle è il massimo grado di sterzata che vuoi per il tuo veicolo. Minimum pwm è il valore minimo di potenza che vuoi venga inviato al motore per girare lo sterzo. (previene i rumori del motore quando gli viene inviato il segnale PWM). A questo punto gli altri parametri dovranno essere configurati per tentativi. Qui ci sono alcuni settaggi d'esempio su diversi motori e diversi driver per il controllo del motore. FarmerBrianTee ha molti video su youtube che spiegano tali parametri. https://www.youtube.com/watch?v=rYBWaVwWf


Alimentatore stabile: DC-DC buck converter che possa fornire 5V, potresti aver bisogno di un secondo convertitore per avere 12v stabili con cui alimentare un hub USB e l'inclinometro. Sensore per l'angolo di sterzata (Altezza ruota): Delphi ER10031

o per i Canadesi uno più economico ($5.99) disponibile da Princess Auto Automotive Headlight Cover Lifter Sensorhttps://www.princessauto.com/en/detail/automotive-headlight-cover-lifter-sensor/A-p8735755e

Driver per il controllo del motore: Cytron Technologies MD30C o IBT_2 43A Motor Driver conosciuto anche come BTS7960B

Migliorare Agopengps

Configurazione del software

Come funziona AgOpenGPS

1. il GPS invia la posizione e la direzione a AOG.

2. Arduino, tramite il BNO055 o il Brick connesso con usb, invia la direzione a AOG.

3. AOG genera la direzione, unendo quella calcolata partendo dalla posizione corretta in questo istante con una calcolata qualche metro indietro e la direzione indicata dal BNO o dal Brick.

4. La linea AB è un punto e una direzione - ma pensala come una linea con due punti. Il software calcola la distanza tra il punto di rotazione del veicolo e la sua distanza con il punto più vicino alla linea AB. Viene identificato anche un punto più avanti sulla linea, chiamato punto di “look ahead” o punto di arrivo dove il veicolo dovrà trovarsi. Then you draw a circle using the heading of the vehicle, and the goal point where the radius is twice the distance on the other side of the ABLine twice the distance the vehicle is away. The circle is tangent to the pivot point. Using the wheelbase of the vehicle you can then calculate the required steering angle to follow that circle to your goal point.

5. That steering angle is sent to the arduino, and the distance away from the AB Line (although the calculations are already done, it isn't really needed but rather is used to turn steering control off and on.

6. The arduino sends the roll side to side ( the DOGS2 or MMA8450) to AOG and then AOG changes the antenna position to match the movement of the antenna as it leans over.

7. The another job the arduino does is to make sure the steering angle sensor value equals the steering setpoint set by AOG. The PID loop keeps moving the steering wheels to match that value sent.

8. The majority of the calculations and smarts are in AOG. The modules, like the auto steer module, only have to control specific tasks - which makes them significantly easier to build.

9. There is a lot more going on in AOG, like boundaries, UTurn, OpenGL, GUI, and all the machine control stuff for AgraBot.

Simulator Mode

If using the simulator make sure the antenna is right over the pivot point - set pivot to antenna distance to about 5 cm. Set the wheelbase to around 450 cm. The simulator will use the settings from the vehicle loaded, not its own, so best to save one specifically for the sim.

Start a new field to work with simulator - do not change the coordinates of the sim after starting a field.

Turn off the sim after you played with it and restart agopengps for real work with gps plugged in.

It may cause problems when connecting to a real gps later.

Button Functions

Keyboard Functions

Sim:

  • L - Rest
  • K - Speed up
  • J - Stop
  • H - slow down
  • B . turn left
  • M - turn right
  • N - Zero steering

Ag:

  • F - new Job
  • A - Autosteer
  • D - Section Auto On/off
  • A - Autosteer

First Test

Open agopgengps.exe, it is found in the application folder and has a little blue icon.

GPS simulator simulates NMEA GPS signals and will open automatically. You can tell by watching the GPS info box. The latitude will read 53.xxx and longitude will read -111.xxx and will say PPS fix. You can enter local simulator coordinates by going to the File menu at the top Left of the screen. This will require a restart of the program however.

If you want to connect a GPS receiver; config>ports will open the ports dialog box, from there you can select which com port your receiver is plugged into.

Creating Field Boundaries and Headlands

Boundary determines the outside edge of the field. If using Auto section control the sections will not work outside the field boundary. You shouldn't be driving outside the field boundary as there are often hedgerows and trees;-)

Headland is for controlling U-Turn functions. The headland can only be created after a field boundary is created.

Starting a Field Hit Start or File>Start Field then >Create New. Enter what you want to call the field. Then click start again then>Boundary.

Option A (driving) If you are driving around the outside of the field click >Outer then depending on if you are driving around the field clockwise or counterclockwise click the question mark/arrow button to change which side of tractor the boundary is being drawn (default is right side). Then click >Go. Then click >Record and drive around the outside edge of the field. When you've completed your lap around the field click >Done. Now your Boundary is complete.

Option B (Google Earth) If you want to create a boundary using Google Earth… Click> Google Earth and then once Google Earth opens click >add polygon or >add path. The pop-up window that appears has to stay open while you are drawing a polygon or path. Once you've outlined your field boundary, title it in the pop-up window and click >OK>File>Save>Save Place As. Save as KML file and not the default KMZ to your desired location. Then go back to AgOpenGPS and click >Load KML and voila your boundary is ready to go.

Creating a Headland (this feature is currently unavailable. For now adjust the headland in U-Turn settings) This can only be done after a boundary is created. And you must be in AB or AB Curve mode for this to work.

Click >Start>Headland then choose how many tool widths you want in your headland and what percentage you would like your headland to be. In this window you can also edit the headland manually. Click > check mark icon and you're all set.

Errors

If something went wrong (eg. incorrect settings) and AgOpenGPS won't start properly.

There is a setting file which is stored in

C:\Users\YourUserNameHere\AppData\Local\AgOpenGPS

Just delete the whole directory and start again.

Glossary

AOG: Quite simply Ag Open GPS, an open source computer program for field guidance, navigation, and mapping started by Farmer Brian Tee

Arduino: refers to an open-source electronics platform or board and the software used to program it. (Techopedia)

Auto Steer Switch: A switch that you install to cut off the power to the auto steering motor (cordless drill, phidgets motor, spool valves etc.) Generally installed on the steering motor mounting frame so that it activates when you move the steering motor away from the steering wheel. This switch does not control the Auto steer button/icon on the AgOpenGPS screen it only turns off the electrical current flowing to your steering motor.

BNO055: an IMU made by Adafruit

Brick: In these threads we're talking about a specific IMU made by TinkerForge

DOG2: An inclinometer made by TE connectivity

GitHub: A website where programmers can post their Open Source Code and collaborate with one another on certain projects.

IMU: Inertial Measurement Unit is an electronic device that measures and reports a body's specific force, angular rate, and sometimes the magnetic field surrounding the body, using a combination of accelerometers and gyroscopes, sometimes also magnetometers. IMUs are typically used to maneuver aircraft, including unmanned aerial vehicles (UAVs), among many others, and spacecraft, including satellites and landers. Recent developments allow for the production of IMU-enabled GPS devices. An IMU allows a GPS receiver to work when GPS-signals are unavailable, such as in tunnels, inside buildings, or when electronic interference is present.[1] A wireless IMU is known as a WIMU.[2][3][4][5] (Wikipedia)

Inclinometer: an instrument for measuring angles of slope (or tilt), elevation or depression of an object with respect to gravity. (Wikipedia)

L2: One of two frequencies sent out to a rover from an RTK enabled base station to correct positional inaccuracies in GPS location. L1 is the other frequency. L5 is another frequency to be released.

Non Reaction: With non-reaction steering units there is no corresponding movement of the steering wheel when the driver is not steering the vehicle.

OC: Open center steering units have open connection between pump and tank in the neutral position. In open center steering systems, pumps with fixed displacement are used.

Reaction Steering: With reaction steering units any external forces acting on the steered wheels result in a corresponding movement of the steering wheel when the driver is not steering the vehicle.

RTK: stands for Real Time Kinematics satellite navigation is a technique used to enhance the precision of position data derived from satellite-based positioning systems (global navigation satellite systems, GNSS) such as GPS, GLONASS, Galileo, and BeiDou. It uses measurements of the phase of the signal's carrier wave, rather than the information content of the signal, and relies on a single reference station or interpolated virtual station to provide real-time corrections, providing up to centimetre-level accuracy. With reference to GPS in particular, the system is commonly referred to as Carrier-Phase Enhancement, or CPGPS.[1] It has applications in land survey, hydrographic survey, and in consumer unmanned aerial vehicle navigation. (Wikipedia)

WAAS: Wide Area Augmentation System is a correction to the GPS signals implemented primarily in aviation. This is known internationally as an SBAS system.

WAS: Wheel Angle Sensor A wheel angle sensors job is to know the exact location of the steering wheels

Work Switch: Enables/disables “painting” on the AgOpenGPS coverage map. It is a physical switch that you can install (on a remote hydraulic lever that raises and lowers a tillage implement for example) in order to avoid pushing the the manual button on the touchscreen.

XTE: Cross track error. The distance away from an AB line. =

other Wikis

Pictures Gallery of some farmers' installations pictures:start

it/start.txt · Ultima modifica: 2019/09/06 13:49 da gianlucapd