User manual

RP6 ROBOT SYSTEM - 4. Programmierung des RP6
Der Roboter erhöht oder verringert ggf. auch automatisch die Motorleistung z.B.
wenn er eine Rampe hochfährt.
VORSICHT: Dieses Verhalten kann für die eigenen Finger sehr
gefährlich werden Achten Sie darauf, nicht mit den Fingern zwi-
schen Raupenkette und Räder, oder zwischen Platine und Raupen-
kette zu geraten! Es besteht sonst Verletzungsgefahr! Wie gesagt,
bei Hindernissen wird die Motorleistung automatisch erhöht und der
Antrieb kann dann ziemlich viel Kraft aufbringen!
Die Geschwindigkeit wird bei der moveAtSpeed Funktion nicht in cm/s o.ä.
angegeben es wird stattdessen die Drehzahl verwendet. Das ist sinnvoller, denn die
tatsächliche Geschwindigkeit ist abhängig vom Umfang der Räder/Ketten und damit
von der Encoder Auflösung. Wie wir aus Kapitel 2 ja schon wissen, gibt es da einen
recht großen Spielraum von etwa 0.23 bis 0.25mm pro Zählschritt und das muss man
erst kalibrieren.
Die Drehzahl wird alle 200ms, also 5x pro Sekunde gemessen. Die Einheit ist daher
„Encoder Segmente pro 200ms“ oder anders ausgedrückt „Encoder Segmente die in
0.2s gezählt wurden“. Bei einem Wert von 70, wie im obigen Beispielprogramm, -
ren das also etwa
Segmente/Zählschritte pro Sekunde (das sind etwa 8
bis 8.7 cm/s je nach tatsächlicher Encoder Auflösung). Die minimal einregelbare
Drehzahl ist etwa
105=50
und die maximale Drehzahl
2005=1000
. Das wird von
den Motorfunktionen auf diesen Maximalwert begrenzt, wie in Kapitel 2 schon be-
schrieben. Wir empfehlen für den Dauerbetrieb nicht mehr als 160 einzustellen!
getLeftSpeed() und getRightSpeed()
Die mit den Drehgebern gemessene Drehzahl kann man über diese beiden Makros
auslesen. Hier wird natürlich genau dieselbe Einheit wie oben beschrieben verwendet!
void changeDirection(uint8_t dir)
Die Bewegungsrichtung der Motoren kann mit dieser Funktion eingestellt/geändert
werden. Wie oben beschrieben wird zunächst abgebremst, dann die Drehrichtung ge-
ändert und erst dann wieder auf die zuvor eingestellte Sollgeschwindigkeit beschleu-
nigt.
Die möglichen Parameter sind:
FWD - für Vorwärts (FWD ist eine Abkürzung für „Forwards“)
BWD – für Rückwärts (BWD ist eine Abkürzung für „Backwards“)
LEFT – nach links drehen
RIGHT – nach rechts drehen
Über das Makro:
getDirection()
kann man die aktuell eingestelle Richtung auslesen.
- 101 -