Roboter mit Raspberry Pi B+

Autonomer Roboter

Dokumentation: Roberto- und Robina –Roboter

NoImage NoImage

Von 2015 –Nov. 2016

Abmessungen:
Länge: 440mm Breite: 350mm Höhe: 210mm

Räder:
Front: d=150mm mit Zahnriemen-Noppen d=155 Hinten: d= 85mm drehbar

Motoren:
2 Getriebemotoren : 12 Volt 52rpm 6kg/cm P/N: RP350100-0A101R Conrad

NoImage

Navigation:
+ 1 Kompass I2c
+ 2 Sharp IR-Sensoren 20-180cm
+ 1 Sharp IR-Sensor 20-180cm drehbar auf Servo
+ 2 Kollisions-Taster vorne
+ 2 Radencoder vorne Resolution 72cpr
+ 1 Radencoder hinten Resolution 8 cpr
+ 2 unabhängige bewegliche Weggeber vorne mit 32cpr und I2c-Schnittstelle
+ 1 Laserpointer vorne

Rechner:
Raspberry B+ Adafruit PiTFT PI-ADA-1983 320x240 2.8" TFT+Touchscreen

Akku:
4.5Ah 6 x 1.2Volt NiMh ergibt 6-8 Laufzeit

NoImage

Schnittstellen:
LAN zum PC

Beschreibung

Ein Roboter der selbständig den Weg durch das Gelände findet und dabei eine Karte zeichnet um später die Daten an die Home-Basis zu senden.

NoImage

Roboter schwenkt den vorderen IR-Sensor um einen Scan der Umgebung zu erstellen. Berechnet dann den besten Kurs, dreht und fährt ein Stück. Um dort wieder mit dem Scan zu beginnen.

Details:
Der Scan muss sehr schnell ausgeführt werden um genug Daten zu sammeln. Ansonsten entstehen Lücken im Scan. Oder der R muss lange stillstehen.

Kursberechnungen werden anhand der Scandaten ausgeführt: Roboter sucht eine Lücke in den Scandaten die gross genug ist. Sind mehrere Lücken vorhanden wendet er sich der Lücke zu die den kleinsten Winkel zum Zielkurs (Kompasskurs) zu.

Viele Sonderfälle sind Programmiert: Hindernisse die zu nahe sind erkennen und Retourfahrt einleiten Wand erkennen wenn parallel zum R. Dann nicht in die Richtung der Wand drehen Wenn Hindernis bei 90° nicht in diese Richtung drehen.

Ver. 1 Zusammenfassung:
Der Roboter fährt einigermassen gut um Standartsituationen wie Ecken und Wände. U-Gänge oder Orte mit wenig Platz funktionieren nicht. Der Scan ist zu langsam um den R normal zu fahren.

Version 1.1

Der Roboter zeichnet seine Position anhand der Radencoder der grossen Räder auf. Sucht den kürzesten Weg mit Hilfe des A*-Algorithmus (A Star). Der Roboter fährt dann entlang des Pfades zum Ziel.

Ver. 1.1 Zusammenfassung:
Kartenfunktion sehr ungenau sobald der Roboter in ein Hindernis fährt und die Räder „durchdrehen“. Stufen ebenfalls ein Karten update Problem. Kompass funktioniert nicht in der Wohnung infolge der Armierungseisen im Boden.

A*-Algorithmus für Wegsuche in unbekanntem Terrain nicht gut geeignet. Der Roboter erkennt durch den Scan nur ein kleiner Teil seiner „Welt“. Der beste Weg führt immer durch die noch „Unbekannte“ Region und wird wegen fehlender Hindernisse immer bevorzugt. Dies führt dazu, dass der Roboter auf eine Wand zufährt und immer ein Stück nach links dreht die weitere Wand scannt und sofort wendet weil die rechte Lösung besser ist.

A*-Algorithmus kann nur X,Y-Achsen Lösung errechnen. Diagonale Lösung fehlt.

Version 2

Roboter erhält unabhängige gelagerte Weggeber. Zwei neue IR-Sensoren 45° Links und Recht ergänzt. Kopf dreht nicht mehr Die Weg suche erfolgt mit dem „Bug“-Algorithmus. Auch „WSA“ (Wandering Standpoint Algorithmus) genannt. Der Roboter fährt Richtung Ziel, bei einem Hindernis dreht er ab, fährt dem Hindernis entlang bis der Kurs zum Ziel wieder „frei“ ist.

Ver. 2 Zusammenfassung:
Weggeber bringen nur unmerkliche Verbesserung der Position Genauigkeit. Bei einer gefahren Strecke von 7-10m ist mit Winkelabweichungen von 20-40° und X,Y Abweichungen von 20-70cm zu rechnen. Die Kollisions Vermeidung ist gut, trotz des sehr einfachen Algorithmus. Das einzeichnen der Hindernis in die Karte gelingt mit ca -+5cm Genauigkeit.

Die Weggeber erkennen nicht ob sich das Rad Vor- oder Rück-wärts dreht. Dies erfolgt durch die Software. Weggeber mit 2-Kanal Auswertung um die Drehrichtung zu erkennen könnten die Genauigkeit verbessern. Outdoor könnte der Kompass die Pose des Roboters alle X Sekunden wieder korrigieren.