Laufroboter YETI BAUANLEITUNG: Modell YT-3000 © AREXX - DIE NIEDERLANDE V01082006 - -
Inhaltsverzeichnis 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Produktbeschreibung YETI 3 YETI Allgemeine Info 4 Wie laufen wir eigentlich? 11 Hardware 13 Aufbau Elektronik 17 Teileliste Mechanik 26 Bauanleitung für die Mechanikteile 29 YETI Akkus aufladen 41 Software 42 Installation der Software 48 Inbetriebnahme und Test 63 Kalibrierung des YETIs 66 YETI Programmieren 70 Erweiterungen 86 xx. APPENDIX 105 A.
1. PRODUKTBESCHREIBUNG YETI 1.1. Zu welcher Roboterfamilie gehört YETI? YETI ist ein gehender Roboter. Sein Name stammt vom “Schnee-Menschen”, einem vermeintlich im Himalaja lebenden, behaarten Riesen. Genauso wie dieses legendäre Ungeheuer bewegt sich unser YETI auf zwei riesigen Füßen, aber darin erschöpft sich auch schon die Ähnlichkeit dieser Namensvetter. Der Antrieb für die Beine und Füße unseres YETIs erfolgt durch Servomotoren, und wird gesteuert von einem Mikroprozessor.
2. YETI ALLGEMEINE INFO 2.1. Wer oder was ist ein YETI? Wie bereits am Anfang beschrieben stammt sein Name vom “Schneemensch”, einem vermeintlich im Himalaja lebenden behaarten Riesen. Mit seinem Riesenkörper und seinen großen Füßen kann er sich nur ziemlich schwerfällig bewegen. Unser YETI ist ein hochgewachsener Roboter, der ebenfalls auf großen Füßen läuft. Er kann vorwärts und rückwärts gehen und sich sogar links oder rechts herum drehen.
2.2. Was können wir mit dem YETI anfangen? - Neue (Beispiel-) Programme in den YETI übertragen. Selbsterstellte Programme in den YETI übertragen. YETI mit gebrauchsfertigen Erweiterungsmodulen erweitern, so dass der YETI zum Beispiel Gegenständen ausweichen oder Entfernungen messen kann. YETI mit selbstgebauten Erweiterungsmodulen erweitern. YETI mittels Infrarotsignalen mit dem PC kommunizieren lassen. YETI mittels Infrarotsignalen aus dem PC oder aus der Fernbedienung eines Fernsehers steuern.
2.3. YETI wird mit drei Handgriffen zum Leben erweckt: 1. Setzen Sie zuerst die Mechanik- und Elektronikmodule des YETIs mit Hilfe der Bauanleitung zusammen. Laden Sie ggf. die Akkus auf. Schalten Sie den YETI mit dem Hauptschalter auf der Unterseite des Geräts ein. 2. 3. Nach einigen Sekunden wird YETI seine Beine und Füße strecken und anschließend (mittels eines Standard-Beispielprogramms im Prozessorhirn) ein Beispiel seines Könnens geben.
2.4. Laden eines (Beispiel-) Programms in den YETI Zum Laden eines beliebigen YETI-Programms vom Computer in den YETI verwenden wir unsichtbare Lichtsignale. Der im Lieferumfang enthaltene lose COM-Port-Adapterstecker ist ein RS232-InfrarotSender/Empfänger (Transceiver). Dieser wird an einem COM-Port des Computers angeschlossen. YETI verfügt in den beiden kleinen Öffnungen seines Rückens über einen eingebauten RS232-InfrarotSender/Empfänger. Der COM-Port-Adapterstecker ist auch als USBAdapter verfügbar.
2.5. Laden eines Programms in den YETI - Schließen Sie den COM-Port-Adapter, bzw. USB-Adapter auf den Computer an. Starten Sie bitte das Computerprogramm Flash. Selektieren Sie den COM-Port, an dem der Transceiver angeschlossen ist, in Flash. Selektieren Sie ein zu übertragendes YETI-Programm in Flash. Sehen Sie zu, dass die Öffnungen im YETI-Rücken auf der Oberseite des COM-Port-Adapters gerichtet sind. Schalten Sie bitte den YETI aus. Drücken Sie den Button „Programmieren“ im Flash-Programm.
2.6. Erweiterungsmodule (Kits) Sie können YETI mit zusätzlichen (nicht im Lieferumfang enthaltenen) Baugruppen erweitern, welche die Leistungsfähigkeit des Roboters erheblich steigern. So können Sie YETI mit einem Ultraschall-Sender/ Empfänger ausstatten, der ihm ermöglicht mit Schallwellenechos die Distanz zu entfernten Gegenstände zu messen und diesen auszuweichen. Auch können Sie YETI mit einem Display ausstatten, um darauf Daten oder Nachrichten anzeigen.
2.7. Der Kommunikationsprozess zwischen YETI und PC Ein Druck auf die „Programmieren“-Taste im Flashprogramm aktiviert das Flashprogramm zehn Sekunden lang zur Kontaktaufnahme mit dem YETI. Falls die Kommunikation zustande kommt, wird das Programm in YETI übertragen. YETI wird sich nur innerhalb den ersten drei Sekunden nach dem Einschalten des YETIs beim Computer melden.
3. WIE LAUFEN WIR EIGENTLICH? 3.1. Zusammenfassung YETI balanciert auf einem Fuß und versetzt anschließend den anderen Fuß. Dazu zieht YETI die Außenseite seines abstützenden Fußes hoch und drückt zur gleichen Zeit die Außenseite seines zu versetzenden Fußes herunter. Dabei neigt sich YETI zum abstützenden Fuß herüber und verlagert den Großteil seines Gewichts auf diesen abstützenden Fuß. Anschließend schiebt YETI seinen zu versetzenden Fuß nach vorne und schließt somit den Schritt ab.
Falls YETI seinen rechten Fuß etwas zu hoch anheben würde, drückt der linke Fuß den Körper des YETIs über die Gleichgewichtsposition des rechten Fußes hinweg. Der Roboter verliert dann sein Gleichgewicht und würde nach Rechts umkippen. YETI soll deshalb seinen rechten Fuß gerade soweit hochheben, dass er, wenn sein linkes Bein ihn nach Rechts drückt, gerade nicht seinen rechten Gleichgewichtspunkt erreicht.
4. HARDWARE 4.1. YETI Basisleiterplatte Die Hauptleiterplatte des YETIs enthält einen Atmega8L Mikrocontroller Chip. Dieser Mikrocontroller ist verbunden mit dem großen, runden Piepser und mit den beiden roten LEDs an der Vorderseite des Roboters. Zahlreiche andere Mikrocontrolleranschlüsse, z. B. der I2C Bus, werden direkt zum 20-Pins Steckeranschluß auf der Rückseite weitergeleitet. Dieser Steckverbinder erlaubt eine Systemerweiterung mit weiterer Hardware über Flachbandkabel.
4.3. Erweiterungsanschlussbelegung Alle Erweiterungsmodule werden grundsätzlich mit dem gleichen 20-adrigen Flachbandkabel auf der YETI-Hauptplatine angeschlossen. Das Flachbandkabel enthält auch die Stromversorgungsanschlüsse der Erweiterungsmodule und den I2C Bus von und zu den Erweiterungsmodulen.
4.5. Flachbandanschlussbelegung Vier der zwanzig Flachbandadern sind für die Stromversorgung reserviert. Pin 19 für VCC und Pin 7, 8 und 20 für GND. Alle übrigen Flachbandanschlüsse sind direkt mit festgelegten Anschlüssen des Mikrocontrollers verbunden. Direkt neben den Anschlußnummern sind die Mikrocontrollerpinfunktionen spezifiziert. Ein Mikrocontrollerpin kann je nach Anwenderprogramm auf verschiedenste Art verwendet werden. Überprüfen Sie bitte im Datenblatt bzw.
- 16 -
5. AUFBAU ELEKTRONIK Überprüfen Sie zunächst anhand der Teileliste der ElektronikKomponenten, ob alle Bauteile vorhanden sind. 5.1. Die Lötarbeit Die Beschriftung der Leiterplatte zeigt genau, wo Sie die Bauteile bestücken müssen. Sollten Sie sich die Position genauer ansehen wollen, stehen Ihnen ein Bild der fertigen Platine und der Bestückungsplan zur Verfügung, siehe Seite 20 und 21. Beim Bestücken einer Leiterplatte beginnen wir vorzugsweise mit den niedrigen Bauteilen.
Warnungen * * * * Mit dem Öffnen der Plastikbeutel mit Komponenten und Teilen erlischt das Rückgaberecht. Lese vor dem Bauen zuerst die Gebrauchsanleitung aufmerksam durch. Sei vorsichtig beim Hantieren mit den Werkzeugen. Baue nicht im Beisein kleiner Kinder. Die Kinder können sich an den Werkzeugen verletzen oder kleine Komponenten und Teile in den Mund stecken. * Achte auf die Polung der Batterien. * Sorge dafür, daß die Batterien und die Batteriehalter trocken bleiben.
5.4. Bestückung Hauptplatine WICHTIG! Für die Montage der Teile siehe 5.5 (Schaltplan) und 5.6 (Bilder) YETI Teileliste Nr. Name St. PCB1 Platine 1 IC1 ATmega8-l (auf richtige Polung achten) 1 IC2 SFH5110 IR-Empfänger-IC (auf richtige Polung achten) 1 R1 10K / 0.25W / 5% (braun, schwarz, orange, gold) 1 R2 120K / 0.25W / 1% (braun, rot, schwarz, orange, braun) 1 R3 100K / 0.25W / 1% (braun, schwarz, schwarz, orange, braun) 1 R4 220R / 0.
5.5.
5.6. Hauptplatine IC IC Markierung + Widerstand & Drossel Die Werte werden mit einem Farbcode markiert. + LED & IR-LED Die Seite mit einer flachen Markierung ist die Kathode. Der längere Anschluss ist die A-Seite. Kondensator Kein Polung ELKO (Elektrolyt Kondensator) Der längere Anschluss ist die Seite.
5.7. Bestückung des RS232-Infrarot-Transceivers • IC1: Hier wird zunächst nur der 8-polige Sockel eingelötet. Dieser besitzt eine Richtungsmarkierung, welche mit der Markierung auf der Platine übereinstimmen muss. • D1, D2, D3: • D4: 1N4148, auf richtige Polung achten! Nicht verwechseln mit ZPD5.1 oder BZX55-C5V1 (Aufdruck)! ZPD5.
5.8.
5.9. Bestückung des RS232-Infrarot-Transceivers Abbildung 5.1.: Bestückung des RS232- Infrarot-Transceivers Nun nochmal mit kritischem Blick die Lötstellen auf gute Verbindung oder Kurzschlüsse überprüfen und ggf. nachbessern.
5.10. Info Fertiggerät USB-Infrarot-Transceiver Optional ist ein USB-IR-Transceiver als Fertiggerät lieferbar. Abbildung 5.2.: USB Infrarot-Transceiver Abbildung 5.3.: Oberseite des USB-InfrarotTransceivers Abbildung 5.4.
6. TEILELISTE MECHANIK Mutter M3 O 8 St. Linsenkopfschraube M3x8mm Stellring Groß Stellring Klein O 8 St. O 4 St. O 4 St. Distanzrollen O 4 St. Niete O 4 St. Kugelkopfschraube Gelenkkopf mit Innengewinde O 4 St. O 4 St. Gestängeanschluss O 2 St. Kugelkopfmutter O 4 St. Drahtachse lang MadenSchraube Mutter M2 O 10 St. O 10 St. Servo Schraube O 2 St. Sechskant-Winkelschraubendreher O 1 St. Drahtachse kurz O 4 St. O 2 St.
Fuß Achse 5x80mm O 2 St. Hinterbein Fuß Kuppelstange O 2 St. O 2 St. Vorderbein O 2 St. Stelldraht O 2 St. O 2 St. Obere Abdeckung (unteres Teil) Obere Abdeckung (meist oben) O 1 St. O 1 St. Kopfteil Hintere Abdeckung O 1 St. O 1 St.
YETI Hauptplatin mit Bestückung O 1 St. IR/Transceiverplatine mit Bestückung Klett-Band vormontiert Bodenteil O 2 St. Male O 2 St. Female RS-232 Kabel O 1 St. O 1 St. 7.1. O 1 St. Wichtige Elektronikteile Servo Motor Mit Kabelsatz vormontiert Servo Achse Schalter O 1 St. 1mm O 1 St. 2mm O 2 St. O 1 St. Kabelsatz vormontiert DC-Buchse O 1 St. Batteriehalter Flachbandkabel O 1 St. O 1 St. - 28 - O 2 St.
7. Bauanleitung für die Mechanikteile Montage des Kopfservos: Zur Montage des Vorderservos wird folgendes benötigt; Servoschraube 1 St. Kopfteil 1 St. Servo 4 St. Linsenkopfschraube 4 St. Mutter M3 1 St. Servoarm mit 2mm Loch 1 St. Servoschraube Servoarm mit 2 mm Loch Servo M3 Mutter Linsenkopfschraube Befestigen Sie den Servo genau so, wie es in den Zeichnungen beschrieben wird.
Montage des Bodenservos: Zur Montage des Bodenservos wird folgendes benötigt; Servoarm mit 1mm log 1 St. Bodenteil 1 St. Servo 4 St. Linsenkopfschraube 4 St. Mutter M3 1 St. Servoarm mit 1 mm Loch 1 St. Servoschraube Servoschraube Servo M3 Mutter Linsenkopfschraube Servoarm mit 1mm Loch Befestigen Sie den Servo genau so, wie es in den Zeichnungen beschrieben wird.
Endmontage der Bodenplatte: Zur Endmontage des Bodenservos wird folgendes; 1 St. Montiertes Bodenteil 1 St. Schalter 1 St. DC Buchse 2 St. Batteriehalter 4 St. AA Akku 2 St. Klett-Band male 2 St. Klett-Band female ACHTUNG! Montieren Sie erst die Batterien bevor Sie den YETI schließen. Montage Klett-Band bereits vormontiert Batteriehalter DC Buchse Schalter Montieren Sie die Bodenplatte genauso, wie es in der Zeichnung beschrieben wird.
Montage des YETI Kopfes: Zur Montage des Kopfes wird folgendes benötigt; 1 St. Montiertes Bodenteil 1 St. Montiertes Kopfteil 1 St. Montierte Hauptplatine 1 St. Hinterabdeckung Hauptplatine ACHTUNG! Montieren Sie erst die komplette Verkablung bevor Sie die Hinterabdeckung schließen. Den Schaltplan für den Kabelanschluß finden Sie auf den Seiten 33 und 34.
Kabel Endmontage: Zur Endmontage der Kabel wird folgendes benötigt; 1 St. Montiertes Bodenteil 1 St. Montiertes Kopfteil 1 St. Montierte Hauptplatine Montierter Kabelsatz mit; 1 St. Kabel schwarz 1 St. Kabel blau 1 St. Kabel gelb 1 St. Kabel rot Montieren Sie zunächst die Verkabelung genau so wie es in die Zeichnung beschrieben wird.
Anschlussbelegung der Hauptplatine JP1 & JP2 Servo Anschluß 1. Weiß 2. Rot 3.
Endmontage des YETI Kopfs: Zur Endmontage des Kopfs wird folgendes benötigt; 1 St. YETI Kopf 1 St. Obere Abdeckung (meist oben) 1 St. Obere Abdeckung 4 St. Drahtachse Kurz 4 St. M2 Mutter 4 St. Kugelkopfmutter 4 St. Distanzrollen Langes Gewinde oben! Kurzes Gewinde! Drahtachse Kurz M2 Mutter TIP! Benutze die extra M2 Muttern aus den Ersatzteile für die Befestigung der oberen Abdeckung.
Bein- und Fußmontage: Zur Bein- und Fußmontage wird folgendes benötigt; 2 St. Fuß 2 St. Vorderbein 2 St. Hinterbein 2 St. Fußkuppelstange 2 St. Niete 2 St. Stellring klein Montieren Sie Beine und Fuß genauso, wie es in der Zeichnung beschrieben wird.
Montage der Beine I: Zum ersten Teil der Montage der Beine wird folgendes benötigt; Montieren Sie die Beine an am Chassis genau so, wie es in der Zeichnung beschrieben wird. Stellring groß - 37 - 1 St. Montiertes Chassis 1 St. Montierte Beinesatz Links 1 St. Montierte Beinesatz Rechts 2 St. Achse 5 x 80mm 4 St.
Montage der Beine II: Zum zweiten Teil der Montage der Beine wird folgendes benötigt; 1 St. Montiertes Chassis 4 St. Gelenkkopf 4 St. Kugelkopfschraube 2 St. Drahtachse lang 4 St. Mutter M2 Montiere das Drahtende mit Kugelkopf genau so, wie es in der Zeichnung beschrieben wird.
Endmontage der YETI Beine: Zur Endmontage der YETI Beine wird folgendes benötigt; 1 St. Montiertes Chassis 2 St. Mutter M2 2 St. Gestängeanschluss 2 St. Stelldraht Montieren Sie die Beine genau so an den Servo, wie es in der Zeichnung beschrieben wird.
DER FERTIGE YETI ! - 40 -
8. YETIS AKKUS AUFLADEN Als Versorgungsspannung ist eine Gleichspannung von 4,8 Volt vorgesehen, die mit 4 NiMH (1,2V) Akkumulatoren erzeugt wird. ACHTUNG: Die Akkus sind nicht durch einen Widerstand oder eine Sicherung geschützt! Verwenden Sie zum Laden nur geprüfte Ladegeräte, am besten ein Mikroprozessorgesteuertes! Alternativ funktioniert auch ein Steckernetzgerät mit sehr niedrigem Ladestrom, z.B. 5 Volt / 300 mA. DC Buchse (Mitte = +) Schalter Akkus laden: 1. Den Schalter auf Aus stellen! 2.
9. SOFTWARE 9.1. Schreiben Sie ein eigenes YETI-Programm Für die Unerfahrenen, die mit dem Programmieren noch wenig Erfahrung haben, folgt hier eine kurze Einführung. Auch werden wir einige Hintergrunddetails zum Schreiben eigener Programme liefern. Das Kapitel ist sicherlich nicht einfach und Sie werden einigen neuen Begriffen begegnen. Der Vorteil dieses Kapitels (der auch als kleiner Crashkurs betrachtet werden kann) ist auch ein besseres Verständnis für unser Vorgehen.
9.2. Stufe 1 Die Erstellung eines “C”-Programms. Sie schreiben ein YETI-Programm in einer vorgegebenen Programmiersprache. Wir haben für diese Aufgabe die mächtige und gängige Programmiersprache mit dem ausgefallenen Namen “C” gewählt. Sie schreiben das YETI-Programm mit einer speziellen Textverarbeitung (einem Editor). Dieses Programm heißt “Programmers Notepad 2” (PN2).
Diese Prozedur verwendet eine große Menge neuer Dateien und Dateinamen, ist kompliziert und vielleicht auch verwirrend. Die Beschreibung der genauen Prozedur ist jedoch nur interessant für diejenigen, die das Verfahren wirklich genau verstehen wollen. In der Praxis wird das Verfahren stark vereinfacht! Wie vereinfachen wir die Prozedur? ..... Nun, wir starten eine kleine Batchdatei, die ihrerseits eine Makefile-Datei aufruft.
Warum haben wir genau diesen Compiler gewählt? Nun, zunächst weil es sich um ein sehr professionelles und leistungsfähiges Werkzeug handelt und weiterhin, weil es sich dabei um Open Source Software handelt, die jeder frei benutzen kann ohne dafür erst teure Lizenzgebühren zahlen zu müssen! Die “GNU” Organisation entwickelt den GCC neben vielen weiteren Unix Programmen ständig weiter. Mehr informationen erhalten Sie unter http://www.gnu.org/ bzw. http://gcc.gnu.
9.3. Stufe 2 Der Compilervorgang bei einem “C”-Programm Ein selbsterstelltes YETI-Programm, das in der erste Phase auch Programmquelle oder “Sourcecode” genannt wird, ist eine normale Textdatei, zum Beispiel die Datei “test.c”. Ein sogenannter “Compiler”, in unserem Fall das Programm GCC, transformiert die in der C-Sprache geschriebene Programmquelle “test.c” um in eine Objektdatei “test.o”.
9.4. Stufe 3 Der Transfer eines YETI-Programms Im DLR (Deutsches Zentrum für Luft- und Raumfahrt) wurde ein spezielles Werkzeug entwickelt um das YETI-Programm mit dem beiliegenden COM-Port oder mit dem USB-Adapter in den YETI zu übertragen. Dieses Werkzeug mit dem Namen Flash transferiert die vom Benutzer selektierte Hex-Datei, zum Beispiel “test.hex”, in den YETI Mikroprozessor. Im YETI befindet sich eine kleine, fest eingebaute Kommunikationssoftware, die “Bootloader” genannt wird.
10. INSTALLATION DER SOFTWARE Die YETI-CD ins CDROM-Laufwerk einlegen, sie ist autostartfähig. Falls Autostart deaktiviert ist, kann man die CD auch mit dem Windows-Explorer öffnen. Nach der Auswahl der Sprache findet sich im Abschnitt “Software” alles, was für den Betrieb von YETI erforderlich ist. Diese Programme müssen zunächst installiert werden. Für die Installation des Compilers sind Administrator-Rechte erforderlich.
Folgendes Fenster erscheint: Klick auf OK [I Agree] Folgendes Fenster erscheint: Klick auf Weiter [Next] - 49 -
Folgendes Fenster erscheint: Klick auf Annehmen [Agree] Folgendes Fenster erscheint: - 50 -
Folgendes Fenster erscheint: Nun das Fenster ‘Programmers Notepad 2’ schließen.
Folgendes Fenster erscheint: Klick auf Fertig Stellen [safe] Folgendes Fenster erscheint: Schliessen Sie dieses Fenster - 52 -
Auf dem Desktop erscheint das ‘Programmers Notepad 2’ Symbol: Der Programmeditor und der Compiler sind jetzt installiert. 10.1.3. Beispielprogramme von CDROM auf die Festplatte kopieren Von der CD den Ordner YETI_src’ in einen beliebigen Ordner (Z.B. ‘C:\YETI_src’) auf der Festplatte kopieren. Das YETI-Programm öffnen und kompilieren. Doppelklicken Sie auf das ‘Programmers Notepad 2’ Symbol auf dem Desktop.
Selektieren: Open Project(s)... Finden Sie die Datei: C:\YETI_scr\Firsttry\YETI.
Folgendes Fenster erscheint: Doppelklicken auf ’test.
Folgendes Fenster erscheint: Das Programm kompilieren: Warten bis... …Errors: ’none’ und ’Process Exit Code: 0’ erscheint. Damit ist das Kompilieren fertig und die Datei ’test.hex’ generiert worden.
…und wenn das Programm keine Fehler enthält (was zu erwarten ist, da gerade das Beispielprogramm geladen ist), erscheint unten die Meldung: Errors: none. Was ist passiert? Aus der Datei test.c (und YETI.c) ist eine Datei test.hex generiert worden. Diese Datei stellt das in Maschinencode übersetzte Programm dar, welches nun in YETI Speicher geladen (geflasht) werden kann. Das Programm selbst macht noch gar nichts, wir werden es später aber zum Ausprobieren des Flash-Tools benötigen.
Beim Compilieren eines Programms werden einige “Nebendateien” erzeugt, die nur während der Übersetzung benötigt werden und später überflüssig sind. Diese können mit dem neu eingerichteten ‘clean’-Tool gelöscht werden. Mit ’File -> Open’ kann mann die generierten Dateien anschauen. Hier sind die neuen Dateien markiert, u.A. mit der Datei ’test.hex’ Mit ’Tools -> [WinAVR] Make Clean’ lassen sich diese markierten Dateien wieder loschen. FERTIG Mehr WINAVR Infos siehe: http://www.kreatives-chaos.
10.2. LINUX Für die Installation der Software sind root-Rechte erforderlich. Entweder ausloggen und als root einloggen oder eine shell öffnen und mit “su” rootRechte erlangen. 10.2.1 Flash-Tool Die YETI CD-ROM einlegen, ggf. mounten und die beiden Flash-Tools “YETIflash” und “YETIcon” aus dem Verzeichnis “/Linux/Tools/” in das Verzeichnis “/usr/local/bin” kopieren. Danach noch das Ausführen mit “chmod a+x /usr/local/bin YETIcon YETIflash” erlauben.
10.2.2 Compiler Zur Installation des Gnu-Compilers für AVR-Prozessoren die YETI CDROM einlegen und aus dem Verzeichnis “/Linux/Compiler/” mindestens die folgenden Pakete in der angegebenen Reihenfolge installieren: 1. avr-binutils-... .rpm 2. avr-gcc-... .rpm 3. avr-libc-... .rpm Die Installation ist denkbar einfach! Einfach in der Konsole mit root-Rechten den Befehl : rpm -i .rpm eingeben. Fertig! Als Editoren eignen sich zum Beispiel Exmacs, Kate oder Kedit.
10.3. Flash - das YETI-Programmier-Tool Hierzu wird das Programm Flash (siehe Abb. 10.2) benötigt. Abbildung 10.2.: Flash-Tools für Windows und LINUX Damit das Flashen auch richtig gut klappt, muss natürlich der RS232- oder USB-IR-Transceiver angeschlossen werden. Danach das Programm starten und die Schnittstelle auswählen, welche auch bei der Inbetriebnahme funktioniert hat. Die Datei “Test.hex” aus dem Verzeichnis “C:\YETI_src\FirstTry” (bzw. ~/ YETI/) auswählen.
10.3.1. Wie funktioniert das Flashen? Sobald das Programm Flash ausgeführt wird, versucht der Rechner 10 Sekunden lang eine Verbindung mit YETI herzustellen. Schaltet man YETI ein, leuchten die “Augen”LEDs für ca. 3 Sekunden auf. Dies ist die “Boot-Phase”. YETI schaut nach, ob der PC neue Software für ihn bereitstellt. Diese wird gegebenenfalls geladen. Nach Aus- und Wiedereinschalten wird diese dann gestartet. 10.4.
11. INBETRIEBNAME UND TEST Endlich ist alles zusammengebaut und der Spaß kann beginnen. Zunächst müssen aber noch die zuvor eingebauten Fehler gesucht, gefunden und beseitigt werden, ohne dabei allzu großen Schaden anzurichten. 11.1. RS232-Infrarot-Transceiver Diese Inbetriebnahme gilt nur für den RS232-IR-Transceiver. Als erstes sollte der RS232-IR-Transceiver auf seine volle Funktionsfähigkeit überprüft werden, da dieser später für den Selbsttest des YETIs benötigt wird.
11.2. USB-Infrarot-Tranceiver Diese Inbetriebnahme gilt nur für den USB-Infrarot-Transceiver. Achtung! Der ungehäuste USB-Infrarot-Transceiver ist empfindlich gegen elektrostatische Entladungen. Vor der Benutzung muss man sich an einem metallischen Körper (Heizung, Computergehäuse) entladen um Schäden zu vermeiden. Alternativ kann man den Transceiver auch in ein für Infrarotlicht durchsichtiges Gehäuse einbauen. 11.2.
11.2.2 Linux Der USB-Transceiver wird mit dem USB-Kabel an einer freien USB-Buchse angeschlossen. Ein kurzes “Piep” ertönt, wenn Linux den Transceiver erkannt hat. Um zu überprüfen, ob das Gerät korrekt erkannt wurde, kann man sich den entsprechenden Eintrag im proc-Verzeichnis anschauen: foo@bar:/>cat /proc/tty/driver/usb-serial Was eine Ausgabe produzieren muss, die mindestens folgende Einträge aufweist (statt der “0:” kann auch “1:”, “2:” usw. stehen): usbserinfo:1.0 driver:v1.
12. KALIBRIERUNG Eine genaue Kalibrierung der Servomotoren und YETIs Beinmuskeln garantiert eine stabile Gangart. Eine Justierung wird benötigt damit die Servomotoren bei einer softwaretechnischen Positionsmitte auch tatsächlich die mechanische Positionsmitte einnehmen. Eine Hardwarejustierung stellt sicher, dass YETIs Beine zur Mittelposition der Servomotoren die genaue Sollposition einnehmen. 12.1. Servo-Arm Kalibrierung Eine Kalibrierung der Servo-Arm ist für eine stabile Gangart unerlässlich.
7. Entfernen Sie die gelöste Schraube des vorderen Servoarms. 8. Ziehen Sie jetzt vorsichtig, ohne die Servoachse zu verdrehen, den Arm von der Servoachse. 9. Setzen Sie bitte den Arm horizontal, also parallel zu den roten LED’s, zurück auf die Servoachse und schrauben ihn vorsichtig fest. 10. Falls Sie dabei die Servoachse verdrehen schalten Sie den YETI aus, wieder ein und wiederholen Sie die Schritte 2-6. 11.
Mehr Infos über die Testsoftware, siehe APPENDIX J ACHTUNG! In YETIs standardmäßig mitgeliefertem Programm befindet sich eine Funktion ‘Test.hex()’ mit der die Selbsttest ausgeführt wird.
12.2. Hardware Kalibrierung Die Servomotor-Arm des YETIs sind jetzt justiert. Nun sind die Beine an der Reihe. Lösen Sie bitte die Schrauben für Befestigung der „Beinmuskeln“ an den Hinterbeinen. Die Beinmuskeln sollten sich dabei leicht durch die Führung bewegen können. Legen Sie YETI auf den Rücken auf einer CD-Schachtel (1 cm Höhe). Die „Fersen“ liegen nun etwas (d.h. eine CD-Schachteldicke) tiefer als der Rücken. (Siehe Abb. 12.1).
13. PROGRAMMIEREN Und jetzt? So, unser YETI ist betriebsbereit und funktionsfähig. Das war’s wohl, oder? Vergiß es, die wirkliche Arbeit fängt jetzt erst an! Erfahrene C-Programmierer können nun direkt mit der Programmierung beginnen. Anfänger sollten jedoch lieber zuerst dieses Kapitel lesen, auch wenn das eine oder andere Thema Ihnen vielleicht bekannt vorkommt. Ein Minicomputer Wir fangen mal mit einer einfachen Einführung an. Die Hauptplatine des YETIs enthält einen Minicomputer.
Motoren Der YETI verfügt über zwei Spezialmotoren. Diese Motoren befinden sich zusammen mit einigen Zahnrädern und mit einiger Steuerelektronik jeweils in einem kleinen Gehäuse. Ein solches Antriebsmodul nennt man auch ‘Servomotor’. Die Zahnräder bilden ein Getriebe. In der Praxis setzt das Servomotorgetriebe die Drehzahl herab und das Ausgangszahnrad dreht sich erheblich langsamer als der Motor selbst.
Im Mikrocontroller ist der ‘Flash’-Speicher sozusagen der Arbeitsspeicher, der ständig bereits das betriebsbereite Programm enthält und es beim Abschalten auch nicht verliert. Sie können diesen Speicher als Kombination eines Festplattenspeichers und eines Arbeitsspeichers betrachten.
Das Bootloaderprogramm und das Flashprogramm starten nun einen Dialog. Anschließend überträgt das Flashprogramm Kommando nach Kommando ein YETIprogramm zum Bootloaderprogramm. Das Bootloaderprogramm erhält diese Einzelkommandos und legt diese nacheinander in den internen Flashspeicher. Dieser Speichervorgang überschreibt dabei natürlich niemals den Speicherbereich, der das Bootloaderprogramm selbst enthält und beginnt mit dem darauf folgenden Speicherbereich.
Programme schreiben In gewisser Weise ähnelt die Programmerstellung oft dem Schreiben eines Briefes und im Idealfall sind Fachleute in der Lage, die Programmquelle auch als Text fließend zu lesen. Zum Erstellen und Ändern (Editieren) eines Programms verwenden wir eine spezielle Textverarbeitung mit dem Namen ‘Programmers Notepad2’ oder in der Kurzform PN2.
Das Übersetzen eines Programms Ein Mikrocontroller kann mit einem in der ‘C’-Sprache geschriebene Textdatei nichts anfangen. Zum Übersetzen einer in der ‘C’-Sprache geschriebenen Textquelle in eine Datei mit HEX-Kommandos für den Mikrocontroller benötigen wir ein Übersetzungsprogramm. Ein solches Übersetzungsprogramm ist zunächst ein ganz normales Computerprogramm, das in Fachkreisen üblicherweise ‘Compiler’ genannt wird. Für den YETI benötigen wir daher einen ‘C’-Compiler.
Die WINAVR Entwickler haben den ‘C’-Compiler und den Programmers-Notepad2 bereits vorkonfiguriert. Der Benutzer kann diese Einstellung jedoch anpassen. Die Voreinstellung erfordert, dass das Hauptprogramm grundsätzlich als ‘test.c’ abgelegt werden muß. Außerdem sollte eine Datei ‘YETI.c’ verfügbar sein, in der ergänzende Funktionen festgelegt werden können. In diesen beiden Dateien werden Hauptprogramm und ergänzende Funktionen ordentlich getrennt verwaltet.
Hauptprogrammstruktur # Eine ‘C’-Hauptprogramm hat eigentlich immer nachfolgende Grundstruktur: int main(void){ return 0; } ‘int’ beschreibt den Typ der Hauptfunktion ‘main’ ist der Name der Hauptfunktion ‘void’ bedeutet ‘leer’ oder ‘unbesetzt’ ‘return 0’ bedeutet: liefere eine Zahl Null zurück an die Variable, womit die Funktion ‘main’ aufgerufen wurde. # Grundsätzlich sollte jede ‘C’-Kommandozeile immer mit einem Semikolon, d.h. ‘;’, abgeschlossen werden.
# Nachfolgendes Programm generiert eine Fehlermeldung beim Kompilieren, denn ‘Main’ wurde mit einem Großbuchstaben geschrieben. Die ‘C’-Sprache unterscheidet die Wörter, die mit Großbuchstaben oder Kleinbuchstaben geschrieben werden.
#Die ‘C’-Sprache setzt immer eine und nur eine Hauptfunktion mit dem Namen ‘main’ voraus und daneben ggf. noch eine oder mehrere Zusatzfunktionen mit beliebigen Namen.
WICHTIG Der Buchstaben v am Anfang der YETI-Funktionen ist ein Hilfsmittel des Programmierers! Der Buchstaben v (void) am Anfang der YETI-Funktionen bedeutet, dass die Funktion keinen Wert zurückliefert. YETI schaltet sein rechtes ‘Auge’ ein #Dieses Programm schaltet das rechte YETI-‘Auge’ ein #include “yeti.
vFrontLEDs(LEFT); Diese Funktion schaltet das linke YETI-‘Auge’ ein. Gleichartige Funktionen sind: vFrontLEDs(RIGHT); Diese Funktion schaltet das rechte YETI-‘Auge’ ein. vFrontLEDs(OFF); Diese Funktion schaltet beide YETI-‘Auge’ aus. vFrontLEDs(BOTH); Diese Funktion schaltet beide YETI-‘Auge’ ein. Wir lassen das rechte YETI-Auge 5-Mal blinken #Dieses Programm lässt das rechte YETI-Auge 5-Mal im Sekundentakt blinken #include “yeti.
Der Programmteil innerhalb den geschweiften ‘for’-Klammern ‘{‘ und ‘}’ heißt ‘Schleife’ oder ‘Loop’. for(…){ } Int i; An dieser Stelle wird eine Variable mit dem beliebigen Namen ‘i’ definiert. for(i=0 ;i<5 ;i++){ Definiere zuerst ‘i’ als Zahl 0 und wiederhole alle Programmteile zwischen der geschweiften ‘for’-Öffnungsklammer ‘{‘ und der zugehörigen ‘for’-Abschlussklammer ‘}’, solange Variable ‘i’ kleiner ist als 5.
vWaitMilliseconds(500); Diese Zeile ruft die Funktion vWaitMilliSeconds mit dem Übergabewert 500 auf. Die Funktion befindet sich in der Datei ‘YETI.c’. Sie können die Datei ‘YETI.c’ und die Funktionsbeschreibungen darin mit dem Programmers Notepad2 durchlesen. Die Funktion verwendet für die Warteschleife einen internen Zähler des Mikrocontrollers und kehrt anschließend aus der Funktion zurück zum Programm. Als Eingabewert akzeptiert die Funktion Zeitangaben in Millisekunden. Das sind Tausendstel Sekunden.
Der YETI soll tänzeln #Dieses Programm veranlasst YETI, seine Füße in einem Tanz zu bewegen. #include “yeti.h” //Lade Definitionen und Funktionen #include “yetimove.
vMoveBody(0,10); Bringe den YETIkörper wieder in die Ruheposition. Mit einer artverwandten Funktion ‘vMoveLegs()’ können Sie die YETIbeine nach vorne oder nach hinten bewegen. YETI soll laufen #Dieses Programm lässt YETI drei Schritte laufen. #include “yeti.h” //Lade Definitionen und Funktionen #include “yetimove.
14. ERWEITERUNGEN Erweiterungsmodule (Kits) Sie können YETI erweitern mit zusätzlichen (nicht im Lieferumfang enthaltenen) Baugruppen, welche die Leistungsfähigkeit des Roboters erheblich steigern. So können Sie YETI mit einem Ultraschall-Sender/Empfänger ausstatten, der ihm ermöglicht mit Schallwellenechos die Distanz zu entfernten Gegenständen zu messen und diesen beim Gehen auszuweichen. 14.1.2.
14.1.3.
14.2. YETI Display Erweiterungsmodul YT-DSP2 Allgemeine Beschreibung Das Display Erweiterungsmodul enthält 4 Stück 8-Segmentanzeigeblöcke. Ein ebenfalls im Erweiterungsmodul vorhandener 24 Pin I2C Treiberchip erledigt die Ansteuerung des Displays. Der YETI Mikrocontroller steuert seinerseits den I2C Treiberchip.
Jedes Segment besteht aus einer Leuchtdiode oder LED. Außerdem wird noch ein gemeinsamer Pol für den Stromversorgungsanschluß der Leuchtdioden in jedem Displayelement benötigt. Der Hersteller hat dazu vier Segmente jeweils an einem Anschluss verknüpft und die Anschlüsse 3 und 14 intern zu einen gemeinsamen Stromversorgungsanschluß zusammengelegt. Zur Ansteuerung der vier Displays mit jeweils 8+2=10 Anschlüssen würde man theoretisch ein 40-poliges IC benötigen.
14.2.1. Teilleliste YETI Displaysatz YT-DSP2 KIT PCB-DSP R1 R2 R3 C1 C2 Q1 Q2 D1 D2 D3 D4 IC1 S1 CON2 CON, 3, 4 und 5 (3 St.) CON1-PCB CON1-FC (2 St.
- 91 -
14.2.2.
14.3. YETI Ultraschall Erweiterungsmodul YT-ULT3 Der Ultraschall Erweiterungssatz enthält einen Ultraschallsender und einen Ultraschallempfänger. Ultraschall bedeutet: Schallwellen mit einer so hohen Frequenz, dass Menschen diesen Ton nicht hören können. Fledermäuse senden zum Beispiel Ultraschallwellen aus, damit sie im Dunkeln fliegen und jagen können. Men nennt dieses Verfahren EchoOrtung. Gegenstände reflektieren die Schallwellen, die dann im Ohr empfangen werden.
14.3.1. Hardware Beschreibung Das Ultraschallmodul besteht aus 5 Komponenten: 1. Der Sender 2. Der Empfänger 3. Der Empfängerverstärker 4. Eine konstante Referenzspannung 5. Eine variable Referenzspannung Der Mikrocontroller generiert das benötigte Ultraschallsignal. Ein Senderlautsprecher (TX) erzeugt das akustische Signal und ein Empfängermikrofon (RX) empfängt die reflektierte Schallwelle.
Dieses im Mikrocontroller generierte ‘Ultraschall’-Signal wird zunächst über CON1-13 und über Widerstand R3 in den Sender eingespeist. Der Sender besteht aus 2 (von 4) Verstärker, die einzelnes IC (Integrated Circuit = Chip) mit dem Namen IC1 zur Verfügung stellt. Fachleute nennen diese Verstärker oft Opamp, d.h. Operational Amplifier oder Operationsverstärker. Es handelt sich dabei um Differenzverstärker mit zwei Eingängen: einen Plus- und einen Minuseingang.
14.3.2. Abgleich Ultraschall-Zusatzmodul Die Ultraschallplatine ist in YETIs Kopf eingebaut. Allerdings wird das Ultraschallmodul in dieser Position durch folgende Dingen negativ beeinflußt: 1. 2. Unerwünschte Reflektionen des Ultraschallltons innerhalb des YETI Chassis. Unerwünschte Reflektionen des Ultraschalltons durch die Aussenhülle von YETI.
Die rote Kurve an CON1-15 ist eine Entladekurve, welche als Referenzsignal dient. Diese wird auf der Ultraschallplatine erzeugt und zurück zum Mikrocontroller geleitet. Erzeugt der Empfängerteil des Ultraschallsensors eine Spannung die höher ist als das Referenzsignal, wird dies vom Mikrocontroller als Reflektion an einem Objekt erkannt. 60 cm Nun eine weitere Messung, diesmal jedoch neben der Referenzspannung (rot) auch das empfangene Echo (blau, CON1-6 - wird zum Mikrocontroller geleitet).
Wie man aus der Beschreibung des Messverfahrens unseres Ultraschallsensors herauslesen kann, reagiert der Empfänger sehr empfindlich auf jegliche Arten von Reflektion des Ultraschallsignals. So auch auf Reflektionen innerhalb von YETI! Um diesen zu verringern, müssen wir das Innere von YETI unterhalb des Ultraschallsensors vollständig mit Watte auffüllen (s. Abbildung 1)! Abbildung 1. YETI vollständig mit Watte ausgefüllt. Schritt 1. Abdämmen der unerwünschten Schallreflektionen innerhalb von YETI.
Folgendes Oszillogramm zeigt die neue Situation (YETI vollständig mit Watte aufgefüllt): 60 cm Es ist leicht zu erkennen das es nun deutlich geringere unerwünschte Reflektionen gibt! Doch noch immer gibt es einen kleinen Bereich zu Beginn der Messung, der höher als das Referenzsignal liegt. Dies wird durch Reflektionen direkt vor YETIs Kopf verursacht. Schritt 2. Dies lässt sich mit einem weiteren Stück Watte (oder ähnlichem, evtl.
60 cm Auf dem Oszillogramm erkennt man das Ergebnis unserer Bemühungen: Alle zu beginn der Messung empfangenen Signale bleiben unterhalb der Referenzspannung! Erst das tatsächlich zu detektierende Objekt erzeugt eine höhere Spannung am Empfängerausgang! Die Zeitspanne zwischen den 5 übertragenen Ultraschallpulsen und dem Reflektierten Signal wird vom Mikrocontroller gemessen und in den Abstand umgerechnet. Diesen Abstand kann man dann z.B.
14.3.3. Teileliste YETI Ultrasschallsatz YT-ULT3 PCB-UTS R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 TRIMMER R11 R12 R13 R14 C1 C2 C3 C4 C5 C6 C7 IC1 S1 TX RX T1 D1 CON1-PCB CON1-FC (2 St.
14.3.4.
- 103 -
Zum Abschluss Wir hoffen, dass unsere Roboter ASURO und YETI Ihnen auf den Weg in die Roboterwelt geholfen haben! Wie unsere japanischen Freunde glauben auch wir, dass Roboter nach den Computern und Mobiltelefonen die nächste technologische Revolution bilden werden. Diese Revolution wird auch neue wirtschaftliche Impulse auslösen. Leider haben Japan, andere asiatische Länder und auch die USA, Europa dabei längst überholt.
APPENDIX - 105 -
A. ÜBERSICHT YETI-FUNKTIONEN Basisfunktionen. Nachfolgende Funktionen gehören zu den Basisfunktionen des YETIs und befinden sich in ‘yeti.c’. vInitYeti() Initialisieren des YETIs. vFrontLEDs(x) x = ON, LEFT, RIGHT, OFF Steuerung der LED im YETI-Auge. Beispiel: vFrontLEDs(LEFT); vServo1ToPosition(x) x = 0-65635 Platziere den Front(Körper)-Servomotor in Position x. WARNUNG: Diese Funktion kann den Servomotor in eine beliebige Position bewegen.
vRs232Write(x,y) x = Text y = Textlänge, 0-255 Beispiel: void vRs232Write (“Hello World”,11) ; vRs232Read(x,y,z) x = Zeiger (Englisch: Pointer) auf ein Array zur Speicherung des empfangenen Textes y = Erwartete Zeichenzahl z = timeout Beispiel: char RxData[10] ; vRs232Read(&RxData[0],4,0); Sobald 4 Zeichen eingegangen sind, wird die Funktion beendet. vWaitMilliseconds(x) x = Wartezeit in Millisekunden, 0 - 65535 Die Funktion rundet in Zehnerschritten auf, d.h. 23 wird zu 30 aufgerundet.
vMoveBody(x,y) x = YETI-Körperposition nach links oder rechts neigen, ab –58 (Neigung nach rechts) bis einschließlich +58 (Neigung nach links). y = Bewegungstempoverzögerung in Millisekunden pro Schritt, 0 – 65635. Die Funktion rundet die Verzögerungszeiten in Zehnerschritten auf, d.h. 17 wird zu 20. Beispiel: vMoveBody(-25,20); Falls YETI aufrechts steht, wird vMoveBody(-25,20) etwa 25*20=500ms= 0,5 Sekunde benötigen um YETI in eine Rechtsneigung mit Position –25 zu bewegen.
vMoveBackwardXSteps(x) x = Anzahl Rückwärtsschritte, 0-255 Beispiel: vMoveBackwardXSteps(4); YETI macht 3 Schritte rückwärts. Aus der Ruheposition beginnt YETI immer mit dem rechten Bein. vTurnLeftXSteps(x,y) x = Anzahl Schritte, 0-255 y = ‘true’ oder ‘false’, true = Vorwärtsgang, false = Rückwärtsgang. Beispiel: vTurnLeftXSteps(2,false); YETI dreht sich im Rückwärtsgang 2 Schritte linksherum.
B.
C.
D.
E.
F.
G.
H. Fehlersuche H1. ALLGEMEIN Alle Bauteile auf richtige Einbaulage (Polung) und korrekten Wert prüfen. Lötstellen auf Kurzschlüsse bzw. kalte Lötstellen nachsehen. Hat sich irgendwo ein Lötauge gelöst? Sind diese Kontrollen durchgeführt ohne einen Fehler zu finden, muss mit Hilfe des Schaltplanes und einem geeigneten Messgerät (Multimeter bzw. Oszilloskop) das defekte Bauteil gesucht werden. ICs, Transistoren, Dioden und LEDs sind oft die wahrscheinlichsten Kandidaten für einen Defekt. H.2.
H4. IR-Schnittstelle H.4.1. YETI sendet keine Zeichen SFH 415-U, IR-LED richtig eingebaut? Polung der IR-LED prüfen. Widerstand R7 (RS-232 IR-transceiver) und Widerstand R5 (YETI) richtig? 220 Ω (ro,ro,br,gld) H.4.2. YETI empfängt keine Zeichen Zwischen IR-Transceiver und YETI muss Sichtverbindung bestehen (Abstand ca. 50cm) und der IR-Transceiver muss voll funktionsfähig sein.
I.
J. TASTATUR-KONTROLLMODUS UND TESTPROGRAMM Der Hersteller hat den YETI-Prozessor bereits mit einem Selbsttest- und Tastatur-Kontrollprogramm ausgestattet. Dieses Programm mit dem Namen ‘test.hex’ im Ordner “first_try” umfasst: 1. 2. einen Tastatur-Kontrollmodus einen Laufmodus Selbsttestverfahren Schalten Sie den YETI ein.
Das ‘TEST.HEX’-Programm wird gestartet - Beide LEDs werden abgeschaltet - Beide Servos bewegen sich (nahezu) in die Mittelposition - Yeti sendet den Text YETI V.1.04 zum Hyper Terminal - Der Roboter erzeugt eine Reihe Beep-Töne - Das Programm wartet nun 1 Sekunden bis eine Taste im Hyperterminalprogramm am PC gedrückt wird. Anschließend wechselt YETI in den Tastatur-Kontrollmodus.
START des YETI-Laufmodus - Der Modus startet mit einem einzigen Beep-Ton - Die linke LED des YETIs wird eingeschaltet - YETI verneigt sich nach links und schiebt seinen rechten Fuß nach vorne. Anschließend werden 3 Rechts-/Linksschritte durchgeführt. - YETI dreht sich nach links und macht 4 Schritte - YETI macht 3 Schritte rückwärts - YETI dreht sich nach rechts und macht 4 Schritte - YETI schüttelt sich dreimal links und rechts - YETI wiederholt diese og.
K.