Wegmessung (Odometrie): Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
(Circuit)
(Encoder im Eigenbau)
Zeile 39: Zeile 39:
 
= Encoder im Eigenbau =
 
= 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: Encoderscheibe einer Computermaus. The screw of the wheel shaft is unscrewed, and the slice is added. Fotodiode/Fototransistor einer Lichtschranke (z.B. LTH 301) sind zwischen 2 Plexiglasstücke eingebettet.
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).
+
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (rechts): Eine Lichtschranke (z.B. LTH 301) wird durch das Getriebezahnrad auf der Motorachse unterbrochen.
File: Odometry_circuit.jpg | LTH301 circuit
+
File: Odometry_circuit.jpg | LTH301 Schaltung
 
</gallery>
 
</gallery>
  
Zeile 58: Zeile 58:
  
  
Distance per wheel:
+
vom Rad zurückgelegter Weg:
 
  left_cm  = ticksLeft  / odometryTicksPerCm
 
  left_cm  = ticksLeft  / odometryTicksPerCm
 
  right_cm = ticksRight / odometryTicksPerCm
 
  right_cm = ticksRight / odometryTicksPerCm
 
   
 
   
Heading:
+
Fahrtrichtung:
 
  wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm
 
  wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm
 
  odometryTheta += wheel_theta
 
  odometryTheta += wheel_theta
  
Overall distance:
+
Gesamtweg:
 
  avg_cm  = (left_cm + right_cm) / 2.0
 
  avg_cm  = (left_cm + right_cm) / 2.0
 
  odometryX += avg_cm * sin(odometryTheta)
 
  odometryX += avg_cm * sin(odometryTheta)

Version vom 15. Juli 2015, 14:43 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

Verdrahtung

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.


vom Rad zurückgelegter Weg:

left_cm  = ticksLeft  / odometryTicksPerCm
right_cm = ticksRight / odometryTicksPerCm

Fahrtrichtung:

wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm
odometryTheta += wheel_theta

Gesamtweg:

avg_cm  = (left_cm + right_cm) / 2.0
odometryX += avg_cm * sin(odometryTheta)
odometryY += avg_cm * cos(odometryTheta)

Meßfehler

Durch Auswertung der am linken und rechten Radantrieb gezählten Encoderimpulse über der Zeit können wir Geschwindigkeit, Fahrstrecke und Richtung ermitteln. Jedoch addieren sich kleine Fehler durch Verwendung von Näherungsformeln und Schlupf der Antriebsräder über längere Zeit zu wachsenden Ungenauigkeiten. Dies kann durch Sensor-Signalfusion kompensiert werden.

Drehzahlregelung (PID) der Motoren

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)