PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GPS Robot, erste Schritten mit Trackpoint fahren



RP6conrad
01.11.2016, 17:59
Ich wollte hier gerne meinen umgebauten RC-auto forstellen : Das Fahrzeug hass jetzt einen GPS, IMU und kan dann auch autonom ein Trackpoint anfahren. In folgende video kannst du sehen wie den Robot immer versucht eines festes Trackpoint an zu fahren. Den Robot kann nur die Richtung steuern, die Geschwindigkeit wird von mir selbst mit eine RC-sender eingestellt.
GSP ist eine (alte) Sirfstar III mit ein updaterate van 1 Hz. IMU ist ein MPU9250 (9 dof). RC-car ist von Tamiya, und ist eigentlich erstaunlich schnell (No load speed ca 60 km/h). Steurung wird mit ein Nucleo STM32 F401 @ 84 MHz gemacht. Algoritme ist siemlich einfach : Mit den GPS daten wird die gewunschte "Heading" jedes mal neu berechnet. An Hand von das Kompass wird dan die Ist Heading und Soll Heading verglichen, und den Steur servo wird nachgeregelt.

https://www.youtube.com/watch?v=yRVqLKYsAZ8
Grussen aus Belgien !!

morob
01.11.2016, 20:04
schickes teil, grins, deshalb nehm ich ein crawler. der ist nur 5km/h schnell :D

RP6conrad
03.11.2016, 11:04
Hier noch ein "How To" video wie NMEA-tracks in Google Earth eingeladen werden :
https://www.youtube.com/watch?v=85jZPnwTEyM

morob
03.11.2016, 17:38
Algoritme ist siemlich einfach : Mit den GPS daten wird die gewunschte "Heading" jedes mal neu berechnet. An Hand von das Kompass wird dan die Ist Heading und Soll Heading verglichen, und den Steur servo wird nachgeregelt.

es gib für arduino eine gps bibliothek 'TinyGPS' die macht alles. bei zwei gps punkten kann man die richtung und entfenung ausrechnen.

RP6conrad
04.11.2016, 06:47
Eigentlich ist das Teil (heading / distance to trackpoint) nicht dass grosste Problem. Für genaues und schnelles fahren muss ist es auch notwendig um mit "dead reckoning" die Ist-pos mit eine schnelleres update zu errechnen : den GPs lauft immer hinterher. Die Ist-pos von GPS ist eigentlich immer veraltet (mit diesen GPS minimal 1 sekunde). Bei hohere Geschwindigheit (Beisiel 5 m/s) wird das die Herausforderung. Aber gut, jetzt laufen die Versuchen weiter mit ein neues GPS (U-blox M8n, update 10 Hz).

morob
04.11.2016, 08:15
wie gesagt crawler fährt maximal mit 5km/h, sind 1,388m/s.

ich muss das mal testen.

RP6conrad
13.11.2016, 20:33
Hier das naechste video von mein GPS-car. De Robot versucht jetzt ein Rechteck abzufahren mit seite 12*8. GPS ist ein Ublox M8N mit 10 Hz update.

https://www.youtube.com/watch?v=01hAJ5zExT4&t=25s

iBot
14.11.2016, 21:49
Hi conrad :p
Funktioniert ja schon recht ordentlich. Wie machst du das mit dem Mag?
Ich habe so ziemlich das selbe Projekt (nur mit Raspberry und einer Wiese als Testgelende ;) ) aber rießige Probleme mit dem Kompass.
Verwendest du auch den allseits bekannten HMC5983?
MfG iBot

RP6conrad
15.11.2016, 06:51
Ich verwende eine IMU (Gyro, ACC und Kompas met alle 3 Achsen) MPU9250. Mit diese 9 Mess Ergebnissen wird dan Yaw (= Richting), Pitch und Roll berechnet. Den Trick ist das die Schnelle Aenderungen von Gyro wirden erfasst, und um den Drift von Gyro zu vermeiden wird dan Die Kompasdaten genutzt. Aber dennoch ist eine Kalibrierung von Kompass eine Notwendigkeit ! Alle statische Felden die den Robot selbst verursacht (DC-Motor !) mussen korrigiert werden ! Das macht men durch einen Kreis zu fahren und die Daten von X/Y Magnetfeld zu speichern. Damit kannst du den Offset von jede Achse berechnen. Offset = (Max Wert+Min Wert)/2. Jetzt kann diesen Offset verwendet worden bei alle Messungen. Hier mehr info zu das thema : https://github.com/kriswiner/MPU-6050/wiki/Simple-and-Effective-Magnetometer-Calibration Ich verwende auch die Lib vür MPU9250 von diesen Site.
MFG, RP6Conrad !

