c't-Bot / Heise, Segor
Der c't-Bot ist ein mobiler Roboter für den Hobbybereich. Er
wurde 2006 von der Redaktion der Fachzeitschrift c't entwickelt.
http://www.heise.de/ct/projekte/ct-bot/.
Komponenten
c't-Bot
http://www.heise.de/ct/projekte/ct-bot/ct-bot.shtml
http://www.heise.de/ct/projekte/ct-bot/pdf/schaltplan-final.pdf
USB-2-Bot-Adapter
http://www.heise.de/ct/06/07/223/default.shtml
http://www.heise.de/ct/projekte/ct-bot/pdf/schaltplan-usb-2-bot.pdf
http://www.heise.de/ct/06/07/223/bild2.jpg
mySmartUSB
http://www.myavr.com/
Verkabelung des c't-Bots mit dem Personal Computer
(1) c't-Bot, (2) In System Programmer, (3) USB-2-Bot Adapter,
(4) USB-Hub, (5) PC mit Vehikel-IDE
Über das graue USB Kabel wird der Roboter neu
programmiert.
Über das lila USB Kabel werden die Prozesswerte zur
Entwicklungsumgebung übertragen.
Details
Mechanischer Aufbau
- zylindrische Bauform
- 2 Gleichstrommotoren als Differentialantrieb
- 1 Gleitkufe als dritte Stütze
Der Vorteil dieses mechanischen Aufbau ist seine
Einfachheit. Es wird keine aktive Lenkung benötigt. Durch den
Aufbau kann der Roboter auf der Stelle wenden. Nachteilig ist
jedoch, dass eine präzise Geradeausfahrt nicht möglich ist. Man
kann sich Bewegungsweise dieses Roboters eher als Fahren in
großen Bögen vorstellen. Er bewegt sich mit wechselnden Radien
über die Ebene. Der Untergrund sollte glatt sein, da der dritte
Stützpunkt lediglich aus einer 10mm hohen Gleitkufe besteht.
Prozessor
Die CPU des
c't-Bots ist der ATmega 32 Mikrocontroller. Dieser besitzt nur
einen begrenzten Speicherausbau: 32 KByte Flash, für Firmware
und Applikation, 2 KByte RAM für temporäre Variablen und 1
KByte EEPROM für remanente Daten. Was aber für einen Neuling
schwerer wiegt als der begrenzte Speicherausbau, ist der
Einarbeitungsaufwand in die Harvard-Architektur des Prozessors.
Es muss zwischen den Zugriffsarten auf RAM für temporäre Daten,
Flash für Programmbefehle, EEPROM für remanente Daten und die
E/A unterschieden werden. Nur innerhalb des RAMs kann mit den
Zeigern der Programmiersprache C wie gewohnt umgegangen werden.
Selbst das Lesen von Konstanten aus dem Programmspeicher ist nur
durch Spezialcode, den der GNU C-Compiler einfügt, überhaupt
möglich. Der EEPROM kann nur über Inline-Assembler gelesen
werden. In der
Vehikel-Programmiersprache
kommt der Anwender, jedoch ohne hardwarenahe Programmierung aus.
Er muss sich nicht mit der Speicheradressierung des
Mikrocontroller belasten.
Aktoren, Sensoren und Diagnose
Der c't-Bot ist für seine Preisklasse sehr gut mit Sensoren
ausgestattet. Er verfügt über zwei Infrarot Abstandssensoren,
zwei lichtempfindliche Widerstände, zwei Radencoder, 4
Lichtschranken und eine optische Maus, welche an der Unterseite
des Chassis angebracht ist. Die Abstandssensoren, ein Teil der
Lichtschranken und die lichtempfindlichen Widerstände werden
über 10 Bit A/D Wandler digitalisiert. Die restlichen Sensoren
werden über binäre Ein- / Ausgabebausteine angebunden.
Als Aktoren dienen zwei Gleichstrommotoren. Die
Gleichstrommotoren werden ungeregelt über Pulsweitenmodulation
gesteuert.
Als Mensch Maschine Interface dienen 8 LEDs, mit denen
Zustände dem Anwender signalisiert werden können. Optional
steht ein einfaches Display, das 4 Zeilen a 20 Zeichen darstellen
kann, zur Verfügung.
Besonderheiten
Es empfiehlt sich, den Roboter über einen preisgünstigen
USB-Hub mit dem PC zu verbinden. Damit ist den Roboter nicht mehr
in der Lage, seine Versorgungsspannung aus dem PC zu beziehen.
Wenn die Motoren aktiv sind, sollte der Roboter seinen
Energieverbrauch nicht aus der USB Schnittstelle des PCs, sondern
aus seinen Akkus decken. Bei einem Kurzschluss im Roboter wird
''nur'' der USB-Hub zerstört. Die USB Schnittstelle des PCs wird
durch den vorgeschalteten Hub geschützt.
Der 32 Byte große Programmspeicher des Roboters ist als Flash
ausgeführt. Er wird über den In System Programmer mit dem
Binärcode geladen. Dabei wird immer die gesamte Software auf dem
Roboter neu ins Flash gebrannt. Es ist nicht möglich einzelne
Programmteile getrennt zu aktualisieren. Während das Flash
programmiert wird laufen bei manchen c't-Bots die Motoren mit
voller Geschwindigkeit. Die Akkus müssen genügend Spannung
liefern können.
Der GP2D12 Infrarot Distanzsensor hat eine stark nichtlineare
Kennlinie. Details findet man hier: http://document.sharpsma.com/files/GP2D12-DATA-SHEET.PDF
Bewertung
Der c't-Bot war wegen seiner Offenheit und seinen
unterschiedlichen Sensoren am besten für eine
Pilotimplementierung der Vehikel-Programmiersprache geeignet. Bei
der Implementierung mussten der Speichermangel und die
Besonderheiten des Mikrocontrollers berücksichtigt werden. Diese
Einschränkungen stellen aber keine unüberwindlichen Hindernisse
dar. Er ist mit 200 bis 250 Euro Anschaffungskosten, verglichen
mit dem Angebot an Sensoren, preiswert. Der Anwender muss die
Bauteile des Roboters selbst montieren und löten.
Für den c't-Bot fehlt ein preisgünstiger drahtloser
Kommunikationskanal. Ein optionales Funkmodul verdoppelt den
Preis der Plattform. Der Roboter hängt deshalb während der
Entwicklung an der Leine.