Wegmessung (Odometrie): Unterschied zwischen den Versionen
Pemiso (Diskussion | Beiträge) (→Encoder Pinbelegung der Ardumower Motoren aus dem Shop)) |
Pemiso (Diskussion | Beiträge) (→Signal of odometry encoders) |
||
Zeile 29: | Zeile 29: | ||
odometry2 --- 4.7k --- 5v | odometry2 --- 4.7k --- 5v | ||
− | = | + | = Signalform der Odometrie-Encoder = |
<gallery> | <gallery> | ||
File: ardumower_odometry_encoder.jpg | File: ardumower_odometry_encoder.jpg | ||
</gallery> | </gallery> | ||
− | + | 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 | |
= Do-It-Yourself encoders = | = Do-It-Yourself encoders = |
Version vom 15. Juli 2015, 01:16 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
Signalform 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
Do-It-Yourself encoders
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 controller (PID)
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot->Motor control):
Video
No video yet (odometry is currently under development)