Wegmessung (Odometrie): Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
(Signalform der Odometrie-Encoder)
(Do-It-Yourself encoders)
Zeile 37: Zeile 37:
 
  Rückwärts: Pin 1 zeigt Übergang LOW->HIGH und Pin 2 = LOW
 
  Rückwärts: Pin 1 zeigt Übergang LOW->HIGH und Pin 2 = LOW
  
= Do-It-Yourself encoders =
+
= Encoder im Eigenbau =
 
<gallery>
 
<gallery>
 
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)
 
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)

Version vom 15. Juli 2015, 01:17 Uhr

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 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)