S.A.P.I.R.-RP5 (noch nicht fertig)

Semi Autonomer Progrogrammierbarer Infrarotgesteuerter Roboter RP5

Version 0.2

Der SAPIR-RP5 ist ein Arduino basierter semiautonomer Roboter, welcher über ein Bluetoothmodul vom PC oder Smartphone gesteuert werden kann. Der Roboter ist deshalb Semiautonom, da alle rechen – und speicherintensiven Navigationsaufgaben auf dem Leitrechner stattfinden. Der fordere um 180° drehbare Infrarot-Distanzsensor misst berührungslos die Distanz der Umgebung. Die Ausrichtung im Raum wird mit hilfe eines digitalen Kompass ermittelt. Aus diesen Daten wird eine Karte der Umgebung berechnet, welche in einer zweidimensionalen Matrix gespeichert wird. Auf dieser Matrix kann der A* Algorithmus angewendet werden um den optimalen Weg zwischen aktueller Position und Zielposition zu bestimmen. Allein um die Matrix zwischen zu speichern ist der geringe Arbeitspeicher des ATMEGA256 zu knapp bemessen. Auch ist der A* Algorithmus sehr rechenintensiv und würde auf dem AVR lange Zeit in Anspruch nehmen. Deshalb wird die Navigation auf einen Leitrechner ausgelagert der die abzufahrenden Wegpunkte zum Ziel an den Roboter sendet.

Hardware

RP5 Raupenantrieb

In meiner Bastelkiste lag noch ein Fahrgestell Robby RP5 von Conrad rum, welches ich damals mit einer C-Control I im Einsatz hatte. Da lag es nahe dieses System ohne die alte Steuerung wiederzuverwenden.

Robby RP5 Raupenantrieb

Robby RP5 Raupenantrieb

Das Antriebssystem besteht aus zwei 6V Motoren welche über eine Getriebeuntersetzung an die Laufräder der Kette gekoppelt sind. Die Getriebeuntersetzung beträgt 72,338  und die Räder weisen einen Durchmesser von 50 mm auf. Zusätzlich befindet sich auf dem Ritzel vor der Motorwelle eine Bohrung, welche mit Hilfe einer Lichtschranke eine Wegstreckenüberwachung ermöglichen. Für eine Drehzahlregelung ist die Anzahl der Impulse pro Umdrehung leider zu gering.

Odometrie

Die zwei Gabellichtschranken vom Typ CNY 36 sind auf der Unterseite der Bodenplatte verschraubt.

Odometrie1 Linker Motor

Odometrie Linker Motor

Das Verhältnis der Umdrehung der Encoderscheibe zur Umdrehung der Antriebsachse beträgt 25/6. Bei einer Volldrehung der Antriebsachse bewegt sich der Roboter also um 157 mm fort und je Impuls des Radencoders legt der Roboter 38 mm zurück.

Motortreiber

Die beiden 6V Motoren werden über einen dual H-Brückentreiber, dem L298 angesteuert. Über die Enable Eingänge A&B kann die Motordrehzahl mittels PWM reguliert werden. Die Drehrichtung wird über die Input Kanäle vorgegeben.

L298 H-Brückentreiber Platine

L298 H-Brückentreiber Platine

Um den Wirkungsgrad nicht zu verringern und um die 5V Versorgungsspannung nicht mit mit den Störimpulsen der Motoren zu belasten, arbeitet der Treiber mit der unregulierten Akkuspannung von 7,2v – 9V um die Motorwicklungen zu betreiben.

Energieversorgung

Im Betrieb wird S.A.P.I.R.-RP5 mit 6 NIMH oder Alkaline Batteriezellen mit Energie versorgt. Die Spannug kann also 7,2-9V je nach verwendeten Zellentyp betragen. Direkt werden mit der Akkuspannung nur die beiden Motoren betrieben. Das Arduinoboard verfügt über einen eigenen 5V Linearregler welcher laut Internet bis zu 350mA liefern kann. Wird der Arduino ausschließlich mit der Spannung des USB Kabels betrieben können die Motoren nicht verwendet werden, was allerdings für das debuggen und testen meist nicht nötig ist.

Achtung!