morob
15.11.2016, 08:43
@ibot: wie weit ist dein kompass von der elektronik entfernt?

iBot
15.11.2016, 13:24
Ok, also das mit dem Offset hab ich komplett vergessen. Wenn ich das auf der Git-Hub-Seite richtig sehe hat der auch noch korrekturen für die Linearisierung gemacht... Hab mir da heute auch schon ein paar Gedanken in der Schule gemacht und auch schon einige Ideen. Danke für den Denkanstoß ;)
Allerdings verstehe ich das mit dem Offset nicht ganz, Offset ist doch eigenlich nur Min_Wert und dann Raw_Wert-Offset. In dem Programm das du verlinkt hast wird das irgendwie *-genommen?
Oder ist da dann schon eine Linearisierung mit verbunden?
Ich werd mal meine Ideen ausführen und mich dann nochmal melden, vlt mach ich besser noch n eigenen Thread auf...

@morob: 12cm zum Raspberry und 20cm zu Leitungen >1A bzw. dem Brushless-System.
Also eigentlich weiter als beim RP6Conrad :D

Edit: Was mir gerade noch eingefallen ist, ist dass die Stange auf der der Mag sitzt aus Eisen ist. Das ist natürlich auch verbesserbar :D
32201

morob
15.11.2016, 14:23
@ibot sieht schick aus. was hast du als basis genommen.

iBot
15.11.2016, 16:59
Danke. War mal ein 1:10 Rhino II von Reely wurde aber getunet ;)
Wenn es läuft werd ich die ganzen Umbaumaßnahmen mal zusammenfassen.

RP6conrad
16.11.2016, 06:58
Den basis offset ist :
// Get hard iron correction
mag_bias[0] = (mag_max[0] + mag_min[0])/2; // get average x mag bias in counts
mag_bias[1] = (mag_max[1] + mag_min[1])/2; // get average y mag bias in counts
mag_bias[2] = (mag_max[2] + mag_min[2])/2; // get average z mag bias in counts
Spater wird dan noch korrigiert mit die mRes (= empfundlichkeit in mGauss/rawValue) und MagCalibration (= Linearisierung ). Zum Anfang konnen sie sicher die RawWerte benutzen.
Ihre Heading (in Radialen) wird dan gegeben durch :
Atan2((Rawvalue_X-Magbias_X),(Rawvalue_Y-Magbias_Y))
Für ° zu bekommen nochmal multiplizieren mit 180/PI.

RP6conrad
02.12.2016, 21:03
Und nochmal einen update von meinen GPS-car : Jetzt hat er noch eine WS2812 LEDstrip bekommen, und waypoints teachen ist auch machbar. Static GPS-accuracy ist vermessen : in freien Feld ist das +/- 1 Meter, in der nahe von Gebaude oder Baumen wird das schlechter : +/- 3 meter.

https://www.youtube.com/watch?v=5vCAOM6f5UE

Kanonenaufspatzen
07.12.2016, 15:46
Wow, hätte nicht gedacht, dass er den GPS Slalom hinbekommt. So genau kann man das ganze kalibrieren? +/- 1 Meter ist echt wahnsinn.

morob
07.12.2016, 17:46
nicht schlecht, man kann es über die geschwindigkeit und die update frequenz des gps regeln.
bei 1hz kannst du nicht so schnell fahren wie bei 10hz.

RP6conrad
07.12.2016, 19:15
Wow, hätte nicht gedacht, dass er den GPS Slalom hinbekommt. So genau kann man das ganze kalibrieren? +/- 1 Meter ist echt wahnsinn.
Ich bin erstaunt durch die Genauigkeit von so eine (moderne) GPS module. Ab 0,8 m/s bekommt men auch noch die Himmelsrichtung sehr genau (bei 10 Hz, das sind dan 8 cm Strecke) ! Auch die Speed Ausgabe ist sehr genau. Hier einige Graphen mit vergleich von Wheelencoder / GPS Speed und Magnet Kompass/Gyro mit GPS Heading : 3225832259Und das voor ein 12 € GPS !!!

RP6conrad
22.12.2016, 11:43
Und wiederum ein update : jetzt kan den rover richtig heizen !
https://www.youtube.com/watch?v=yMbmp7c2mrw Geschwindigkeit bis 8 m/s !

morob
22.12.2016, 11:56
schicke software :D