SpielgefÀhrten
c't-Bots drehen auf der Stelle, spielen mit Kollegen RĂ€uber und Gendarm, sammeln GolfbĂ€lle ein und bieten viel Spielraum fĂŒr eigene Experimente. Wer nicht löten möchte, der erschafft mit c't-Sim virtuelle Roboter, lĂ€sst sie gegeneinander antreten und transplantiert ihre Intelligenz vielleicht spĂ€ter bei Freunden in reale c't-Bots.
Mobile Roboter faszinieren ebenso wie Modellautos, nur bieten sie viel mehr Möglichkeiten. Mit wenigen Code-Zeilen bringt man ihnen bei, Hindernissen auszuweichen, WollmĂ€use in dunklen Ecken zu jagen oder einem neugierig hinterherzufahren. Beherrscht man erst einmal die Ansteuerung von Motoren und anderen Aktuatoren sowie die Auswertung der Sensoren, steht auch der Lösung komplexer Aufgaben nichts entgegen. Einen Golfball in einem Spielfeld zu suchen, ihn einzufangen und schlieĂlich an einer bestimmten Stelle einzulochen erfordert zwar etwas TĂŒftelei, muss aber nicht den gut ausgestatteten Forschungslabors vorbehalten bleiben - wie wir mit dem c't-Bot zeigen wollen.
Der c't-Bot bildet eine relativ preiswerte und flexible Plattform fĂŒr eigene Entwicklungen. Seine Konstruktion ist robust und solide. Das erlaubt vielfĂ€ltige Erweiterungen sowohl der Mechanik als auch der Elektronik. Dank der runden GrundflĂ€che dreht der c't-Bot auf der Stelle. Er nimmt seine Umgebung ĂŒber Abstandssensoren wahr und besitzt genug Rechenleistung, um sich mit dem geeigneten Code clever zu verhalten. Im Endausbau soll er autonom GegenstĂ€nde wie beispielsweise einen Golfball suchen und von A nach B transportieren. Mit einem Kontroll-PC oder anderen Robotern soll er sich dann per Funk abstimmen.
Da der ganze Roboter nur als Bausatz zu haben ist, entfallen die Montage- und BestĂŒckungskosten. Insgesamt erhĂ€lt man so nach ein wenig Lötarbeit fĂŒr rund 200 Euro einen flexiblen Roboter. Der Aufbau des c't-Bots sollte allen, die halbwegs mit einem Lötkolben umgehen können, keine Probleme bereiten. Wir haben ganz bewusst auf SMD-Bauteile verzichtet. Eine Artikelserie wird in den kommenden c't-Ausgaben StĂŒck fĂŒr StĂŒck den Aufbau, die Inbetriebnahme und die C-Programmierung des c't-Bot darstellen.
DarĂŒber hinaus stellen wir den Simulator c't-Sim und dessen Entwicklung vor. Er bietet auch reinen Soft-Werkern die Möglichkeit mitzuspielen. c't-Sim kommuniziert mit mehreren virtuellen Robotern, gaukelt ihnen eine Umgebung vor und liefert Sensorwerte zurĂŒck. Der Code, der auf c't-Sim und auf c't-Bot lĂ€uft, ist kompatibel. So lassen sich komplexe Verhaltensmuster fĂŒr den Roboter bequem am PC testen. Die OberflĂ€che des in Java geschriebenen Simulators soll aber spĂ€ter auch die c't-Bots kontrollieren. Selbst eine Kombination aus realen und simulierten Robotern ist denkbar.
c't-Bot und c't-Sim sind jedoch keine fertigen Spielzeuge aus dem Regal, sondern bieten viel mehr eine Gelegenheit, selbst zu experimentieren. Die Artikel begleiten das Projekt und vermitteln die nötigen Kenntnisse. Sie werden abwechselnd erscheinen. Anregungen, ErweiterungsvorschlĂ€ge und clevere Programme greifen wir gerne auf oder stellen sie auf die Projektseite [1]. FĂŒr Diskussionen rund um den Roboter steht auf heise online ein Leserforum [2] bereit.
Hier widmen wir uns zuerst der mechanischen Konstruktion. Auch das Elektronik-Konzept soll nicht zu kurz kommen. Der nÀchste Hardware-Artikel befasst sich mit Montage, Inbetriebnahme und Hardware-naher Programmierung der Sensoren sowie Aktuatoren. Alle Platinen, vorbereitete Mechanik und vollstÀndige TeilesÀtze werden bei eMedia und Segor-Electronics erhÀltlich sein, sobald der Inbetriebnahme-Artikel erscheint.
Aller Anfang ...
ManövrierfĂ€hig soll er sein, der c't-Bot. Daher bietet sich eine Konstruktion mit runder GrundflĂ€che an. Ohne hervorstehende Ecken und Kanten besteht kaum die Gefahr, dass sich das Fahrzeug an Hindernissen verhakt. Verwendet man nur zwei RĂ€der, deren Achsen den Mittelpunkt der runden GrundflĂ€che schneiden, kann der Roboter auf der Stelle drehen. Mit nur zwei RĂ€dern wĂŒrde der c't-Bot jedoch sofort kippen. Wir haben uns aus Platz- und KostengrĂŒnden daher fĂŒr einen kleinen Gleitpin aus Kunststoff entschieden, der den Roboter hinten abstĂŒtzt. Das Gewicht der Akkus verhindert ein Kippen nach vorn. Ăber die meisten UntergrĂŒnde gleitet der abgerundete StĂŒtzpin problemlos hinweg und selbst Fugen zwischen Fliesen oder normaler Teppichboden halten den c't-Bot nicht auf. Konstruktionen mit Rollen oder ein dynamisches Ausgleichen der Kippmomente durch Beschleunigungen wĂ€ren zwar auch denkbar, jedoch deutlich aufwendiger.
Die runde Grundplatte soll einerseits möglichst klein sein, damit der Roboter auch durch enge GĂ€nge patrouillieren kann. Andererseits erfordern die einzelnen Bauteile auch einiges an Platz. Neben Motoren, Elektronik und Akkus soll auch Raum fĂŒr Sensoren und Aktuatoren bleiben. Mit einem Durchmesser von 120 mm dreht der c't-Bot auf der FlĂ€che einer CD und kann in einem rechteckigen Ausschnitt spĂ€ter GegenstĂ€nde von der GröĂe eines Golfballes einfangen und transportieren - eine geeignete Mechanik zum Verriegeln des Transportfachs behandelt ein spĂ€terer Artikel.
Motoren, Sensoren und Akkus fĂŒllen die Grundplatte fast völlig aus. Die Elektronik musste daher in den zweiten Stock ausweichen. Die modulare Bauweise erlaubt es, kĂŒnftige Erweiterungen auf weiteren Ebenen hinzuzufĂŒgen. Die gesamte Grundkonstruktion besteht aus Aluminium und ist stabil genug, um spĂ€ter auch noch Greifer, Kamera und Co. zu tragen.
Agil
Zwei Gleichstrommotoren (6 Volt) treiben die beiden RĂ€der an. Die Firma FTB Faulhaber baut die Motoren (2619-006SR) als FlachlĂ€ufer mit einem eisenlosen Rotor. So entsteht nur ein sehr geringes TrĂ€gheitsmoment. Ein Untersetzungsgetriebe (33:1) reduziert die Drehzahl und steigert das Drehmoment. 0,03 Nm reichen aus, um selbst einen mit schweren BĂŒchern beladenen c't-Bot zu bewegen. Bei maximal 151 U/min und einem Raddurchmesser von 57 mm erreicht der unbeladene Roboter eine Geschwindigkeit von bis zu 0,45 m/s (1,6 km/h).
Die RĂ€der, gefrĂ€st aus Aluminium, sind genau auf die Motoren abgestimmte Einzelanfertigungen. Sechs groĂe Löcher reduzieren das Gewicht der RĂ€der deutlich und verleihen ihnen ein schickes Design. Ein O-Ring dient als Reifen und sorgt fĂŒr guten Halt auch auf rutschigen FlĂ€chen.
Sensibel
Auf der Innenseite der RĂ€der kleben Kodierscheiben mit abwechselnd schwarzen und weiĂen Feldern. Zwei Reflexlichtschranken (CNY70) messen so die Drehgeschwindigkeit der RĂ€der. Diese Rad-Encoder ermöglichen es nicht nur, den Geradeauslauf des Roboters zu kontrollieren, sondern auch seine Position relativ mitzuloggen. Allerdings liefern sie nur korrekte Ergebnisse, wenn die RĂ€der keinen Schlupf haben und nicht durchdrehen. Dazu spĂ€ter mehr.
Ohne weitere Sensoren wĂŒrde der c't-Bot im Dunkeln tappen und seine Umgebung nicht wahrnehmen. Daher liefern zwei Abstandssensoren Informationen ĂŒber Hindernisse in Vorausrichtung. Eine integrierte Infrarotdiode strahlt moduliertes Licht aus, welches das Hindernis auf den Sensor zurĂŒck reflektiert. Dort bĂŒndelt eine Linse den Lichtstrahl und fĂŒhrt ihn auf einen richtungssensitiven EmpfĂ€nger (PSD, Position Sensitiv Detector). Der Abstand beeinflusst den Einfallswinkel.
Die Sensoren GP2D12 der Firma Sharp kĂŒmmern sich um die gesamte Verarbeitung und liefern eine analoge Spannung, die vom Abstand Sensor-Objekt abhĂ€ngt. Der Erfassungsbereich liegt ungefĂ€hr zwischen zehn und 80 Zentimetern, der Blickwinkel bei rund drei Grad. Die Modulation des IR-Lichts schĂŒtzt den Sensor relativ gut gegen Streulicht. Stark spiegelnde FlĂ€chen, die nicht orthogonal zum Sensor stehen, kann er jedoch nicht erfassen.
Eine einfache schwarze Linie auf dem Boden reicht aus, um den c't-Bot durch den Raum zu lotsen. Mit zwei nach unten gerichteten Lichtschranken (CNY70) kann er diese verfolgen. Zwei weitere Lichtschranken tasten den Boden links und rechts im vordersten Bereich des Roboters ab. Sobald sie das selbst ausgestrahlte Licht - der CNY70 besteht aus einer LED und einem Phototransistor - nicht mehr empfangen, steht der c't-Bot entweder vor einem Abgrund oder einer perfekten schwarzen FlÀche. So oder so sollte er dann sicherheitshalber erst einmal anhalten.
Dank zweier Photosensoren kann der c't-Bot beispielsweise den Strahl einer Taschenlampe verfolgen, sich in dunklen Höhlen verstecken oder mit anderen Robotern RĂ€uber und Gendarm spielen. Dabei wĂŒrde der RĂ€uber eine kleine Lampe tragen und der Gendarm das Licht suchen.
Photosensoren können so dazu dienen, einfache Verhaltensmuster und Reaktionen auf die Umgebung zu testen. Die zwei lichtempfindlichen WiderstÀnde (LDR) sitzen im vorderen Bereich der Platine, rÀumlich voneinander getrennt. Daher messen die beiden Sensoren die LichtintensitÀt an zwei verschiedenen Punkten. Es entsteht ein Helligkeitsgradient.
Damit aber noch nicht genug. Um sich besser zu orientieren, soll der Roboter in einer spĂ€teren Ausbaustufe den Sensor einer optischen Maus erhalten. Das erlaubt ihm, seine Position genauer zu verfolgen als mit den Rad-Encodern allein. Als Krönung könnte man dem c't-Bot sogar eine Kamera spendieren. Deren Bilder eignen sich einerseits fĂŒr Ăberwachungsvideos, können aber auch die Rohdaten fĂŒr eine Objektverfolgung und Erkennung liefern. Damit könnte der c't-Bot dann zum Beispiel einen Salzstreuer suchen, in seinem U-förmigen Fach einfangen und direkt zum Teller liefern.
Intelligent
Das Hirn des c't-Bots thront auf der Platine im ersten Stock. Ein Mikrocontroller (Atmel ATmega32) liefert die nötige Rechenleistung, um Motoren anzusteuern, Sensoren auszuwerten und mit der AuĂenwelt zu kommunizieren. Er fĂŒhrt fast alle Befehle in einem Taktzyklus aus - davon stehen 16 Millionen pro Sekunde zur VerfĂŒgung. Eigenen Programmcode nehmen 32 KByte Flash-Speicher auf. 2 KByte SRAM speichern Variablen und 1 KByte EEPROM merkt sich Parameter auch bei abgeschalteter Versorgungsspannung.
Der ATmega32 besitzt insgesamt 32 I/O-Pins, davon hĂ€ngen acht an einem internen A/D-Umsetzer. Dessen 10-Bit-Auflösung reicht fĂŒr alle hier besprochenen Sensoren spielend aus.
Sicherlich gibt es noch deutlich schnellere Prozessoren mit mehr Speicher oder I/O-Pins, doch meist nur als SMD-Typen, die der Hobby-Löter nur mĂŒhsam verarbeiten kann. Beim c't-Bot behelfen wir uns mit einem Trick und nutzen serielle Schieberegister, um mehr digitale AusgĂ€nge anzusteuern.
Kommunikativ
Mikrocontroller sind nicht darauf ausgelegt, mitzuteilen, was sie gerade tun, woran das Programm festhĂ€ngt oder welche Werte ein Sensor liefert. Auf der Platine des c't-Bot geben daher acht frei programmierbare LEDs ĂŒber den Systemstatus Auskunft. Obendrein kann der Roboter ein LC-Text-Display mit 4x20-Zeichen huckepack nehmen. Das sollte reichen, um selbst komplexe Software zu debuggen und den Status des Programmes zu ĂŒberwachen.
Der c't-Bot horcht auf Befehle, die ihm Herrchen und Frauchen per IR-Fernbedienung (RC5-Code) ĂŒbermitteln. Man kann ihn so nicht nur lenken, sondern auch Parameter Ă€ndern oder verschiedene Subroutinen starten, ohne die Firmware neu zu ĂŒbertragen. SpĂ€ter soll eine Funkstrecke Kommandos und Statusinformationen zwischen PC und Roboter ĂŒbertragen.
Kraftvoll
FĂŒnf NiMh-Akkus (Mignon-Zellen) liefern 6 Volt Gleichspannung fĂŒr die Motoren. Stabile 5 Volt fĂŒr die Elektronik erzeugt ein Low-Drop-Regler bis zu einer Eingangsspannung von 5,5 Volt. Das deckt den gröĂten Bereich der Entladekurve der NiMh-Zellen ab. Aber selbst danach fĂ€llt die Ausgangsspannung nur langsam. Bis rund 4,5 Volt spielt die Elektronik mit. Lediglich die Motoren drehen bei fast vollstĂ€ndig entladenen Akkus etwas langsamer. Batterien sollte man lieber nur im Viererpack einsetzen, da sie pro Zelle 1,5 Volt liefern und sonst die Motoren unnötig strapazieren.
Bei einer Stromaufnahme von rund 250 mA - Basisversion mit laufenden Motoren ohne Display - hĂ€lt ein Satz Akkus (2300 mAh) rund neun Stunden. Wem das beim Entwickeln nicht reicht, der kann den Roboter auch ĂŒber ein 6-Volt-Netzteil mit Energie versorgen. Auf einen internen Akkulader haben wir aus Platz- und KostengrĂŒnden verzichtet. Die Mignon-Zellen lassen sich aber mit den handelsĂŒblichen SchnellladegerĂ€ten zĂŒgig wieder befĂŒllen.
In medias res
Nach den allgemeinen DesignĂŒberlegungen und der Vorstellung der Kernkomponenten, wollen wir nun Schritt fĂŒr Schritt die einzelnen Baugruppen detailliert beschreiben. Dieser erste Artikel konzentriert sich dabei auf die Motorsteuerung.
Eine H-BrĂŒcke verbindet die Gleichstrommotoren direkt mit der Batteriespannung, die TTL-Pegel des Mikrocontrollers liefern nur die Steuersignale. Da die Laufrichtung von der Polung abhĂ€ngt, benötigt jeder Motor vier Schalter (siehe Grafik). Dennoch ergeben nur drei Konstellationen Sinn, alle anderen fĂŒhren zum Kurzschluss: Sind zwei sich diagonal gegenĂŒberstehende Schalter geschlossen und alle anderen offen, so dreht sich der Motor rechts- oder linksherum - je nach Polung. Ăffnet man mindestens drei Schalter, steht der Motor still.
Der Baustein L293D vereint gleich zwei solche H-BrĂŒcken in einem Chip und kann genug Strom treiben, um die Motoren direkt anzusteuern. Er erwartet pro Motor die Drehrichtung auf zwei Pins - einmal invertiert und einmal direkt - sowie ein Enable-Signal. Nur wenn dieses auf High steht, schaltet er den Motor an. Speist man diesen Eingang mit einem PWM-Signal (Pulsweitenmodulation), so lĂ€sst sich auch die Drehgeschwindigkeit regeln.
Ein PWM-Signal besteht aus einem Rechteck mit fester Grundfrequenz. Man verschiebt nur die Anteile der Low- und High-Pegel. Soll der Motor auf voller Geschwindigkeit laufen, so wird tlow null und das Signal ist die ganze Zeit high. Zum Deaktivieren des Motors setzt man thigh gleich null. FĂŒr eine mittlere Geschwindigkeit können beide Zeiten identisch sein. Es gilt dabei immer: tlow + thigh = 1/fPWM = konstant. Da die Gleichstrommotoren trĂ€ge sind, reagieren sie nur auf den zeitlichen Mittelwert der Spannung. Dieser ergibt sich zu:
Veff = VIn · thigh/(thigh+tlow)
Eine PWM-Steuerung erfordert viel weniger Aufwand als die direkte Regelung der Spannung. Die Timer-Einheit des Controllers erzeugt solche PWM-Signale autonom, ohne dass man Rechenzeit dafĂŒr aufwenden muss.
Das war der erste Streich
Mit der Montage der Mechanik, dem Aufbau der Platine und ersten Gehversuchen mit dem Mikrocontroller wird sich der nĂ€chste c't-Bot-Artikel genauer befassen. Wer bis dahin nicht nur im Schaltplan schmökern, sondern schon mal in die Mikrocontroller-Programmierung hineinschnuppern möchte, findet bei den Projekten COM-auf-LAN [3] und c't-Netz-Schalter [4] einfĂŒhrende ErklĂ€rungen. Da der c't-Bot denselben Prozessortyp nutzt, Ă€hnelt sich auch die Codebasis. Bereits im nĂ€chsten Heft bietet der c't-Sim eine Gelegenheit, erste Erfahrungen mit der Programmierung von Roboterverhalten zu sammeln.
Literatur
[1] Webseite zum c't-Bot-Projekt [1]
[2] Leserforum zum Projekt [2]
[3] Webseite zum COM-auf-LAN-Projekt [3]
[4] Webseite zum c't-Netz-Schalter-Projekt [4]
| "Der eigene Roboter" | |
| SchaltplĂ€ne fĂŒr den c't-Bot und weitere Artikel zu Robotik finden Sie in der c't 2/2006: | |
| Robotik in der Wissenschaft und Anwendung | S. 124 |
| c't-Bot selbst gebaut | S. 130 |
| Heimroboter im Test | S. 136 |
| Der Roboter als soziales Wesen | S. 144 |
| Sensoren und Aktuatoren | ||||
| Typ | Anzahl | Verfahren | Zweck | Basisversion |
| Sensoren | ||||
| CNY70 | 2 | Reflexlichtschranke | Rad-Encoder | + |
| CNY70 | 2 | Reflexlichtschranke | Liniensensor | + |
| CNY70 | 2 | Reflexlichtschranke | Abgrunddetektion | + |
| GP2D12 | 2 | optische Triangulation | Abstandssensor nach vorn | + |
| LDR | 2 | Photowiderstand | Helligkeitsmessung | + |
| IS471F | 1 | Lichtschranke | Ăberwachung Transportfach | + |
| Maussensor | 1 | integrierte Kamera | Positionsverfolgung | - |
| Kamera | 1 | Ăberwachung, Objektverfolgung | - | |
| Klappensensor | 1 | opt. oder mag. | Ăberwachung Klappe | - |
| Aktuatoren | ||||
| Faulhaber 2619 | 2 | Gleichstrommotor | Antrieb | + |
| Servo | 1 | Verriegelung Fach | - | |
| Servo | 2 | Steuerung Kamera | - | |
(bbe [6])
URL dieses Artikels:
https://www.heise.de/-290274
Links in diesem Artikel:
[1] https://www.heise.de/hintergrund/c-t-Bot-und-c-t-Sim-284119.html
[2] http://www.heise.de/ct/foren/S-c-t-Bot-und-c-t-Sim/forum-89813/list/
[3] https://www.heise.de/hintergrund/c-t-COM-auf-LAN-Adapter-284121.html
[4] https://www.heise.de/hintergrund/Netz-Schalter-284123.html
[5] http://www.heise.de/ct/06/02/links/130.shtml
[6] mailto:bbe@ct.de
Copyright © 2006 Heise Medien