Die Arduinospannung wird beim Programmieren (ohne Akkuspannung) vom 5V USB Kabel versorgt, diese liegt aber in der Realität unter 5V (ca. 4,85V). Diese niedrige Spannung stört z.B. den Sharp Infrarotsensor derart, das dieser falsche Werte liefert.

Auf dem Motortreiber L298 Board ist ein 5V Spannungsregler integriert, welcher die Logic des L298 versorgt. Diese Spannung lässt sich abgreifen und zur Versorgung der Sensoren verwenden um den 5V Spannungsregler des Arduinoboards zu entlasten. Außerdem ist ein verkohler Motortreiber billiger als ein zerschossenes Arduino Board 😉

IR-Entfernungssensor

Um seine Umgebung erkunden zu können, besitzt SAPIR einen schwenkbaen Infrarot Entfernungssensor welcher in einem Radius von 180° die Entfernung zur Wand oder einem Objekt in der Umgebung messen kann.

IR-Sensor Scan

IR-Sensor Scan

Dabei wird die Distanz sowie der Ausrichtungswinkel des Sensorturms erfasst und an den Leitrechner weitergegeben.

Schrittmotor

Der Schrittmotor ermöglicht die Drehung des Turmes. Der verwendete Motor ist ein unipolarer Schrittmotor und über einen einfachen ULN2003 Darlington Treiber angesteuert. Für eine 180° Drehung sind 1024 Schritte erforderlich, was auch gleichzeitig den minimalen Winkel von ca. 0,18° bestimmt.

28byj48

Sharp GP2Y0A02YK0F

Bei der Grundkonzeption des Roboters stand ich vor der Wahl zwischen zwei verschiedenen Sensortypen. Einem Sensor basierend auf Ultraschall oder Infrarot. Beide Sensoren haben jeweils Vor- und Nachteile:

Ultraschall (z.B HC-SR04)

Vorteile:

  • Hohe Reichweite (ca. 450m)
  • Sehr geringer Mindestdistand zwischen Sensor und Objekt möglich
  • Prinzipiell jedes Material feste Material messbar

Nachteile:

  • Flächen müssen im Winkel von 90°  zum Sensor stehen, sonst wird der Messwert stark verfälscht
  • Der Messkegel hat einen hohen Öffnungswinkel, so das auch Objekte die nicht in gerader Linie zur Messung stehen erfasst werden
  • bei steigender Entfernung verschlimmert sich der Effekt

Infrarot (SHARP GPx Serie)

Vorteile:

  • Punktgenaue Messung möglich
  • Winkel zur Messfläche spielt keine so große Rolle (außer bei Kanten)

Nachteile:

  • Nur recht kleine Distanzen messbar (60-150cm)
  • Sensor hat einen relativ großen toten Bereich bei kurzen Entfernungen (bis 20cm)
  • Materialien die Infrarotes Licht komplett absorbieren sind nicht detektierbar
Spannung in Abhängigkeit zur Entfernung

Spannung in Abhängigkeit zur Entfernung

Der Sensor gibt eine Spannung aus die in Relation zur Entfernung des gemessenen Objektes steht. Die sich ergebene Funktion sieht der Euler-Funktion recht ähnlich. Es gibt zwei Möglichkeiten alle Spannungswerte in eine Entfernung umzurechnen. Die erste ist für die Umrechnung ein angenähertes Polynom zu verwenden, welche der echten Funktion möglichst nahe kommt. Die zweite ist eine Tabelle von Funktionswerten zu speichern und die gemessenen Zwischenwerte mit der linearen Interpolation über diese Stützstellen zu bestimmen.

Lineare Interpolation

Lineare Interpolation

Der Einfachheit halber wird die lineare Interpolation verwendet, da diese Berechnung auch auf einem 8-Bit Mikrocontroller stattfinden kann und die Tabelle der Stützstellen im Flash-Programmspeicher gehalten werden kann. Damit ist dieses Verfahren optimal was Rechenzeit und RAM-Verbrauch anbelangt.

Tabelle Funktions Stützpunkte

Tabelle Funktions Stützpunkte

Ein Kommentar zu “S.A.P.I.R.-RP5 (noch nicht fertig)
  1. very nice post, i certainly love this website, keep on it

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*