Wegmessung (Odometrie): Unterschied zwischen den Versionen
Pemiso (Diskussion | Beiträge) (→Video) |
Pemiso (Diskussion | Beiträge) (→Motor controller (PID)) |
||
Zeile 78: | Zeile 78: | ||
</gallery> | </gallery> | ||
− | = Motor | + | = Motor-Regler (PID) = |
− | + | Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot->Motor control): | |
<gallery> | <gallery> |
Version vom 15. Juli 2015, 01:20 Uhr
Inhaltsverzeichnis
Zusammenfassung
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).
Momentan wird die Odometrie folgendermaßen genutzt:
- Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.
Pinbelegung der Ardumower Motor-Encoder
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:
grün ---- GND braun ---- VCC blau ---- Odometry1 (Kanal 1) lila ---- Odometry2 (Kanal 2)
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:
odometry1 --- 4.7k --- 5v odometry2 --- 4.7k --- 5v
Signalverlauf der Odometrie-Encoder
Vorwärts: Pin 1 zeigt Übergang LOW->HIGH und Pin 2 = HIGH Rückwärts: Pin 1 zeigt Übergang LOW->HIGH und Pin 2 = LOW
Encoder im Eigenbau
Circuit
VCC pinArduino +--13 KOhm----+-------Collector Emitter---GND +--380 Ohm------------Anode Kathode---GND
Differential drive
By adding (integrating) Odometry speed, we can calculate distance and heading.
Distance per wheel:
left_cm = ticksLeft / odometryTicksPerCm right_cm = ticksRight / odometryTicksPerCm
Heading:
wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm odometryTheta += wheel_theta
Overall distance:
avg_cm = (left_cm + right_cm) / 2.0 odometryX += avg_cm * sin(odometryTheta) odometryY += avg_cm * cos(odometryTheta)
Ground measurement error
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by sensor fusion.
Motor-Regler (PID)
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot->Motor control):
Video
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)