Home
PG524-RAPTOR: Zwischenbericht - Lehrstuhl 12
Contents
1. 9ZOYd x X S seaud TZU n SZOYd T x x La R 8zaud Ee 8 Gef x X La a AE 678 N a E m 15 2 atear si EE REN ezaud ey De Zeavd Ka E xx Z E X x z ayd Gu HH leo zeigt SECH DIEN X x G Tedyd SEOYA x x IZII Z eed ud YE0Yd NP TS 192 Stret 3 gt K xx AS Y E 8uaud vu 212 lolo lo vergl 2 SS Nm X3 3 d ZEYI3N E Cohen TOdCOXL gt ZOKBLND EOKTIND a OcKaTI0 a SOKYTIO Ne PaddID BI Zraud ege DESCH ei Nar e zan VIAS 4 TIOS Joroy Za ye az Zoo gaya 3 994 zaoa Se ur EIKSUL z4010 x AZ CA aa YT Zuoou N T 5 G SIcIal gt o T PON ZONE T Aa 9IAKTISOL gt E a Se O 29d ZISOL gt ET EONd TONY AC 0849X701 TzTzior0 X F Ab At HX 4 TEdT gt ang ee u 5 pc NI ONIG gt 1010 yo b yT TOYO yr SL ESAKAIO TNI a y GE E Wa a k dkSa and ia x IT Lin N3Z T SedCISOL aan SCH SEXCOSIL X3 Es vor 28do19S ONDY TE FA ja mi KR DE GO ayd Ej ZE Ted TIO Y Zock 309 TWIX ET sl Fe geez EYdEI0Y r x 5 Nab E ZIN
2. break case TW_MT_SLA_NACK uart_puts MT _SLA_NACK break case TW_MT_DATA_NACK uart_puts MT DATA _ NACK break case TW_MR_SLA_ACK uart_puts MR _SLA ACK break case TW_MR_DATA_NACK uart_puts MR DATA NACK break case TW_MR_SLA_NACK uart_puts MR GA NACK break case TW_SR_SLA_ACK uart_puts SR _SLA ACK break case TW_SR_DATA_ACK uart_puts SR DATA ACK break case TW_SR_STOP uart_puts SR_STOP break default uart_puts unknown TWI Error break 158 PG 524 Zwischenbericht C BEISPIELPROGRAMME F R DEN ATMEGA32 24 25 26 char s 3 27 uart_puts utoa statuscode s 16 28 while 1 endlosloop 29 30 31 32 include lt util twi h gt 33 int main void 34 TWCR 1 lt lt TWEN 1 lt lt TWEA AN char s 11 36 37 uint8_t zaehler 38 zaehler 0 39 40 uint8_t modus 41 modus 1 modus 0 sei Master 42 modus 0 modus 1 sei Slave 43 44 TWBR 72 45 mit ein wenig Umrechnung hat man damit 100 kHz 46 if modus 0 master Modus 47 for 48 zaehler 49 uart_puts n rStartsignal 50 Startsignal und Trigger 51 TWCR 1 lt lt TWEN 1 lt lt TWEA 52 1 lt lt TWSTA 1 lt lt TWINT 53 f Startsignal und Trigger 54 while TWCR amp 1 lt lt TWINT 55 warte auf Anforderu
3. 8 Konfiguration starten configure prefix home lt Name gt Player 9 Kompilieren S make 10 Installieren S make install 118 PG 524 Zwischenbericht PLAYER STAGE Stageinstallation Bevor Stage installiert werden kann muss Player installiert und funktionst chtig sein 1 Download der neuesten Version von Stage vor dem Entpacken tar xzvf stage lt version gt tgz 2 In das entsprechende Unterverzeichnis wechseln cd stage lt version gt 3 Konfiguration starten configure prefix home lt Name gt Stage 4 Kompilieren make 5 Installieren make install 4 4 2 Konfiguration des Roboters Beim Starten der Simulation wird wenn nicht bewusst ge ndert der mitgelieferte Simu lationsroboter Pioneer gestartet Dieser besitzt 16 Sonarsensoren Da der realer Roboter nur vier besitzt jeweils einen vorne links hinten und rechts muss der Pioneer an unseren realen Roboter angepasst werden In dem Ordner worlds der Stage Installation befindet sich die Datei pioneer inc In dieser wird scount 16 auf scount 4 gesetzt Die vier Sonar sensoren werden durch Anpassen der Koordinaten an die richtigen Stellen gesetzt Bei dem Pioneer wurden die Koordinaten dazu wie folgt gesetzt scount 4 spose 0 0 170 0 0 0 spose 1 0 050 0 130 90 spose 2 0 250 0 0 180 spose 3 0 050 0 130 90 Durch diese Einstellungen wird ein Roboter wie aus Abbildung 4 16 generiert Links im
4. Listing 4 14 Cross kompilierte Kernel Module WebCam gspca Listing 4 15 etc modules 4 1 8 DC auf dem Gumstix Der Gumstix verdex XL6P besitzt keinen separaten Anschluss f r den I C Bus Es exis tieren aber dennoch zwei M glichkeiten eine Anbindung an diesen zu erm glichen Zum PG 524 Zwischenbericht 91 SOFTWARE einen ist auf dem Motherboard ein Anschluss fiir ein 24 poliges Folienkabel vorhanden welches die 1 C Anschliisse liefert Zum anderen kann auf dem Carrier Board an vorge sehenen L tstellen ein Anschluss f r den I C Bus angebracht werden Es kam die zweite Variante zum Einsatz zu sehen in Abbildung 4 1 Die Belegung des I C Anschl sse stehen in den Board Layouts des console vx 27 BC Anschluss Abbildung 4 1 Anschluss an das Carrier Board Das Kabel Abbildung 4 2 musste von der Raptor Gruppe selbst gebaut werden Es wurde so entworfen um eine falsche Benutzung zu vermeiden Dennoch ist hier gro e Vorsicht geboten Auf dem Kabel sind farbige Markierungen angebracht Diese kennzeichnen jede Ader individuell und unverwechselbar e blau X SCL e gelb X SDA e schwarz GND e wei VCC Um sicher zu stellen dass auch das 1 C Modul im Kernel eingebunden ist was beim Verdex Board der Fall sein sollte k nnen mit dem Befehl Ismod alle eingebundenen Module angezeigt werden Sollte das Modul i2c pxa oder i2c dev nicht dabei sein so muss in der Buildroot Konfig
5. e Durch Analyse der Bodenstruktur soll erkannt werden ob die Fl che ber die der Roboter gerade f hrt verschmutzt ist e Zus tzlich Analyse aufgenommener Bilder der Umgebung sollen in Verbindung mit den Sensordaten dem Roboter dabei helfen sich seiner Umgebung noch besser be wusst zu sein Abbildung 2 18 Logitech SweetPea QuickCam Express Moderne Webcams wie sie heutzutage f r Videokonferenzen eingesetzt werden zeich nen sich durch kompakte Gr e und akzeptabler Aufl sung aus und erzeugen auch in Echtzeitumgebungen akzeptable Ergebnisse leistungsf hige Hardware vorausgesetzt Der Roboter selbst muss nicht dauerhaft fl ssige Videobilder erzeugen stattdessen gen gt es in regelm igen Abst nden Bilder der Umgebung Bodenfl che aufzunehmen und zu ana lysieren F r erste Testbilder in einer Linuxumgebung wurde eine verh ltnism ig billige Webcam der Marke Logitech SweetPea QuickCam Express von der Firma Logitech 16 gekauft Lauf Herstellerangaben gelten als minimale Systemvoraussetzungen 32 PG 524 Zwischenbericht SOFTWARE e Pentium III 700 MHz e RAM 128 MB e HD 200 MB e 28 8 KBit s Internetverbindung Jedoch muss bedacht werden dass diese Systemvoraussetzungen wahrscheinlich unter einem Windows System mit installierter Logitech Software f r den Echtzeiteinsatz gelten d h selbst die angegebenen 600 MHz des Gumstix sind ausreichend zur Inbetriebnahme der Kamera Als Betriebssystem wird Wi
6. 1 eingesetzt Dieser wird gemeinsam mit einer LED zur Beleuchtung des Bodens einer Linse und einigen weiteren Bauteilen wie Quarz zur Taktgebung auf einer eigenen Platine untergebracht und von unten an den Staubsaugerroboter befestigt Die Verbindung zu dem Mikrocontroller wird ber die beiden Pins SDIO und SCLK realisiert Funktionsweise Der ADNS 2610 besteht aus einem Bilderfassungssystem einem DSP zur Bildverarbeitung und einem seriellen 2 Pin Bus Interface zur Host Kommunikation Der Chip verarbeitet 1512 Bilder pro Sekunde bei einer Sensorgr e von 18x18 Pixeln und einer Aufl sung von 64 Graustufen Die Aufl sung betr gt 400 dpi Das Funktionsprinzip nennt sich Optisches Navigations Sytem und beruht darauf das der Bildsensor st ndig mikroskopisch kleine Bilder von der Oberfl che aufnimmt und der DSP diese Bilder st ndig miteinander vergleicht Aus den unterschiedlichen Bildern wird dann die Richtung und die zur ckgelegte Strecke errechnet Als Ausgabe stehen die aktu ellen X und Y Werte in Registern die ber den seriellen Port abgefragt werden k nnen PG 524 Zwischenbericht 25 GRUNDLAGEN S lt HDINS 2200 Clip HLMP ED80 xx000 ADNS 2610 Sensor a Customer supplied PCB lt Customer supplied base plate with recommended aligament features per IGES drawing Abbildung 2 14 Bestandteile des optischen Maussensors 1 Sensor Clip Lens Light Pipe
7. 76 rl MSB muss 1 sein fuer Write Operation TT pan_writeByte data 78 79 80 unsigned char pan_read unsigned char adr 81 82 zs Verbindet Adressieren und 83 x Lesen des Registers 84 x 85 pan_writeByte adr 86 return pan_readByte 87 88 89 void pan_init void PG 524 Zwischenbericht 165 QUELLTEXTE 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 x x Initialisierung x setzt Datenrichtungen legt 5V Pegel an x Init Befehle an Sensor DDRA 0b00000011 SCK und SDA auf Output PORTA 1 lt lt PinSDA 1 lt lt PinSCK SCK und SDA auf high hier muessen bei Umstellung auf PAN101 die entsprechenden Register gesetzt werden Reset PAN3101 pan_write 0x00 0x80 kein Sleep modus pan_write 0x00 0x01 int main void pan_init int8_t gelesen int16_t x int16_t y x 0 y 0 for Verschiebung und Positionierung gelesen pan_read 0x03 uart_puts n r n rVerschiebung X uart_puts itoa gelesen s 10 x gelesen gelesen pan_read 0x02 vart_puts Verschiebung_Y uart_puts itoa gelesen s 10 y t gelesen n r amp Koard ltoa x s 10 Tuna O ltoa y s 10 uart_puts uart_puts uart_pu
8. Base Plate e Surface A Abbildung 2 15 Aufbau und Funktionsweise der Optik des optischen Maussensors 1 26 PG 524 Zwischenbericht HARDWARE 2 1 6 Kompasssensor Die Verwendung einer Karte f r die Navigation setzt eine zuverl ssige Positionsbestim mung des Roboters im Raum voraus Ein Maussensor liefert zwar die abgefahrene Strecke kann aber insbesondere auf glatten oder spiegelnden Oberfl chen ungenau sein Aus die sem Grund hat sich die Hardware Gruppe entschieden die Fahrtrichtung des Roboters zus tzlich ber einen Kompasssensor zu bestimmen Ein passendes Modul mit der Bezeichnung CMPS03 wurde bei der Firma Devantech 8 gefunden Im Vergleich zu Kompasssensoren anderer Hersteller zeichnet sich der CMPS03 durch geringen Preis fertigem Aufbau des Moduls und Einfachheit des Auslesens der Daten aus Dieses Modul ist speziell f r die Bed rfnisse von Robotern gestaltet worden Es ermit telt anhand des Erdmagnetfeldes die genaue Himmelsrichtung in 0 1 Grad Schritten Das Modul arbeitet auch in geschlossenen R umen korrekt was insbesondere f r den Staubsau gerroboter wichtig ist Die Ausgabe der Ergebnisse kann entweder als PWM Signal oder ber einen I2C Bus abgefragt werden Im Folgenden werden die beiden Betriebsarten und die Pinbelegung des Kompasses n her erl utert CMPSO3 Kompassmodul Pin 9 GND Masse Pin 8 Nicht belegt Pin 7 50 Hz Wechselspannung Takteingang bei 50 Hz einfach unbelegt lassen
9. TCCRIA 1 lt lt WGM10 1 lt lt COM1A1 1 lt lt COM1B1 TCCRIB 1 lt lt WGM12 1 lt lt CS12 1 lt lt CS10 TCNT1 0x0000 PWM_DDR 1 lt lt PD4 1 lt lt PD5 PWM_L 255 PWM_R 255 TY 2X 3Y 4Y 168 PG 524 Zwischenbericht MOTORTREIBER 41 42 return 0 43 44 45 void motor_drive uint8_t speed_left 46 uint8_t speed_right 47 bool direction 48 motor_left speed_left 49 motor_right speed_right 50 51 PWM_L 52 PWM_R motor_left motor_right 53 54 if direction 55 MOTOR_DIR_PORT 1 lt lt MOTOR_DIR_L_PIN_1Y 56 MOTOR_DIR_PORT amp 1 lt lt MOTOR_DIR_L_PIN_2Y 57 58 MOTOR_DIR_PORT 1 lt lt MOTOR_DIR_R_PIN_3Y 59 MOTOR_DIR_PORT amp 1 lt lt MOTOR_DIR_R_PIN_4Y 60 jelse 61 MOTOR_DIR_PORT 1 lt lt MOTOR_DIR_L_PIN_2Y 62 MOTOR_DIR_PORT 1 lt lt MOTOR_DIR_L PIN _1Y 63 64 MOTOR_DIR_PORT 1 lt lt MOTOR_DIR_R_PIN_4Y 65 MOTOR_DIR_PORT amp 1 lt lt MOTOR_DIR_R_PIN_3Y 66 67 68 69 void motor_turn_left 70 PWM_L 255 71 PWM_R 255 72 73 MOTOR_DIR_PORT 1 lt lt MOTOR_DIR_L_PIN_2Y 74 MOTOR_DIR_PORT amp 1 lt lt MOTOR_DIR_L PIN Ji 75 76 MOTOR_DIR_PORT 1 lt lt MOTOR_DIR_R_PIN_3Y Gs MOTO
10. argv unsigned short myResult unsigned short ist Vorgabe der Library myResult 0 cbDConfigPort 0 FIRSTPORTA DIGITALIN x erstes PMD Board am System 0 x Klemme 21 am ersten digitalen Port des Geraetes D FIRSTPORTA x Verwendung als Eingang DIGITALIN while 1 cbDBitIn 0 FIRSTPORTA 0 amp myResult erstes PMD Board am System 0 x Klemme 21 am ersten digitalen Port des Geraetes D FIRSTPORTA x Klemme 21 ist erster Pin am Port 0 Uebergabe als Zeiger damit Wert veraenderbar Al std cout lt lt Hallo Welt Das Ergebnis ist lt lt myResult lt lt std endl Sleep 1000 x Pause zwischen den Messungen 1 Sekunde x Methode stammt aus windows h return 0 151 QUELLTEXTE R O000 DO G NR k GC LO D JC OG GO M m w N R O000 JO OG a NA Listing B 1 Digitaler Eingang int main int argc charx argv cbDConfigPort 0 F RSTPORTA DIGITALOUT unsigned short myResult 0 while 1 myResult 1 myResu cbDBitOut 0 std cout lt lt myResult an Sleep 500 Bet FIRSTPORTA 0 myResult Hallo Welt Jetzt ist lt lt aus lt lt std endl Listing B 2 Digitaler Ausgang int main int argc cbDConfigPort 0 F cbDConfigPort 0 F charx argv RSTPORTA DIGITALI
11. Pin 6 Nur bei Kalibrierung notwendig fur jede Himmelsrichtung auf GND ziehen Pin 5 nicht belegt Pin 4 Ergebnis PWM Pin 3 12C SDA Pin 2 12C SCL PIN 1 5V Norden e ee E n EE un _ n er n rn nm n e Abbildung 2 16 Pinbelegung des Kompasssensors 8 Modus 1 Das PWM Signal an Pin 4 gibt den Kompasswert 0 bis 359 9 Grad in Form eines High Impules aus Die L nge des High Impules kann zwischen 1 Millisekunde und 36 99 Mil lisekunden liegen Demnach entsprechen 0 1 Millisekunden 100us einem Grad Es muss somit nur die Signall nge gemessen werden danach ist eine Umrechnung sehr einfach Modus 2 Der 12C Bus wird an den Pins 2 und 3 SDA und SCL angeschlossen CMPS03 besitzt keine Pullup Widerst nde wie sie f r den I2C Bus notwendig sind Das Masterboard am I2C Bus sollte demnach diese 12C Leitungen mit ca Dk bis 47k Widerst nden mit 5V PG 524 Zwischenbericht 27 GRUNDLAGEN verbinden Wird der I2C Bus bei CMPS03 nicht genutzt so sollten Pin 2 und 3 ber einen Widerstand ca 10k bis 47k mit 5V verbunden sein damit St rungen vermieden werden Die Kommunikation ber den I2C Bus erfolgt wie bei fast allen Modulen ber verschie dene Register Es stehen folgende Register zur Verf gung Register Funktion 0 Software Version Firmware Version 1 Kompasswert Ein Byte 0 bis 255 entspricht 0 bis 359 9 Grad 2 3 Kompasswert als Word also 2 Byte
12. ar aa tae ss ee a ee 75 3 4 11 Abgrundsensoren re ae a en on re 75 3 4 12 Maussensor A A SR 76 3 8 EE E SA 77 3 5 1 Die untere beis ista at ir A aa 78 3 5 2 Die obere Ebene se le ts e Sie ad A dl d 81 4 Software 85 AAN E ARI E AI an a a Be Be a rede 85 4 1 1 Aufbau des Flash Speichers 85 Al leet RRA LS ER e a O A ee AC A 86 4 1 3 Inbetriebnahme a Ls a os a At al A 86 4 1 4 Konfiguration des Betriebssystems 86 4 1 5 Flashen des Kernels Dateisystems 2 222 20 87 4 1 6 Eigene Programme eat Wagener pre ir e 89 4 1 7 Zus tzliche Hardware ca as ra are ee ee 90 4 1 8 I2C auf dem Gumstix A ee ege o A a eer i 91 4 1 9 120 Kommunikation 2 2 2 ana sa SN 93 GE e GET as Er a 94 49 SGitterkarten g ta ein d ra AA a e a 95 PG 524 Zwischenbericht Inhaltsverzeichnis Aa Grid Mapa Puta sy a A e A O 96 42 2 EE io did a fer et it A 102 e El EE EE A a RR o a i 106 4 3 A rer E IS 109 4 3 1 Einf hrung in das Voronoi Diagramm 109 4 3 2 Definition des Voronoi Diagramms n nen 110 4 3 3 Algorithmus zur Berechnung des Voronoi Diagramms 113 44 Player Stage st E aA e 116 441 Installation ass a ba 116 4 4 2 Konfiguration des Roboters cues ae rr dara 119 4 4 3 Simulation starten aoaaa Pe Di 120 4 4 4 Eigene Programme erstellen 120 aro EE 123 4 5 Application Programming Interface 9 u 2a aaa e sh a en 123 O A NA 124 4 6 1 Maussensor A A AS A E e el 125 EE o io
13. ber setzt so dass das die entstanden Programmdateien auf der Zielplattform ausgef hrt werden k nnen Der vom Buildroot erstellte Cross Compiler ist f r die meiste Software zu gebrauchen au er nat rlich f r Software die speziell f r eine Architektur geschrieben wurde die nicht ARM entspricht Die meisten Programme lassen sich mit Hilfe von autoconf automatisch konfigurieren Um einen Quellcode zu bersetzten wird in das Hauptverzeichnis des Quellcodes gewech selt und durch den Befehl configure host arm linux autoconf gestartet Dabei ist zu beachten dass sich ein Verweis auf den Cross Compiler in der PATH Variable befinden muss Ist das nicht der Fall muss diese gesetzt werden Jetzt kann der Ubersetzungsvorgang durch den Befehl make gestartet werden Wenn die bersetzung ohne Fehler abgelaufen ist kann das Programm auf den Gumstix bertragen und ausgef hrt werden 4 2 Gitterkarte Die Gitterkarte stellt die interne Repr sentation der Welt dar In ihr werden alle relevanten Informationen gespeichert welche es unserem Roboter erm glichen sich in der Umwelt PG 524 Zwischenbericht 95 SOFTWARE zurecht zu finden Zudem wurden ein paar h here Funktionen in ihr gekapselt um an dieser Stelle Performanzvorteile erzielen zu k nnen Die Gitterkarte wurde komplett neu entworfen und implementiert Dies hatte zum Ziel eine m glichst schnelle Ansprechzeit zu erreichen Da es sich bei der Kartenr
14. die Belegungswahrscheinlichkeit und der Verschmutzungsgrad N heres hierzu wird bei der Besprechung der Klasse Feld dargestellt Es reicht erst einmal zu wissen dass hier bei die entgegengenommenen Anfragen an die Klasse GridMapData weitergeleitet werden ohne dass eine Ver nderung der zu transferierenden Daten stattfindet Des Weiteren ist noch die r umliche Ausdehnung der Gitterkarte verf gbar Diese Werte werden auf An frage bei der Klasse GridMapData angefordert welche diese w hrend der Laufzeit st ndig aktualisiert Zu Letzt ist noch die sogenannte Sondereigenschaft der Klasse Feld ein tempor rer Datenspeicher ber Get Set Methoden zu erreichen Neben den gerade auf gef hrten Funktionen die die Datenhaltung koordinieren stehen in der Klasse GridMap noch weitere datenverarbeitende Funktionen zur Verf gung Diese bilden den eigentlichen Sinn der Trennung zwischen den Klassen GridMap und GridMapData Diese Funktionen bieten drei Hauptfunktionalit ten welche im Folgenden n her dargestellt werden Laden Speichern Naturgem liegt die aktuelle Karte im schnellen Hauptspeicher vor Da dieser aber beim Ausschalten gel scht wird m ssen die erfassten oder berechneten Informationen der Gitter karte auf einem nichtfl chtigen Speicher gesichert werden Hierf r h lt die Klasse GridMap 96 PG 524 Zwischenbericht GITTERKARTE zwel Funktionen bereit void loadGridMapFromFile string dateinanme void saveGridMa
15. end berwacht der Mikrocontroller den Echo Pin Die L nge des High Impulses ist proportional zur Entfernung des Objektes Die gemessene Zeit gemessen wird in der Zeiteinheit uS wird durch die Konstante 58 dividiert wodurch die Entfernung in Zentimetern erhalten wird mo Le qe ITT 5v supply Echo Output Trigger Input Mode No Connection 0v Ground Programming pins Used once only to program the PIC chip during manufacture Do not connect to these pins Connections for 2 pin Trigger Echo Mode SRFO4 compatible Abbildung 2 5 Anschl sse f r seperaten Trigger und Echo Pin 8 Modus 2 Der zweite Modus besitzt einen gemeinsamen Pin f r das Trigger und Echo Signal siehe Abbildung 2 6 Er hat den Vorteil dass nur ein Pin des Controllerports belegt ist denn die Ausl sung und das Messen des Ergebnisses erfolgt ber den gleichen Port Um diesen Modus zu aktivieren muss der Modus Pin am Ultraschallsensor mit Low GND verbunden werden Nach Senden eines Ausl sesignales ein mindestens 1045 langes High Signal muss der Port auf Input umgeschaltet werden Danach wird das High Signal des Ultraschallsensors abgewartet F r diese Umschaltung stehen mindestens 70045 zur Verf gung Analog zur oberen Beschreibung des ersten Modus ist die L nge des zur ckgelieferten High Impulses proportional zur Entfernung des Objektes Indem die gemessene Zeit durch die Konstante 58 dividiert wird wird die Entfernung in Zentimeter
16. for i 7 i gt 0 i PORTA amp 1 lt lt PinSCK SCK auf Low Daten vorbereiten if datas 1 lt lt i Bit rausschieben PORTA 1 lt lt PinSDA jelse PORTA amp 1 lt lt PinSDA PORTA 1 lt lt PinSCk SCK 1 Sensor uebernimmt auf steigender Flanke _delay_us 1 Sensor Zeit lassen um Bit zu holen DDRA 1 lt lt PinSDA HI Z state PORTA 1 lt lt PinSDA unsigned char pan_readByte void Empfaengt ein Byte vom Sensor Register muss vorher adressiert worden sein int8_t i unsigned char data 0 _delay_us 3 164 PG 524 Zwischenbericht C BEISPIELPROGRAMME F R DEN ATMEGA32 47 Sensor Zeit lassen um die Daten 48 aus dem Register zu holen 49 for i 7 i gt 1 i 50 PORTA amp 1 lt lt PinSCk 51 SCK 0 Sensor bereitet Daten 52 auf fallender Flanke vor 53 54 _delay_us 1 55 Sensor kurz zeit lassen 56 57 PORTA 1 lt lt PinSCK 58 SCK 1 Daten lesen auf steigender Flanke 59 60 if PINA amp 1 lt lt PinSDA BIT einlesen 61 data 1 lt lt i 62 jelse 63 data bss 1 lt lt i 64 65 66 return data 67 68 69 void pan_write unsigned char adr unsigned char data 70 Ja 71 Verbindet Adressieren und 72 Beschreiben des Registers 73 74 adr 1 lt lt 7 75 pan_writeByte adr
17. k drk20u ZWAX Fr Q TTOYA Syda T HE uz 999309 E 3 hnear stadt var 292308 13538 De x AE az x 5 T sang eg a fe o KL Dd D x3 a I X3 ad d zz g von j en 2 sVs Se l I rs l 303 XT At A Fe E B KR To z a vi TT 9 E gt IT TIM N3Z T E t ES zu que Se J been 2 ze ang KR N9 ang N x Ex D 3 Bi I od SRA Gi 83 S A Pe Sdt D P ana ie El on In T El on in T 3 15882 18882 3 CO z al E ine PG 524 Schaltplan der Hauptplat Abbildung A 7 146 SCHALTPL NE DND CNY7O GND Abbildung A 8 Schaltplan der Platine fiir den Lichtsensor R1 LED1 xa R2 LED2 a R3 LED3 Pa Hp SH ES Xx N gt R4 LED4 Q O T p xa R5 LED5 xa De LED6 xa Abbildung A 9 Schaltplan der Platine f r die Bodenbeleuchtung PG 524 Zwischenbericht 147 HARDWAREKOMPONENTEN Dol LED1 eno a PAD2 LED2 ua xa PAD4 Abbildung A 10 Schaltplan der Platine fiir die Leuchtdioden Betriebszustand und Akkumulatorzustand A 3 Platinenlayouts 148 PG 524 Zwischenbericht PLATINENLAYOUTS AOTAAA 99 Abbildung A 11 Testplatine der Motoren PG 524 Zwischenbericht 149 HARDWAREKOMPONENTEN 150 PG 524 Zwischenbericht B Quelltexte B 1 Beispielprogramme f r die BreakoutBox 1 2 3 4 9 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 int main int argc char
18. r die echte Verwendung ist die Speisung des Control lers eine Notwendigkeit e Allen Bauteile in den Aufbauten sollten den gleichen Massepegel haben Auch das Programmierger t sollte keine Ausnahme sein Programmiersoftware Auf der Homepage des Herstellers 2 l sst sich kostenlos das AVR Studio herunterladen Dieses kann dann verwendet werden um den USB Programmer anzusprechen Richtig interessant wird das Studio allerdings erst wenn zus tzlich noch WinAVR 32 installiert wird dieser C Compiler wird automatisch in das AVR Studio integriert und C Programme k nnen von dort aus kompiliert und auf den Mikrocontroller bertragen werden Nach Start des Studios l sst sich ber Tools Program AVR Connect der Programmer AVRISP mkII ausw hlen In den verschiedenen Men s sollte dann wenn nichts falsch gemacht wurde die Verbindung zum Controller zu erkennen sein Dieser Dialog kann auch zum Aufspielen von kompilierten Programmen verwendet werden 54 PG 524 Zwischenbericht ATMEGA Selbstverst ndlich k nnen damit auch Programme aufgespielt werden die nicht mit AVR Studio kompiliert wurden Beispielsweise gibt es auch Pascal Fortran Python Basic und sogar Java Compiler die Maschinencode f r den Mikrocontroller erzeugen Die ersten Testprogramme wurden in Basic geschrieben daher folgen hier einige Pro grammbeispiele in Basic 3 2 3 Programmierung in Basic Der verwendete Compiler
19. rken zwischen 70 um und 140 um verwendet Als Basismaterial werden in der Pro jektgruppe RAPTOR mit Epoxidharz getr nkte Glasfasermatten verwendet Auf die Kup ferschicht ist Fotopositivlack aufgetragen der mit einer lichtundurchl ssigen Schutzfolie abgeklebt ist Bei den zweiseitigen Platinen ist die Kupfer Fotolack und Schutzschicht auf beiden Seiten Die Platinen f r den Staubsaugerroboter ist in sieben Schritten manuell von den Mitgliedern der Hardwaregruppe hergestellt worden Die verwendeten Methoden werden im Folgenden n her beschrieben Dabei wird auf die gewonnenen Erfahrungen und die eingesetzten Ger te sowie Materialien n her eingegangen 3 3 1 Layout Zum Erstellen des Layouts der Platinen wurde das Programm EAGLE Einfach Anzuwen dender Grafischer Layout Editor der Firma CADSoft 9 benutzt Die Software besteht aus mehreren Komponenten Layout Editor Schaltplan Editor Autorouter und einer er weiterbaren Bauelementedatenbank Einige Bibliotheken wie beispielsweise der Baustein CNY70 Lichtsensor mussten hinzugef gt werden Der Autorouter erzielt nicht immer das gew nschte Ergebnis so dass manuelle Verbesserungen vorgenommen werden m ssen Zus tzlich ist darauf zu achten dass die Leiterbahnbreiten nicht zu klein die Abst nde PG 524 Zwischenbericht 65 HARDWARE zwischen verschiedenen Leiterbahnbreiten gro genug und eine ausreichende Lochgr e der Pads vorhanden ist 3 3 2 Belichtung Das Layou
20. sung sollte 640x480 betragen ohne dass sie dabei mit Hilfe von Software interpoliert wird Dies ist Mindestvorraussetzung um den Verschmutzungsgrad des Bodens erkennen zu k nnen Zus tzlich wird die Motorsteuerung verbessert werden so dass der Motor beispielsweise zus tzlich mit Hilfe von Interrupts gesteuert werden kann In dringenden F llen wie Kon takt mit einem Hindernis oder ein Abgrund soll der Motor sofort zum Stillstand gebracht werden Geplant ist in den Anfangswochen des neuen Semesters den Hardwarebereich abzuschliessen F r das zweite Semester liegt der Fokus auf der Softwareentwicklung des Staubsaugerroboters Demnach wird sich im Sommersemester 2008 die Hardwaregruppe der Softwaregruppe anschlie en um diese zu unterst tzen Die folgenden Aufgaben sind hierbei vorgesehen Die API des Simulators wird fertiggestellt Zus tzlich wird die API f r den Gumstix programmiert F r das Verfahren der Positionsbestimmung des autonomen Roboters durch die Beobachtung seiner R der wird die Odometrie programmiert Die Bahnplanung steht ebenfalls aus Sie dient der Berechnung einer optimalen Route die jeden Punkt im Raum mindestens einmal erreicht Ferner soll ein Webinterface erstellt werden um eine m glichst intuitive Bedienung des Staubsaugerroboters zu erm glichen Somit k nnen alle wichti gen Einstellungen ber einen Webbrowser vorgenommen werden Der wohl aufw ndigste Programmierteil wird die Sensordatenfusion sein Diese ist
21. was nicht akzeptabel war Also musste folgender Algorithmus umgesetzt werden 98 PG 524 Zwischenbericht GITTERKARTE O Seed Pixel 1 Direction fo Growth E Grown Pixels Pixels Being Considered b Growing Process After a Few Iterations Abbildung 4 3 Bereichswachstumsverfahren 17 for alle Felder in zeilenweiser Reihenfolge do if Feld ist Randpixel ermittel Rand end end Listing 4 20 Wachstumsalgorithmus der Objekterkennung Dies f hrt erst einmal dazu dass jeder Rand eines Objektes berhaupt gefunden wird Die eigentliche Aufgabe bestand darin den einzelnen Rand geschickt zu ermitteln so dass er in geordneter Reihenfolge gespeichert werden kann Hierzu wurde folgende Schleife um gesetzt while aktuelles Feld Startfeld finde Nachbarrandpixel aktuelles Feld der R ckgabe hinzuf gen setze Nachbarrandpixel als aktuelles Feld end Listing 4 21 Randerkennung Dies f hrt aufgrund der spezifischen Eigenschaften eines Objektrandes dazu dass die Randpixel in ihrer Nachbarschaftsreihenfolge gefunden werden Dies Eigenschaften sind dass ein Feld welches Teil eines Objektrandes ist genau zwei Nachbarn besitzt die eben falls Teil des gleichen Objektrandes sind Im Verlauf einer Suche ist das aktuell betrachtete PG 524 Zwischenbericht 99 SOFTWARE Feld dadurch gekennzeichnet dass ei
22. 100uS to 25mS Times 10uS Mininum out after 30mS if no object detected Trigger pulse input to SRFOS and Echo pulse output to users controller 8 cycles off sonic burst Ultrasonic burst II transmitted from SRFOS Colour Codes Blue Users controller drives the Trigger Echo pin Red SRF 05 drives the Triggerfecho pin Abbildung 2 8 Zeitdiagramm vom Modus 2 8 PG 524 Zwischenbericht 21 GRUNDLAGEN Abbildung 2 9 Richtwirkung des Sensors 8 Abbildung 2 10 Der Microschalter MBF5B 12 22 PG 524 Zwischenbericht HARDWARE ters mit seinen Anschl ssen Der Kontakt ist in Ruhestellung zwischen COM und NC oder NO geschlossen Durch Druck auf den Bet tiger wird der Schaltvorgang ausgel st Dabei wird von Kontakt NC auf NO umgeschaltet Der Kontaktabstand ist kleiner als 3mm Type M B Zusatzbet tiger Actuator Bet tiger Plunger Abbildung 2 11 Anschl sse des Kontaktsensors 12 2 1 4 Lichtsensoren Ein Lichtsensor ndert bei der Einwirkung von Licht seine elektrischen Eigenschaften Der Reflex Optokoppler CNY70 siehe Abbildung 2 12 der Firma Vishay 26 wird f r den Staubsaugerroboter vielf ltig eingesetzt Wie in den folgenden Abschnitten beschrieben dient er der Projektgruppe als Radencoder und Abgrundsensor In der Zeichnung 2 13 ist dargestellt dass der CNY70 in seinem w rfelf rmigen Geh use eine Infrarot LED als Sender und einen Infrarot Fototransistor al
23. 524 Zwischenbericht Tabellenverzeichnis 2 1 Registerbelegung des Kompassmoduls o 28 3 1 Pinbelegung der BreakoutBox IS costo eo EE d E 3 43 3 2 Die Pinbelegung verschiedener Stecker o 52 4 1 Beispiel f r die Umrechnung von Koordinanten e 105 179 Tabellenverzeichnis 180 PG 524 Zwischenbericht Literaturverzeichnis 10 11 12 13 14 15 16 17 18 19 AGILENT TECHNOLOGIES http www agilent com ATMEL http www atmel com BASCOM http www mcselec com bascom avr htm BEISPIEL APPLET http www personal kent edu sim rmuhamma Compgeometry MyCG Voronoi Fortune fortune htm BGL BOOST GRAPH LIBRARY http www boost org libs graph doc index html COMPUTING MEASUREMENT http www measurementcomputing com C T BOT http www heise de ct projekte ct bot DEVANTECH http www robot electronics co uk EAGLE http www cadsoft de GMBH PLUG IN ELECTRONICS http www plug in de GUMSTIX http www gumstix com HARTMANN http www hartmann codier de I2C GUMSTIX WIKI http www davehylands com gumstix wiki i2c KLEIN ROLF Algorithmische Geometrie Springer 2004 ISBN 978 3 540 20956 0 KUNG LONG http www klb com tw LOGITECH http www logitech com MARSHALL DAVID http www cs cf ac uk Dave Vision_lecture node35 htmLl MEASUREMENT COMPUTING http www measurementcomputing conm O SULLIVAN SH
24. 69 x zu vermeiden 70 x 71 TCCRO 7 lt lt CS00 72 73 74 x Timer auslesen 75 x Jeder Overflow in iter gezaehlt 76 x entspricht einem Zaehlvorgang von TT 0 bis 255 lt lt 8 entspricht 256 78 79 zeiter zeiter lt lt 8 TICNTO 80 81 82 x Umrechnung von Pulsbreite 83 in Zentimeter 84 x Siehe Datenblatt SRFO5 85 x 86 uart_puts ultoa zeiter s 10 87 Dart puts 500 _ asinie 88 zeiter zeiter 2 89 uart_puts ultoa zeiter s 10 90 uart_puts uS n r 91 zeiter zeiter 58 92 uart_puts ultoa zeiter s 10 93 uart_puts Zentimeter n r 94 uart_puts inir 95 sleepms 200 96 97 98 x 99 x Interrupt Routine 100 x moeglichst kurz 101 x nur ein Inkrement 102 103 ISR TIMERO_OVF_vect 104 zeiter zeiter l 105 Listing B 16 Impulsmessung 1 define PinSCK O 2 define PinsDA 1 3 PG 524 Zwischenbericht 163 QUELLTEXTE 4 5 6 Maussensor SCK landete an PIN40 porta 0 SDIO SDAlandete an PIN39 porta l 7 void pan_writeByte unsigned char data 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 Schickt ein Byte an den Sensor Kann auch die Adress ines Registers sein welches gelesen werden soll ef int8_t 1 DDRA 1 lt lt PinSDA SDA auf Output
25. API siehe 4 18 implementiert Drehrate negative Werte rechtsKurve positive Werte linksKurve O geradeaus void setzeMotorGeschwindigkeit double x double y double drehrate Alle Sensordaten aktualisieren void leseSensorDatenEin Sensordaten sind Abrufbar Beispielsweise m_sonarproxy 0 oder m_sonarproxy 2 S oder m position2dproxy 1 usw SonarProxy gibSonarDaten liefert true wenn irgendein Bumper aktiviert wurde f liefert false sonst bool gibKollision liefert string links vorne oder rechts bei entsprechender kollision std string gibKollisionsseite 122 PG 524 Zwischenbericht APPLICATION PROGRAMMING INTERFACE startet Motor true starten false ausschalten void starteMotor bool starten void setzeOdometry double x double y double ausrichtung holeKarte und im proxy speichern void holeKarte gibt Kartenaufloesung m cell zurueck double gibXGeschwindigkeit double gibYGeschwindigkeit double gibXPosition double gibYPosition double gibAusrichtung Listing 4 28 Kartengr enausgabe 4 4 5 Makefile Das Programm muss schliesslich kompiliert werden Dazu wurde das folgende Makefile geschrieben Aus den Roboter cpp und Main cpp wird die Main bin erstellt all Roboter o Main o g Main o Roboter o o Main bin pkg config A cflags playerc pkg config l
26. Abbildung 2 2 console vx 11 Urspriinglich wurde es bestellt damit die PG Teilnehmer erste Erfahrungen mit dem Gumstix sammeln k nnen Hierfiir wurden 3 Pins eines RS 232 Ports verkabelt mit einer Stromquelle verbunden und mit Hilfe eines seriellen Anschlusses an den Hauptrechner im Hardware Labor angeschlossen Bei ausreichender Spannung wird das Gumstix automa tisch vom Rechner erkannt und kann nun mit Hilfe des Programms Minicom konfiguriert werden Die ersten Versuche Daten vom Hauptrechner auf das Gumstix zu flashen verliefen problemlos Jedoch erweist sich die Geschwindigkeit des seriellen Anschlusses als sehr lang sam weshalb im Laufe der Zeit nach anderen schnelleren M glichkeiten zur Daten bertra gung auf das Gumstix gesucht wurden siehe n chstes Kapitel Dieses Erweiterungs Board verf gt zus tzlich ber GPIO Schnittstellen welche den Anschlu weiterer einfacher Peri pherie wie z B Sensoren unterst tzen Weiterhin erw hnenswert ist die Unterst tzung von USB Host Signalen die dem console vx auch erlaubt selber als Host z B f r Netzwerke zu agieren Diese M glichkeit wurde von der Projektgruppe allerdings noch nicht in Anspruch genommen Erweiterungs Board netwifimicroSD EU Das Erweiterungs Board netwifimicroSD EU wird an den 120 pin MOLEX connector des gumstix verdex XL6P angeschlossen Technische Details e 10 100baseT ethernet microSD Slot 802 11 b und 802 11 g WLAN Verbindungsprotokoll Verbind
27. B 34 x f r 0 8 Sekunden auf High 35 x 36 while clock lt endwait 37 HIGH 1 38 cbDBitOut 0 FIRSTPORTA 0 HIGH 39 40 PG 524 Zwischenbericht 171 QUELLTEXTE 41 x die Abfrage nach 1 sagt dass wir einen 42 x Taktzyklus lt 100 haben 43 x hier wird der Motor f r die 44 x restliche Gesamzeit auf GND gesetzt 45 x 46 if i 1 47 48 HIGH 0 49 der Motor wird ausgeschaltet also auf GND gesetzt 50 cbDBitOut 0 FIRSTPORTA 0 HIGH 51 52 53 54 Einstellen wie lange der High Takt in dauert und wie 55 lang der Low Takt dauert _ _ _ 56 void K pwm_singal int motor_leistung 57 58 x 59 x die Variable Periodendauer darf nicht ge ndert werden 60 x muss aber noch berechnet werden 61 siehe Abbildung oben 62 x 63 64 const int Gesamtzeit 1 65 66 x Umrechnung in die gew nschte Taktzeitl nge x 67 float High_Takt Gesamtzeit x 68 float motor_leistung 10 69 70 x der Wert wird in Millisekunden angegeben x 71 int Low Takt int 1000 Gesamtzeit High_Takt 72 T3 A 74 x die IF Abfrage verhindert 75 x dass eine Fehlermeldung auftaucht 76 77 BE High Takt lt 0 78 79 printf High Takt 0 80 Sleep Low_Takt 8l 82 else if Low_Takt lt 0 83 1 172 PG 524 Zwischenbericht MOTORTREIBER DER TESTSCHALTUNG 84 x 85 x sag
28. Bootloaders U Boot gespeichert Sollten diese Daten beim Flashen besch digt werden w re es nicht mehr ohne Weiteres m glich den Gumstix zu reparieren 1 1 Diese Sektion ist reserviert f r dynamische Daten wie zum Beispiel Laufzeitvariablen U Boot besitzt einen Softwareschutz um nicht zuf llig die ersten beiden Sektionen zu berschreiben 1 2 Hier l sst sich das JFFS2 Dateisystem wiederfinden welches die Root Partition f r das Betriebssystem ist Im Dateisystem ist auch der Linux Kernel enthalten sowie die Betriebsumgebung 85 SOFTWARE 4 1 2 U Boot Bei U Boot handelt es sich um den Bootloader des Gumstix Mit diesem gibt es die M glich keit ein falsch geflashtes Dateisystem oder einen falsch geflashten Kernel wieder zu repa rieren indem das Dateisystem oder der Kernel noch mal ber den Bootloader geflasht wird Um in die Konsole des Bootloaders zu gelangen muss sofort nach dem Einschalten des Gumstix eine beliebige Taste gedr ckt werden Sonst wird nach nur 3 Sekunden der Kernel normal gebootet 4 1 3 Inbetriebnahme Bevor der Gumstix in Betrieb genommen wird muss sichergestellt werden dass eine Strom quelle vorhanden ist die bei einer Spannung ab 3 3V konstant 600mA Gleichstrom lie fert Ab 4V wird jedoch vermehrt Hitze produziert was zu Komplikationen f hren kann wenn der Gumstix nicht hinreichend gek hlt wird Durch die zus tzlichen Ger te wie SD Cardreader und Ethernet hat sich bei geringerer Stro
29. Das Ergebnis sollte dem Beispiel aus Listing 4 6 hneln Sollte aber etwas anderes als mtdblock1 ausgegeben werden muss beim Flashen auch eine andere Zieladresse angegeben werden Zun chst einmal muss jedoch das Dateisystem neu eingebunden werden allerdings aus Sicherheitsgr nden im Nur Lese Modus ro Das eigentliche Flashen geschieht dann PG 524 Zwischenbericht 87 SOFTWARE ber die Befehls Reihe welche in Listing 4 7 aufgef hrt ist Der Watchdog sorgt daf r dass der Gumstix nach dem Flashen automatisch neu gestartet wird Am Terminalprogramm sollte der Reboot verfolgt werden k nnen Sollte alles funktionieren startet der Gumstix nach der U Boot Wartezeit sofort das neue Image rootfs arm _nofpu jffs2 das Root Filesystem ulmage der Kernel Listing 4 5 Kernelimages dev mtdblock1 on type jffs2 rw noatime Listing 4 6 in der Konsole modprobe sall00 _wdt margin 1 mount o remount ro echo amp amp flashcp v tmp rootfs arm_nofpu jffs2 dev mtdl amp amp flashcp tmp ulmage dev mtd2 amp amp echo gt dev watchdog E Listing 4 7 Flashen des Dateisystems Uber den Bootloader Der Kernel oder das Dateisystem sollte nur im Bootloader geflasht werden wenn das Betriebssystem nicht mehr funktioniert weil das Flashen im Bootloader bis zu einer Stunde dauern kann und durch Tippfehler die ganze Prozedur von neuem beginnt Als Erstes muss der Gumstix an einen seriellen Po
30. Getriebemotoren k nnen PG 524 Zwischenbericht 29 GRUNDLAGEN abh ngig von ihrer Belastung und dem Untergrund Fliesen Teppich Laminat etc in ih rer tats chlichen Umlaufgeschwindigkeit voneinander abweichen Um sicherzustellen dass zwei verschiedene Getriebemotoren gleich oft drehen miissen externe Sensoren eingesetzt werden die die Radumdrehung st ndig berwachen und die Information an einen Mikro controller senden Trotz dieser Nachteile werden Getriebemotoren eingesetzt auch wenn die Fahrt gerader Strecken zu einer Herausforderung wird Um zu verstehen warum der Schrittmotor nicht in Frage kommt muss zun chst das Prinzip des Schrittmotors verstan den werden Die Schrittmotoren sind grundlegend anders konzipiert als die Getriebemotoren Der Rotor besteht meist aus einem Permanentmagneten der durch Anlegen einer Spannung an den Spulen bewegt wird Jeder Motor enth lt zwei Spulen welche wiederum jeweils zwei Anschl sse besitzen und bei angelegter Spannung den Motor um einen Schritt fort bewegen Die Fortbewegung des Rotors pro Schritt ist relativ pr zise die Toleranz liegt h chsten bei 5 Prozent Der Schrittwinkel gibt dabei an wieviele Schritte notwendig sind damit das Rad einmal um die Achse dreht z B werden bei einem Schrittwinkel von 1 8 Grad 200 Schritte ben tigt Der Schrittwinkel liegt je nach Bauart des Motors in der Regel zwischen 1 8 Grad und 18 Grad Es kann aber ber das Getriebe nach belieben v
31. Informa tion kann zwar auch aus der bergeordneten Datenstruktur ermittelt werden jedoch ist es aus Performanzgr nden besser diese Information redundant abzuspeichern Hierbei ist es nicht m glich die Koordinaten im Nachhinein zu ver ndern Diese Read Only Eigenschaft wird dadurch erreicht dass keinerlei Funktionen zu Mani pulation dieser Variablen existieren W hrend der Instanziierung k nnen ber den Konstruktor die Koordinaten als Parameter angegeben werden Ab diesem Zeitpunkt steht diese Information fest m_segment Dieser Wert beschreibt die Segementzugeh rigkeit Dies ist bei der Objekter kennung auf der Gitterkarte von Bedeutung da hier eine Segmentierung der Karte vorgenommen wird Hierbei wird jedem alleinstehenden Objekt eine Segmentnum mer zugeordnet welche in der Eigenschaft m_segment gespeichert wird Anhand die ser Informationen k nnen einzelne Objekte schnell erkannt und analysiert werden Der gespeicherte Wert dient hierbei ausschlie lich der Performanzverbesserung der h heren Funktionen der Gitterkarte m_randpixel Zus tzlich zu der Information der Zugeh rigkeit zu einem Objekt sind f r verschiedene Aufgaben Informationen ber die Position eines Feldes innerhalb eines Objektes interessant Die ben tigte Information ist hierbei ob sich das aktuell be trachtete Feld innerhalb einen Objektes befindet oder am Rand eines solchen Dies wird in der Eigenschaft m_randpixel in Form eines Boolean gespeichert Hie
32. Konsolenfenster der Abbildung 4 16 sind die Sonardaten aus der aktuellen Position des Roboters zu sehen PG 524 Zwischenbericht 119 SOFTWARE LLL A 8 Sefehisfenster J ET Abbildung 4 16 Simulationsumgebung 4 4 3 Simulation starten Um Player Stage letzendlich zu starten m ssen noch einige Umgebungsvariablen gesetzt werden Dazu muss in der Konsole folgendes eingegeben werden export LD_LIBRARY_PATH home lt Name gt Player lib export PKG_CONFIG_PATH home lt Name gt Player lib pkgconfig Um eine einfache Welt aus Stage zu laden muss aus dem Verzeichnis home lt Name gt Player player lt version gt server die simple cfg Datei wie folgt aufgerufen werden player home lt Name gt Stage stage lt version gt worlds everything world cfg Es stehen auch noch andere Karten zur Verf gung wie z B die simple cfg die nur aus einigen R umen und einen Roboter besteht Diese Karte ist f r unsere Zwecke ausreichend Ist die Simulation erfolgreich gestartet worden dann m sste eine Karte zu sehen sein wie in Abbildung 4 17 Zu sehen sind dann sechs Roboter in verschiedenen Farben zwei Geistobjekte und eine B roumgebung W nde werden durch schwarze Linien dargestellt 4 4 4 Eigene Programme erstellen F r eigene Programme bernimmt Player die Rolle des Servers so dass Benutzer ihre eige nen Programme zu Steuerung des Roboters schreiben k nnen Diese Programme bemerken keinen Untersc
33. Punkt der Experimen treihe bestand allerdings noch keine Datenverbindung zum PC daher wurde der Tastersta tus ber die Leuchtdiode angezeigen Listing B 7 l sst eine Leuchtdiode weiterhin blinken wechselt allerdings die Frequenz wenn ein an Pin 33 PortA 7 und GND angeschlossener Taster gedr ckt wird Unbeschaltete Eing nge Wenn der Taster gedr ckt ist ist der Eingang mit GND verbunden kann in Programmen also als LOW ausgelesen werden Ist der Taster allerdings nicht gedr ckt so gilt der Eingang als unbeschaltet hat also keinen definierten Pegel Da in diesem Fall dennoch ein definierter Pegel gew nscht ist werden in solch einem Falle oft Pull Up Widerst nde eingesetzt um unbeschaltete Eing nge auf HIGH zu ziehen Der ATMega32 stellt solche Pull Up Widerst nde an den Eing ngen auf Wunsch selbst zur Verf gung Laut einigen Berichten sind diese zwar nicht sehr vertrauensw rdig f r kleinere Anwendungen reichen sie jedoch v llig aus Pull Up Widerst nde aktivieren Die internen Pull Up Widerst nde werden aktiviert indem die Pins mit 1 beschrieben werden obwohl sie als Eingang geschaltet sind Nat rlich k nnen die Eing nge dann nicht mehr mit Portx y angesprochen werden zum Auslesen ist dann Pinx y zust ndig 3 2 4 Einbindung eines Quarzes Bis zu diesem Punkt l uft der Mikrocontroller nur mit 1MHz Dieser Takt wird von einem internen Taktgenerator erzeugt Um den ATMega32 mit voller Geschwindigkeit laufen zu la
34. Register 2 ausgew hlt wurde sendet das Modul nun nacheinander die Register 2 3 4 usw Da allerdings nur Register 2 und 3 relevant sind sollte nach dem zweiten ausgelesenen Byte ein NACK gesendet werden Nat rlich ist auch die danach gesendete Stoppbedingung ein eindeutiges Zeichen f r das Ende der Kommunikation allerdings kann das NACK sinnvoll sein weil in manchen Anwen dungen das Bereitstellen zus tzlicher Bytes f r den Sender mit Zusatzaufwand verbunden ist Durch das Senden des NACK wei der Sender somit dass er diesen Zusatzaufwand nicht betreiben muss da diese zus tzlichen Bytes nicht abgefragt werden PG 524 Zwischenbericht 133 SOFTWARE Adressierung Das erste Byte nach der Startbedingung ist die Adressierung des Slaves Der Master w hlt also aus mit welchem Slave er kommunizieren m chte zudem wird an dieser Stelle auch schon der Modus lesend schreibend definiert I C Ger te die als Slaves fungieren k nnen haben eine Adresse auf die sie reagieren Diese l sst sich je nach Ger t frei vergeben wie im Mikrocontroller m glich teilweise frei vergeben manche ICs der gleichen Baugruppe sind immer im gleichen Adressraum nur die letzten Bits k nnen manipuliert werden oder kann auch fest in der Hardware vorgegeben sein wie im Kompassmodul Nach der urspr nglichen Definition des Bus hat eine Adresse exakt sieben Bit Einige Bitkombinationen sind jedoch f r andere Zwecke re serviert so dass na
35. Stecker so gehalten werden dass die markierte Ader nach links zeigt Pin 1 befindet sich dann oben links die anderen Pins folgen im Zickzackmuster Abbildung 3 12 Da der Programmieradapter nicht direkt an den Mikrocontroller angeschlossen werden kann und das verwendete Steckbrett keine direkte Anschlussm glichkeit liefert Es erg be sich immer eine Verbindung zwischen Signalen die nicht verbunden werden d rfen wurde 52 PG 524 Zwischenbericht ATMEGA L 0506 L DEE oooga DEE Abbildung 3 12 Pinbelegung von Wannenbuchsen ein kleines Adapterboard Abbildung 3 13 gebaut Zum einen spreizt es die beiden Zeilen weit genug dass diese auf getrennten Teilen des Steckbretts liegen zum anderen k nnen dort auch direkt Kabel eingesteckt werden Eine Seite des Adapterboards ist markiert dort muss die markierte Ader das Kabels und somit Pin 1 sein Abbildung 3 13 Das kleine Adapterboard f r unseren Programmieradapter 3 2 2 Inbetriebnahme des ATMega32 Um den Mikrocontroller zum Laufen zu bringen reicht es aus die GND Pins Pin 11 und Pin 31 mit GND zu verbinden und den Spannungspin Pin 10 an die Stromversorgung anzuschlie en Dennoch sollten weitere Verbindungen geschaffen werden e Zur Spannungsstabilisierung wird ein Kondensator z B 100 nF zwischen GND und P5V geschaltet Solche Filter werden sehr h ufig an ICs eingesetzt PG 524 Zwischenbericht 53 HARDWARE e Auch wenn der Mikrocontroller
36. Typ CNY70 verwendet Wie bei den Radsensoren der Hauptplatine m ssen die Sensoren sehr nah am zu messenden PG 524 Zwischenbericht 75 HARDWARE DV DI 1kOhm LC 1kOhm 1kOhm 1kOhm ey AO UI Abbildung 3 21 Realisierung der Hauptplatine Kontaktsensoren Gegenstand sein In diesem Fall missen sie sehr nah am Boden angebracht werden Die drei Lichtsensoren befinden sich auf Zusatzplatinen Mit Hilfe der Pads werden sie an die Hauptplatine ber Kabel gel tet Die Vorwiderst nde betragen auch hier 100 und die PullUp Widerst nde 47kQ Alle drei sind mit 5V Spannung versehen Der im Schaltplan oberste CNY70 ist somit mit dem Pin PAO ADCO des ATMega32 verbunden der mittlere mit PA1 ADC1 und der unterste mit PA2 ADC2 3 4 12 Maussensor F r die korrekte Ermittlung der abgefahrenen Strecke muss der optische Maussensor sehr nah am Boden angebracht werden Aus diesem Grund wurde der Maussensor auf einer eigenen Platine untergebracht Als Grundlage f r die Schaltung diente der Schaltplan vom c t Bot 7 welcher entsprechend modifiziert wurde Im Anhang befindet sich der neue Schaltplan A 6 des Maussensors Die Verbindung zum Mikrocontroller erfolgt ber einen vierpoligen Stecker welcher Anschl sse f r 5V Ground SDIO Datenleitung und SCK Taktleitung bereitstellt An die beiden Pins OSC IN und OSC OUT des Sensorchips wird der Quarz angeschlossen welcher den Takt
37. Um diesen zu berechnen werden die gerade erw hnten Werte gebraucht static const int FELD_BREITE static const int ROBOTER_DURCHMESSER Listing 4 22 Konstanten f r die Routenplanung Konstanten tragen der Tatsache Rechnung dass es Werte gibt die sich nicht ndern Hier liegen zwei solcher Beispiele vor Der Roboter wird nicht pl tzlich schrumpfen und die R ume sich auch nicht ausdehnen Daher k nnen mit Hilfe der beiden obigen Kon stanten die Berechnungen zur Routenplanung durchgef hrt werden Hierf r muss aus den beiden Konstanten die Anzahl der freizuhaltenden Felder berechnet werden die den Ab stand vom Zentrum des Roboters zu den Objekten im Raum darstellen Ist dies geschehen kann dies bei der Sch tzung der Entfernungen ber cksichtigt werden F r diesen Vorgang wird folgender Algorithmus umgesetzt der sich an dem Bereichswachstumsverfahren 17 orientiert weise Startfeld die Entfernung 1 zu lege Startfeld auf Stack for alle Felder auf dem Stack do hole TOS gt aktuelles Feld for alle Nachbarn des aktuellen Feldes do wenn Nachbarfeld nicht belegt and Nachbarfeld nicht zu nah an Objekt do 100 PG 524 Zwischenbericht GITTERKARTE weise Nachbarfeld sein Entfernung zu lege Nachbarfeld auf Stack end end end Listing 4 23 Entfernungssch tzung Die Entfernungssch tzung kann hier auf vielf ltige Art und Weise erledigt werden Es wurde dabei Wert auf di
38. Zwischenbericht SKIZZEN DER KAROSSERIE RAPTOR obere Ebene von unten aus gesehen 1 Loch f r Webcambefestigung 1 Webcam 4 Ultraschallsensoren SRF05 4 Befestigungen f r SRFO5 4 L cher f r Verbindungsstangen Loch f r Webcambefestigung geplant Loch f r Kabel geplant Abbildung A 3 Obere Ebene von unten aus gesehen PG 524 Zwischenbericht 141 HARDWAREKOMPONENTEN RAPTOR obere Ebene von oben aus gesehen 1 Loch f r Webcambefestigung 1 Webcam 4 Ultraschallsensoren SRFO5 4 Befestigungen f r SRFO5 1 Gumstix 1 Kompassensor Loch f r Kabel geplant Gumstix geplant Abbildung A 4 Obere Ebene von oben aus gesehen 142 PG 524 Zwischenbericht SCHALTPL NE A 2 Schaltpl ne PG 524 Zwischenbericht 143 HARDWAREKOMPONENTEN Z10 0 cava PIN A HOQON taYd caYd A Lon 2 Y ZOON CR lt Wal Wei 191 Abbildung A 5 Testschaltung der Motoren PG 524 Zwischenbericht 144 SCHALTPL NE LED1 E T ST G cN o CH d m H DS V VM E 5 2 z O o a OO UI CH H OL9Z SNIW in i Ci e CH CH PDPPP D a SC I YDD ONO Abbildung A 6 Schaltung der Maussensorplatine PG 524 Zwischenbericht 145 HARDWAREKOMPONENTEN Zwischenbericht
39. belegt ist Die Angabe erfolgt in Prozent weshalb der Wertebe reich zwischen 0 und 100 liegt Die Konstante 100 bedeutet in diesem Zusammenhang dass das aktuell betrachtete Feld mit einer Wahrscheinlichkeit von 100 Prozent belegt ist m_schmutz Auch bei dieser Variable handelt es sich um einen Integerwert Er legt f r das aktuelle Feld fest wie stark der Verschmutzungsgrad ist Hierbei wird der Wer tebereich von O bis 100 eingegrenzt wobei 100 die h chste m gliche Verschmutzung darstellt Da jedoch noch nicht damit begonnen wurde die Verschmutzung festzu stellen kann hier noch nicht von einer gefestigten Information gesprochen werden 106 PG 524 Zwischenbericht GITTERKARTE o gt Joen JAJSYNY e Innere Vectoren Abbildung 4 6 erste Datenstruktur zur Verwaltung der Gitterkarte gt e o e usJopeN aJeyny lt e LE gt Der e gt Innere Vectoren D ren A 0 u ere Vecto e 0 Abbildung 4 7 finale Datenstr WE uktur zur Verwaltung der Gitterkarte PG 524 Zwischenbericht 107 SOFTWARE Es k nnte daher sein dass in Zukunft mehr als nur eine Variable zur Schmutzdetek tion herangezogen werden muss Zun chst wird aber davon ausgegangen dass diese Information auf einen einzelnen Wert reduzierbar ist m_y Diese Werte repr sentieren die Koordinaten des aktuellen Feldes Diese
40. dass die restlichen f nf Pins auch Programmier Pins genannt ausschliesslich bei der Herstellung dazu dienen den Flash Speicher des Chips PIC16F630 zu programmieren Das bedeutet dass keiner dieser Pins verbunden werden darf Richtwirkung des Ultraschallsensors Die Richtwirkung des SRFO5 ist dem Datenblatt des Herstellers entnommen und ist in der Grafik 2 9 zu sehen Die Ultraschallwellen breiten sich konisch aus Die Richtung ist nicht nderbar 2 1 3 Kontaktsensoren Die Ultraschallsensoren k nnen ein Hindernis erst ab einem Mindestabstand von 10cm messen Zudem haben sie eine Fehlerrate In einigen Szenarien kann es dazu kommen dass die Sensoren ein Hindernis nicht erkennen F r diesen Fall hat die Projektgruppe sich entschieden den Staubsaugerroboter mit f nf zus tzlichen Microschaltern auch Schnapp schalter genannt zu versehen Die Entscheidung fiel auf den Schalter MBF5B der Firma Hartmann 12 siehe Abbildung 2 10 Die Abbildung 2 11 zeigt eine Zeichnung des Schal 20 PG 524 Zwischenbericht HARDWARE SRFOS Timing Diagram Mode 1 Trigger pulse 10u5 Mininum Trigger pulse EE input to SRFOS 8 cycles off sonic burst Ultrasonic burst transmitted from SRFOS Echo pulse 100uS to 25m8 Times out after 30mS if no object detected Echo pulse output from SRFOS to users controller Abbildung 2 7 Zeitdiagramm vom Modus 1 8 SRFOS Timing Diagram Mode 2 Trigger pulse Echo pulse
41. dem zweiten Kapitel spezialisiert sich dieses Kapitel auf die Realisierung der Hardware des autonomen Staubsaugerroboters Im Folgenden wird die Testumgebung der Projektguppe beschrieben Diese bew hrte sich besonders am An fang des Wintersemesters 2007 2008 Des Weiteren werden Einzelheiten zum ATMega32 erl utert Ferner wird ein Einblick ber die Implemetierung der Hardware erfolgen Bevor die Realisierung der Hauptplatine des Roboters beschrieben wird wird erkl rt wie die Hard waregruppe ihre Platinen hergestellt hat Abschliessend wird die Karosserie beschrieben Dabei wird auf die Platzierungen der einzelnen Hardwareelemente und die entsprechenden Befestigungsmethoden eingegangen 3 1 Testumgebung Zu Beginn der Projektgruppe als die Teilnehmer die ersten Erfahrungen mit der Hardwa re verschiedenen Sensoren und der Programmierung gemacht haben waren verschiedene Versuche auszuf hren Da es nicht praktikabel war f r jeden Versuch und jeden Aufbau endg ltige L sungen zu bauen die dann nat rlich auch bei jedem Fehler h tten neu erstellt wurden m ssen wurde eine kleine Testumgebung zusammen gestellt auf der schnell und relativ einfach experimentiert werden konnten 3 1 1 Steckbrett Um nicht f r jeden Testaufbau direkt eine Lochrasterplatine oder etwas hnliches zusam men zu l ten wurde zu Beginn mit einem Steckbrett Abbildung 3 1 gearbeitet Dort ist es relativ einfach m glich kleinere Schaltungen einfach zusammen z
42. ein einzelner digitalen Eingabepin Klemme 21 ber einen Schalter abwechselnd mit 5V und GND verbunden Dabei war zu ermitteln wo diese nde rung zu sehen ist Dies war auch mit folgenden Schritten und Einstellungen erfolgreich 1 TracerDAQ starten 2 StripChart ausw hlen 3 Edit DAQ Hardware Settings 4 Rechtsklick Number of Channels 1 5 DAQ Channel 1stPortA Di0 erster und einziger Digitalcontroller PortA Eingang 0 entspricht Pin 21 6 OK Knopf dr cken 7 Play Knopf dr cken 8 Die Aufnahme beginnt und ber den Schalter konnten zwischen den Pegeln gewechselt werden F r einen komplexeren und praxisnahen Test wurde ber die Software auch der Ultra schallsensor siehe dazu auch 2 1 2 ausprobiert Der Ultraschallsensor wurde wie folgt angeschlossen e SRFO4 kompatibler Modus des Sensors getrennte Trigger und Echo Pins siehe auch 2 1 2 e GND des Sensors an Common Ground 5V beispielsweise an den Spannungsausgang des PMD1208 Klemme 30 e Echo Pin des Sensors an einen digitalen Eingangspin am PMD 44 PG 524 Zwischenbericht TESTUMGEBUNG e Trigger Pin des Sensors an Pin 00 des PMD jedoch als Eingang Zum echten Triggern wurde der Schalter aus dem vorherigen Aufbau verwendet Der Anschluss an den PMD diente nur zu einer besseren Verfolgung der Ereignisse am Bildschirm Grunds tzlich funktionierte dieser Testaufbau Allerdings war in diesem Test zu erken nen dass en
43. f r die Bildaufnahmen vorgibt Die 5V Leitung wird an den VDD Pin des Chips gef hrt au erdem speist sie ber einen Vorwiderstand von 1009 die Leuchtdiode Der zweite Pin der Diode wird an den BC557 Transistor angeschlos sen Die Schaltung des Transistors wird ber den LED CNTL Pin gesteuert Schaltet der Transistor so liegt am zweiten Pin der Diode Ground an Des Weiteren wird die Ground Leitung ber einen 1uF Kondensator an den REFA Pin angeschlossen und direkt an den GND Pin des Sensorchips Ein weiterer 100nF Kondensator befindet sich zwischen den Ground und 5V Leitungen Die SDIO und SCK Leitungen werden direkt vom Stecker an die entsprechenden Pins des Chips gef hrt 76 PG 524 Zwischenbericht KAROSSERIE Abbildung 3 22 Der optische Maussensor 7 3 5 Karosserie Nach einigen berlegungen fiel die Entscheidung auf einen Roboter der aus zwei Ebe nen besteht So ist es m glich alle Komponenten problemlos unterbringen zu k nnen Die Ebenen haben eine runde Form Dadurch wird das Drehen auf der Stelle ohne An ecken erm glicht Auf den Ebenen werden die zuvor vorgestellten Bauteile befestigt Die untere Ebene soll unter anderem die Motoren den Akku und die Befestigung der R der beherbergen Auf der oberen Ebene wird beispielsweise der Gumstix sowie einige Sensoren angebracht F r den Aufbau der zwei Ebenen haben wir uns f r zwei runde Aluminium platten mit einem Durchmesser von 30cm entschieden und diese vom Ins
44. gew nschte Anzahl an Millisekunden oder Mikrosekunden anzuhalten Intern werden so viele NOP Operationen durchlaufen wie f r die Wartezeit notwendig ist Allerdings unterliegen diese Methoden einer Beschr nkung Beispielsweise hei t es bei der Methode _delay_ms_ The maximal possible delay is 262 14ms F_CPU in MHz Um auch gr ere Werte zu erlauben wurde eine kleine Wrapper Funktion geschrieben Listing B 14 Auch diese sollte in eine externe Datei ausgegliedert werden Zu Beachten dabei ist dass etwa alle 262ms durch die Operationen der Schleife zus tzliche Taktzyklus verwendet aber nicht von der Wartezeit abgezogen werden Au erdem wird wie bei den UART Methoden die gesamte Rechenzeit mit Warten verbracht 3 2 6 Interrupts Im Raptor werden wir an verschiedenen Stellen Interrupts verwenden Beispielsweise ist das Ereignis Der Roboter ist gegen eine Wand gefahren als so kritisch anzusehen dass sofort die Radmotoren angehalten werden sollen Sofort bedeutet dabei implizit unabh ngig davon welche andere Aufgabe der Controller in dem Moment bearbeitet An diesem Beispiel soll nun dokumentiert werden wie im ATMega32 mit Interrupts gearbeitet werden kann Allgemeines zu Interrupts Interrupts dienen zur Kontrolle des Programmablaufes genauer gesagt ber sie kann eine kontrollierte St rung des Programmablaufes erreicht werden Wenn ein nicht maskierter Interrupt ausgel st wird so wird der normale Program
45. kann die einfach an dynamische Ver nderungen der Umge bung angepasst werden kann Wie in Kapitel 4 ausf hrlich beschrieben wird stellten sich manche der gemachten Annahmen als falsch heraus Gerade das Voronoidiagramm wurde in seiner Komplexit t untersch tzt Eine eigene Neuentwicklung wurde bereits zu einem fr hen Zeitpunkt verworfen Statt dessen wurde versucht eine bestehende Bibliothek an die Bed rfnisse des RAPTOR anzupassen Dies misslang leider was schlussendlich dazu f hr te dass die Architektur des Umgebungsmodell berdacht wurde Das Voronoidiagramm weist eine zu hohe Komplexit t auf als das realistisch davon ausgegangen werden kann in der zur Verf gung stehenden Zeit eine fehlerfreie Implementierung hin zu bekommen Auch sind die Annahmen ber die Laufzeit der Berechnung eines Voronoidiagramms unter falschen Vorraussetzungen entstanden Es werden viele komplexe Rechenoperationen n tig die von der genutzten Hardware nicht effizient umgesetzt werden kann Die Kartenarchitektur wurde also einzig und alleine auf die Gitterkarte aufgebaut Diese bietet durch ihren schnellen Zugriff eine bessere Basis zur Routenberechnung Diese wird durch verschiedene Techniken der Bildverarbeitung realisiert die aber rein auf ganzzah ligen Werten und Operationen aufbauen die von der verwendeten Hardware problemlos bew ltigt werden k nnen Auch handelt es sich um einfacher zu implementierende Algo rithmen welche durch verschiedenste Techni
46. nee ee gene Daf RR A DA DOLL WATe cani al e A tl n OS ee ee 2 22 BUE 28 248 232 A A A er 2 22 Bleed ae hehe 2 2 3 Application Programming Interface 2 2 4 Umgebungsmodell es za er pers Era BEE A 2 2 5 Mikrocontroller 4 2 5 4 2 2 25 2 wa a ran De 3 Hardware 3 1 Iestumerbune O el dee ee er aa JE Steckbrett 23 2 2058 td 3 A y A A A A E 3 1 2 BreakOutBoX s s ne a A EE a e AEN en A A ebe Zeg ee Eege De 8 E WEE EE 3 2 1 Programmierhardware eege A E ra Eee 3 2 2 Inbetriebnahme des ATMega32 O oNN 10 11 13 13 13 18 20 23 25 27 29 31 32 33 34 34 35 36 36 39 39 39 41 47 48 51 93 Inhaltsverzeichnis 3 2 3 Programmierung in Basic apar a a ve 55 3 2 4 Einbindung eines Quarzes su a Au e a Ea 56 3233 Umstieg aul Oa e era 59 320r o A ee a ne ae ee 62 3 2 7 AE dem Atmel ge Nee O 64 3 3 Herstellung von Platinen 4 42 a aaa we ehe 65 A ee BE AE 65 3 3 2 Belichtung A AA A ER 66 38 3 Entwicklanga E A A E os 66 33A O A e A 66 3 3 5 S ubern und Versiegeln aoaaa aaa 67 290 Bohren ass e AA en aT 67 Bl A A e E 67 3 Hauptplatine sruse a a ad a 67 Sech A Ee e Ae cke Ae ca 67 342 dee So a ak e iS o er 69 3 4 3 Kompasssensor und Gumstix o 70 SE HE os a de A E E 70 3 4 9 Radencoder Ee ers Ser a de a ee e 70 3 4 6 Ultraschallsensoren des 2 Aa a Li A A 71 347 EEN te EE 72 DADO IMOLOPE ia a a RO OA 72 31 93 Akkumulator be rd do ee 74 3 4 10 Kontaktsensoren
47. nicht detailliert erkl rt F r den sofortigen Stopp der Motoren bei Kollision erkannt durch einen Bumper wird ein externer Interrupt verwendet Dieser wird ausgel st wenn an einem bestimmten Pin des Controllers etwas passiert Andere Interrupts werden auf hnliche Weise aktiviert und abgefangen Externer Interrupt Wie schon erw hnt lassen sich die meisten der Port Pins am ATMega32 auf besondere Funktionen umschalten Der externe Interrupt ist eine solche Funktion f r INTO den ersten externen Interrupt ist Pin 16 vorgesehen In dem Moment in dem dieser als externer Interrupt aktiviert wird wird PortD 2 von der normalen 1 O Kontrolle abgekoppelt Dennoch muss der Pin als Eingang beschaltet werden Es ist auch eine Beschaltung als Ausgang m glich hier ber lassen sich Interrupts implementieren die von Software Seite aus durch schreibende Ansteuerung des Pins ausgel st werden Hierbei muss gegebenenfalls der interne Pull Up Widerstand aktiviert werden DDRD 1 lt lt PD2 PORTD 1 lt lt PD2 F r die Bumper am RAPTOR ist der interne Vorwiderstand nicht n tig da eine externe Beschaltung erfolgt die den Pegel auf HIGH l sst wenn kein Taster gedr ckt ist Bisher wurde nur gesagt dass ein Interrupt ausgel st wird wenn an diesem Pin etwas passiert Allerdings gibt es verschiedene einstellbare Vorraussetzungen f r das Erzeugen des Interrupts e LOW Pege
48. nicht f r analoge Messungen verwendet wird sollte auch AVCC Pin 30 und AREF Pin 32 mit P5V verbunden werden e In diesem Aufbau ist der Reset Pin Pin 9 unbeschaltet Es kann also passieren dass sich der Controller st ndig zur cksetzt Um den Pin auf einem sicheren Pegel zu halten sollte er mit einem PullUp Widerstand z B 10 kN auf P5V gezogen werden Der Controller setzt sich zur ck wenn er einen GND Pegel am Reset Pin entdeckt Somit ist P5V der sichere Pegel An diesem Punkt hat der Controller noch keinerlei M glichkeiten sich mit der Au en welt zu verst ndigen LEDs Datenverbindungen etc 1 Eventuell zeigt ein Amperemeter einen Stromverbrauch an aber im Grunde ist nur zu hoffen dass er auch l uft Erste Kommunikation mit dem PC Die zuverl ssigste Methode den Mikrocontroller am PC zu erkennen ist das Program mierger t anzuschlie en Die grunds tzlichen Verbindungen lassen sich aus Tabelle 3 2 entnehmen Dabei ist allerdings zu beachten e Der PullUp Widerstand am Reset Pin wird nicht entfernt Der Programmer wird parallel dazu geschaltet Generell sollte der Widerstand w hrend aller Experimente an seinem Platz belassen werden e Weder kann das Programmierger t den Mikrocontroller mit Strom versorgen noch umgekehrt Beide Bauteile m ssen von einer externen Spannungsquelle gespeist wer den Zwar sind mit dem AVRISP mkll einige Basisoperationen schon durch die 5 Volt des USB Ports m glich aber f
49. repr sentieren die Position innerhalb der Datenstruktur Der u ere Vector 25 repr sentiert hierbei die Y Koordinate und die in neren Vectoren 25 die X Koordinaten Die Zuordnungsfunktion bewirkt dass der Wer tebereich der Gitterkarte welche von oo bis oo geht auf einen Wertebereich abgebildet wird der von O bis oo geht Hierf r wird der Zielbereich aufgeteilt in gerade und unge rade Stellen Die geraden werden benutzt um die urspr nglich positiven Koordinaten zu repr sentieren Die ungeraden Bereiche nehmen die urspr nglich negativen Koordinaten auf Die bedeutet zum Beispiel dass die Koordinaten der Elemente eines Vectors auf die Weise umgesetzt werden wie in Tabelle 4 1 zu erkennen ist Koordinate in Vector 0 1 2 3 4 5 6 71 8 Koordinate auf Karte 0 1 11 21 2 313 4 4 Tabelle 4 1 Beispiel f r die Umrechnung von Koordinanten Das Ganze wird sowohl bei der X als auch Y Koordiante gemacht In der Klasse Grid MapData wurde hierzu eine seperate Funktion implementiert die die bergebenen Koordi naten in die Zielkoordinaten umgerechnet hat Dadurch dass die eigentliche Datenstruktur nicht von au en zug nglich war konnte sichergestellt werden dass stets die richtigen Felder addressiert wurden Jede Funktion hat daf r zu aller erst die bergebenen Koordinaten anhand der gerade erw hnten Konvertierungsfunktion umgerechnet und erst dann auf die Dateninha
50. trocken kann gebohrt werden Es wurde ein Hartme tallbohrer verwendet da normale High Speed Steel Bohrer HSS Bohrer bei dem Einsatz mit Glasfaserplatinen schnell brechen k nnen Der Bohrer hatte weiterhin den Vorteil dass er an einem Bohrst nder montiert war 3 3 7 L ten Im letzten Vorgang werden die Bauelemente mit Hilfe eines L tkolbens auf die Platine gel tet Beim L tvorgang wird L tzinn erhitzt Das Flussmittel das im L tdraht enthalten ist reduziert die Oxidation der metallischen Oberfl chen und gew hrleistet eine zuverl ssi ge mechanische und elektrische Verbindung zwischen den Metallteilen Fehler beim L ten k nnen mit Hilfe einer Entl tpumpe korrigiert werden Diese dient zum Absaugen von fl ssigem L tzinn beim L sen einer L tverbindung 3 4 Hauptplatine Die Hauptplatine ist die zentrale Platine des Staubsaugerroboters Auf ihr befinden sich die meisten Bauteile Zus tzlich gibt es noch weitere Platinen die die Bauteile enthalten die an die Karosserie angebracht werden m ssen Der Schaltplan A 7 der zentralen Platine befindet sich im Anhang Da die Hauptplatine umfangreich ist wurden zur Erkl rung einige Ausschnitte aus der logischen Ansicht der Schaltung extrahiert Auf das Kapitel 2 aufbauend wird hier die Elektronik der Bauelemente behandelt Die Platine wurde bislang noch nicht getestet d h es k nnten Fehler vorhanden sein die am Anfang des zweiten Semesters korrigiert werden Zur Zeit wird das L
51. und 3Y und 4Y f r den rechten Motor sind Dies gilt nur wenn 1A bzw 3A am Pluspol des jeweiligen Motors angeschlossen ist 1Y 2Y Aktion 0 0 bremsen 1 0 vorw rts 0 1 r ckw rts 1 1 bremsen Analog dazu gilt das Gleiche auch f r den rechten Motor wobei dieser umgekehrt ge schaltet wird Der vollst ndige Quelltext zur Ansteuerung des Motortreibers befindet sich als Listing B 18 im Anhang Bemerkungen Zeilen 5 16 Statt den Pr prozessoranweisungen sind softwareseitig auch direkte Varia blenzuweisungen anhand von Pins und Ports m glich doch diese zuvor zu definieren erm glicht einen sp teren Wechsel und h lt den Quelltext wesentlich bersichtlicher motor_init initialisiert die Motorsteuerung des ATMega32 MOTOR_DIR_DDR setzt die Datenrichtungsregister der als PWM Ports geschal teten Pins Die Datenrichtungsregister f r PC7 und PC6 linker Motor und PC5 und PCA rechter Motor werden auf HIGH gesetzt womit festgelegt wird dass diese Pins Output erzeugen Diese Pins steuern hinterher die Richtung des jeweiligen Motors durch den Treiber L293D TCCRIA und TCCRIB richten den Timer ein Der Waveform Generation Mode wird dabei auf 8 Bit Fast PWM Mode gesetzt Der Compare Output Mode 128 PG 524 Zwischenbericht ATMEGA32 wird auf non inverted Compare Output Mode gesetzt Dies bedeutet dass bei einem Compare Match der jeweilige Ausgang auf LOW gesetzt wird und bei Wiederbeginn
52. 1 Analog Digital Wandler PAO DAT PA2 PA3 PA4 PA5 DAG PA 2 Analog Komparator PB2 PB3 3 SPI Schnittstelle PB4 PB5 PB6 PB7 4 Timer und PWM PBO PB1 PDA PD5 PD6 PD7 5 T C Schnittstelle PCO PC1 6 JTAG Interface PC2 PC3 PC4 PC5 PC6 PC7 7 Serielle Schnittstelle PDO PD1 8 Externe Interrupts PD2 PD3 3 4 2 Quarz Der ATMega32 ben tigt ein Quarz Bauelement mit einer Taktfrequenz von 16Mhz Damit wird festgelegt wie schnell das Bauteil l uft Obwohl der ATMega32 einen internen Oszil lator besitzt dient der externe Quarz dazu dem Mikrocontroller einen genaueren Takt zu geben Ein Pin vom Quarz ist mit dem XTAL1 Eingang des Mikrocontrollers verbunden und der andere Pin mit dem XTAL2 Eingang Die Polung des direkt anschlie baren Quar zes ist irrelevant Beide Pins des Quarzes werden zus tzlich ber einen 22pF Kondensator mit der Masse verbunden PG 524 Zwischenbericht 69 HARDWARE 3 4 3 Kompasssensor und Gumstix Abbildung 3 15 zeigt dass Kompasssensor und Gumstix ber eine Steckverbindung an die Hauptplatine anzuschlie en sind Hierf r werden die Pins PC1 SDA und PCO SCL benutzt Beide Leitungen sind ber PullUp Widerst nde mit einem L tpad verbunden Das Pad stellt einen Platzhalter zum l ten dar Beide Widerst nde besitzen 47kQ Das Pad bekommt ber gel tetes Kabel eine Spannung von 3 3V vom Gumstix Die Vier Pin Steckverbindung f hrt zum Gumstix und versorgt diesem mi
53. 2 unterst tzt Clock Stretching Wenn beispielsweise ein Datenpaket einge troffen ist wird ein entsprechendes Flag gesetzt Die SCK Leitung wird erst dann wieder freigegeben wenn das Programm es explizit erzwingt Der Programmierer hat somit ausrei chend Zeit s mtliche Operationen und Vorbereitungen vorzunehmen die das Datenpaket PG 524 Zwischenbericht 135 SOFTWARE verlangt Da selbst das Auslesen des Datenpaketes durch den Softwarefluss geschehen muss k nnte selbst die Abfrage des 1 C Busses an sich verz gert werden Nat rlich gilt das nur in der Theorie In der Praxis sollte die I C Kommunikation z gig abgewickelt werden Zu diesem Zweck k nnen I C Ereignisse auch Interrupts ausl sen 136 PG 524 Zwischenbericht 5 Ausblick Das zweite dritte und vierte Kapitel beschreibt was die Projektgruppe RAPTOR sich im Wintersemester 2007 2008 erarbeitet hat Dieser Abschnitt befasst sich mit den Auf gaben die f r das zweite und damit abschlie ende Semester der Projektgruppe geplant sind Bisher hat die Gruppe vor allem die Hardware des Roboters erstellt Dieser Bereich ist gr tenteils abgeschlossen Es m ssen unter anderem noch einige Arbeiten an der Karos serie fertig gestellt werden Eventuelle Verbesserungen bzw nderungen bei der Program mierung der Sensoren des Mikrocontrollers und bei der Hardware der Hauptplatine sind nicht auszuschlie en Weiterhin wird noch eine Webcam ben tigt Die effektive Aufl
54. 3 4EN verbunden sind 126 PG 524 Zwischenbericht ATMEGA32 Die PWM Einstellung des ATMega32 Der interne Z hler Timer Counterl des ATMega32 kann genutzt werden um ein PWM Signal zu erzeugen Je nach Einstellung beginnt der Timer bei 0 zu z hlen und setzt eleichzeitig einen Ausgangspin auf HIGH Sobald der Z hler einen vorher festgelegten Wert erreicht wird der Timer zuriick und dabei der Ausgangspin auf LOW gesetzt Dieser Wert ist bestimmt durch die Output Compare Unit Der Z hlerwert im Register TCNT1 wird mit dem Wert im jeweiligen Output Compare Register OCRIA oder OCRIB vergli chen und bei einem Match dementsprechend gesetzt Dieser Vorgang wiederholt sich immer wieder und durch das Ver ndern des Vergleichswertes im Register OCH LA oder OCRIB wird Einfluss auf das Verh ltnis von HIGH und LOW Phasen der Ausgangspins w hrend einer Z hlperiode genommen Der Vorteil des Timer Counterl ist somit dass er 2 unterschiedliche Ausg nge beschalten kann so dass beide Motoren mit demselben Z hler reguliert werden k nnen Der Mikrocon troller stellt mehrere Modi f r die Generierung einer Pulsweiten Modulation zur Verf gung Eine entsprechende PWM wird erzeugt in dem der Waveform Generation Mode angepasst und die Einstellung des Compare Output Mode bestimmt wird Diese Einstellungen be stimmen wie der Ausgang beschaltet werden soll wenn es ein Matching zwischen TCNT1 und OCR1x gibt Die Bits WGM10 bis WGM13 bestimmen die Ei
55. 45678901234567890123 678690123456789 8765432 1098765432223456789012345678901234567890123456789012345678901234 567890123456789 8765432 10987654333334567890123456789012345678901234567890123456789012345 3456789012345678 9876543210987654444456789012345678901234567890123456789012345678901234567890123456789012345678 Abbildung 4 4 Entfernungssch tzung f r die Routenplanung 6Darstellung 0 2 99 39 coche co tr tt tt Ett rt Ett EE EE tt tritt tt tt HH HA Hr cb no CA o tt co hhh HA cc o tt HH o tt tt EE At tt tt o tt Ett o HH Ett o tt etttHHtt Hr tt HHHHHH H H be EE Ett tt 4 4 s4 EE o HH coco tt tt H Ett tr DE rt Sir C tt tt HH coche HA o CHA CHA DEE rt HR CHA CHA HA tt Ett Ett tt Ett E tt bb en tt HH tt nn Ebbe e tr tt tt tt e FEEF e tt 1234567890123456789012 Vegl nge 76 Abbildung 4 5 Die berechnete Route PG 524 Zwischenbericht 103 SOFTWARE int getMinY int getMinX int y int getMinX Listing 4 25 Kartengr enausgabe Die Get Funktionen ohne jegliche Parameter stellen hierbei globale Minima bzw Ma xima dar Die beiden Funktionen welche einen Parameter besitzen liefern die maxima le min
56. 7899001 9012345678 45678901 012 3211100999990 9888889900 coo 1234567788890 123456789990123456789012 210009988888 77777889 23455667778 234567788890123456789012345678901 21099887777 666677 444455667 3455667789 7890123456789012 2109877666 5556 3334456 44455678 890123456789012 1098766555 4445 2223345 3334456 01234567890123 1098765444 3334 1112345 222345 1234567789012 0987654333 2223 0001234 11123 345556789012 0987654322 1123 9901234 00123 334445678901 0987654321 0123 8901234 90123 223345678901 98765432109 890123 678901234 789012 112345678901 987654321098 78901234 56789012345 6789012 001234567890 8765432109876 5678901234 3456789012345 45678901 901234567890 87654321098765 456789012345 234567890123456 3456789012 7890123456789 87654321098765432123456789012345678901234567890123
57. 8777 666554444455 322122333445 5678901223345678901234567890123456789 7766 5544333334 1101122233 789000112234567890123456789012345678 6655 443322222 09001112 8899900123 1234567890123456789 5544 33221111 899000 78889901 23456789 4433 22110000 788990 6777890 345678 3322 11009999 677890 566678 5667 90 2211 00998888 566789 45567 55 0 11000 999887777 456789 34567 EE es 009998 9888776666 345678 23456 EE 3 EE 887776655555 23456789 123456 2 Ett 77766655444445 1234567890 9012395 1 H H H H H H H H 77666554444455666555443333344 901234567890 89012345 ER 665554433333445554443322222334 89012345678901 7890123456 90 H H H H H H H H H 5544433222223344543322111112233344567890123456789012334567890123456 7890 3 44333221111122345432110000011222345678901234567890112345678901234567 678901 23 33222110000011 009999900111 90123456
58. A en E Steckerbelegung des CNY70 26 de daa ar Bestandteile des optischen Maussensors 1 Aufbau und Funktionsweise der Optik des optischen Maussensors 1 Pinbelegung des Kompasssensors 8 2 2 22222 Ein ATMega32 in in PDIP Bauform as none hehe ra ach Logitech SweetPea QuickCam Express 2 22 a a Das Steckbrett unserer Testumgebung mit einem Testaufbau Die versteckten Verbindungen am Steckbrett Die versteckten Verbindungen an den L tstiften rechte Seite analog Die Breakout Box 18 sr as a ls Ha ae ea Der L293D Baustein 8 an nee ee ro Ne Der L298 Baustein 8 2 3a aa ra A AS Motoransteuerungstabelle 8 une da nern Bestimmung der Peri dendauer 8 es 2 42 o e L298 mit Freilaufdioden 8 gt gt 22 3a 222 22 a Pinbelegime des ATM 232 a Er I rn AVRISP mklI unser Programmierger t Pinbelegung von Wannenbuchsen Das kleine Adapterboard f r unseren Programmieradapter Verbindung zwischen ATMega und PC nur Basis 2 2 2 2 2 2 2 Realisierung der Hauptplatine Kompasssensor und Gumstix 2 Realisierung der Hauptplatine Reset 2 2 2 2 Con nn 175 Abbildungsverzeichnis 3 17 3 18 3 19 3 20 3 21 3 22 3 23 3 24 3 25 3 26 3 27 3 28 3 29 3 30 3 31 3 32 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 4 16 4 17 4 18 4 19 4 20 4 21 4 22 Realisierung der
59. ANE http www skynet ie sim sos mapviewer voronoi php 181 Literaturverzeichnis 20 21 22 23 24 25 26 27 28 29 30 31 32 PATENTE STUDIERENDE http www patente studierende de PLAYER STAGE GAZEBO http www home htwg konstanz de marcel Robo index html ROBOTERNETZ http www roboternetz de wissen index php AVR ISP_Programmierkabel ROBOTERNETZ http www roboternetz de wissen SGI http www sgi com tech stl SGI http www sgi com tech stl Vector html VISHAY http www vishay com VX GUMSTIX CONSOLE http pubs gumstix org boards CONSOLE VX POBLODOS R1 753 WIKI GUMSTIX http docwiki gumstix org WIKIPEDIA http de wikipedia org wiki Schwellwertverfahren WIKIPEDIA http de wikipedia org wiki Vektor WIKIPEDIA http de wikipedia org wiki Voronoi Diagramm WINAVR http winavr sourceforge net 182 PG 524 Zwischenbericht
60. APTOR Projekt ist der Fast PWM Mode Bei dieser Einstellung z hlt der Z hler von BOTTOM bis TOP und startet dann wieder bei BOTTOM Von daher kann die Fre quenz im Fast PWM Mode doppelt so hoch sein im Vergleich zum Phase and Frequency Correct Mode was den Anforderungen einer Motorsteuerung eher entspricht Der Auf wand ist somit geringer und es wird praktisch keine CPU Zeit beansprucht wie z B im Normal Mode Der Fast PWM Mode wird mit 8 Bit 9 Bit oder 10 Bit betrieben so dass der Z hler entsprechend von 0 bis 255 511 oder 1023 hochz hlt Im nicht invertierenden PG 524 Zwischenbericht 127 SOFTWARE Output Compare Mode wird bei einem Matching zwischen TCNT1 und OCR1x der Aus gang auf LOW gesetzt und sobald der Z hler wieder bei BOTTOM beginnt zu z hlen auf HIGH gesetzt Die Pins OC1A und OC1B m ssen aber auf Ausgang gerichtet wer den damit das PWM Signal verwendet werden kann Die Frequenz des PWM Signals wird folgenderma en berechnet fak N 1 TOP fak bezeichnet die Taktfrequenz des Mikrocontrollers welche bei 16Mhz liegt und N ist der einstellbare Wert des Frequenzteilers welcher auf 1024 gesetzt wurde Der Frequenz teiler Prescaler teilt die Taktfrequenz in einem bestimmten Verh ltnis auf JocnzpwMm Mikrocontroller Code Die Drehrichtung wird durch den Treiber bestimmt Die Pegel die an die Pins des L293D gelegt werden bestimmen hierbei die Richtung wenn 1Y und 2Y die Eing nge f r den linken
61. BasCom 3 ist zwar keine freie Software es gibt jedoch eine kostenlose Demo Version die f r die ersten Experimente v llig ausreichte Das erste Programm Zugegeben Listing B 5 ist ein Nullprogramm allerdings ist es nicht wirklich trivial es in den Controller zu bertragen Es ist sicherlich besser die ersten Fehler hier zu machten als sie sp ter in echten Programmen zu suchen In der Tat gab es schon hierbei die ersten Hindernisse Wenn die Programmierung mit tels AVR Studio nicht funktioniert kann es notwendig sein verschiedene Programmier geschwindigkeiten zu finden unter Board bei ISP Freq auszuprobieren Oftmals reichte es auch aus die Programmierung einfach noch zwei oder dreimal zu versuchen bis das Programm dann doch erfolgreich in den Speicher des Atmels geschrieben wurde In sp teren Versuchen war es jedoch notwendig vor der Programmierung die Taktfrequenz per Fuse herabzusetzen und nach der Programmierung wieder auf den richtigen Wert zu stellen Erkl rungen zun ben tigten Fuse Bits finden sich in Kapitel 3 2 4 Zum Programm Zeilen 1ff Die Zeilen die mit beginnen sind Direktiven an den Compiler Beispielsweise wird hier der richtige Controller ausgew hlt m32def dat enth lt die Definitionen f r den Mega32 Programmkonstanten festgelegt und per crystal wird die Taktfrequenz in Hz eingestellt Zeilen 7f Das Hauptprogramm besteht dann aus einer einfachen Endlosschleife Eine sol c
62. DWARE Abbildung 3 3 Die versteckten Verbindungen an den L tstiften rechte Seite analog Abbildung 3 4 Die Breakout Box 18 42 PG 524 Zwischenbericht TESTUMGEBUNG Das Ger t verf gt ber acht analoge Fing nge zwei analoge Ausg nge sowie 16 digitale Pins Die digitalen Pins lassen sich einzeln als Eingang oder Ausgang konfigurieren Die Stromversorgung erfolgt direkt ber den USB Port des PCs eine externe Spannungsquelle wird nicht ben tigt Windows und Linux Laut einigen Web Berichten soll dieses Ger t auch unter Linux funktionieren allerdings gab es dort einige Komplikationen mit dem HID Treiber Auch ist unter Linux f r Zugriffe auf die Box eine Anmeldung als root erforderlich Letzendlich wurde f r den Zugriff auf die Box ein Windows Rechner aufgesetzt ber den dann auch mit der Hersteller Software auf die Box zugegriffen werden konnte Pinbelegung der Box Eine grobe bersicht der Klemmenbelegung der Box befindet sich in Tabelle 3 1 Die Details k nnen im Handbuch oder auf der Hersteller Webseite eingesehen werden Grunds tzlich sind Klemmen 01 20 f r den analogen Teil des Ger tes zust ndig w hrend sich auf Klemmen 21 40 die digitalen Ports befinden 30 P5V Ausgang Kann verwendet werden wenn externe Sensoren eine Stromversorgung brauchen gibt im Wesentlichen die 5V vom USB Bus des Computers weiter sollte also nicht berlastet werden 1 6 9 12 15 GND Es ist davon auszu
63. Dokumentation bernommen Da sich die Details dieses Listings haupts chlich auf den Basic Compiler der ja sp ter nicht mehr verwendet wurde oder auf den Ultraschallsensor welcher auch bereits ausreichend dokumentiert wurde beziehen w rde wurde hier auf weitere Details verzichtet 3 2 5 Umstieg auf C Sp ter wurde der Mikrocontroller nicht mehr unter Basic programmiert Grunds tzlich eignet sich C f r hardwarenahen und schnellen Code besser als Basic und ist dennoch wartbarer als beispielsweise Assembler WinAVR Mit der Installation von WinAVR stand schon eine vollwertige AVR Toolchain zur Ver f gung auch war direkt die avr libc vorhanden die ebenfalls ben tigt wird Im Netz be finden sich zwar Anleitungen wie Makefiles zum Umgang mit AVR Mikrocontrollern er stellt und die Toolchain im Detail bedient werden aber mit AVR Studio als graphischer Oberfl che reicht es mit F7 das Programm zu bersetzen und ber den Programmierdia log direkt auf den Controller zu berspielen Wenn vorher in den Projektoptionen Pro ject Configuration Options unter General der Controller und die Taktfrequenz richtig eingestellt so sind einige Konstanten schon richtig definiert die sonst in ein Makefile oder direkt in den Quelltext eingef gt werden m ssten Das Nullprogramm unter C Wie auch beim ersten Programm unter Basic wird hier mit einem Nullprogramm begonnen um die Verwendung des Compilers und die Rahmenbedingungen im C Compiler
64. Hauptplatine Radencoder Realisierung der Hauptplatine B rstenmotor e Realisierung der Hauptplatine Radmotor Realisierung der Hauptplatine Akkumulator 2 22222220 Realisierung der Hauptplatine Kontaktsensoren Der optische Maussensor 7 0 ooo Bearbeitung der unteren Aluminiumplatte Bearbeitung der unteren Aluminiumplatte Bauteile zur Mot rmont ge 2 2 we oia EE EN Befestigung der R der an der unteren Platte Befestigung des Akkus an der unteren Platte 2 22 222 22 PUSE bed A a ee as e A al di ee a Befestigung der B rsten an der unteren Platte Befestigung der Stange an der unteren Platte Ultraschallsensor an dem Metallst ck O O Anschluss an das Carrier Board tes 25 new a ehe eh Carrier Board mit Anschlusskabel Bereichswachstumsverfabren 17 22222220222 Entfernungssch tzung f r die Routenplanung 2 2 2 2 2 2 Die berechnete Route a oaa aa a a erste Datenstruktur zur Verwaltung der Gitterkarte finale Datenstruktur zur Verwaltung der Gitterkarte Descartes Zerlegung des Raumes 14 Voronoi Diagramm V S 31 sr rer A lc UI 11 zeV S und ist Kante wi x V S und ist Knoten ES Se e Dee E beschr nktes Voronoi Diagramm Vo S 31 Der Roboter befindet sich am Startpunkt s und
65. In 0 FIRSTPORTA 0 myResult 36 I 37 Bei Verpassen des Impulses Endlosschleife 38 5 39 endezeit clock 40 std cout lt lt Weiten lt lt startzeit lt lt 41 lt lt endezeit lt lt _Differenz _ lt lt 42 endezeit startzeit lt lt std endl 43 44 Listing B 4 Auslesen des Ultraschallsensors nur teilweise funktionsf hig B 2 Basic Beispielprogramme f r den ATMega32 Sregfile m32def dat Sframesize 32 Sswstack 32 Shwstack 32 VG Ne PG 524 Zwischenbericht 153 QUELLTEXTE oo NO OU kA CH D OO DOC ON GA ka ki ki Fi O Ou GG WN k CH LO D DOC ON RA KA N 13 14 15 16 Scrystal 1000000 Do Loop End Listing B 5 Ein Nullprogramm Sregfile m32def dat Sframesize 32 Sswstack 32 Shwstack 32 Scrystal 1000000 Config Portc 0 Output Do Portc O 1 Waitms 100 Portc O 0 Waitms 100 Loop End Listing B 6 Leuchtdiode blinken lassen Sregfile m32def dat Sframesize 32 Sswstack 32 Shwstack 32 Scrystal 1000000 Config Portc 0 Output Config Pina 7 Input Porta 7 1 Do Portc 0 1 If Pina 7 Waitms 100 Porte 0 Waitms 10 154 PG 524 Zwischenbericht BASIC BEISPIELPROGRAMME F R DEN ATMEGA32 17 Else 18 Waitms 500 19 Portc 0 0 20 Waitms 500 21 End If 22 Loop 23 End Listing B 7 Tastereingabe verarbeiten 1 Sregfile m32def dat 2 Sframesiz
66. Low and High Der Wert von 0 bis 3599 entspricht 0 bis 359 9 Grad 45 Interne Testregister werden nur vom Hersteller genutzt 6 7 Interne Testregister werden nur vom Hersteller genutzt 8 9 Interne Testregister werden nur vom Hersteller genutzt 10 11 Interne Testregister werden nur vom Hersteller genutzt 12 Unbenutzt liefert immer 0 zur ck 13 Unbenutzt liefert immer 0 zur ck 14 Unbenutzt liefert undefinierten Wert zur ck 15 255 startet die Kalibrierung Justierung der Richtungen 0 Beendet Kalibierung Werte werden im EEPROM gespeichert Tabelle 2 1 Registerbelegung des Kompassmoduls Die Slave Adresse ist fest auf Hex CO also Dezimal 192 eingestellt Wie bei I2C blich wird immer erst die SLAVE Adresse und dann das abzurufende Register als Byte versendet Anschlie end erfolgt ein Lesezugriff in dem die SLAVE Adresse 1 gesendet und danach 1 oder 2 Bytes abgerufen werden CMPS03 unterst tzt die Standard DC Taktraten von 100 und 400 KHz Wird mehr als 100 KHz genutzt sollte nach Schreiben der Registeradresse eine kurze Pause von ca 50us eingebaut sein Pin 1 und 9 Stromversorgung Das Kompassmodul ben tigt lediglich 5V am Pin 1 und verbraucht im Durchschnitt ca 15 mA Pin 9 wird mit Ground verbunden Pin 6 Kalibrierung Damit das Modul in jeder Umgebung m glichst genau arbeitet ist eine einmalige Jus tierung Kalibrierung empfehlenswert Die Kalibrierung er
67. N RSTPORTB DIGITALOUT unsigned short myResult myResult 0 while 1 cbDBitIn 0 F cbDBitOut 0 y Fl RSTPORTA 0 myResult RSTPORTA 8 myResult std cout lt lt Hallo Welt jetzt ist lt lt myResult an Sleep 1000 aus lt lt std endl Listing B 3 Ein und Ausgang int main int argc clock_t startzeit clock_t endezeit charx argv clock_t ist der vorgegebene Datentyp der clock Methode Es laesst sich damit rechnen cbDConfigPort 0 F cbDConfigPort 0 F wi e mit Integer Werten RSTPORTA LI GITALIN IRSTPORTB U GITALOUT 152 PG 524 Zwischenbericht BASIC BEISPIELPROGRAMME F R DEN ATMEGA32 12 unsigned short myResult 13 myResult 0 14 while 1 15 Sleep 1000 16 17 Pause von 1 Sekunde vor jeder Messung 18 19 cbDBitOut 0 FIRSTPORTA 8 1 20 cbDBitOut 0 FIRSTPORTA 8 0 21 ZS 22 x Die Impulsbreite von 10 Mikrosekunden 23 x wird durch Latenz automatisch erreicht 24 x 25 while myResult 0 26 coDBitIn 0 FIRSTPORTA 0 amp myResult 27 28 Bei Verpassen des Impulses Endlosschleife 29 x 30 startzeit clock 31 32 x clock stammt aus time h 33 x 34 while myResult 1 35 cbDBit
68. N ist mit PD4 OC1B verbunden Abbildung 3 19 Realisierung der Hauptplatine Radmotor 3 4 9 Akkumulator Der Akku Kung Long der gleichnamigen Firma 15 ist ein wartungsfreier Blei Gel Akku mit einer Spannung von 12 V und 4 5 Ah Abbildung 3 20 zeigt links die Steckverbindung woran der Akku mit der Hauptplatine verbunden wird Die beiden Pads rechts daneben sind f r den An bzw Ausschalter des Roboters Dieser ist ein Schiebeschalter der an dem Geh use befestigt wird Die Schottky Diode verhindert einen R ckflu des Stroms Des Weiteren sind zwei Spannungswandler zu sehen Diese sind n tig um die 12V Spannung zuerst in 9V Spannung zu bersetzen und anschlie end in 5V Spannung Die 9V Spannung brauchen nur die Motoren der R der die brigen Bauelemente der Hauptplatine benutzen eine Spannung von 5V Bei der bersetzung wird Hitze erzeugt die durch einen K hlk rper abgef hrt werden muss Die Eing nge der beiden Spannungswandler haben Kondensatoren mit jeweils 1000u4F Die Kondensatoren an den Ausg ngen besitzen 100n F Abschlie end 74 PG 524 Zwischenbericht HAUPTPLATINE sei noch zu erw hnen dass sich unterhalb der Pads ein Spannungsteiler befindet mit einer Reihenschaltung zweier Widerst nde Der Widerstand nach GND ben tigt 1kQ der an dere Widerstand 211 Der Spannungsteiler ist mit dem Pin DAY ADC7 des ATMega32 verbunden Ist der Akku fast verbraucht sollte der RAPTOR ausgeschaltet werden um Sc
69. Nullprogramm 1 include lt avr io h gt 2 int main void 3 DDRC Oxff 4 PORTC 0x00 5 for xnothingx 6 return 0 T Listing B 11 Leuchtdiode anschalten 1 inclue lt avr io h gt 2 int main void 3 DDRC 0xff 4 DDRA 0x00 5 for 6 if PINA amp 0x40 0 T PORTC 0x00 8 jelse 9 PORTC 0x01 10 11 12 return 0 13 Listing B 12 Eingang auslesen 1 define F_CPU 16000000L 2 define BAUDEXT 9600L 3 define BAUDINT BAUDEXT 17 BAUDEXT 1 4 int uart_init 5 UCSRB 1 lt lt TXEN 6 UBRRH BAUDINT gt gt 8 7 UBRRL BAUDINT Oxff 8 9 10 int uart_putc unsigned char c 11 while UCSRA amp 1 lt lt UDRE 12 Za und warten und warten und warten x 13 UDR Cc 14 return 0 15 PG 524 Zwischenbericht 157 QUELLTEXTE 16 17 18 19 20 21 22 23 zl On On GO H Hm OO OG cd On tkm r L Hi H H ka ka bai RI Ap GA NH CO OO OD JO OG one O int uart_puts char sei while xs uart_putc x s Srs return 0 Listing B 13 Serielle Ausgaben define MAX_WAIT_MS 262 F_CPU 1000000 void sleepns int ms while ms gt MAX_WAIT_MS _delay_ms MAX_WAIT_MS ms MAX_WAIT_MS _delay_ms ms Listing B 14 Wrapper f r Warteschleifen void TWIerror int statuscode switch statuscode 0xf8 case TW_REP_START uart_puts REP_START
70. PC2 TCK OC1B PD4 PC1 SDA OCIA PDS PCO SCL ICP1 PD6 PD OCH Abbildung 3 10 Pinbelegung des ATMega32 3 2 1 Programmierhardware Auch wenn die Programmierung des Mikrocontrollers n system erfolgen kann wird dazu Programmierhardware ben tigt Es gibt auf dem Markt eine Auswahl an Ger ten und es existieren ausf hrliche Anleitungen zum Selbstbau Im einfachsten Fall wird der Mikro controller quasi direkt an den Parallelport des PCs angeschlossen was nicht empfohlen wird da im Fehlerfalle der Port besch digt werden kann Sicherer ist die Verwendung von Dioden oder einem kompletten Bustreiber 22 Zudem gibt es Programmierhardware zum Anschluss an den seriellen Port des PCs Serial ISP Aufgrund der gro en Verbreitung von USB Anschl ssen und des Komfort dieses Busses gibt es auch Adapter um Mikrocon troller ber den USB Port zu programmieren AVR ISP mkil F r die PG wurde ein AVRISP mkII Abbildung 3 11 angeschafft Dabei handelt es sich um einen USB Programmer direkt von der Firma Atmel Die Verwendung eines bereits montierten Programmers bietet den Vorteil dass der Programmer auch direkt von der firmeneigenen Software Suite unterst tzt wird und im Gegensatz zu Eigenbau L sungen davon ausgegangen werden kann dass er funktioniert eine Fehlersuche dort kann entfallen Anschluss am Mikrocontroller Auch wenn es verschiedenste Programmieradapter mit verschiedensten Anschl ssen auf der PC Seite gibt klas
71. Platte mit einem Spezialwerkzeug f r die Fr smaschine ein Kreis herausgeschnitten in den der Deoball gesteckt wird Zur bes seren Befestigung wurde der Deoball zus tzlich an der Aluplatte festgeklebt Das Ergebnis der bisherigen Schritte ist in Abbildung 3 23 zu sehen Nachdem diese L cher in die untere Platte gefr st wurden wurde mit der Bearbeitung der R der begonnen 78 PG 524 Zwischenbericht KAROSSERIE Befestigung R der an den Motoren Um die R der an den Motoren und der Platte zu befestigen wurde ein zylinderf rmiger Metallblock mit einer Hands ge und danach zur Gl ttung mit der Drehmaschine auf die Radbreite gebracht Der Durchmesser hatte schon die richtige Gr e Die klein geschnit tenen Zylinderst cke passten damit genau in die L cher der R der Auf einer Seite der Zylinder wurde ein Loch f r die Motorachse gebohrt Senkrecht zu diesem Loch wurde noch ein kleineres Loch von 3mm Durchmesser gebohrt wodurch der Motor an den Zylin der geschraubt werden konnte Abbildung 3 24 Abbildung 3 24 Bearbeitung der unteren Aluminiumplatte An den R dern wurden kleine St cke mit der Fr smaschine ausgeschnitten Die Schraube zur Motor Zylinderbefestigung dient damit gleichzeitig als Zylinder Radbefestigung Da mit waren die R der mit den Motoren verbunden Abbildung 3 25 Als n chstes mussten die Motoren dann mit der unteren Ebene verbunden werden Abbildung 3 25 Bauteile zur Motormontage Bef
72. R_DIR_PORT 7 1 lt lt MOTOR_DIR_R_PIN_4Y 718 79 80 void motor_turn_right 81 PWM_L 255 82 PWM_R 255 83 PG 524 Zwischenbericht 169 QUELLTEXTE 84 85 86 87 88 89 MOTOR IR_PORI MOTOR IR_PORI MOTOR IR_PORI MOTOR IR_PORI 1 lt lt 1 lt lt 1 lt lt 1 lt lt MOTOR_ MOTOR_ MOTOR_DI z 4Y MOTOR_DI z 3Y Listing B 18 Motortreiber 170 PG 524 Zwischenbericht MOTORTREIBER DER TESTSCHALTUNG B 5 Motortreiber der Testschaltung clock Beispiel arbeitet mit zwei wait methoden x include lt stdio h gt include lt time h gt include lt windows h gt include lt iostream h gt DO NO Ou G H Hm class K 9 10 public 11 Public Methoden 12 Kt Konstruktor 13 7K Deskonstruktor 14 void pwm_singal int motor_leistung LO ECPLACAAA AMIA AAA AAA AAA AAA AA AAA E TEE E ZZ SE 16 Private Methoden amp Variablen 17 private 18 unsigned short HIGH 19 void wait float seconds int i 20 IAEA AAA IIA IVA ENANA IE AAA RA CEN AITANA TEA I SELF III 21 22 K K 23 24 HIGH 0 25 26 K K 27 void K wait float seconds int i 28 29 float endwait 30 endwait clock seconds CLOCKS_PER_SEC 32 33 x setzt den High Pegel z
73. S 31 Formen mit diesem Ansatz besch ftigt Die Objekte waren regelm ig verteilte Punkte im Raum Der Einfluss p den einen Punkt x auf einen anderen Punkt y aus bt war antiproportional zum Abstand xy Somit bestand die Region des Punktes x aus genau den Punkten die am n chsten zu x lagen Diese Zerlegung in Regionen wird Voronoi Diagramm genannt Im folgendenen werden die strukturellen Eigenschaften des Voronoi Diagramms und die Rolle zur L sung von geometrischen Distanzproblemen beschrieben 4 3 2 Definition des Voronoi Diagramms In diesem Abschnitt wird davon ausgegangen dass der Raum R zum Beispiel eine Karte betrachtet wird Die Objekte zum Beispiel Hindernisse auf der Karte wie ein Stuhlbein sind Elemente einer n elementigen Menge S a b c von Punkten in R wobei nur Mengen zugelassen werden die mindestens zwei Elemente haben Der Einfluss p den Punkt a a a2 auf einen Punkt b b1 b2 aus bt wird mit Hilfe des euklidischen Abstandes es k nnen auch andere Abstandsma e benutzt werden EI yla b1 las ba berechnet Zus tzlich wird noch ein Bisektor definiert Ein Bisektor von zwei Punkten a b 5 beschreibt die Menge B a b x R ax bx aller Punkte im Raum R die zu a und b den gleichen euklidischen Abstand haben Somit besteht der Bisektor aus den Punkten der Mittelsenkrechten von a und b wobei die Mittelsenkrecht
74. TECHNISCHE UNIVERSITAT DORTMUND FACHBEREICH INFORMATIK PG 524 RAPTOR Room Adaptive Precisely Topologically Orienting Robot Zwischenbericht Wintersemester 2007 2008 INTERNE BERICHTE INTERNAL REPORTS Lehrstuhl XII Embedded System Design Fakult t f r Informatik Technische Universit t Dortmund Betreuer Olivera Jovanovic Robert Pyka GERMANY D 44221 DORTMUND Zwischenbericht Projektgruppe 524 Room Adaptive Precisely Topologically Orienting Robot RAPTOR Wintersemester 2007 2008 Teilnehmer Ender Ayalp Sariette Bille Omar Bousbiba Daniel Etges Igor Ionov Selma Jabour Oliver Jokiel Dominik Kopczynski Markus Kiinne Yi Lin Samir Rachidi Daniel Richter Betreuer Olivera Jovanovic Robert Pyka Technische Universit t Dortmund Fachbereich Informatik LSXII Prof Dr Peter Marwedel PG 524 Zwischenbericht Inhaltsverzeichnis 1 Einleitung 1 1 Motivation 2 1 Hardware Piel ee ee I a e a ada dt as 1 2 1 2 1 Minimalaiele KR 2 1 2 2 Erweiterungsm glichkeiten 1 3 Vorgehensweise 1 3 1 Hardwaregruppe 13 2 Softwaregruppe 2 Grundlagen SEL Il AA 4a Ae 02 Asa ae Berl digen ee 2 1 2 Ultraschallsensoren 2 1 3 Kontaktsensoren e 2 1 4 Lichtsensoren blas eu 4 at he na hs ei een 22 3 Maussensor e mat ara in a nee DD Kompasssensor scs 223 Ba a PA RR A 2 1 7 Getriebemotoren ooo a 2 1 8 Mikrocontroller m mn XLI Kameras
75. Voronoi Regionen VR a f r alle a S Jeder Knoten hat mindestens den Grad 3 Dieses gilt ebenfalls f r durch die Begrenzung H neu entstandenen Knoten Eine wichtige Anwendung der Voronoi Diagramme Vo S ist die Routenplanug f r Robo ter Es sei ein kreisrunder Roboter mit dem Radius r gegeben der sich von dem Startpunkt s zum Zielpunkt z bewegen soll und dabei ein Ber hrung mit einem der n Hindernisse vermeiden muss Die n Hindernisse werden zu der Menge S hinzugef gt und es wird eine Begrenzung H festgelegt Falls der Roboter sich zwischen zwei Hindernisse a und b bewegen muss ist er auf dem besten Wege indem er zu beiden Hindernissen den gleichen Abstand einh lt Er sollte also dem Bisektor B a b folgen Daraus l t sich nun folgern dass sich der Roboter innerhalb der Begrenzung am sichersten bewegen kann wenn er den Voronoi Kanten bez glich Vo S folgt Als Vereinfachung wird angenommen dass sich Startpunkt 112 PG 524 Zwischenbericht VORONOI Abbildung 4 12 Der Roboter befindet sich am Startpunkt s und findet ein nahe Voronoi Kante 31 s und Zielpunkt z direkt auf Voronoi Kanten befinden Die betroffenen Voronoi Kanten werden geteilt und s z werden als neue Knoten hinzugef gt Als n chstes wird f r jede Voronoi Kante e der kleinste Abstand zu einem Hinderniss berechnet Falls die Voronoi Kante e zum Bisektor B a b geh rt muss f r alle Punkte x e gelten r e gt min xa xb wobei e ei
76. aft eines Randpixels da die verwendeten Algorithmen aus der Bildverarbeitung stammen sind hier der Begriff des Pixels und des Feldes quivalent Ein Feld ist ein Randpixel wenn er nicht von allen Seiten von Feldern des gleichen Objektes eingerahmt ist Wird dies festgestellt dann wird die Eigenschaft m_randpixel in der Klasse Feld entsprechend gesetzt Dies wird sp ter noch von Bedeutung sein Nachdem nun die erste der beiden Objekterkennungsfunktionen besprochen wurde wird im folgenden die Zweiten erl utert Die Funktion getSegmentRandVector wurde urspr ng lich implementiert um die Eingabe f r die zu berechnende Voronoi Karte zu ermitteln Da diese aus verschiedenen Gr nden verworfen wurde ist die Funktion getSegmentRandVec tor nicht mehr von gro er Bedeutung Es kann jedoch sein dass sie zur Wiedererkennung der R ume ben tigt wird um dort einen Performanzvorteil zu erreichen Die R ckgabe der Funktion hnelt stark der R ckgabe der Funktion getSegmentVector wobei hier nicht die gesamten Objekte zur ckgegeben werden sondern nur die Randpixel in benachbarter Reihenfolge Dies bedeutet dass auf einen Randpixel direkt ein Nachbar Randpixel in dem inneren Vector folgt Dies war wichtig um die u ere Struktur eines Objekte analysie ren zu k nnen Die Anforderung zeigt warum diese ben tigten Werte nicht innerhalb der Funktion getSegment Vector ermittelt wurden Dort werden die Randpixel in zuf lliger Rei henfolge gefunden
77. allationsanleitung beschreibt die User spezifische Installation von Player Stage in einem Unterordner Player des eigenen Home Verzeichnisses Standardm ig sind die Installationsroutinen von Player Stage darauf eingerichtet eine lokale Installation f r alle Nutzer vorzunehmen Daher mussten einige nderungen an dem empfohlenen Installati onsablauf vorgenommen werden 1 Download der aktuellen Version player lt version gt tar bz2 von SourceForge nach home lt name gt Player 2 Wechseln nach home lt name gt Player cd home lt name gt Player 3 Entpacken 116 PG 524 Zwischenbericht PLAYER STAGE Abbildung 4 15 Komponentenuebersicht Player Stage Gazebo 21 PG 524 Zwischenbericht 117 SOFTWARE S bzip2 d player lt version gt tar bz2 tar xvf player lt version gt tar 4 Wechseln ins Player Verzeichnis cd player lt version gt 5 Setzen von Umgebungsvariablen export PATH Player bin PATH export CPATH Player include CPATH export LIBRARY_PATH Player lib LIBRARY_PATH export PKG_CONFIG_PATH Player lib pkgconfig SPKG_CONFIG_PATH export PYTHONPATH Player lib python2 2 site packages SPYTHONPATH 6 berpr fen das Flags nicht gesetzt sind env grep CFLAGS env grep LDFLAGS 7 Falls vorheriger Punkt eine Ausgabe verursacht m ssen die Flags deaktiviert werden S unset LDFLAGS unset CFLAGS
78. andelt sich um ein Software System welches zur Unterst tzung der Ent wicklung von eingebetteten Systemen aufgebaut wurde Es kommt bei dem von uns ver wendeten Gumstix zum Einsatz Neben der Bereitstellung des Betriebsystems werden von Buildroot auch Bootloader Dateisysteme und diverse Cross Compiler bereitgestellt Diese k nnen ganz einfach ber textbasierte Konfigurationsoberfl chen konfiguriert werden ber dem hinaus werden auch alle wichtigen Treiber f r verschiedenste Hardwarekomponenten zur Verf gung gestellt Dies umfasst Schnittstellen die 2C USB WLAN Ethernet und so weiter Auch die Paketverwaltung des Betriebsystems welche verschiedene Softwarel sun gen umfasst wird vorgehalten Hier finden sich Programme wie zum Beispiel SSH Server Webserver Dateisystemtools und diverse Bibliotheken Die komfortable M glichkeit das Potential des Gumstix voll aus zu nutzen hat zu der Entscheidung gef hrt das Buildroot System zu nutzen Trotz anf nglicher Probleme hat sich diese Entscheidung als richtig heraus gestellt da wir auf ein vollwertiges Linux Be triebsystem zur ckgreifen konnten und unsere Erfahrungen in diesem Bereich auch auf die Arbeit in der Projektgruppe anwendbar waren Dies hat uns sehr dabei geholfen grundle gende Probleme schnell und effizient zu l sen 2 2 2 Player Stage Um unsere Fortschritte unter einer standardisierten Umgebung testen zu k nnen haben wir uns dazu entschieden einen Simulator f r den Rob
79. ar ist Die Zeitdifferenz zwischen aussenden und empfangen des Signals gibt bei bekannter Mediumsdichte Aufschluss ber die Distanz zwischen Grenzfl che und Sen sor Somit ist eine L ngenmessung entlang der Schallausbreitung m glich Die Firma Devantech 8 hat eine Serie von kleinen Ultraschallsensoren entwickelt Ein vergleichbares Modul selbst zu bauen w re ungenauer und teurer Die Hardwaregruppe hat sich f r das Modell SRFO5 entschieden siehe Abbildung 2 4 Dieses besitzt eine Reichweite von bis zu 4 Meter Des Weiteren hat er einen zweiten Modus in dem sowohl der Start der Messung als auch das Ergebnis ber die gleiche Leitung bertragen werden siehe Ab schnitt ber Modus 2 Der Ultraschallsensor kann folglich ber einen einzigen Port Pin gesteuert werden Diesen Vorteil verwendet die Projektgruppe f r ihre vier Ultraschallsen soren Im Folgenden werden die beiden Modi und deren Pinbelegung n her erl utert Ferner wird auf die Distanzberechnung und die Richtwirkung des Sensors n her eingegangen Modus 1 Wie in Abbildung 2 5 zu sehen ist benutzt der erste Modus seperate Trigger und Echo Pins das heisst es m ssen zwei Ports mit dem Mikrocontroller verbunden werden Der SRFO5 hat einen internen Pull Up Widerstand so dass der Modus Pin unverbunden bleiben 18 PG 524 Zwischenbericht HARDWARE kann Ein kurzer High Impuls auf dem Trigger Input von mindestens 10 Mikrosekunden l st den Messvorgang aus Anschlie
80. auszutes ten Listing B 10 Bemerkungen e Die main Methode hat wie alle C Methoden einen Parameterblock hier void Nat rlich k nnen dem Mikrocontroller keine Parameter an die main Methode ber geben werden dennoch geh rt diese Parameter Definition zum C Standard und muss daher vorhanden sein e Analog Die main Methode hat einen int R ckgabewert auch wenn dieser nirgendwo abgelesen werden kann Ebenfalls verlangt der Compiler einen return Aufruf auch wenn dieser vom Programm nie erreicht werden darf e Wie auch bei Basic Programmen sollte niemals ein Programmende erreicht werden sondern immer mit einer Endlosschleife gearbeitet werden Anderenfalls w rde der Program Counter in Speicherbereiche laufen die nicht beschrieben wurden also un definiert sind PG 524 Zwischenbericht 59 HARDWARE Ansteuern von Ausg ngen Auch unter C m ssen die Ausg nge ansteuert werden also wurde auch hier wieder eine Leuchtdiode angeschlossen und ber ein Programm Listing B 11 anzusteuern versucht Bemerkungen e Da zu dem Zeitpunkt noch keine Funktionen f r Warteschleifen eingebunden waren wird die Leuchtdiode einfach nur eingeschaltet wie bisher wird dabei der Pin auf GND gezogen e Die Ansteuerung der Pins des Mikrocontrollers geh rt zu den I O Funktionen daher muss auch avr io h eingebunden werden Technisch gesehen wird in der io h die richtige Header Datei f r den passenden Controller ausgew hlt Dieser w
81. ayout f r das anschliessende tzen und Best cken vorbereitet Wie die einzelnen Platinen hergestellt werden ist im vorherigen Abschnitt 3 3 beschrieben 3 4 1 ATMega32 Der Mikrocontroller besitzt 32 1 O Pins verteilt auf vier Ports Port A PAO bis PA7 Port B PBO bis PB7 Port C PCO bis PC7 PG 524 Zwischenbericht 67 HARDWARE Port D PDO bis PD7 In den nachfolgenden Abschnitten wird erw hnt welcher Pin des Mikrocontrollers wie belegt ist und mit welchem Bauteil er verbunden wird Zum besseren Verst ndnis des weiteren Textes folgt eine Liste mit der Beschreibung der Pinbelegung F r weitere Details des Bausteins wird hier auf den Abschnitt 3 2 verwiesen Reset Setzt den Controller zur ck wenn ein LOW Pegel f r mindestens zwei Zyklen des Systemtaktes anliegt XTAL1 XTAL2 Anschluss eines externen Taktgebers hier Quarz AVCC Betriebsspannung f r den Analog Digital Wandler AGND Alternative Masse AREF Referenzspannung f r den Analog Digital Wandler VCC Versorgungsspannung GND Masse PAO bis PA7 ADCO bis ADC7 sind Eingabepins f r analoge Messungen PBO TO kann als Taktgeber f r die Z hler 0 und 1 verwendet werden TCK als externer Taktpin f r synchrone USART Ubertragung PB1 T1 kann als Taktgeber f r die Z hler O und 1 verwendet werden PB2 AINO ist ein externer Eingang des Analog Komparators INT2 ist eine externe Interrupt Leitung PB3 AINI folgt analog zu AINO OCO kann als Ausgang f r Z hlerO verwend
82. ch dieser Reservierung nur 114 Ger te angesteuert werden k nnten In manchen Anwendungen reichen diese 114 Adressen nicht aus Es gibt daher neben der M glichkeit mehreren Slaves die gleiche Adresse zu geben inzwischen auch eine erweiter te 10 Bit Adressierung Da im Raptor nur drei Teilnehmer und nur zwei Slaves am Bus betrieben werden sollten wurde eine Einarbeitung in diesen Bereich nicht als notwendig angesehen Da von einem Datenbyte nur die ersten 7 Bit f r die Adresse ben tigt werden wird mit dem achten Bit die Datenrichtung ausgew hlt e Ist das Bit gesetzt so wird lesend auf den Slave zugegriffen Der Master befindet sich im Master Receiver Modus der Slave wird in den Slave Transmitter Modus geschaltet e Ist das Bit nicht gesetzt so wird schreibend auf den Slave zugegriffen Der Master befindet sich im Master Transmitter Modus der Slave wird in den Slave Receiver Modus geschaltet Das neunte Bit ist dann wie schon erw hnt das ACK Bit Hiermit best tigt der Slave dass er seine Adresse empfangen hat und einsatzbereit ist 120 sieht auch eine M glichkeit vor allen Slaves am Bus eine Nachricht zukommen lassen General Call Hierbei senden dann alle Slaves ein ACK durch die implizite Verundung der SDA Ader ergibt sich dabei kein Problem In manchen Beispielquelltexten f llt auf dass dort als Adresse ein Wert ber 127 steht obwohl nur eine 7 Bit Adressierung verwendet wird selbst im Kompass Dat
83. chiedene Softwaresysteme zur Steuerung eines mobilen Roboters existieren l t es sich nicht vermeiden eigene Software zu programmieren Dies hat meh rere Gr nde Zum einen ist gerade das Feld der Robotik noch nicht so weit fortgeschritten dass dort Standardl sungen f r eine Vielzahl von Aufgaben existieren Auch ist kaum ein Forschungsfeld wie dieses so komplex in der Anzahl der m glichen Anwendungen Da auch bei der Enwicklung des RAPTOR versucht wird besondere Aspekte zu ber cksichtigen blieb es nicht aus ma geschneiderte Software zu entwickeln die diesen Anforderungen entspricht Hierbei ist vor allem die interne Repr sentation der Welt zu nennen Dieses Abbild der realen Welt ist das Herzst ck des RAPTOR und ben tigte deshalb auch eine besondere Aufmerksamkeit Es wurden hier verschiedene Anforderungen formuliert Zum einen muss eine Anpassung an die begrenzte Rechenleistung der verwendeten Hardware m glich sein zum anderen darf dies nicht die Effizienz des Umgebungsmodell verringern Hier war es notwendig eine eigene Entwicklung vorzunehmen Es wurde zu Beginn der Projektgruppe festgelegt eine Kombination aus zwei Kartentypen zu nutzen welche je de f r sich spezifische Vorteile aufweist Zum einen eine Gitterkarte welche den schnellen Zugriff auf einzelne Elemente der Karte m glich machte Und zum anderen ein Voronoi diagramm zur Routenberechnung welche sich dadurch auszeichnet dass sie sehr gut eine dynamische Route festlegen
84. d F r den autonomen Staubsaugerrobo ter bedeutet dies allerdings dass sobald er in Betrieb genommen wird am Motortreiber IC Spannung anliegt und die B rsten sich solange drehen bis sich der Betriebszustand auf ausgeschaltet ndert 9dd Abbildung 3 18 Realisierung der Hauptplatine B rstenmotor R der F r die Motorsteuerung des Rades ist wichtig zu beachten dass der Roboter sowohl r ckw rts als auch vorw rts fahren kann Anders als bei der Ansteuerung des Motortreiber ICs f r die B rsten ist hier die Drehrichtung des Motors nicht festgelegt Wie Abbildung 3 19 zeigt sind die Pins GND1 GND2 GND3 und GNDA4 auf den logischen Wert Null PG 524 Zwischenbericht 73 HARDWARE gesetzt Die Pins 1Y und 2Y werden an den ersten Motor der R der befestigt die Pins 3Y und 4Y an den zweiten Motor der R der Der L293D erh lt am Pin VCC1 5V Spannung f r die logische Schaltung und an VCC2 9V Spannung f r die R der An VCC2 k nnten auch bis zu 12V angeschlossen werden jedoch sollte der Motor auf Dauer nicht mit der Ma ximalleistung betrieben werden Um den Motor ber die Software ansprechen zu k nnen besitzt er vier Anschlusspins am ATMega32 Pin 1A kommuniziert mit PC7 TOSC2 des Mikrocontrollers Pin 2A mit PC6 TOSC1 Pin 4A mit PC5 TDI und Pin 3A mit PC4 TDO F r die Pulsweitenmodulation kommuniziert 1 2EN des Motortreiber IC s mit PD5 OC1A des Mikrocontrollers Der Pin 3 4E
85. des Z hlers auf HIGH Dadurch l sst sich die PWM Frequenz durch die Werte in den Output Compare Registern OCR1A und OCRIB steu ern Der Wert darf wegen dem 8 Bit Z hler zwischen 0 und 255 liegen wobei 0 Stillstand bedeutet und 255 die maximale Geschwindigkeit Desweiteren wird der Prescaler Frequenzvorteiler auf 1024 gesetzt TCNT1 bis Ende der Initialisierung Der Timerl wird mit 0 vorgeladen um Fehler bei der Initialisierung zu vermeiden Die Datenrichtungsregister der PWM Pins OC1A und OC1B m ssen auf Output eingerichtet werden Hier ber werden die PWM Signale ausgegeben motor_drive muss aufgerufen werden damit der Roboter sich vorw rts bewegt Hierbei m ssen geeignete Parameter bergeben werden Als Eingabe sind pro Motor nur Werte zwischen 0 Stillstand und 255 maximale Geschwindigkeit zul ssig Somit bremst der Roboter beim Wert 0 Gegebenfalls wird noch eine Methode implemen tiert die einen Kurzschluss der Motoren verursacht um eine starke Bremse zu er zwingen Doch das Eigengewicht des Roboters und die daraus entstehende Reibung der R der mit dem Boden f hren bereits beim Umschalten auf eine geringe PWM Frequenz zum Stillstand Desweiteren kann die Fahrtrichtung mit einem booleschen Wert festgelegt werden Bei true f hrt der Roboter geradeaus bei false r ckw rts Somit ist es m glich mit konstanter Geschwindigkeit geradeaus oder r ckw rts zu fahren Au erdem lassen sich beide Motoren unabh ngig voneinander mit u
86. durchgef hrt Diese Klassifizierung wird mit Hilfe eines Kreises K x erstellt der den Punkt x R als Mittelpunkt besitzt Dieser Kreis wird nun langsam ausgedehnt bis der Rand des Kreises K x auf mindestens einen Punkt a S trifft Dabei sind nun drei F lle zu unterscheiden siehe dazu Abbildung 4 10 1 Fall K x trifft auf genau einen Punkt a S lt x E V S PG 524 Zwischenbericht 111 SOFTWARE Abbildung 4 11 beschr nktes Voronoi Diagramm Vo 5 31 2 Fall K x trifft auf genau zwei Punkte a b S gt x V S und ist Voronoi Kante 3 Fall K x trifft auf mindestens drei Punkte a b c S gt x V S und ist Voronoi Knoten Nun l sst sich erkennen dass ein Voronoi Diagramm in einen ungerichteten Graphen G V E bertragen werden kann Die Menge V stellt dabei die Voronoi Knoten und die Menge E die Voronoi Kanten dar Probleme k nnte noch bereiten dass manche Voronoi Kanten nicht beschr nkt sind Des halb wird der wichtige Teil des Voronoi Diagramms von einer geschlossenen Begrenzung H umgeben die weit genug au en verl uft so dass nur unbeschr nkte Voronoi Kanten mit der Begrenzung in Ber hrung kommen und somit beschr nkt werden siehe Abbildung 4 11 Das neu entstandene Diagramm wird als beschr nktes Voronoi Diagramm Vo S definiert An dieser Stelle ist das Ergebnis ein kreuzungsfreier geometrischer Graph Das be schr nkte Voronoi Diagramm kat 8 besitzt n
87. e 32 3 swstack 32 4 Shwstack 32 5 Scrystal 16000000 6 Sbaud 9600 7 8 Config Portc O Output 9 Config Pina 7 Input 10 Porta 7 1 11 12 Do 13 Print aus 14 Portc 0 1 15 If Pina 7 1 Then 16 Waitms 100 17 Print an 18 Portc O 0 19 Waitms 100 20 Else 21 Waitms 500 22 Print an 23 Portc O 0 24 Waitms 500 25 End If 26 Loop 27 End Listing B 8 serielle Kommunikation 1 regfile m32def dat 2 Sframesize 32 3 swstack 32 4 Shwstack 32 PG 524 Zwischenbericht 155 QUELLTEXTE 16 17 18 19 20 21 22 23 24 25 26 21 Scrystal 16000000 Sbaud 9600 Config PORTC O Output Config PORTC 1 Output Config PORTA 7 Input Dim Zeitmessung As Word Dim Ledstatus As Byte Ledstatus 0 Do PORTC O Ledstatus Ledstatus 1 Ledstatus PORTC 1 0 Pulseout PORTC 1 40 Pulsein Zeitmessung PINA 7 1 Zeitmessung Zeitmessung 100 Zeitmessung Zeitmessung 58 Print Abstand Zeitmessung _cm Waitms 50 Loop End Listing B 9 Auslesen des Ultraschall Sensors B 3 C Beispielprogramme f r den ATMega32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int main while 1 Endlosschleife return 0 nur der Sch nheit wegen x Alternativ int main void Lor 7 nothing return 0 zs x 156 PG 524 Zwischenbericht C BEISPIELPROGRAMME F R DEN ATMEGA32 Listing B 10 Wieder ein
88. e aktuelles Feld Startpunkt do for alle Nachbarn vom aktuellen Feld do suche k rzeste Entfernung end lege Nachbarn mit k rzester Entfernung auf Stack Nachbar mit k rzester Entfernung wird aktuelles Feld end return stack Listing 4 24 Routenextraktion Hierbei werden als Entfernungen die zuvor berechneten Entfernungen vom Startpunkt verwendet Die Interpretation k nnte sein dass Entfernungen als H henwerte eines Gebir ges angenommen werden Am Zielpunkt entspringt ein Fluss und der Weg den das Wasser zum Startpunkt w hlt ist die k rzeste Route Hierbei kann es auch mehrere Routen ge ben was dazu f hrt dass bei der Suche nach dem Nachbarn mit der k rzesten Entfernung PG 524 Zwischenbericht 101 SOFTWARE mehrere m gliche Kandidaten gefunden werden In diesem Fall w hlt man beliebig aus denn die L nge der Route wird auf jeden Fall minimal sein Wie die k rzeste Route in dem aufgef hrten Beispiel aussieht ist in Abbildung 4 5 zu sehen Die Zahlen in der Abbildung 4 5 stellen hier nicht die zuerst berechneten Entfernungen dar sondern die Reihenfolge der Felder modulo 10 Durch den verwendeten Stack werden also nicht nur die Felder auf der Route ermittelt sondern auch die Reihenfolge in der diese angefahren werden miissen Dieses ganze Verfahren hat sich als schnell herausgestellt Tests auf der von uns ver wendeten Hardware zeigten auch bei gr eren Karten gute Leistungsresultate Trotzdem k nnen noch me
89. e Die Anode der Leuchtdiode wurde mit einen Vorwiderstand verbunden etwa 1 5kQ f r Low Current LEDs etwa 1500 f r regul re LEDs e Die andere Seite des Vorwiderstandes war mit der BreakoutBox verbunden F r das Experiment wurde wieder Klemme 21 verwendet Erkl rungen e cbDConfigPort unterscheidet sich in dem Punkt vom vorherigen Beispiel dass der Port diesmal als DIGITALOUT geschaltet wird e myResult wird jeden Durchgang umgeschaltet e cbDBitOut unterscheidet sich kaum von coDBit In allerdings kann hier der Para meter direkt bergeben werden Die Verwendung eines Pointers ist nicht n tig PG 524 Zwischenbericht 45 HARDWARE Die weiteren Pins sind dann ber 1 15 adressierbar Dabei ist darauf zu achten dass zwar weiterhin FIRSTPORTA in coDBitOut auftaucht aber in coDConfigPort der zweite Port FIRSTPORTB angegeben werden muss Das dritte Programmbeispiel geht da her nochmal auf dieses Problem ein Ein und Ausgabe Das n chste Programmbeispiel sollte nun die digitale Eingabe des Schalters in eine digi tale Ausgabe an der LED umwandeln An dieser Stelle lie sich dann ein Makel an der Programmbibliothek feststellen Es ist nicht m glich die digitalen Pins wirklich einzeln auf Ein und Ausgang zu schalten Trotz anders lautender Hinweise im Handbuch unterst tzt die Bibliothek nur das Umschalten kompletter Ports F r dieses Experiment wurde daher FIRSTPORTA f r die E
90. e Verwendung von simplen und schnellen Berechnungen gelegt Als Nachbarn werden die acht Nachbarfelder und nicht wie beim Bereichswachstumsver fahren nur die vier Nachbarn in den Himmelsrichtungen betrachtet Die Nachbarn in den vier Himmelsrichtungen bekommen hierbei die Entfernung des aktuellen Feldes 1 Die anderen vier Nachbarn w rden die Entfernung des aktuellen Feldes v2 erhalten Da diese Pr zision aber nicht n tig ist wird hier auf die Wurzelberechnung verzichtet und die Entfernung des aktuellen Feldes 1 414 angenommen In Abbildung 4 4 kann ein Beispiel f r diese Sch tzung betrachtet werden Die Entfernungswerte wurden auf der Darstellung gerundet und modulo 10 gerechnet um auf der Konsole eine verwertbare Darstellung zu erreichen Mit etwas berlegung kann schnell der Startpunkt der Routenplanung erkannt werden Er befindet sich direkt unter dem linken unteren Hindernis auf dem Feld welches mit einer 1 gesch tzt wurde Der zus tzlich eingehaltene Abstand zu den Objekten und Kartenr ndern kann ebenfalls wahrgenommen werden Letzteres resultiert aus der Tat sache dass unbekannte Regionen potentiell Hindernisse enthalten k nnen und daher ein Sicherheitsabstand eingeplant werden muss Nun muss jedoch aus den berechneten Entfer nungen die eigentliche Route extrahiert werden Hierf r wird am angegebenen Zielpunkt gestartet und der folgende Algorithmus umgesetzt lege Zielpunkt auf Stack setze Zielpunkt als aktuelles Feld whil
91. e dl es A A A a 125 4 6 3 Inter Integrated Circuit o 129 5 Ausblick 137 A Hardwarekomponenten 139 A 1 Skizzen der arosserie isa ia a a n 139 A 2 Schaltpl ne A A O AN ge aat 143 A s EE 148 B Quelltexte 151 B 1 Beispielprogramme f r die BreakoutBox 0 o 151 B 2 Basic Beispielprogramme f r den ATMega32 153 B 3 C Beispielprogramme f r den ATMega32 156 BA let seres a e ef lt el tinta a NE ie i 168 B 5 Motortreiber der Testschaltung valeria irse ds DEE 171 Literaturverzeichnis 181 PG 524 Zwischenbericht 5 Inhaltsverzeichnis PG 524 Zwischenbericht 1 Einleitung Die Projektgruppe 524 auch RAPTOR Room Adaptive Precisely Topologically Orienting Robot genannt entwickelt mit dem c t Bot als Grundlage einen Staubsaugerroboter ohne Saugmechanismus Motiviert von den Unzul nglichkeiten bestehender Roboter strebt die Projektgruppe einige Verbesserungen siehe Abschnitt 1 1 auf dieser Seite an Auf das Ziel und die Vorgehensweise wird in den Abschnitten 1 2 und 1 3 n her eingegangen 1 1 Motivation Schon immer war es ein Traum der Menschen k nstliche Wesen zu erzeugen Diese sollten ihnen m hsame beziehungsweise gef hrliche Arbeiten abnehmen oder zur Unterhaltung der Menschen dienen Inzwischen gibt es eine Vielzahl von Robotern f r die unterschied lichsten Einsatzbereiche Die bekanntesten Roboter sind die Industrieroboter Diese b
92. e eine Gerade ist die genau aus den Punkten des Bisektors besteht Diese 110 PG 524 Zwischenbericht VORONOI Abbildung 4 10 i z EV 5 11 x V S und ist Kante iii x V S und ist Knoten 14 Mittelsenkrechte teilt R in zwei offene Halbebenen Die Halbebene in der sich der Punkt a befindet ist D a b x R lax lt bx Hingegen beschreibt D b a x R bx lt ax eine Halbebene die den Punkt b als Element hat Nun kann mit Hilfe dieser Uberlegungen eine Voronoi Region von einem Punkt a bez glich definiert werden als VR a S D a z 1EN lay Da die Voronoi Region einen Durchschnitt von n 1 offenen Halbebenen beschreibt ist sie offen und konvex Die Voronoi Region V R a S beinhaltet alle Punkte der Ebene die zum Punkt a n her liegen als irgendein anderer Punkt x S Werden nun alle Voronoi Regionen entfernt bleiben am Ende nur diejenigen Punkte x R brig die zu mindestens zwei Punkten a b S den gleichen Abstand haben Diese Punkte werden als Voronoi Diagramm V S bez glich S bezeichnet Die Abbildung 4 9 beschreibt ein Voronoi Diagramm mit sieben Punkten Die Ebene wird in sieben konvexe Voronoi Regionen zerlegt Somit muss ein Punkt x V S der auf dem gemeinsamen Rand von V Rio S und VR b S liegt zum Bisektor B a b geh ren Nun wird noch ein Klassifizierung der Punkte x V S in Kantenpunkte und Knotenpunkte
93. e empfangenen Daten signed sind reicht eine einfache Addition Aus dem Maussensor kann auch komplett das zuletzt aufgenommene Bild ausgelesen werden Register 08 mit 1 beschreiben dann 324 18 x 18 mal Register 08 auslesen Es sind nur die unteren 6 Bit mit Bilddaten gef llt sind dies entspricht einem Graustufen Bild mit 64 Graustufen Bisher konnte der ATMega32 dieses Bild nicht ausgeben oder weitergeben und es ist stark zu bezweifeln dass diese Funktionalit t im Roboter sinnvoll eingesetzt werden kann Dennoch ist sie vorhanden und kann einfach implementiert werden 4 6 2 Motoren Das Fahrwerk des Roboters besteht aus 2 Motoren des Modells RB 35 welche dem Robo ter nach geeigneter Bahnplanungsberechnung erm glichen sollen die gesamte Fl che eines Raumes zu befahren Hierzu soll die Geschwindigkeit und die Drehrichtung der Motoren und insbesondere die Fahrtrichtung des Roboters steuerbar sein was durch einen entspre chenden Motortreiber realisiert wird Der Mikrocontroller selber besitzt keine M glichkeit zur direkten Spannungsregelung und die Einschr nkung auf eine einzig m gliche konstante Geschwindigkeit w rde zu unn ti gen Einschr nkungen f hren und nicht den Vorstellungen eines effektiven Saugroboters PG 524 Zwischenbericht 125 SOFTWARE entsprechen Au erdem w rde die Umsetzung durch ein entsprechendes Bauteil welche die Spannung regelt den Aufwand und die Kosten unn tig erh hen Aus diesen Gr nden fi
94. e in Basic geschieht das Einlesen des Zustands am Controllerpin ber ein anderes Schl sselwort PIN 60 PG 524 Zwischenbericht ATMEGA e Bei der Abfrage PINA amp 0x40 wird aus dem gelesenen Status an Port A ein einzelnes Bit herausgefiltert Diese Operation ist als Bitmasking bekannt quiva lent zu 0x40 hexadezimal sind 64 dezimal 1 lt lt 6 Bitshifting und 0601000000 schreiben Allerdings sind einige Varianten lesbarer als andere Serielle bertragung Auch unter C ist eien Ausgabe von Text gew nscht insbesondere Debugging Informationen sollten ablesbar sein Wie bisher wird dabei der UART des Mikrocontrollers verwendet um an die seriel le Schnittestelle des PCs Daten zu senden Der bisherige Aufbau mit dem Pegelwandler MAX232 kann beibehalten werden allerdings wird die Daten bertragung erheblich kompli zierter Unter C werden die Register direkt angesprochen und f r eine detaillierte Kenntnis dieser Register ist eine gr ndliche Lekt re des ausf hrlichen Datenblattes des Controllers n tig Hier soll nun allerdings nicht auf die einzelnen Flags und ihre Funktionen eingegan gen werden die meisten Flags sind schon beim Start des Controllers auf die gebr uchlichste Konfiguration gesetzt statt dessen wird nur kurz der n tige Quelltext angegeben Die Methoden Listing B 13 sollten im endg ltigen Programm wahrscheinlich besser in eine eigene Datei ausgegliedert werden Sie implementieren auch nur die s
95. ebsspannung 3 3 V 5 V aus Um eine Vielzahl unterschiedlicher Peripherie zu unterst tzen k nnen die Rechner Boards mit einer breiten Palette an verschiedenen Erweiterungs Boards kombiniert werden Insgesamt gibt es 3 verschiedene Gruppen von gumstix Rechner Boards basix connex und verdex diese unterscheiden sich haupts chlich in der Rechenleistung und der Anzahl an unterst tzten Erweiterungs Boards Rechnerboard gumstix verdex XL6P Die Projektgruppe entschied sich f r das Modell gumstix verdex XL6P welches bis zu 2 Erweiterungs Boards unterst tzt und ber die h chstm gliche Rechenleistung aller bestell baren Rechner Boards verf gt Zwar ist das gumstix verdex XL6P das teuerste verf gbare Board um 70 Dollar teurer im Vergleich zum billigsten Modell der Produktgruppe basix daf r ist es in der Lage allen von Robotern gestellten Anforderungen gerecht zu werden Wichtig ist insbesondere die M glichkeit bis zu 2 Erweiterungs Boards an das gumstix verdex XL6 anzuschliessen wodurch die Anzahl m glicher Ein Ausgabeger te deutlich erh ht wird Zudem gibt es einige spezielle Erweiterungs Boards u a das console vx und das netwifimicroSD welche nur mit Rechner Boards der verdex Klasse kompatibel sind zm verdex XL6P Abbildung 2 1 gumstix verdex XL6P 11 14 PG 524 Zwischenbericht HARDWARE Technische Details e Prozessor Marvell PXA270 XScale Prozessor mit 600 MHZ Speicher 128MB RAM 32MB Flash Spe
96. ega32 f r den Maussensor und die Motoren beschrieben Die restliche Software ist Teil des zweiten Semesters der Projektgruppe 124 PG 524 Zwischenbericht ATMEGA32 4 6 1 Maussensor Auf der Webseite von Roboternetz de befand sich bereits ein Beispielprogramm 23 zur Ansteuerung des im Raptor verwendeten Maussensors Dieses konnte relativ schnell ange passt werden Die Platine hat bereits die Kontakte SDA und SCL was sehr analog zum I C Bus aussieht Tats chlich ist das Protokoll bis auf einige Kleinigkeiten sehr hnlich e Es ist kein Bus sondern eine Direktverbindung e Somit ist keine Hardware Adressierung n tig und e auf die Registeranwahl vom Controller aus folgt sofort die Antwort des Sensors ohne dass ein Restart n tig w re e Das Bit f r die Auswahl der Datenrichtung ist invertiert e Die 5V Default Spannung auf dem Bus wird vom Controller vorgegeben Damit l sst sich die Platine nicht direkt an den I C Bus anschlie en Auf der anderen Seite bedeutet das dass zwei beliebige Pins verwenden werden k nnen F r das Beispiel wurde SCK mit Pin 40 PortA 0 und SDIO SDA mit Pin 39 PortA 1 des Mikrocontrollers verbunden Der abgewandelte Quelltext befindet sich im Anhang unter Listing B 17 Nach der Initialisierung kann nun aus Register 2 und 3 die Y bzw X Verschiebung seit dem letzten Auslesen ausgelesen werden Um daraus eine aktuelle Position zu ermitteln miissen die Werte zusammengerechnet werden Da di
97. egt i d R kleiner als 4 5 V bootet das Board den Kernel nicht vollst ndig weshalb immer eine ausreichende hohe Spannung an gelegt werden sollte jedoch darf sie aus Sicherheitsgr nden wiederum nicht zu hoch ausfallen e Die WLAN Funktionalit t kann auch nach mehreren Wochen der Suche und des Pro bierens nicht korrekt benutzt werden Vermutet werden neben Treiberproblemen auch evtl Hardware Fehler Problematisch ist hierbei auch die Tatsache dass Support und Erfahrungsberichte im Internet nicht vorzufinden sind PG 524 Zwischenbericht 17 GRUNDLAGEN Abbildung 2 4 Der Ultraschallsensor SRFO5 8 e Ein I2C Anschlu war auf allen 3 Boards nicht direkt vorzufinden wobei die Schnitt stellen in der Produktbeschreibung vorhanden sind Dieser Umstand konnte aber durch Neul ten von Pins des console vx Boards behoben werden siehe Kapitel 3 2 Gumstix 2 1 2 Ultraschallsensoren Um Hindernisse rechtzeitig erkennen zu k nnen hat sich die Hardwaregruppe entschieden vier Ultraschallsensoren f r ihren Staubsaugerroboter zu benutzen Der Schall des Sensors breitet sich im Raum als Welle aus Als Medium dient die Luft Die Ausbreitungsgeschwin digkeit h ngt von der Dichte der Luft und somit vom Ort ab Dabei wird die Schallwelle zus tzlich an Stellen mit einer Dichte nderung teilweise reflektiert Durch jede Dichte nde rung wird ein Echo zur Ultraschallquelle reflektiert welches als Signal wieder auffangbar und auswertb
98. eiden Schnittpunkte werden zu einer Voronoi Kante verbunden siehe siehe Abbildung 4 14 3 Der Schnittpunkt der neuen Parabel mit der Wellenfront W kann ein Punkt sein wo sich vorher schon zwei Wellenst cke getroffen haben In diesem Fall wird zus tzlich ein Voronoi Knoten aufgedeckt Zusammenfassend ist zu sehen dass zwei wichtige Beobachtung bez glich der Wellenfront gemacht worden sind e Spike Beobachtung Ein Wellenst ck trifft auf den Schnittpunkt seiner beiden Spikes und verschwindet e Punkt Beobachtung Die Sweep Line trifft auf einen neuen Punkt und ein neues St ck Wellenfront entsteht Solange keiner dieser Beobachtungen eintrifft l uft die Wellenfront W ungest rt weiter und am Ende ist ein fertiges Voronoi Diagramm V S zu sehen Zur Implementierung wurde zum einen auf den Voronoi Diagramm Algorithmus der MapMangerLibrary von Shane O Sullivan 19 und auf die Boost Graph Library BGL 5 zur ckgegriffen Die Tests des Voronoi Diagramm Algorithmus mit einer kleinen Test menge haben gezeigt dass die Ergebnisse relativ ungenau sind Mit der Hoffnung die Unge nauigkeiten sp ter zu runden wurden die Ergebnisse mit Hilfe Boost Graph Library weiter PG 524 Zwischenbericht 115 SOFTWARE verarbeitet Die BGL bietet viele Funktionen wie zum Beispiel Dijkstra oder Breitensuche in optimaler Rechenzeit an Als dieser Routenplanugsalgorithmus in die Umgebung der Roboters eingef gt wurde stellte sich hera
99. eingetragen werden Jetzt kann mit folgendem Befehl ein check out ausgef hrt werden sun co http sun gumstix com gumstix buildroot trunk gumstix buildroot Dabei wird der Quellcode in das Verzeichnis gumstix buildroot kopiert Jetzt wird in das gumstix buildroot Verzeichnis gewechselt und das Buildroot kann konfiguriert werden Daf r gibt es zwei M glichkeiten Die erste M glichkeit ist eine schnelle L sung Dazu wird der Befehlt make defconfig 94 PG 524 Zwischenbericht GITTERKARTE eingegeben In unserem Fall wird bei der CPU Speed die 600 Mhz Option gew hlt und die restlichen Fragen werden mit der vorgegebenen Option beantwortet Die zweite M glichkeit ist sehr viel detaillierter Dazu wird der Befehl make menucon fig ben tigt Dabei wird ein Men ge ffnet wo das zu erstellende Image sehr genau konfiguriert werden kann Es kann zum Beispiel aus einer gro en Anzahl von Programmen ausgew hlt werden welche f r den Gumstix bereitgestellt werden sollen und welche nicht Nachdem die Konfigurierung abgeschlossen ist kann die Erstellung des Images durch den Befehl make gestartet werden Nach ungef hr einer Stunde ist das Image im Verzeichnis zu finden Jetzt kann dieses auf den Gumstix bertragen werden Cross Compiler Ein Cross Compiler ist ein Compiler der auf einem Hostsystem in unserem Fall Linux installiert ist und Quellcode f r eine andere Zielplattform in unserem Fall ARM
100. el die Entscheidung auf den Motortreiber L293D Kapitel 3 5 welcher schon bei vielen Roboter Projekten verwendet wurde da er viele Vorteile bietet Mit diesem Motortreiber ist es m glich zwei Motoren gleichzeitig zu steuern Die Ein g nge sind TTL Kompatibel Transistor Transistor Logik und der Baustein hat einen in tegrierten berspannungs und Temperaturschutz Der Spannungsbereich liegt zwischen 4 5V und 36V und der Ausgangsstrom pro Ausgang betr gt 500mA Die zwei Kan le be stehen aus je 3 Eing ngen und 2 Ausg ngen womit 2 Motoren gesteuert werden k nnen Die zwei A Eing nge pro Kanal bestimmen durch unterschiedliche Polarit t die Drehrich tung des Motors bei zwei gleichen Signalen LOW oder HIGH stoppt der Motor Zu dem gibt es pro Kanal noch einen EN Eingang wodurch erst bei gesetztem HIGH Signal ein Stromfluss entsteht der den Motor vorantreibt Zur Spannungsversorgung besitzt der Baustein 2 Eing nge VCC1 und VCC2 VCC1 liefert den Strom f r den Baustein selber w hrend durch den VCC2 Eingang eine externe Spannungsversorgung der Motoren reali siert werden kann Diese Funktionalit t wird ausgenutzt um den Motor mit den durch den gew hlten Akku maximal m glichen 12V statt 5V welche f r die restlichen Schaltungen des Roboters verwendet werden zu betreiben Motorsteuerung durch den Mikrocontroller mittels Pulsweiten Modulation Die Eing nge 1A und 2A f r den linken Motor und 3A und 4A f r den rechten Motor werd
101. elche in der ersten Version gro e leere Bereiche in der Karte zur Folge gehabt h tte Dies alles f hrt zu der Annahme dass ein deutlich st rkerer Leistungsgewinn in der Realit t erzielt werden kann Eine weitere Optimierung der Struktur der Gitterkarte erscheint zum gegenw rtigen Zeitpunkt nicht erforderlich Es w re eine zu hohe Investition an Zeit notwendig welche nur zu einem niedrigen Leistungsgewinn f hren w rde 4 2 3 Feld Diese Klasse stellt die kleinste Einheit der Gitterkarte dar In ihr werden die elementaren Informationen gespeichert welche an eine bestimmte Position im Raum gekoppelt sind Diese sind z B der Verschmutzungsgrad und die Belegungswahrscheinlichkeit Zus tzlich werden hier noch Daten zwischengespeichert welche f r h here Funktionen der Gitterkarte ben tigt werden Dies umfasst Informationen zur Objektzugeh rigkeit sowie Informationen ber die Eigenschaft des einzelnen Feldes innerhalb eines gr eren Objektes Die Klasse Feld stellt hierbei nur einen Container zur Verf gung welcher die entsprechenden Daten aufnimmt und ber Get und Set Methoden zug nglich macht Es existiert an dieser Stelle keinerlei datenverarbeitende Funktionalit t Auf die Angabe von Quelltext wird an dieser Stelle aufgrund der Einfachheit dieser Klasse verzichtet Die einzelnen gespeicherten Informationen sind Folgende m_belegung Diese Variable vom Typ Integer legt f r das aktuelle Feld fest mit welcher Wahrscheinlichkeit es
102. elle Ausrichtung auf Byte Wert normiert zwei Register f r die aktuelle Ausrichtung in De zimalgrad 3599 entspricht 359 9 Grad hierbei werden dann schon zwei Bytes ben tigt aber der zur ckgegebene Wert ist deutlich intuitiver sowie noch Register f r Kalibrierung und andere Informationen Um die aktuelle Ausrichtung als Dezimalgrad zu erhalten wird zun cht eine 2 Auswahl des Registers auf den Kompass geschrieben und anschlie end eine lesende Daten bertragung gestartet SendeStartBedingung SendeAdresseMitSchreibeModus SchreibeDaten 2 SendeRepeatedStart SendeAdresseMitLeseModus LeseDaten 2 Byte SendeStoppBedingung Listing 4 29 Kommunikation mit dem Kompassmodul Welche Kommandos vom Gumstix an den Atmel welche Funktion haben beziehungs weise welche Register zum Auslesen anfordern wurde bisher noch nicht definiert Clock Stretching An einem I C Bus m ssen Komponenten mit unterschiedlicher Geschwindigkeit arbeiten k nnen daher musste eine M glichkeit gefunden werden den Bus f r langsamere Teilneh mer anzuhalten Diese M glichkeit findet sich beispielsweise im Clock Stretching Wenn der Slave an einem gewissen Punkt in der bertragung nicht bereit f r das n chste Datenbyte ist dr ckt er die SCK Leitung auf GND bis er wieder bereit ist Somit wird verhindert dass der Master den n chsten SCK Impuls sendet zumindest wenn der Master Clock Stretching unterst tzt Der ATMega3
103. en LED an dem Geh use Der Nutzer wird ber eine rote LED informiert wenn die Akkuleistung sinkt Diese Information wird ben tigt da der Prototyp keine Aufladestation hat die er selbstst ndig anfahren k nnte Damit die Kamera gen gend Licht zum Fotografieren hat besitzt der Staubsaugerroboter auf seiner untersten Ebene sechs Leuchtdioden Da dies aufgrund der n tigen Bodenn he nicht auf der Hauptplatine implementiert werden kann existiert hierf r eine Zusatzplatine Der Schaltplan befindet sich im Anhang A 9 Der Pin PB3 AIN1 DC0 des ATMega32 benutzt einen Vorwiderstand von 10002 zum N MOSFET Transistor Wenn das Licht der Bodenbeleuchtung f r die Kamera ben tigt wird wird der Transistor vom Mikrocontroller in Durchlassrichtung gesetzt und die Zusatzplatine die mittels eines Kabels mit der Haupt platine verbunden ist erh lt die ben tigte Spannung Die sechs LEDs dort haben jeweils einen Vorwiderstand von 1600 Die LEDs haben jeweils einen Durchmesser von 5mm 3 4 8 Motoren Der RAPTOR besitzt vier Getriebemotoren zwei f r die R der und zwei f r die vorderen B rsten Abschnitt 3 1 3 beschreibt wie die Testplatine f r die Motorsteuerung entstand Die gewonnenen Erkenntnisse und Erfahrungen mit dem Baustein L293D konnten bei der Benutzung mit der Hauptplatine gr tenteils bernommen werden Im Folgenden wird n her auf die Realisierung der Motoren auf der Hauptplatine eingegangen B rsten Die vorderen beiden B rste
104. en Details zu ausf hrlich zum Auflisten sind wird eher auf die Bereiche eingegangen die f r den Raptor relevant sind Um sich l nger mit dem Mikro controller zu besch ftigen ist ohnehin eine umfangreiche Lekt re des Datenblattes und der Anleitungen im Netz unumg nglich 48 PG 524 Zwischenbericht ATMEGA 1 2 EN 11 16 voc1 1 02 15 44 v3 14 4Y HEAT SINK AND HEAT SINK AND GROUND 4 gt GROUND Zelle 11 Hay 24 7 101 34 Ycc2 U 8 91 3 4 En CURRENT SENSING B OUTPUT 4 OUTPUT 3 INPUT 4 ENABLEB INPUT 3 LOGIC SUPPLY VOLTAGE Vss GND INPUT 2 ENABLE A INPUT 1 SUPPLY VOLTAGE Vs OUTPUT 2 OUTPUT 1 CURRENT SENSING A Abbildung 3 6 Der L298 Baustein 8 a A a Zustand A Al Ausgabe kurzschluss vorw rt r ckw rts weichebremse Abbildung 3 7 Motoransteuerungstabelle 8 PG 524 Zwischenbericht 49 HARDWARE exundge T Periodendauer 0 1 Sekunden LOW T muss berechnet werden Abbildung 3 8 Bestimmung der Periodendauer 8 Stepper Motor Abbildung 3 9 L298 mit Freilaufdioden 8 50 PG 524 Zwischenbericht ATMEGA XCK TO PBO rl PB1 INTZ AINO PB2 PAO ADCO PAl ADCI1 PA2 ADC2 OCO AIN1 PB3 PA3 ADC3 55 PB4 PA4 ADC4 MOSI PB5 PAS ADC5 MISO PB6 PAG ADC6 SCK PB7 PA7 ADC7 RESET AREF VCC GND GND AVCC XTAL2 PC7 TOSC2 STALL PC6 TOSCI RXD PDO PCS TDI TXD PD1 PC4 TDO INTO PD2 PC3 TMS INT1 PD3
105. en Interrupt Modus 16 x Da Counter noch nicht laeuft 17 werden keine Interrupts ausgeloest 18 19 x Die restlichen Register enthalten 20 x schon beim Start die Werte 21 x die wir wuenschen 22 x 23 24 while 1 25 Messung PG 524 Zwischenbericht 161 QUELLTEXTE 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ol 92 93 54 99 56 57 58 59 60 61 62 63 64 65 66 67 68 DDR Hi Pin isi Ultraschall ist Ausgang angeschlossen an PBO Fr ei x x Vor jeder Messung x Timer stoppen und 0 setzen x zeiter 0 TCNTO 0 x x Impuls rausjagen x Dabei wird der Pin kurzfristig x auf Ausgang geschaltet DDRB 1 lt lt PBO PORTB 1 lt lt PBO _delay_us 10 PORTB amp 1 lt lt PBO DDRB amp 1 lt lt PBO x x Warte bis der Impuls kommt x steigende Flanke while PINB 1 lt lt PBO 0 Nach Erkennung der Flanke x Sofort Timer starten x Durch Zuweisung von Taktquelle TCCRO 2 lt lt CS00 x xx Warte bis Impuls geht fallende Flanke Waehrend dieser Schleife werden x die Interrupts ausgeloest while PINB 1 lt lt PBO Sofort Timer stoppen um weiter Interrupts xx 162 PG 524 Zwischenbericht C BEISPIELPROGRAMME F R DEN ATMEGA32
106. en vom ATMega32 digital beschaltet um die Drehrichtung festzulegen Die Enable Eing nge 1 2EN f r den linken Motor und 3 4EN f r den rechten Motor m ssen somit ebenfalls beschaltet werden und die maximale Fahrtgeschwindigkeit des Roboters wird durch die an VCC2 anliegende Spannung gesteuert W nschenswert ist hierbei noch eine Regulierung der Fahrtgeschwindigkeit Die h ufigste Methode ist die Realisierung mit einer Pulsweiten Modulation PWM Bei der Pulsweiten Modulation werden Impulse mit voller Spannung aber variabler Brei te an einen Verbraucher gesendet Dieses modulierte Rechtecksignal wird in einer kon stanten Frequenz generiert Die Breite der Schaltimpulse wird durch das Tastverh ltnis das Verh ltnis der L nge eines HIGH zu einem LOW Signal innerhalb einer Periode bestimmt Dies hat den Vorteil dass keine Spannung geregelt werden muss Das PWM Signal wird den beiden EN Eing ngen des Motortreibers angelegt und durch die Tr gheit der Motoren kann bei entsprechender Pulsbreite die Geschwindigkeit reguliert werden Der ATMega32 unterst tzt das Erzeugen von PWM Signalen direkt mittels seiner 3 inter nen Z hler Timerl ist hierbei am interessantesten f r die Motorsteuerung des Roboters da mittels dieses einen Z hlers zwei unterschiedliche PWM Signale generiert werden k nnen Die Pins OC1A Pin D5 und OC1B Pin D4 des ATMega32 dienen hierbei als Ausg nge der PWM Signale welche jeweils mit den Enable Eing nge 1 2EN und
107. en von B p L beeinflussen Sweep Line in der Ebene von links nach rechts gemeint siehe Abbildung 4 13 nur die jenigen Teile des Voronoi Diagramms links von der Sweep Line gespeichert die sich nicht mehr ndern Wie in Abbildung 4 13 zu sehen ist stellt sich der Bisektor B a L von einem Punkt a und einer Linie L als Parabel dar Der Punkt x S auf der linken Seite von B a L kann nicht zu einer Voronoi Region rechts der Sweep Line geh ren wie zum Beispiel V R b Diese Erkenntnis nutzt der Algorithmus Sei S p1 p2 P3 aufsteigend nach der X Koordinate sortiert In Abbildung 4 14 sind drei Schritte eines Durchlaufes zu erkennen Angenommen die Sweep Line L die gestrichelte Linie befindet sich im Moment zwischen den Punkten p und p 1 Der Rand der Voronoi Regionen wird die Wellenfront W die gepunktete Linie genannt und besteht aus den Parabeln die Teile von Bisektoren B p L mit j lt i sind Links der Wellenfront sind schon Teile von Voronoi Kanten zu erkennen siehe Abbildung 4 14 2 und 3 die sich im weiteren Verlauf des Algorithmus noch verl ngern werden W hrend die Sweep Line L weiter nach rechts wandert wird die Wellenfront W f r alle Parabeln B p L mit j lt i mitgezogen Wo zwei in W benachbarte Wellenst cke sich schneiden zum Beispiel B a L und B b L r ckt der Schnittpunkt l ngs des geraden Bisektor B a hi nach Diese schrittweisen Verl ngerungen werden Spikes genannt Dadurch wird das Voron
108. enblatt steht geschrieben der Kompass h tte die Adresse 192 Da die Datenrichtung mit der Slave Adresse als ein Byte auf den Bus gelegt wird wird sie oftmals direkt mit in den Parameter bernommen In diesem Datenbyte werden die h chstwertigen Bits f r die Adresse verwen det und die Datenrichtung als letztes Bit angeh ngt von daher ist das Datum doppelt so gro wie die eigentliche I C Adresse und im Lesemodus nochmals um eines erh ht Die richtige Adresse des Kompassmoduls ist somit die 96 das Datenbyte f r Schreibmodus lautet 192 das Datenbyte f r Lesemodus lautet 193 134 PG 524 Zwischenbericht ATMEGA32 Daten bertragung Nachdem nun der Slave angesprochen und die Datenrichtung festgelegt wurde findet der eigentliche Datenaustausch statt Der Master sorgt f r die Impulse auf der SCK Leitung und je nach Modus legen er oder der Slave die Daten auf die SDA Leitung Nat rlich ist im Master Receiver Modus zu beachten dass der Master auch das ACK f r die erhaltenen Daten zu senden hat Hat der Slave verschiedene M glichkeiten Daten zu versenden z B durch verschiedene Register so muss ihm zun chst mitgeteilt werden welche Daten er senden soll Wie schon oben erw hnt bietet es sich dazu an zun chst im Schreibmodus auf den Slave zuzugreifen und ihm als Datum die Anweisungen f r den darauf folgenden Lesezugriff zu bermitteln Beispielsweise hat der Kompass ein Register f r Firmware ein Register f r die aktu
109. enwechsel von High nach Low z hlt Abgrundsensor Abgr nde wie beispielsweise Treppen und Tischkanten erkennt der RAPTOR mit Hilfe von drei CNY70 siehe Abbildung 2 12 die als Abgrunddetektoren fungieren Sie befinden sich an der unteren Front des Staubsaugers Wie bei dem Maussensor darf der Abstand zwischen Lichtsensor und Boden nicht mehr als 3mm betragen Problematisch k nnen beispielsweise Linien am Boden sein die der Abgrundsensor f lschlicherweise als Abgrund erkennt 2 1 5 Maussensor Da die Radencoder und die Ansteuerung der Motoren keine hinreichende Sicherheit bei der Erkennung der L nge abgefahrener Strecken gew hrleisten k nnen hat die Projektgruppe sich f r einen Maussensor als zus tzliche Navigationshilfe entschieden Optische Maussen soren sind heutzutage feste Bestandteile moderner M use Im Gegensatz zu M usen mit Rollkugel wo die Bewegung des Benutzers mechanisch erfasst wird erfolgt hier eine opti sche Erfassung der Bewegung Prinzipiell ist ein optischer Maussensor nichts anderes als eine kleine Kamera die st ndig Bilder der erfassten Fl che aufnimmt und nderungen mathematisch ermittelt Somit kann eine Positions nderung pr zise berechnet werden Das Project c t Bot 7 benutzt einen Maussensor der auch sehr gut die Anforderungen f r einen Staubsaugerroboter erf llt und wurde somit von der Hardware Gruppe weitest gehend bernommen Als Sensorchip wird der ADNS 2610 der Firma Agilent Technologies
110. epr sentation um das Kernst ck der datenverarbeitenden Funktionen unseres Roboters handelt wur de hierbei Wert auf robuste Techniken zur Datenhaltung gelegt welche einen korrekten Betrieb erlauben Es wurde kein fremder Code benutzt um schwer zu findende Fehlerquel len auszuschlie en Auch das h here Verst ndnis der internen Vorg nge war ein Kriterium welches zu der Entscheidung der Neuimplementierung gef hrt hat Dies erm glicht es einen hohen Grad der Optimierung zu erreichen welcher bei der begrenzten Rechenleistung un seres Roboter n tig ist Die Gitterkarte besteht insgesamt aus drei Klassen welche im Weiteren n her beleuchtet werden 4 2 1 GridMap Begonnen wird mit der Klasse die die Schnittstelle der Gitterkarte zum Rest der Software darstellt Sie kapselt zum einen die eigentliche Datenverwaltung gegen ber dem Zugriff von au en ab und stellt zudem h here Funktionen bereit die verschiedene Aufgaben im plementieren Zun chst wird kurz auf die eigentliche Datenhaltung eingegangen Diese ist implementierungsbedingt nicht Teil der Klasse GridMap Es wird aber durch diese Klasse der Zugriff auf den Datenspeicher erm glicht Dieser wird durch die Klasse GridMap Data implementiert auf welche sp ter eingegangen wird Die Funktionen die von au en zug nglich sein m ssen sind zu aller erst die Get Set Methoden welche den Zugriff auf die grundlegenden Eigenschaften der einzelnen Gitterkartenzellen erm glichen Dies sind
111. er nehmen unterschiedliche Aufgaben wie beispielsweise schwei en und montieren in An wendungsbereichen wie zum Beispiel Schiffsbau und Elektrotechnik In der Forschung und Unterhaltungsindustrie werden humanoide Roboter entwickelt dessen Herausforderung vor allem darin liegt dem Roboter das Gehen auf zwei Beinen beizubringen Desweiteren gibt es unterschiedliche mobile Roboter die f r den Einsatz im Weltraum oder als berwachungs und Serviceroboter dienen In der Computer Fachzeitschrift ct erschien 2006 das Projekt c t Bot 7 In diesem Projekt wurde ein Roboter vorgestellt der sich einfach nachbauen l t Mit Hilfe des Simulators c t sim l t sich sein Verhalten virtuell testen Er besitzt die F higkeit seinen Standort zu bestimmen und erstellt eine Karte seiner Umgebung Mit seinem Maussensor wertet er seine Ausrichtung aus Durch seinen Radencoder l sst sich die zur ckgelegte Entfernung bestimmen Mit Hilfe seiner Infrarotsensoren erkennt er Hin dernisse und erstellt eine metrische Rasterkarte seiner Umgebung Zus tzlich besitzt der Roboter eine Abgrunddetektion Der Funktionsumfang des Projektes c t Bot umfasst das eigenst ndige Erkunden der Umgebung Slalom fahren und das Einsammeln von Golfb llen die an eine bestimmte Position gebracht werden Mit der entsprechenden Programmierung ist der Roboter allerdings auch in der Lage komplexere T tigkeiten auszuf hren Zu den beliebtesten Serviceroboter geh ren die Staubsaugerr
112. er geben ihr Ausgangssignal an den Mikrocontroller weiter Der obere ist mit dem Pin PD2 INTO verbunden der untere mit PD3 INTI 1000hm 6800hm PD2 DI AA a 1000hm 6800hm PD3 e e 4 WM he 47kOhm Abbildung 3 17 Realisierung der Hauptplatine Radencoder 3 4 6 Ultraschallsensoren Wie in Abschnitt 2 1 2 des zweiten Kapitels bereits erw hnt werden die Ultraschallsensoren im Modus 2 betrieben Das bedeutet dass diese eine gemeinsame Trigger und Echolei tung benutzen Hierf r werden die zwei entsprechenden Pins auf GND gesetzt die die Hauptplatine zur Verf gung stellt Ebenfalls wird eine 5V Spannungsquelle f r einen Pin PG 524 Zwischenbericht 71 HARDWARE bereitgestellt Die vier Ultraschallsensoren bzw dessen Trigger Echo Leitungen sind an die Pins PA3 ADC3 PA4 ADCA DAN ADC5 und PA6 ADC6 angeschlossen 3 4 7 Leuchtdioden RAPTOR besitzt mehrere verschiedene LEDs die unterschiedlichen Zwecken dienen e Betriebszustand e Akkumulatorzustand e Bodenbeleuchtung F r den Betriebszustand und den Akkumulatorzustand existiert eine gemeinsame Zusatz platine siehe Abbildung A 10 im Anhang Die Vorwiderst nde beider 10mm grofen LEDs betragen 1600 Die Widerst nde befinden sich auf der Hauptplatine Durch die Pads wer den auch hier Zusatzplatine und Hauptplatine an den entsprechenden Stellen verdrahtet und verl tet Wird der Roboter in Betrieb genommen signalisiert er dies mit einer blau
113. ere Ebene In diesem Abschnitt wird erkl rt wie die R der Motoren B rsten das Kugelrad Akku und die Stangen befestigt wurden und wie die Platte daf r bearbeitet werden musste Bearbeitung der unteren Platte Bevor mit der maschinellen Bearbeitung der Platte begonnen werden konnte wurden mit Hilfe eines Zirkels zwei rechtwinklige Diagonalen durch den Mittelpunkt gezeichnet An hand dieser Diagonalen wurden dann die genauen Positionen f r die folgenden Bearbei tungsschritte festgelegt Mit Hilfe der Fr smaschine am Lehrstuhl 12 der Technischen Abbildung 3 23 Bearbeitung der unteren Aluminiumplatte Universit t Dortmund wurden als erstes die L cher f r die R der ausgefr st Die L cher sind jeweils 10 7 cm lang und 3 2 cm breit Der Abstand eines Lochs vom Rand der Platte betr gt an der Diagonalen 2 5 cm Danach wurde weiterhin mit dem Fr ser das Loch f r die Kamera ausgeschnitten Das Loch f r die Kamera ist 5 5 cm lang und 10cm breit F r die Befestigung der B rsten an die Motoren musste folgendes gemacht werden Es wurden f r jeden Motor jeweils vier L cher gebohrt n mlich ein Loch f r die Achse des Motors der sp ter an den B rsten befestigt wird und drei L cher f r die Befestigung der Motoren an die Platte Da die genauen Positionen der drei L cher zur Motor Aluplat tenbefestigung schwierig auszumessen sind wurde daf r eine Schablone erstellt F r das Kugelrad den Deoball wurde im hinteren Teil der
114. erielle Ausgabe das Thema der seriellen Eingabe wurde bisher nicht behandelt F r Debug Zwecke sollte die Ausgabe von Informationen allerdings ausreichen e Die Definition von F_CPU ist nicht n tig da sie von AVR Studio automatisch ein gef gt wird e Die gew nschte Baudzahl muss abh ngig vom Prozessortakt noch umgerechnet wer den Die Formel f r die Umrechnung soll hier nicht weiter dokumentiert werden e Die Aktivierung des Ports und die Einstellung der richtigen Geschwindigkeit erfolgt ber uart_init einzelne Zeichen lassen sich mit uart_putc ganze Zeichenketten mit uart_puts ausgeben e Aufgrund der Warteschleife in Zeile 11 blockiert die Zeichenausgabe den gesamten Prozessor bis der Text komplett ausgegeben ist Das ist nicht effizient sollte f r Debug Ausgaben aber kein Problem sein In der Regel sollte lediglich eine Fehlermel dung vom Controller erfolgen anschlie end kann das Programm komplett zur ckge setzt werden Warteschleifen Auch in C werden an vielen Stellen Wartezeiten ben tigt beispielsweise um Impulsen eine gewisse L nge zu garantieren Die avr libc bietet zwar Methoden die hnlich wie die Waitms Methode in Basic verwendet werden k nnen Hier sind allerdings noch Besonder heiten zu beachten In der util delay h befinden sich die Methoden PG 524 Zwischenbericht 61 HARDWARE _delay_ms int _delay_us int Mit diesen ist es prinzipiell m glich den Programmfluss f r die
115. erkleinert werden So ist eine hohe Pr zision und Gleichl ufigkeit verschiedener Motoren erreichbar Der Haltemoment eines Motors ist etwa gleich der Gr e des Drehmomentes Der Schritt motor erm glicht es mittels der Motordrehschrittanzahl eine pr zise Angesteuerung d h der Motor muss z B nicht kurzgeschlossen werden um zu bremsen Im Vergleich zu den Getriebemotoren ist die Ansteuerung der Schrittmotoren aufwen diger Der Schrittmotor ben tigt vier Anschl sse damit der Rotor einen Schritt ausf hrt Au erdem m ssen spezielle Folgen von Polarit tsmustern abgearbeitet werden Die An schaffungskosten sind viel gr sser als beim Getriebemotor denn zwei Getriebemotoren k nnen an einem Motortreiber z B L293D angeschlossen werden w hrend jeder Schritt motor einen eigenen Treiber beansprucht Im Projekt hat sich herausgestellt dass die pr zise Ansteuerung die der Schrittmotor gew hrleistet nicht in diesem Umfang ben tigt wird da mittels anderer Sensoren st ndig der aktuelle Standort des Roboters neu berech net und die Fahrt anschlie end fortgesetzt wird Au erdem besteht die Gefahr dass der Schrittmotor Schritte verlieren kann Es ergibt sich das selbe Problem wie beim Getrie bemotor und es m sste ein zus tzlicher Sensor eingebaut werden um den Effekt wieder auszugleichen Der Schrittmotor verliert auch mit steigender Drehzahl an Kraft also ist der Motortyp nicht f r schnelle Roboter geeignet Ausserdem m sste wenn ei
116. estigung der R der an die untere Platte Am LS 12 der Technischen Universit t Dortmund waren L f rmige Metallst cke vorhan den die durch Fr sarbeiten auf die im Anhang angegebene Gr e gebracht wurden In eine Seite des rechtwinkligen Metallst cks wurden die L cher zur Motorbefestigung gebohrt analog zu den L chern in der unteren Ebene Dann wurden sowohl auf der anderen Seite PG 524 Zwischenbericht 79 HARDWARE des Winkels als auch auf der Platte selbst vier kleine L cher gebohrt Mittels Schrauben konnte dann der Winkel an der Platte befestigt werden Als n chstes wurden erst einmal die Motoren an die L Formigen Metallst cke geschraubt und dann die Motoren mit den Metallst cken an den vorher bearbeiteten Zylinder ge schraubt Danach wurden die Zylinder in die L cher der R der gesteckt Zuletzt wurden dann die L Formigen Metallst cke mit den Motoren und R dern an die Platte geschraubt Abbildung 3 26 Abbildung 3 26 Befestigung der R der an der unteren Platte Befestigung des Kugelrads an die untere Platte Damit der Roboter sp ter stabil auf dem Boden steht wurde im hinteren Abschnitt der Platte ein Deoball als Kugelrad befestigt Bei der Bearbeitung der unteren Platte wurde schon das Loch ausgeschnitten in dem der Ball angebracht wird Nach einigen berlegun gen wurde die Entscheidung getroffen den Deoball an die Platte zu kleben Befestigung des Akkus Zur besseren Gewichtsverteilung wurde der A
117. et werden Beispiel PWM Modus PB4 SS geh rt zum SPI Interface dieser wird ben tigt um den richtigen Slave am Bus zu w hlen PB5 MOSI geh rt zum SPI Interface dieser Datenausgang als Master oder Datenein gang als Slave wird bei ISP verwendet PB6 MISO geh rt zum SPI Interface dieser Dateneingang als Master oder Datenaus gang als Slave wird bei ISP verwendet PB7 SCK geh rt zum SPI Interface dieser Bustakt vom Master wird bei ISP verwendet PDO RX ist Eingang der seriellen Schnittstelle USART PD1 TXD ist der Ausgang f r die Serielle Schnittstelle und externe Takt f r den USART 68 PG 524 Zwischenbericht HAUPTPLATINE PD2 PD3 INTO INT1 sind externe Interrupt Leitungen PDA PD5 OC1A OC1B k nnen als Ausg nge f r den Z hlerl verwendet werden bei de Pins sind an einem Z hler es sind aber dennoch verschiedene Signale m glich Beispiel PWM PD6 ICP1 kann zusammen mit Z hlerl verwendet werden um den aktuellen Wert einzu fangen PD7 OC2 kann als Ausgang f r Z hler2 verwendet werden DCH SDA ist die Datenleitung der I C Schnittstelle PC1 SCL ist die Clockleitung der 1 C Schnittstelle PC2 PC3 PC4 PC5 TCK TMS TDO und TDI geh ren zum JTAG Debug Interface wor ber der Mikrocontroller programmiert und debuggt werden kann PC6 PC7 TOSC1 TOSC2 kann als externer Taktgeber f r Z hler2 angeschlossen werden Zusammenfassend k nnen die 32 I O Pins in acht verschiedene Bereiche eingeteilt werden
118. f r die Vereinigung der Infor mationsausgaben aller Sensoren zust ndig Des Weiteren muss die Software des ATMega32 fertig gestellt werden Da bisher das Controllerboard zwar in der Belegung aber noch nicht real vorliegt wurden die Beispielprogramme noch nicht auf die endg ltige Pinbelegung an gepasst F r den Wettbewerb der in Abschnitt 1 2 2 beschrieben wurde steht eine zus tzliche Funktion aus der sogenannte Follow Mode Er dient dazu dem Menschen zu folgen Die Zu satzfunktion erm glicht dem Staubsaugerroboter beispielsweise ein Tablett mit Getr nken zu fahren Da der Wettbewerb nicht Teil der Projektgruppe ist sondern auf freiwilliger Basis beruht wird diese Programmierung eine niedrige Priorit t haben 137 AUSBLICK 138 PG 524 Zwischenbericht A Hardwarekomponenten A 1 Skizzen der Karosserie RAPTOR Untere Ebene von oben aus gesehen 2 B rstenmotoren 2 Radmotoren 2 R der 2 Lichtsensoren CNY70 f r Radencoder geplant 1 Kugelrad Deoball 1 Loch f r die Webcam 1 Akku KungLong Abbildung A 1 Untere Ebene von oben aus gesehen 139 HARDWAREKOMPONENTEN RAPTOR Untere Ebene von unten aus gesehen 2 B rsten 2 R der 3 Lichtsensoren CNY7O geplant 1 Maussensorplatine geplant 1 Kugelrad Deoball 1 Loch f r die Webcam 5 Befestigungen f r Akku A et deirad Deoball Abbildung A 2 Untere Ebene von unten aus gesehen 140 PG 524
119. findet ein nahe Voronoi atalaya es ER tee Kein Punkt rechts der Sweep Line L kann das Gebiet zur Linken von B p eet acc dt dat o E E o r Drei Schritte der Berechnung eines Voronoi DiagrammMs Komponentenuebersicht Player Stage Gazebo 21 Simulationsumgebung Simulationsumgebung ed une e A E an scht NPI a aa a A A e Ae EC Anbindung von Ger ten am I C Bus 23 lt lt SDA darf sich w hrend eines SCK Impulses nicht ndern 23 Start und Stopp Bedingung 3 2 r 282 reads Fr N 228 Der Empf nger quittiert den Empfang eines Paketes indem er die SDA Ader beim 9 Bit auf Null zieht 23 o el ET dr A EE A 176 PG 524 Zwischenbericht Abbildungsverzeichnis A 1 Untere Ebene von oben aus geschen 139 A 2 Untere Ebene von unten aus gesehen 140 A 3 Obere Ebene von unten aus geschen 141 A 4 Obere Ebene von oben aus gesehen 142 Ah Testschaltung der Motoren 144 A 6 Schaltung der Maussensorplatine 22 2 Cm nn nn 145 A 7 Schaltplan der Hauptplatine Sada 2 ei a Fr 146 A 8 Schaltplan der Platine f r den Lichtsensor 2222222222 147 A 9 Schaltplan der Platine f r die Bodenbeleuchtung 2 2 2 2 147 A 10 Schaltplan der Platine f r die Leuchtdioden Betriebszustand und Akkumu A A ee a are ee e A e SR 148 A 11 Testplatine der Motoren 4 2 3 lt a 2 3 2a A Allee et 149 PG 524 Zwischenbericht 177 Abbildungsverzeichnis 178 PG
120. folgt indem das Modul exakt waagerecht in alle viel Himmelsrichtungen ausrichtet und jedes Mal dabei Pin 6 kurz mit GND verbundet wird Das Ergebnis wird intern gespeichert und bleibt auch dann erhal ten wenn keine Spannung anliegt Alternativ kann auch ber den 12C Bus die Kalibrierung durchgef hrt werden Dort funktioniert es auf die gleiche Weise mit dem Unterschied dass statt des Tasterdrucks eine 255 in das Register 15 geschrieben wird 28 PG 524 Zwischenbericht HARDWARE Pin 7 Wechselspannungsfelder Die Abtastrate der Kompassposition erfolgt bei unbeschaltetem Pin 7 intern gew hnlich mit 60 Hz In Umgebungen mit starken Wechselspannungsfeldern kann es wegen des da durch erzeugten Magnetfeldes zu Ungenauigkeiten kommen In diesem Fall kann es g nstig sein die Netzfrequenz ber diesen Pin mit dem Modul zu synchronisieren Dazu muss das passende 50 Hz Taktsignal mit TTL Pegel angelegt werden Dies kann das Ergebnis in solch schwierigen Umgebungen verbessern In der Regel kann der Pin unbeschaltet gelas sen werden 2 1 7 Getriebemotoren Bei der Entwicklung eines mobilen Roboters wird man nicht drum herum kommen irgend eine Art von Motor einzusetzen Bei der Auswahl des richtigen Motors m ssen mehrere Kriterien beachtet werden e Gr e e Strombedarf e Steuerbarkeit e Drehmoment Die Gr e der Motoren m ssen je nach Robotergr fe ausgesucht werden denn die Motoren nehmen auf der einen Seite wichtige Fl chen
121. g 1 2 1 Minimalziele F r den Erwerb des Leistungsnachweises sind die folgenden Minimalziele zwingend erfor derlich e Hardwareentwurf des Roboters inklusive Auswahl der zu verwendenden Bauelemen te Beim Entwurf ist zu gew hrleisten dass sich der Roboter unter Nutzung der Navigationsvorrichtung zielsicher in einem Raum bewegen kann e Implementierung einer Low Level Steuerungssoftware zur Bewegungssteuerung des Roboters und Positions beziehungsweise Distanzmessung Der Roboter soll damit vordefinierte Punkte im Raum anfahren k nnen e Implementierung einer High Level Steuerungssoftware zur Navigation Dabei soll ein Modell des Raums zur Verf gung stehen und eine festgelegte Mission implementiert sein Eine Mission k nnte beispielsweise sein den Raum m glichst vollst ndig abzu fahren e Demonstration der Funktionsf higkeit der erstellten Hard und Software im prakti schen Einsatz 1 2 2 Erweiterungsm glichkeiten Der Wettbewerb Patente Studierende 20 pr miert im September 2008 in D ssel dorf Haushaltsroboter die dem Menschen sowohl behilflich als auch individuell einsetzbar sind Dabei sollte er nicht allein die Funktion eines Staubsaugers aus ben Diese Tatsache PG 524 Zwischenbericht 9 EINLEITUNG hat die Projektgruppe RAPTOR bereits animiert ber Erweiterungsm glichkeiten nach zudenken Der Anmeldezeitraum beginnt am 31 10 07 und endet am 29 02 2008 In der Anmeldung sollte kurz angegeben we
122. g nge Ausg nge etc 40 PG 524 Zwischenbericht TESTUMGEBUNG Abbildung 3 2 Die versteckten Verbindungen am Steckbrett Zus tzlich wurde versucht logische Einheiten zu schaffen also vergleichbare Bauelemente nah beieinander unterzubringen Auch die Verwendung von ganzen Ecken nur als Strom Bus bzw GND Bus scheint bersichtlicher als ein endloses Daisy Chaining Interne Verbindungen an den L tstiften Auf dem unteren Teil des Testbretts befinden sich noch einige L tstifte und Klemmen Zum gr ten Teil ist hier jeweils nur die Klemme auf zwei Stifte gelegt worden die u erste Klemme ist jedoch direkt mit vier Stiften verbunden womit sie sich f r die st ndig ben tige Stromversorgung und die Masse gut eignet die sieben u ersten Pinne sind nur unter sich verbunden Abbildung 3 3 3 1 2 BreakOutBox BreakOutBox ist ein umgangssprachlicher Name f r eine kleine Adapterbox die einige Ein und Ausg nge bereitstellt und relativ einfach am PC anzusteuern ist Abbildung 3 4 Der Anschluss erfolgt ber einen freien USB Port am PC Die Produktbezeichnung f r die Box ist PMD 1208L5 inzwischen wurde sie jedoch von der Herstellerfirma umbenannt und ist somit eher unter der Bezeichnung USB 1208LS zu finden Die Herstellerfirma ist Measurement Computing 6 in Deutschland wird die Box von der Firma Plug In Electronics GMBH 10 vertrieben PG 524 Zwischenbericht 41 HAR
123. gehen dass intern nur 17 19 29 31 40 einmal Ground verwendet wird und diese Kontakte alle durchverbunden sind 1 2 4 5 7 8 Analoge Input Ports K nnen single ended als 8 Eing nge oder 10 11 differentiell als 4 Eing nge verwendet werden 13 14 Analoge Ausgabe Zweimal Details siehe Handbuch 21 28 32 39 Digitale Ports K nnen laut Handbuch einzeln als Ein gabe oder als Ausgabe konfiguriert wer den Tabelle 3 1 Pinbelegung der BreakoutBox 18 Das InstaCal Paket Um das Ger t anzusprechen wird Software von der Herstellerseite ben tigt Dort besteht die Auswahl zwischen verschiedenen Paketen Empfehlenswert ist dabei das komplette PG 524 Zwischenbericht 43 HARDWARE InstaCal Paket Das Paket ist kostenlos daher fehlen einige Funktionen diese sind al lerdings fiir eine Basisfunktionalit t nicht notwendig Kalibrierung Laut Handbuch ist etwa alle sechs Monate eine Kalibrierung des Ger tes n tig damit der analoge Eingangsport bei Messungen zuverl ssige Werte liefert Das Ger t kann sich selbst kalibieren im Verlauf der Kalibrierung m ssen allerdings einige Klemmen z B mit Drahtbr cken verbunden werden Die Software zeigt an den entsprechenden Zeitpunken an welche Drahtbr cken gerade ben tigt werden ber das Programm TracerDAQ lassen sich Werte ber die Zeit aufzeichnen anzeigen lassen eventuell speichern usw Als kleines Beispiel wurde
124. h den am Bauteil zu vermeiden Abbildung 3 20 Realisierung der Hauptplatine Akkumulator 3 4 10 Kontaktsensoren Wie in Abschnitt 2 1 3 schon erw hnt ist der vordere Bereich des Staubsaugerroboters mit f nf Kontaktsensoren sogenannte Bumper ausgestattet Falls der autonome Roboter auf ein Hindernis trifft wird dem Mikrocontroller dies mitgeteilt so dass dieser entsprechend reagieren kann Bei dieser Implementierung kann nicht erkannt werden welcher Bumper ausgel st wurde Im idealen Fall sollte der RAPTOR es nicht zu einer Kollision kommen lassen da die Ultraschallsensoren Hindernisse vorher erkennen sollten Die Bumper sind demzufolge eine Absicherung gegen eine Fehlfunktion der Ultraschallsensoren In Abbil dung 3 21 ist zu sehen wie jeweils zwei Pins der f nf Kontaktsensoren ber ein Kabel an die Pads der Hauptplatine gel tet werden Das jeweils linke Pad PAD24 PAD25 PAD26 auf dem Schaltentwurf ist mit GND verbunden Die rechten Pads PAD27 PAD28 PAD39 sind mit 5V Spannung versehen und haben einen Vorwiderstand der jeweils 1k0 betr gt Sollte ein Kontaktsensor ausgel st werden setzt sich die logische Null der linken Seite gegen ber der logischen Eins der rechten Seite durch Sobald eine Null an dem UND Bauteil anliegt wechselt das Signal zu Null Das jeweilige Signal wird mit dem Pin PB2 AINO INT2 des ATMega32 verbunden 3 4 11 Abgrundsensoren F r die Abgrunddetektion werden ebenfalls Lichtsensoren vom
125. he Schleife findet sich in den meisten Programmen und unterschiedlichsten Pro grammiersprachen Mikrocontrollersoftware terminiert nicht sie lauft in einer End losschleife Zeile 10 Somit ist das End eigentlich unsinnig Aus Gr nden einer bersichtlicheren Pro grammstruktur und der Genauigkeit von Compilern sollte man aber nicht darauf verzichten Ansteuerung einer LED Zun chst einmal sollte der Mikrocontroller die BreakoutBox in den Testaufbauten ersetzen Daher waren die ersten echten Programme dann auch wieder nur dazu gedacht Taster auszulesen Leuchtdioden anzusprechen und eine Kommunikation zum PC zu schaffen PG 524 Zwischenbericht 55 HARDWARE Listing B 6 bringt eine an Pin 21 Portc 0 angeschlossene Leuchtdiode zum Blinken Hierbei ist zu beachten dass die Speisung der LED sicherheitshalber von der Stromquelle und nicht vom ATMega32 bernommen werden sollte Somit wird diesmal die Kathode der LED an den Controllerpin angeschlossen und die Anode an P5V Selbstverst ndlich muss weiterhin der Vorwiderstand im Stromkreis zu finden sein seine Position ist aber beliebig Das hei t nat rlich dann dass bei Portc 0 1 ausgeschaltet wird Sie hat dann zwischen den P5V am Controllerbeinchen und den P5V der Spannungsquelle kein Leuchtpotenzial Programm mit Taster Neben der Ansteuerung von Ausg ngen m ssen nat rlich auch Sensordaten verarbeitet werden also die Eing nge ausgelesen werden k nnen An diesem
126. hied zwischen einen realen Roboter und dem Roboter aus der Simulation Die Programme die in der Simulation den Roboter steuern funktionieren also auch auf dem realen Roboter ohne oder mit nur geringf gigen Modifikationen Um die Funktionen des Simulationsroboters benutzen zu k nnen muss die Bibliothek 120 PG 524 Zwischenbericht PLAYER STAGE Lon H e RRE E Abbildung 4 17 Simulationsumgebung PG 524 Zwischenbericht 121 SOFTWARE lt libplayerc playerc h gt in das C Programm inkludiert werden Dann stehen dem Programmierer diverse Klas sen in Player Stage auch Proxys genannt zur Verf gung Zuerst wird die Verbindung zu dem Roboter mit der Klasse PlayerClient im Konstruktor der C Klasse hergestellt Zu dem wird der Roboter mit den Sonar den Bumpern und den Position2dProxy verbunden Diese sind Instanzen der Klassen SonarProxy BumperProxy und Position2dProxy Roboter m_roboter localhost m_sonarproxy m_roboter 0 m_position2dproxy 6m_roboter 0 m_bumperproxy amp m_roboter O m_mapproxy amp m_roboter 0 Listing 4 26 Kartengr enausgabe Nachdem der Roboter mit den Proxys verbunden worden ist ist es m glich z B mit der Methode void Roboter setzeMotorGeschwindigkeit double x double y double drehrate Listing 4 27 Kartengr enausgabe den Roboter zu steuern Neben dieser Methode wurden bis jetzt auch noch folgende Methoden aus der
127. hrere Optimierungen eingebaut werden Zum Beispiel kann die resultieren de Route auf wenige markante Punkte reduziert und mit verschiedenen Verfahren aus der Bildverarbeitung eine glattere Kurve berechnet werden die nicht dazu f hrt dass sich der RAPTOR auf der Stelle drehen muss wie es bei einer eckigen Route der Fall ist Hier muss sich aber noch zeigen dass der Rechenaufwand an dieser Stelle gerechtfertigt ist Eine wei tere Optimierung kann w hrend der Sch tzung der Entfernungen erreicht werden indem nur vielversprechende Felder ausgewertet werden die mit einer hohen Wahrscheinlichkeit die optimale Route beschreiben Dies ist aber wieder eine Optimierung die gerechtfertigt sein muss Es kann durchaus sein dass die Performanz der durchgef hrten Berechnungen nicht weiter ins Gewicht f llt und die Arbeit an anderer Stelle sinnvoller ist 4 2 2 GridMapData Die funktionale Trennung zwischen Datenhaltung und Datenverarbeitung resultiert neben der Klasse GridMap in der Klasse GridMapData Hier wird jegliches Wissen ber die Welt abgelegt und f r die Auswertung bereitgehalten Es werden hier aber keinerlei datenverar beitende Funktionen bereitgestellt Die von au en aufrufbaren Funktionen sind fast alle Get Set Funktionen die bestimm te Daten an einer bestimmten Stelle der Karte modifizieren Hierbei wird in einem ersten Schritt das entsprechende Feld der Gitterkarte addressiert und anschlie end die entspre chende Funktion in dem erm
128. ibs playerc Roboter o Roboter cpp g pkg config cflags playerc t c Roboter cpp Main o Main cpp g pkg config cflags playerc c Main cpp clean rm f x o Main bin Mit dem Aufruf Main bin startet die Simulation des programmierten Roboters vorraus gesetzt die Simulationsumgebung Stage wurde wie bereits beschrieben gestartet 4 5 Application Programming Interface In Abbildung 4 18 ist der erste Entwurf unserer API zu sehen Diese gibt die Struktur unserer Steuerungssoftware wieder In gr eren Gruppen wie in unserer PG ist es wichtig in einer API die Softwarestruktur im Modell festzuhalten Dadurch hat jedes Mitglied den PG 524 Zwischenbericht 123 SOFTWARE berblick ber die zur Zeit bereits geschriebenen und noch nicht fertiggestellten Quell codes Die API wird in Player Stage nur teilweise implementiert da z B die Lichtquelle oder der Staubsauger zu Simulationszwecken nicht ben tigt werden Dem realen Roboter wird diese nat rlicherweise vollst ndig zur Verf gung gestellt Die API besteht zur Zeit aus zwei Komponenten den Sensoren und den Aktuatoren Die Sensoren erben von der Klasse Sensor und die Aktuatoren von der Klasse Aktor Zur Zeit steht noch nicht fest welche gemeinsamen Attribute und Methoden die Sensoren oder die Aktuatoren erben daher sind in Abbildung 4 18 in den entsprechenden abstrakten Vaterklassen noch keine Attribute oder Methoden festgehalten Da die erbenden Klasse
129. icher e Features USB host Signale CCD camera Signale e Anschl sse f r Erweiterungs Boards 60 pin Hirose connector 120 pin MOLEX connector 24 pin flex ribbon e Gr e 80mm x 20mm e Gewicht 8g Das Board enth lt bei Bestellung bereits einen vorgefertigten Linux Kernel 2 6 auf dem Flash Speicher welcher nach Belieben ver ndert oder neu beschrieben werden kann Die ses gilt jedoch nicht f r den Bootloader Sollte dieser besch digt oder fehlerhaft verstellt werden so muss das Produkt zur ck zum Hersteller gesendet werden damit der Speicher gegen Aufpreis neu geflasht werden kann Mit diesem Board ist die ben tigte Rechenleistung inkl Speicherversorgung gew hrleis tet Nun muss sichergestellt werden dass eine ausreichende Menge an Anschl ssen f r die verschiedenen Ein Ausgabeger te vorhanden ist Dies wird im Nachfolgenden durch die 2 Erweiterungs Boards erreicht Erweiterungs Board Console vx Das Erweiterungs Board console vx wird an den 60 pin Hirose connector des gumstix ver dex XL6P angeschlossen Technische Details e 3 x RS 232 Ports mit miniDIN8 Verbindungssteckpl tzen e USB mini B Anschlu with USB Host Signalen 18 bit LCD Anschlu e Serielle Funktionsports alternative GPIO Verbindungen auf 0 100 Zoll kleinen L chern Verbindungsanschlu 60 pin I O header Gr e 80mm x 34mm Betriebsspannung 3 5V 5V PG 524 Zwischenbericht 15 GRUNDLAGEN za console vx
130. iert und zum Schluss wird ein Algorithmus zur Berechnung des Voronoi Diagramms vorgestellt 4 3 1 Einf hrung in das Voronoi Diagramm Descartes erw hnte 1644 die Vermutung das Sonnensystem bestehe aus Materie die um die Fixsterne herumwirbelt Dabei wird der Raum in konvexe Regionen zerlegt In Abbildung 4 8 erkennt man die Fixsterne die sich in der Mitte einer jeden Region befinden Diese Fixsterne binden Materie die durch die Wirbel angedeutet sind Mag diese Theorie auch unzutreffend sein so enth llt sie doch den Keim der folgenden wichtigen Vorstellung Gegeben ist ein Raum hier der R und in ihm eine Menge S von Objekten zum Beispiel Fixsterne die auf ihre Umgebung irgendeine Art von Einfluss aus ben zum Beispiel Anziehungskraft Dann kann die folgende Zerlegung des Raumes in Regionen betrachtet werden Zu jedem Objekt p in S wird die Region V R p S derjenigen Punkte des Raumes gebildet f r die der von p ausge bte Einfluss am st rksten ist Die Abbildung 4 8 beschreibt die von Descartes erdachte Zerlegung des Raumes Der gro e Vorteil dieses Ansatzes liegt in der Allgemeinheit Deshalb ist dieser Ansatz unter verschiedenen Namen in vielen Wissenschaften au erhalb der Mathematik zu finden zum Beispiel in der Biologie Chemie oder Physiologie In der Mathematik hat sich zuerst Georgi Voronoi in seiner Arbeit ber quadratische PG 524 Zwischenbericht 109 SOFTWARE Abbildung 4 9 Voronoi Diagramm V
131. imale Ausdehnung der X Koordinaten unter der Vorraussetzung der angegebenen Y Koordinate Die letzeren beiden Funktionen k nnen zur sp teren Laufzeitoptimierung genutzt werden befinden sich aber noch an keiner Stelle in Gebrauch Ein Grund hierf r ist dass diese Daten auf Anforderung berechnet werden m ssten was ineffizient ist Eine berwachung dieser entsprechenden Werte kann hier Abhilfe leisten Ob dies jedoch n tig wird kann zu diesem Zeitpunkt noch nicht gesagt werden Die anderen Get Funktionen dienen der kompletten Erfassung der Karte bei Aufgaben wie der Objekterkennung oder Ausgabe als Bitmap Die Werte hierf r werden bereits w hrend des Zugriffs auf die Git terkarte ermittelt und st ndig aktualisiert Dies f hrt zu einem kleinen Overhead bei der Verarbeitung welcher aber durch die drastische Beschleunigung der h heren Funktionen kompensiert wird Die Hauptaufgabe der Klasse GridMapData besteht darin die zu verwaltenden Daten zu organisieren Dies geschieht mit Hilfe der Datenstruktur Vector 25 welche durch die Standard Template Library 24 zur Verf gung gestellt wird Diese Datenstruktur dient urspr nglich dazu einen Vektor 30 zu verwalten welcher eine beliebig hohe Dimension besitzt Hierbei muss sichergestellt werden dass effizient auf jeden einzelnen Eintrag zu gegriffen werden kann Ein Vector 25 kann also auch als dynamisches Array verstanden werden welcher w hrend der Laufzeit vergr ert oder verk
132. ingabe und FIRSTPORTB f r die Ausgabe verwendet Als Alternative k nnte auch eine schnelle Um schaltung zwischen den Modi versucht werden Wie schon oben angegeben funktioniert es nicht cbDBitOut zur Ansteuerung des zwei ten Ports FIRSTPORTB als Parameter zu bergeben Allerdings ist es sehr wohl m glich direkt alle acht Bits eines Ports in einem Zug zu setzen Dazu dient dann die Funktion cbDOut Der Quelltext befindet sich im Anhang unter Listing B 3 Der Testaufbau ist prinzipiell eine Kombination aus den vorherigen beiden e Der Schalter schaltet wieder Klemme 21 FIRSTPORTA 0 zwischen P5V Klem me 30 und GND z B Klemme 40 um e Die Leuchtdiode wurde auf Klemme 32 FIRSTPORTB 0 bzw FIRSTPORTA 8 gelegt Kathode weiterhin an GND z B Klemme 40 Ultraschallsensor auslesen Als letztes Experiment wurde versucht den Ultraschallsensor automatisch auszulesen Da bei bestand zun chst die Hoffnung dass die eigene Programmierung unter C schneller ist als die Verwendung der mitgelieferten Software Leider war dabei festzustellen dass auch weiterhin die Latenzzeiten eine vern nftige Auswertung unm glich machen und die von Windows bereit gestellten Funktionen an vielen Stellen zu ungenau sind Messungen sind allenfalls bei gr eren Abst nden m glich Der Vollst ndigkeit halber ist das Experiment hier dennoch dokumentiert Der Quelltext befindet sich als Listing B 4 im Anhang Der Aufbau ergibt sich a
133. ird dem Compiler ber eine Konstante bergeben Wie schon oben angemerkt wird dies beim AVR Studio direkt ber die Projektein stellungen gemacht e Wie auch in Basic muss definieren werden dass der Port als Ausgang verwendet wird Dies geschieht ber DDRC das Data Direction Register f r PortC Dieses Register wird als komplettes Byte geschrieben e Anschlie end kann dann der Pin gesetzt werden Auch PORTC wird komplett byte weise gesetzt Dabei entspricht 1 dem HIGH Pegel e Nach Definition eines Mikrocontroller Programmes geh rt jeglicher Quelltext vor der Endlosschleife zur Initialisierung So gesehen hat das Programm keine Funktion die LED wird in der Initialisierung angesteuert Einlesen von Eing ngen Nachdem nun das Ansteuern von Leuchtdioden funktionierte wurde als n chstes das Ein lesen von Eing ngen in Angriff genommen F r das dazugeh re Programm Listing B 12 wurde ein echter Umschalter an Pin 34 PortA 6 angeschlossen Um auf den PullUp Widerstand zu verzichten wurde dieser mit den Umschalt Eing ngen an GND und P5V angeschlossen Wie auch im Basic Beispiel wird der ausgelesene Status des Schalters auf eine Leuchtdi ode abgebildet Die LED befindet sich weiterhin an Pin 31 e In diesem Beispiel wird der komplette PortA zum Eingangsport und der komplette PortC zum Ausgangsport deklariert e Auf den PullUp Widerstand wurde verzichtet Ansonsten m sste dieser wie gewohnt mit PORTA aktiviert werden Wi
134. ittelten Feld angesprochen Die eigentlichen Daten werden nur durchgereicht und nicht verarbeitet Dies stellt sicher dass keine ungewollte Manipulation der Inhalte stattfindet welche sich nur schwer auf Fehler untersuchen lassen w rde Wel che Daten genau manipuliert werden k nnen wird bei der Beschreibung der Klasse Feld erl utert Alle dort zu findenden ffentlichen Funktionen resultieren in einer entsprechen den Funktion in der Klasse GridMapData Der Aufruf unterscheidet sich nur dadurch dass zus tzlich die Koordinaten des entsprechenden Feldes angegeben werden m ssen Neben diesen Funktionen werden noch ein paar andere Daten vorgehalten Diese beziehen sich nicht auf die Daten welche in der Karte eingetragen werden Es handelt sich hierbei um Informationen die eine schnellere Auswertung der Karte erm glichen Es handelt sich um die Ausdehnung der Karte in X und Y Richtung Die Funktionen hierf r sind Folgende int getMaxY int getMaxX int y int getMaxX 102 PG 524 Zwischenbericht GITTERKARTE Darstellung 0 2 99 39 2211122334543221100099888889900012345666566777889900012345678901234567899012345678901234567890 11000112 10099988777778899901234555455666778899012345678901234567789012345678901234567890 0099900 9988877666667788901234544344555667789012345678901234566678901234567890123456789 998889 87776655555667 44332334445566 45678901234455678901234567890123456789 8
135. ken zus tzlich optimiert werden k nnen Auch die Fehleranf lligkeit sinkt deutlich aufgrund der geringeren Komplexit t 2 2 5 Mikrocontroller In der Welt der Robotik findet sich kaum ein System welches nur von einer zentralen Ein heit gesteuert wird Es kommen immer st rker Mikrocontroller zum Einsatz die kleinere 36 PG 524 Zwischenbericht SOFTWARE Aufgaben schneller und kosteng nstiger erledigen k nnen als reine CPUs Dies hat mehrere Vorteile Die Hauptrecheneinheit kann zum Beispiel von niedrigeren Arbeiten entlastet wer den Diese niedrigeren Aufgaben k nnen mit Mikrocontrollern sogar sehr oft besser erledigt werden als mit einer CPU die gleichzeitig noch ein ganzes Betriebssystem zu verwalten hat Dies f hrt zu schlechteren Ansprechzeiten welche beim Auslesen eines Sensors die Zu verl ssigkeit der gemessenen Daten geradezu eliminieren Hier bilden die Mikrocontroller die solide Grundlage auf die bei Bedarf ber entsprechende Bussysteme zur ckgegriffen werden kann Da es sich hierbei um eine sehr technische Angelegenheit handelt welche weniger durch die verwendete Software bestimmt wird wird an dieser Stelle nicht weiter auf diesen Aspket eingegangen Hiermit schlie t die Beschreibung der Grundlagen der Software und es folgt die detaillierteren Beschreibungen der Arbeit an dem RAPTOR PG 524 Zwischenbericht 37 GRUNDLAGEN 38 PG 524 Zwischenbericht 3 Hardware Mit Hilfe der Grundlagen aus
136. kku im hinteren Bereich der unteren Ebene angebracht Damit die zweite Ebene m glichst tief angebracht werden kann wurde der Ak ku auf der unteren Ebene liegend montiert Da der Deoball auch im hinteren Teil befestigt ist bestand die Notwendigkeit den Akku etwas h her zu legen was aber insgesamt immer noch tiefer war als den Akku stehend zu montieren Ein am Lehrstuhl vorhandenes rechteckiges Metallst ck wurde durch Fr sen in eine L Form gebracht hnlich wie bei der Motorfestigung der R der Danach wurden St cke mit 80 PG 524 Zwischenbericht KAROSSERIE der Hands ge klein ges gt und L cher zur Befestigung in die Metallst cke und die Aluplatte gebohrt Abbildung 3 27 Abbildung 3 27 Befestigung des Akkus an der unteren Platte Die Metallst cke wurden dann an der Platte befestigt und der Akku eingesetzt Durch die Platzierung der Metallst cke sitzt der Akku fest auf der unteren Ebene Mit der oberen Aluminiumplatte wird eine Verschiebung des Akkus auch nach oben verhindert womit er letztendlich fest sitzt und sich nicht mehr verschieben kann Befestigung der B rsten an der unteren Platte Abbildung 3 28 B rsten An den B rsten Abbildung 3 28 wurde jeweils ein Loch f r die Befestigung der Motoren gebohrt Dann wurden die Motoren f r die B rsten an die Platte geschraubt und die B rsten an den Motoren befestigt Abbildung 3 29 Befestigung der Stange an der unteren Platte Es wurden 5mm dicke Sta
137. l e fallende Flanke e steigende Flanke Da ein Bumper den Pegel auf LOW zieht muss der Interrupt auf fallende Flanke aus gel st werden Der richtige Konfigurationsbefehl dazu lautet MCUSR 1 lt lt ISCO1 Die anderen F lle werden im Datenblatt genauer dokumentiert Der eigentliche Interrupt wird dann ber das Global Interrupt Control Register aktiviert GICR 1 lt lt INTO PG 524 Zwischenbericht 63 HARDWARE Dennoch werden an diesem Punkt noch keine Interrupts erzeugt Damit der Atmel ber haupt mit Interrupts arbeitet muss diese Funktionalit t global ber das Global Interrupt Enable Flag aktiviert werden Dies geschieht diesmal nicht direkt durch Beschreiben ei nes Registers sondern ber den Befehl sei Diese Methode ist ein Bestandteil der AVR Interrupt Bibliothek welche gesondert eingebunden werden muss include lt avr interrupt h gt Der Gegenbefehl zum globalen Deaktivieren von Interrupts lautet cli Ab diesem Punkt reagiert der A Mega auf diesen Interrupt Nat rlich m ssen wir ihm noch sagen wie er auf den Interrupt reagieren soll Dazu schreiben wir die Interruptbe handlungsroutine SR INTO_vect motor_aus wart_puts IRC n r e ISR ist das Schl sselwort f r Interruptroutinen e INTO_vect ist das Schl sselwort f r exakt diesen Interrupt Der Name findet sich in der entsprechenden h Datei oder in der D
138. l Einblick in die zu programmierende Software gab speziali siert sich dieses Kapitel auf die Realisierung der Software f r den RAPTOR Beginnend mit der Software f r den Gumstix wird danach die Programmierung der Gitterkarte vor gestellt Anschlie end wird der Versuch der Benutzung des Voronoi Diagramms und der daraus resultierenden Probleme geschildert Des Weiteren wird das Buildroot System und der Umgang mit diesem erkl rt Ferner wird die Simulation mit Player Stage gezeigt An schlie end wird der Nutzen von I C erl utert gefolgt von der Beschreibung des ersten API Entwurfs Abschlie end werden noch die Anf nge der Softwareimplementierung f r den ATMega32 beschrieben 4 1 Gumstix Der Gumstix besitzt im Auslieferungszustand eine Menge Funktionen jedoch nicht alle die f r die Nutzung des Raptors wichtig sind Zum Einen m ssen zus tzliche Komponenten wie das I C eingebunden werden zum Anderen die Funktionen der Erweiterungsboards wie die Nutzung von LAN oder des Micro SD Slots aktiviert werden Im folgenden Abschnitt werden diese nderungen am Gumstix Schritt f r Schritt erkl rt 4 1 1 Aufbau des Flash Speichers Neben dem 128MB gro en Ram besitzt der Gumstix einen 32MB umfassenden Flash Speicher welcher in mehrere Sektionen aufteilt ist Diese werden an dieser Stelle nur kurz aufgelistet aber nicht n her auf die genauen Spezifikationen erl utert 1 0 In dieser Sektion werden die relevanten Daten und Programme des
139. leinert werden kann Die Tatsa che dass die einzelnen Daten von jedem beliebigen Typ sein k nnen deshalb wird auch von Daten Containern gesprochen machen den Vector 25 zur idealen Datenstruktur f r unsere Gitterkarte Um nun eine zweidimensionale Karte mittels eines Vector 25 zu verwalten wird ein u erer Vector 25 angelegt dessen einzelne Daten wiederum Vectoren 25 sind Diese inneren Vectoren 25 enthalten dann die Objekte vom Typ Feld welcher sp ter genauer betrachtet werden Auch wenn diese Organisationsstruktur einfach und performant ist m ssen noch ein paar berlegungen ber die exakte Umset zung angestellt werden In der ersten Implementierung der Klasse GridMapData wurde ein einzelner u erer Vector 25 angelegt welcher wiederum an jeder Position wieder einen einzelnen Vector 25 besa Abbildung 4 6 Hierbei kommt es jedoch zu Problemen mit der Speicherung einer Karte Die Gitterkarte muss w hrend der Laufzeit in alle Richtun gen vergr ert bzw verkleinert werden k nnen Da jedoch der Vector intern einer Liste gleicht welche nur in eine Richtung wachsen kann beschr nkt dies das Wachstum der Karte Dies haben wir mit Hilfe der folgenden Zuordnungfunktion gel st x poz wenn gt 0 U 2 xx 1 wenn r lt 0 I ER wenn y gt 0 y 2 xy 1 wenn y lt 0 104 PG 524 Zwischenbericht GITTERKARTE Die auf diese Weise berechneten Koordinaten
140. len ist hierbei auch auf das Wesentliche reduziert Gerade einmal 2 Byte m ssen pro Feld gespeichert werden Das erste Byte enth lt die Belegungswahrscheinlichkeit und das zweite den Verschmutzungsgrad Die Wertebereiche dieser beiden Eigenschaften liegen im Bereich O bis 100 Sollten sie dennoch in der Datei den Wert 255 aufweisen symbolisiert dies dass dieses Feld noch nicht erforscht wurde und somit leer ist Objekterkennung Es folgt nun eine Beschreibung der beiden komplexen Aufgaben der Klasse GridMap Diese sind auf der Karte einzelne Objekt zu identifizieren und lokalisieren sowie Gegenst nde als Ganzes zu erkennen Hierf r werden zwei Funktionen zur Verf gung gestellt vector lt vector lt Feld gt gt getSegmentVector vector lt vector lt Feld gt gt getSegmentRandVector Listing 4 18 Objekterkennung Die Funktion getSegmentVector ermittelt mit Hilfe von Techniken der Bildverarbeitung die einzelnen Objekte auf der Karte und gibt diese gesammelt zur ck Hierbei wird die Datenstruktur Vector aus der Standard Template Library 24 verwendet welche eine Menge von Objekten einer beliebigen Datenstruktur enthalten kann Der u ere Vector repr sentier hierbei die Menge der Objekte und die inneren Vectoren die einzelnen Ob jekte welche wiederum aus den Feldern bestehen die durch dieses Hindernis belegt werden PG 524 Zwischenbericht 97 SOFTWARE N heres zur Datenstruktur Vec
141. ller muss zuerst ein Protokoll erstellt wer den damit sowohl der Gumstix als auch der Mikrocontroller wissen welche Daten an wel che Hardware gesendet werden sollen oder welche Daten von der Hardware zum Gumstix PG 524 Zwischenbericht 93 SOFTWARE geschickt werden sollen i2c 96 SendByte 2 i2c count 2 96 RcvByte 4 1 10 Buildroot Das Buildroot 28 ist ein System welches ein standardisiertes Dateisystem Image basierend auf Linux f r den Gumstix erstellt Es werden alle Schritte automatisiert die zur Erstel lung eines brauchbaren Komplettsystems ben tigt werden im Einzelnen wird folgendes durchgef hrt e Herunterladen aller n tigen Quellcodes und Daten e Bauen eines Cross Compilers mit der n tigen Toolchain e Kompilieren der gesamten Software inklusive Kernel und Anwendungen e Zusammenf hrung aller Ergebnisse in ein fertiges Dateisystem das auf den Gumstix Flash Speicher geladen werden kann Im Folgendem wird genauer darauf eingegangen wie ein Dateisystem Image erstellt wird und wie der Cross Compiler zu benutzen ist Kompilieren des Buildroots Um ein Buildroot zu erstellen m ssen folgende Programme vorhanden sein e Subversion e GNU Compiler gcc e autoconf Zun chst wird der aktuelle Quellcode mit Hilfe von Subversion vom Gumstix Server her untergeladen Dabei ist zu beachten dass falls ein Proxy benutzt wird dieser in die Um gebungsvariablen http_proxy und ftp_proxy des Systems
142. llte sich heraus dass der Motortreiber sehr robust ist und der Motortreiber unter den gegebenen Anforderung nicht zu stark erw rmt wird C Code zum Testen des Motors ber eine Breakout Box Beim Testen der Schaltung wurde ein Testprogramm in C Code geschrieben das die Motorsteuerung wie in der Tabelle abgebildet siehe Abb 3 7 umsetzen soll Dieses Test programm dient nur zum Testen der Schaltung Der sp tere Code der in Atmel program miert wird wird sich von dem hier gezeigten Code sehr stark unterscheiden Beim Testen der Schaltung hat sich herausgestellt dass je kleiner die Periodendauer ist siehe Abb 3 8 desto ruckartiger sich der Motor dreht Beim Wechsel von High auf Low bzw Low auf High ist der Motor kurzfristig in Zustand 1 siehe Abb 3 7 Dieser Code konnte aus zeitlichen Gr nden nicht weiter verbessert werden Die Abbildung 3 8 zeigt den Zusam menhang der Variable Periodendauer im C Programmcode In der Abbildung sind drei unterschiedliche Zust nde zu sehen 10 Prozent 60 Prozent 90 Prozent die die Drehzahl des Motors beeinflussen Je kleiner der Wert ist in Prozent desto langsamer ist die Dreh zahl des Motors Im Anhang befinden sich die entsprechende Header Datei B 19 und das Main Programm B 20 3 2 ATMega Wie weiter oben schon angef hrt wird im Roboter der Mikrocontroller ATMega32 von Atmel Abbildung 3 10 verwendet Dieser soll an dieser Stelle etwas genauer betrachtet werden Da seine technisch
143. lte zugegriffen Dies alles f hrte zu einer robusten Implementierung die nur berarbeitet wurde um einen Leistungvorteil zu erreichen Und dieser fiel gr er aus als erwartet wurde Es zeigte sich dass es zu einem sehr hohen Anteil an leeren Feldern in der Gitterkarte kommen w rde Dies kann ganz einfach gezeigt werden da Karten die nur positive Koordinaten besitzen dazu f hren dass die Gitterkarte in gleichem Ma e in die negativen Bereiche des Koordinatensystems w chst Ein Vector kann n mlich keinerlei Fehlstellen aufweisen Und da zwischen zwei positiven Koordinaten intern eine negative Koordinate abgelegt ist muss diese auch auf jeden Fall erzeugt werden Die nderung der internen Repr sentation f hrte dazu dass intern vier Karten ver waltet werden Jede ist hierbei f r einen Quadranten des Koordinatensystems zust ndig Da Quadranten an den Hauptachsen enden sind sie nicht in vier Richtungen unendlich sondern nur in zwei Eine Kombination von u eren und inneren Vectoren leistet genau dies Wie in Abbildung 4 7 zu erkennen ist lassen sich die Koordianten der Gitterkarte nun intuitiv auf die interne Datenstruktur bertragen Die Addressierung gestaltet sich nur unerheblich schwieriger Hierf r wird in einem ersten Schritt anhand der Koordinaten der entsprechende Quadrant ermittelt in dem die aktuellen Koordinaten zu finden sind Dies wird durch zwei If Bedingungen geleistet die die Negativit t der X bzw Y Ko
144. m ablauf sofort unterbrochen und das Programm springt an die entsprechende Interrupt routine Nach Abarbeitung dieser Routine setzt das Programm die Arbeit dort fort wo es unterbrochen wurde wenn nicht zwischendurch eine neue Unterbrechungsanforderung eingetroffen ist Dieser Sprung aus dem Hauptprogramm heraus kann einige Probleme mit sich bringen GOTO ist eigentlich immer ein sehr unsch nes Programmierkonstrukt und bei einem In terrrupt kann der Prozessor eventuell bei einer wichtigen Aufgabe unterbrochen werden Dennoch k nnen wir auf Interrupts nicht verzichten Zudem lassen sich durch sie auch wieder einige sehr elegante Programme implementieren Da bei einem Interruptsprung der regul re Programmablauf gest rt wird sollte zumin dest versucht werden diese St rung zu minimieren Es ist eine allgemeine Empfehlung in den Interruptroutinen nur m glichst wenig Programmaufwand unterzubringen und die echte Verarbeitung der Daten auszulagern 62 PG 524 Zwischenbericht ATMEGA Quellen eines Interrupts im ATMega32 Es gibt verschiedene Quellen die einen Interrupt ausl sen k nnen beispielsweise ein lee rer Puffer eingetroffende Daten vom USART erreichte Schwellwerte bei Z hlern oder der berlauf eines Wertes Sehr viele Funktionsbl cke im Mikrocontroller haben ein Flag In terrupt Enable Diese Interrups sind ausf hrlich im kompletten technischen Datenblatt von Atmel dokumentiert und werden daher hier
145. m ssen Diese bestehen vor allem in der begrenzten Platz und Energiekapazit t welche nicht jede beliebige Hardware wie sie bei normalen Desktop PCs m glich w re zul sst Aus Sicht der Software wird die Programmierung des Roboters extern auf Desktop PCs durchgef hrt da es sehr aufwendig ist direkt auf dem Roboter zu programmieren Au er dem k nnten dann mehrere Personen f r verschiedene Softwarebereiche nicht mehr gleich zeitig an der Programmierung arbeiten Der Programmcode wird dann auf dem Roboter 13 GRUNDLAGEN ausgelagert und lokal auf dem Ger t ausgef hrt Dies ist jedoch ohne ein Betriebssystem welches die passende Programmierumgebung unterst tzt nicht ohne weiteres m glich Ein geeignetes Betriebssystem f r den Roboter und eingebettete Systeme allgemein w re Linux Es ist frei verf gbar beansprucht wenig Speicherplatz l uft bei korrekter Konfiguration sehr stabil erlaubt viele Freiheiten in der Treiberprogrammierung f r verschiedene Peri pherie und stellt viele bereits vorgefertigte Tools und Treiber zur Verf gung Als ideale Rechnerhardware f r eingebettete Systeme zu denen der Roboter sicherlich z hlt erweisen sich die sog Gumstix Boards der amerikanischen Firma gumstix inc Diese zeichnen sich durch eine hohe Rechenleistung bei kompakter Gr e die einheitliche Gr e der Rechner Boards betr gt 80mm x 20mm w hrend die Gr e der Erweiterungs Boards minimal abweichen kann und geringer Betri
146. m ssen noch die Quelldateien hinzugef gt werden welche jeweils durch ein Leerzeichen getrennt sind In die dritte Zeile wird Namen der gew nschten Datei geschrie ben Sollte der eigene Quellcode komplexer sein und m ssen Bibliotheken hinzugef gt oder Include Pfade gesetzt werden so wird das Makefile um die entsprechenden Parameter er weitert Wenn alles stimmt kann der Kompiliervorgang mittels des Befehls make gestartet werden Es kann sein dass zu Beginn ein paar Fehlermeldungen auftauchen dass bestimm te o und oder bin Dateien nicht gefunden werden konnten Dies k nnte darin liegen dass zur Sicherheit bei jedem Kompiliervorgang alle o und bin Dateien gel scht werden Es kann bei minimalen nderungen vorkommen dass der Cross Compiler keine nderungen in den Quelltextdateien erkennt und nicht kompiliert Dies wird durch das Entfernen der o und bin Dateien erzwungen Die so entstandene Datei muss anschie end nur noch auf den Gumstix kopiert werden PG 524 Zwischenbericht 89 SOFTWARE SOURCES OBJECTS SOURCES cpp 0 BINARY all clean BINARY S BINARY OBJECTS gumstix buildroot build_arm_nofpu staging_dir bin arm linux uclibcegnueabi g o S BINARY OBJECTS S OBJECTS SOURCES gumstix buildroot build_arm_nofpu staging_dir bin arm linux uclibcegnueabi g c SOURCES clean rm S OBJECTS BINARY Listing 4 9 Makefile 4 1 7 Zus tzliche Hardwa
147. mst rke der Gumstix immer wieder nach dem Bootvorgang abgeschaltet 4 1 4 Konfiguration des Betriebssystems Als Erstes muss der vom console vx Zusatzboard bereitgestellte Ethernet Controller und der micro SD Card Slot in Betrieb genommen werden Diese werden in der Datei etc modules aktiviert Hierbei kann auch sofort die Host Funktion der USB Schnittstelle ein gebunden werden Dazu m ssen die jeweils vorhandenen Zeilen durch die folgenden Zeilen ersetzt werden MMC support mmc_block pxamci Ethernet support smc911x USB Host support ohci hcd Listing 4 1 etc modules Nach dem n chsten Bootvorgang sollte nun eine micro SD Karte in das Verzeichnis m nt mmc gemountet werden F r die Ethernetnutzung muss in der Datei etc modpro be conf noch folgende Zeilen alias eth0 smc9lx alias ethl smc9lx Listing 4 2 etc modprobe conf 86 PG 524 Zwischenbericht GUMSTIX durch alias eth0 smc911x alias ethl smc9l1x Listing 4 3 etc modprobe conf ersetzt werden Als N chstes wird nun der Ethernettreiber eingebunden Durch den Kom piliervorgang von Buildroot entstehen die in Listing 4 4 aufgef hrten Dateien Diese Da teien missen nun mit Hilfe einer micro SD Karte oder einer seriellen Verbindung auf den Gumstix kopiert werden Die ersten beiden Module miissen in das Verzeichnis lib mo dules 2 6 21gum kernel drivers net und die dritte Datei in das Verzeichnis lib mod
148. n Objektrandnachbar bereits gefunden wurde aber der Zweite noch nicht Diese Tatsache ist nur bei dem ersten und letzten Feld eines Ob jektrandes nicht gegeben Routenplanung Es folgt nun die Routenplanung Diese dient dazu einen m glichst optimalen Weg von ei nem angegebenen Startpunkt zu einem gew nschten Zielpunkt zu berechnen Der Grund warum diese Funktionalit t innerhalb des datenverarbeitenden Teil der Gitterkarte gekap selt ist liegt bei n herer Betrachtung auf der Hand Es wird ein Algorithmus verwendet der direkt auf der Gitterkarte arbeitet und eine speziell f r solche Zwecke implementierte Sondereigenschaft der einzelnen Felder nutzt Diese Sondereigenschaft werden wir n her bei Besprechung der Klasse Feld betrachten Es handelt sich hierbei um eine einfache Variable in den Feldern welche h here Funktionen bei Berechnungen unterst tzen und entlasten soll In dem Fall der Routenplanung werden hier Sch tzwerte der Entfernun gen vom Startpunkt gespeichert und anschlie end ausgewertet Bevor mit der detaillierten Beschreibung dieser Funktion begonnen wird werden noch ein paar Vor berlegungen zur Routenberechnung angef hrt Wie bereits zu einem fr heren Zeitpunkt erw hnt ist die Gitterkarte intern unabh ngig von der Gr e der einzelnen Felder Dennoch m ssen ihr diese Angaben mitgeteilt werden Auch die Gr e des Roboters ist hier von Bedeutung Es muss ein gewisser Abstand zu den Objekten im Raum eingehalten werden
149. n Schrittmotor eingesetzt wird ein geeignete Getriebewahl getroffen werden der die Motorkraft auf die Antriebsr der realisiert Ohne Getriebe h tten wir folgende Probleme e Ohne Getriebe h tte ein Schrittmotor mit einem Schrittwinkel von 18 Grad eine zu ungenaue Bewegung e Die am Rad einwirkende Kraft ist zu gro der Motor w rde zu stark belastet 30 PG 524 Zwischenbericht HARDWARE Abbildung 2 17 Ein ATMega32 in in PDIP Bauform 2 1 8 Mikrocontroller Obwohl der Gumstix selbst auch mit diversen Ein und Ausg ngen f r digitale Signale aus gestattet ist haben wir uns entschieden die Sensordatenerfassung und Motoransteuerung auf einen Mikrocontroller auszulagern Abgesehen davon dass wir hierbei erheblich mehr Einfluss bei zeitkritischen Abfragen haben erm glicht uns dies eine bessere Trennung zwi schen der Hardwareansteuerung und Aufgaben wie Routenplanung und Kartenerfassung Zudem ist im Fehlerfalle ein Mikrocontroller erheblich g nstiger und einfacher auszutau schen als das Linux Board Schon sehr schnell limitierten wir unsere Auswahl auf die ATMega Baureihe der Fir ma Atmel Die Mikrocontroller dieser Baureihe haben den Vorteil dass Prozessor und Speicher in einem Chip integriert sind Zudem werden sie heutzutage in vielen Projekten eingesetzt von daher existiert f r viele Sensoren bereits umfangreiche Dokumentation und gut verst ndlicher Beispielcode Nicht zuletzt wird der komplette c t Bot ber ei
150. n erhalten Distanzen berechnen Die Zeitdiagramme des SRFO5 werden f r den jeweiligen Modus in den Abbildungen 2 7 und 2 8 gezeigt Wie zuvor in den Abschnitten ber Modus 1 und 2 erw hnt reicht ein mindestens 1045 langes High Signal aus um den Messvorgang auszul sen Der SRFO5 sendet acht Zyklen hintereinander einen ultrahochfrequenten Ton bei 40kHz aus W hrend PG 524 Zwischenbericht 19 GRUNDLAGEN fer AT p TTIP 5v supply No Connection Trigger Input Echo Output Mode Low Connect to Ground 0v Ground Programming pins Used once only to program the PIC chip during manufacture Do not connect to these pins Connections for single pin Trigger Echo Mode Abbildung 2 6 Anschl sse f r gemeinsamen Trigger und Echo Pin 8 dieser Zeit hat er einen High Pegel Wird ein Echo registriert wird der Pegel in diesem Fall auf Low gesenkt Die L nge des High Pegels ist proportional zur Entfernung des Objekts Mit einer Zeitmessung l sst sich die Distanz beispielsweise in Zentimeter berechnen Wird kein Echo empfangen senkt der Ultraschallsensor den Pegel nach 30 Millisekunden auf Low Bis zu 20 Messungen pro Sekunde sind mit diesem Ultraschallmodul m glich das heisst alle 50 Millisekunden ist eine Messung m glich Wichtig ist dabei dass die Zeit des Echo Impules m glichst genau ermittelt wird Je genauer dies geschieht desto akkurater ist die Entfernungsmessung Abschlie end ist noch zu erw hnen
151. n geeigneter Sicherheitsabstand ist Gilt die Ungleichung nicht ist der Weg entlang der getesteten Voronoi Kante e zu schmal f r den Roboter und wird verworfen Nachdem alle Kanten aus den Graphen entfernt wurden die zu schmal sind wird vom Startknoten s eine Breitensuche durchgef hrt Wird nun festgestellt dass z von s erreichbar ist wurde ein kollisionsfreier Weg gefunden Im allgemeinen liegen Startpunkt s und Zielpunkt z nicht direkt auf einer Voronoi Kante In diesem Fall wird zuerst versucht die Voronoi Regionen bez glich 5 zu finden indem sich s und z befinden Befindet sich der Startpunkt s beispielsweise in der Voronoi Region V R x S wird ein Strahl ausgehend vom Hinderniss x konstruiert der durch den Startpunkt s l uft Wie in Abbildung 4 12 zu erkennen ist muss der Strahl irgendwann das Voronoi Diagramm Vo S in einem Punkt s treffen Nun kann sich der Roboter zum Punkt s bewegen und es liegt die vorher besprochene Vereinfachung vor Analog wird mit dem Zielpunkt z vorgegangen 4 3 3 Algorithmus zur Berechnung des Voronoi Diagramms In diesem Abschnitt wird ein Sweep Line Verfahren eingef hrt mit dem sich ein Voronoi Diagramm V S in Zeit O n log n und Speicherplatz O n effizient berechnen l t Die Grundidee ist ganz einfach es werden beim Sweepen damit ist das Wandern der PG 524 Zwischenbericht 113 SOFTWARE B a L Abbildung 4 13 Kein Punkt rechts der Sweep Line L kann das Gebiet zur Link
152. n haben eine festgelegte Motordrehrichtung die rechte B rs te dreht gegen den Uhrzeigersinn die linke B rste im Uhrzeigersinn Damit drehen beide 72 PG 524 Zwischenbericht HAUPTPLATINE B rsten nach innen um den Schmutz in die Richtung der Saug ffnung zu bef rdern Abbil dung 3 18 zeigt wie zum Festlegen der Drehrichtung zwei Inverter verwendet worden sind damit es nicht mehr n tig ist dieses per Software zu steuern Zus tzlicher Vorteil ist dass daf r keine Pins am ATMega32 belegt werden Der Pin 1A ist mit dem Eingang eines der beiden Inverter verbunden und invertiert sein Signal nach Pin 2A des Bausteins L293D Der Eingang des zweiten Inverters ist mit dem Pin 3A verbunden Der Pin 4A erh lt dieses invertierte Signal Die beiden Eing nge der Inverter wurden jeweils mittels einer Leitung zusammengef hrt und mit Pin PD6 ICP des Mikrocontrollers verbunden Die Pads der Pins 1Y und 2Y werden ber Kabel an den ersten Motor gel tet die Pins 3Y und 4Y an den zweiten Motor Die Anschl sse GND1 GND2 GND3 und GNDA4 werden geerdet Da sich die Motoren der B rsten nicht so schnell drehen m ssen wie die Motoren der R der erhalten VCC1 und VCC2 jeweils eine Spannung von 5V Die Pins 1 2EN und 3 4EN vom Motortreiber IC sind ebenfalls beide mit der 5V Spannungsquelle verbunden Auch hier ist der Vorteil dass keine zus tzliche Steuerung per Software erfolgen muss und auch keine zus tzlichen Pins des Atmel Bausteins belegt sin
153. n von einer Vaterklasse er ben ist es in der sp teren Programmierung wie z B bei der Sensordatenfunsion m glich die Sensoren in ein Array zu speichern um so komfortablen Zugriff auf einzelne Sensoren zu erhalten Die einzelnen erbenden Klassen sind so konzipiert dass grundlegende Infor mationen f r eine Sensordatenfusion zu Verf gung stehen Die Klasse Ultraschallsensor stellt Methoden zur Verf gung die die gemessene Entfernung eines Sensors und dessen Po sition relativ zur Ausrichtung des Roboters wiedergeben Die Klasse Kompass stellt eine Methode zu Verf gung die die eigentliche Ausrichtung des Roboters wiedergibt In einem Objekt der Klasse Bumper wird wenn der dazugeh rige echte Bumper aktiviert wird die Zeit der Aktivierung gespeichert Andere Programmmodule wie z B die Robotersteuerung k nnen ber die Klasse Antrieb direkt auf den Motor zugreifen und somit den Roboter zum fahren oder anhalten ber die entsprechenden Methoden bringen Die R ckgabewerte der einzelnen Methoden und die Datentypen der Atribute wurden noch nicht festgelegt Dies wird im Laufe der Entwicklung geschehen LA Bumper lastBump speed setSpeed getSpeed drive stop LA Kompass LA Staubsauger getDistance getOrientation getOrientation state getPicture create newKamera_ setState getState A a Abbildung 4 18 API 4 6 ATMega32 Im Folgenden wird nur die Software des ATM
154. ndows 2000 XP empfohlen allerdings wurde die Kamera bereits erfolgreich unter Linux am LS14 Rechner in Betrieb genommen Mithilfe des KDE Instant Messengers Kopete Auch die Bilder mit 320 x 240 Pixel Aufl sung sind von akzeptabler Qualit t wenn auch mit minimalen Abstrichen in der korrekten Farbdarstellung Dies k nnte auch ein Problem von Linux sein Da die Kamera einen standardisierten USB Anschlu besitzt und das Gumstix Board nur ber MiniUSB Slots verf gt muss zur berbr ckung ein Adapter samt Verl ngerungskabel eingesetzt werden Diese Hilfkonstruktion beeintr chtigt jedoch nicht die Funktionalit t Interessant ist zu erw hnen dass unter dem Gumstix Bilder von besserer Qualit t erzeugt werden als unter der Linuxumgebung des Hauptrechners Die Installation der Webcam unter Linux verlief nicht unproblematisch schlie lich wurde die mitgelieferte Logitech Software f r den Einsatz unter Windows konzipiert und zeigte keine Funktionst chtigkeit unter Linux Deshalb musste im Internet nach selbstgeschrie benen Treibern gesucht werden Gl cklicherweise ist die Treiberentwicklung f r Webcams unter Linux mittlerweile weit fortgeschritten weshalb passende funktionst chtige Treiber ohne gro en Aufwand gefunden wurden Obwohl die Kamera bereits voll einsatzf hig ist wird innerhalb der Projektgruppe dis kutiert ob die Hinzunahme einer weiteren qualitativ hochwertigeren Webcam sinnvoll ist Schlie lich sind die Muster z B bei de
155. ne betrachtet bevor schlie lich die Auswahl des Treibers begr ndet wird Im praktischen Einsatz muss sich der Roboter sowohl vorw rt als auch r ckw rt fort bewegen Da der Motor mehr Strom ben tigt als ein Mikrocontrollerausgang liefern kann muss die Ansteuerung ber einen Motortreiber erfolgen Es ist also eine Zusatzschaltung zur Trennung notwendig sonst w rde der Mikrocontroller unter der Last zerst rt werden Standardbausteine Eine zahlreiche Auswahl an Motortreiber ist von verschiedenen Chipherstellern als IC verf gbar Um mit einem Mikrocontroller Digitalmotoren anzusteuern kann der beliebten Motortreiber ICs L293D siehe Abb 3 6 oder f r st rkere Motoren der L298N siehe Abb 3 9 verwenden werden Beide unterscheiden sich im zul ssigen Strom in der Geh useform und dass der L298 im Gegensatz zum L293D keine Freilaufdioden integriert hat L293D Jedes IC des L293D beinhaltet zwei Br cken mit einer Belastbarkeit von jeweils 1200 mA Die internen Schutzdioden an den jeweiligen Ausg ngen begrenzen m gliche Span nungsspitzen Das IC ist ohne Extrama nahmen kurzschlussfest und besitzt einen internen bertemperaturschutz der die Ausg nge bei berlasung abschaltet bis das IC ausreichend abgek hlt ist Im Projekt ist der Motortreiber L293D eingebaut wegen des internen ber hitzungschutz Dieser sch tzt den Motortreiber vor einer zu hohen Hitzeentwicklung Die Motor Stromaufnahme des RB 35 Getriebemotor betr gt
156. nen einzi gen ATMega Mikrocontroller angesteuert was ein guter Hinweis f r die Leistungsf higkeit dieser Mikrocontroller ist Innerhalb dieser Baureihe fiel unsere Entscheidung dann auf den ATMega32 Dieser unterst tzt eine Taktrate von 16 MHz Dank seiner guten RISC Architektur k nnen die meisten Befehle innerhalb eines Taktes abgearbeitet werden und f r jeden Einzelfall kann eine Ausf hrungszeit von etwa 62 5 nS angenommen werden das reicht dann auch f r die schnellsten unserer Sensoren aus Weiterhin hat er einen integrierten 32 kB Flash Speicher Dieser kann In System programmiert werden was gerade beim sp teren Debugging ein gro er Vorteil sein kann zus tzliches Aus und Einbauen des Mikrocontrollers entf llt Ein weiteres Argument f r den ATMega32 im Vergleich zu anderen Mikrocontrollern PG 524 Zwischenbericht 31 GRUNDLAGEN sind die 32 I O Pins verteilt auf 4 Ports die auf der einen Seite frei in der Programmie rung verwendet werden k nnen auf der anderen Seite aber auch auf verschiedene hilfrei che Zusatzfunktionen umgeschaltet werden k nnen So ist es beispielsweise m glich an bis zu vier verschiedenen Ausg ngen ein PWM Signal bereit zu stellen ohne diese Ausg nge st ndig softwaregesteuert umschalten zu miissen Weitere technische Details befinden sich bei der Hardwarebeschreibung und in den Pro grammierbeispielen 2 1 9 Kamera Kameras werden beim Roboter zu 2 Hauptzwecken eingesetzt
157. ng 56 if TWSR amp 0xf8 TW_START TWIerror IWSR 57 part pts ok 58 59 TWDR 194 Adressauswahl 60 TWSTA wird geloescht Daten Adresse senden 61 TWCR 1 lt lt TWEN 1 lt lt TWEA 1 lt lt TWINT 62 TWSTA wird geloescht Daten Adresse senden 63 while TWCR 1 lt lt TWINT 64 warte auf Anforderung 65 if TWSR amp 0xf8 TW_MT_SLA_ACK 66 TWIerror TWSR PG 524 Zwischenbericht 159 QUELLTEXTE 67 uart_puts n rSlave_ ACK 68 69 TWDR zaehler Registerauswahl 70 Daten Register senden 71 TWCR 1 lt lt TWEN 1 lt lt TWEA 1 lt lt TWINT 72 Daten Register senden 73 while TWCR 1 lt lt TWINT 74 warte auf Anforderung 75 if TWSR 0xf8 TW_MT_DATA_ACK 76 TWIerror TWSR 77 uart_puts n rData ACK 78 uart_puts ltoa zaehler s 10 79 gibt die gesendeten Daten 80 Hl TWCR 1 lt lt TWEN 1 lt lt TWINT 1 lt lt TWSTO 82 uart_puts n rStop erfolgreich gesendet n r 83 sleepms 200 84 85 86 if modus 1 slave modus 87 TWAR 194 88 for 89 uart_puts n rIch warte 90 while TWCR amp 1 lt lt TWINT 91 warte auf Anforderung 92 if TWSR 0xf8 TW_SR_SLA_ACK 93 TWIerror TWSR 94 uart_puts n rIch schicke ein ACK 95 sleepn
158. ngen gekauft und diese in 15cm lange St cke ges gt Durch zuvor gebohrte L cher in den Aluminiumplatten und mit Hilfe von Muttern wurden die Stangen mit den Platten und damit letztendlich beide Platten miteinander verbunden Abbildung 3 30 3 5 2 Die obere Ebene In diesem Abschnitt wird die Bearbeitung der oberen Ebene beschrieben Dazu geh rt die Befestigung der Ultraschallsensoren und das Anbringen der oberen Platte an den Stangen PG 524 Zwischenbericht 81 HARDWARE Abbildung 3 29 Befestigung der B rsten an der unteren Platte Abbildung 3 30 Befestigung der Stange an der unteren Platte 82 PG 524 Zwischenbericht KAROSSERIE Ultraschallsensoren Wiederrum fiel die Entscheidung auf L Formige Metallst cke welche durch S gen und Fr sen in die richtige Form gebracht wurden Nach dem Bohren von weiteren L chern war die Befestigung der Sensoren an den Winkeln und der Winkel an der oberen Ebene m glich Abbildung 3 31 Abbildung 3 31 Ultraschallsensor an dem Metallst ck Befestigung der oberen Platte an der Stange Nachdem die Ultraschallsensoren an der obere Platte befestigt wurden konnte die Platte an den Stangen befestigt werden Abbildung 3 32 Dies ist gleichzeitig der zum Zeitpunkt des Zwischenberichts aktuelle Stand der Fertigungsarbeiten Abbildung 3 32 RAPTOR PG 524 Zwischenbericht 83 HARDWARE 84 PG 524 Zwischenbericht 4 Software Nachdem das zweite Kapite
159. nicht m glich Der ATMega32 besitzt jedoch einen integrierten Baustein USART f r serielle Kommunikation kann also eher einfach mit dem COM Port eines PCs verbunden werden Allerdings ist der direkte Anschluss nicht m glich Zwar verwendet der ATMega auch das RS232 Protokoll er verwendet dabei jedoch andere Pegelwerte RS232 und TTL Pegel Der serielle Port des PCs verwendet das RS232 Protokoll mit RS232 Pegeln e Ein logisches HIGH entspricht etwa 10V e Ein logisches LOW entspricht etwa 10V Auf der anderen Seite arbeitet der ATMega32 wie auch die meisten anderen ICs mit TTL Pegeln Transistor Transistor Logik e Ein logisches HIGH entspricht P5V e Ein logisches LOW entspricht ON Damit ATMega und PC trotzdem miteinander kommunizieren k nnen muss ein Pegel wandler verwendet werden Der MAX232 ist ein Standardbaustein f r diese Aufgabe Verdrahtung des MAX232 Im Testaufbau funktionierte nun folgende Verbindung e Der IC wird an die gleiche Stromversorgung wie der ATMega32 angeschlossen 15 GND 16 P5V PG 524 Zwischenbericht 57 HARDWARE e Zur Filterung sollte wieder ein 100nF Kondensator zwischen diese beiden Anschluss pins gesetzt werden e Zudem werden als Grundbeschaltung noch vier Kondensatoren ben tigt In verschie denen Quellen Datenbl ttern Tutorials Schaltpl nen findet man verschiedene Wer te z B 4 7uF oder 104F der detaillierte Wert ist also nicht so relevant ein Konden
160. nstellung des Waveform Generation Mode Wenn diese auf Normal Mode gesetzt sind z hlt der Z hler bis zu seinem Maximum von 16 Bit MAX OxFFFF und startet danach wieder bei 0 BOTTOM 0x0000 w hrend ein Overflow Flag gesetzt wird Dieser Modus ist aber zur Motorsteue rung ungeeignet da das Ereignis mit einem Interrupt abgefangen werden m sste wodurch eine Routine gestartet werden w rde die dann den Ausgang umschaltet Au erdem m sste der Z hlerstand manipuliert werden um die Pulsl nge zu ver ndern Da aber der Modus zu viel CPU Zeit beansprucht wird sogar vom Hersteller davon abgeraten ihn zu nutzen Des Weiteren gibt es noch einen Clear Timer on Compare Match Modus Hierbei bestim men die Register OCR1A oder ICR1 den maximalen Z hlerwert bei dessen Erreichen der Ausgang invertiert wird Somit ist es m glich direkten Einfluss auf die Frequenz der PWM zu nehmen und der eingestellte Wert entspricht dann dem Pulsweitenverh ltnis Der dritte Modus ist der Phase Correct PWM Mode Der Z hler z hlt hierbei von BOTTOM bis TOP und wieder von TOP zu BOTTOM zur ck Im nicht invertierenden Compare Out put Mode wird bei einem Matching zwischen TCNT1 und OCR1x beim Hochz hlen der Ausgang gel scht und beim Herunterz hlen gesetzt im invertierenden Modus dementspre chend entgegengesetzt Au erdem gibt es noch einen Phase and Frequency Correct PWM Mode welcher sich kaum von dem vorherigen Modus unterscheidet Viel interessanter f r das R
161. nter schiedlichen Geschwindigkeiten ansteuern so dass es auch m glich ist Kurven zu fahren motor _turn_left und motor _turn_right veranlassen den Roboter zu einer Linksdrehung bzw Rechtsdrehung Dabei drehen sich die R der in entgegengesetzte Richtungen In Zukunft wird der Roboter sogar in der Lage sein sich um einen bestimmten Winkel exakt zu drehen Die Implementierung folgt sobald wir am fahrenden Roboter testen k nnen 4 6 3 Inter Integrated Circuit Der Inter Integrated Circuit I C auch TIC oder Inter IC Bus ist ein serieller Zweidraht Bus der auf Grund seiner Vorteile heutzutage in vielen Systemen verwendet wird Als er vor etwa zwanzig Jahren von der Firma Phillips entwickelt wurde waren die Ziele mit m glichst wenig Adern auszukommen Damit konnten Pins an den ICs Leiterbahnen und somit auch wertvolle Fl che gespart werden Inzwischen hat sich dieser Bus zu einem Industriestandard in unz hligen Embedded L sungen entwickelt PG 524 Zwischenbericht 129 SOFTWARE Verwendung im Raptor Im Raptor wird der 12C Bus zur Kommunikation zwischen dem Gumstix dem ATMega32 Mikrocontroller und dem Kompassmodul CMPS03 verwendet e In Bezug auf den Mikrocontroller bietet 12C den Vorteil dass auf einen bestehenden Standard zur ckgegriffen werden kann und keine neuen Methoden zur Kommunikati on berlegt werden m ssen Als Alternative war vor bergehend der RS232 Standard im Blickfeld dieser h tte aber gro e Nach
162. oboter Je nach Ausstat tung und Saugleistung gibt es sie in unterschiedlichen Preisklassen zu kaufen Die Roboter werden immer leistungsf higer und mittlerweile statten die Hersteller diese auch mit ei nem Treppensensorsystem aus das verhindert dass der Roboter Treppen herunterf llt Weiterhin fahren die meisten Roboter ihre Ladestation eigenst ndig an wenn der Akku leer ist Einige Firmen bieten ferner eine Absaugstation zur Entleerung des Filters an Zur Hinderniserkennung dienen entweder Drucksensoren am Geh use oder Ultraschallsensoren EINLEITUNG Ein Ersatz fiir herk mmliche Staubsauger sind diese Roboter noch nicht Deshalb gibt es einige Ans tze die heutigen Staubsaugerroboter um wichtige Eigenschaften zu erweitern e Die Analyse des Verschmutzungsgrades e Das Erkennen von Menschen und Haustieren e Das S ubern von Ecken und R ndern Um die Erweiterungen zu realisieren k nnen die Mechanik bestimmte Sensoren und Al gorithmen vom c t Bot bernommen werden F r eine gen gende Rechenleistung sollte ein Embedded Linux Board benutzt werden Dieses ist eine vorgefertigte standardisierte Steuereinheit auf der ein Embedded Linux oder RTLinux zum Einsatz kommt 1 2 Ziel Die Projektgruppe soll in zwei Semestern einen autonomen mobilen Roboter entwickeln der als Staubsaugerroboter in einer Wohnung eingesetzt werden k nnte Allerdings braucht der Roboter keinen Saugmechanismus zu enthalten da die heutige Technologie in de
163. oi Diagramm V S von links in Richtung der Wellenfront W vergr ert Jetzt mu genauer darauf eingegangen werden wie sich die Wellenfront W w hrend eines Durchlaufes ver ndert 4 enth lt ein Applet das einen Durchlauf zeigt Erstens kommt es vor dass ein Wellenst ck aus W verschwindet weil es den Schnitt punkt seiner beiden Spikes erreicht In Abbildung 4 14 im dritten Teilbild ist diese Situa tion zu erkennen Die neu hinzugekommene Parabel wird sich in wenigen Schritten mit der Parabel des unteren Punktes verbinden so dass der letzte Rest des Wellenst ckes des linken oder ersten Punktes verschwindet und einen Voronoi Knoten erscheint Im weite 114 PG 524 Zwischenbericht VORONOI Abbildung 4 14 Drei Schritte der Berechnung eines Voronoi Diagramms ren Durchlauf des Algorithmus wird die Parabel des rechten dritten Punktes als alleinige Wellenfront W die Voronoi Kanten freilegen Zweitens k nnen neue Wellenst cke in W erscheinen Das passiert wenn die Sweep Line L auf einen neuen Punkt p trifft Beim ersten Aufeinandertreffen ist dieser Punkt p ein Teil der Sweep Line L und somit ist der Bisektor B p L eine senkrechte Linie auf der Sweep Line L durch den Punkt p siehe 1 2 Bewegt sich die Sweep Line Z ein St ck weiter nach rechts erscheint eine spitze Parabel siehe 3 Trifft diese Parabel nun auf die Wellenfront W werden die Wellenst cke die sich im inneren der Parabel befinden entfernt und die b
164. okumentation von Atmel e Mechanische Taster prellen Somit wird die Interruptsbehandlungsgroutine meist sehr schnell mehrfach hintereinander aufgerufen Da sie in diesem Falle lediglich Motoren ausschaltet die zu dem Zeitpunkt bereits ausgeschaltet sind erschien eine Entprell Routine nicht wirklich sinnvoll 3 2 7 12C auf dem Atmel Die ATMega Baureihe kann direkt an einen C Bus angeschlossen werden I C hei t bei Atmel TWI Two Wire Interface Als ein Test wurde der Kompass Sensor vom Atmel ausgelesen Da diese Aufgabe vom Gumstix bernommen wird wurde dies hier nicht do kumentiert und hatten auch einen Testaufbau in dem ein ATMega32 als Master einem anderen ATmega32 als Slave Daten zugeschickt hat Da das dort verwendete Programm auch mit einem auf Slave geschalteten ATMega32 und dem als Master verwendeten Gums tix funktioniert hat k nnte es die Grundlage f r den sp teren Datenaustausch zwischen Gumstix und ATMega werden Das im Anhang abgebildete Listing B 15 wurde leicht gek rzt Insbesondere wurden schon in vorherigen Kapiteln erw hnte Methoden nicht erneut definiert Die TWlIerror Methode dient nur dazu Statuswerte die nicht erwartet wurden anzuzeigen und den Programmablauf anschlie end zu stoppen Der TW I Interrupt wird nicht verwendet und das Programm ist nicht fehlerrobust Wie schon angemerkt soll es auch erstmal nur ein Beispiel sein 64 PG 524 Zwischenbericht HERSTELLUNG VON PLATINEN Timer Coun
165. ollte sichtbar sein Es d rfen keine Lackreste mehr vorhanden sein ansonsten muss der Vorgang wiederholt werden Ferner sollten die Platinen an den Kupferstellen gl nzen an denen der Fotopositivlack abgel st wurde Diese Stellen werden beim Eintauchen in das tzbad sofort matt was den beginnenden tzprozess zeigt Ist dies nicht der Fall muss die Entwicklung wiederholt werden Die fertig entwickelte Platine sollte dann auf unterbroche ne Verbindungen kontrolliert werden diese k nnen zum Beispiel mit einem wasserfesten Stift repariert werden 3 3 4 tzen Nach dem Entwickeln der Platine folgt das Weg tzen der freigelegten Kupferschicht Als tzmittel wurde Natriumpersulfat eingesetzt Das tzmittel muss vor Beginn mit Hilfe eines Heizstabes auf eine Temperatur von mindestens 40 Grad Celsius und h chstens 60 Grad Celsius gebracht werden Zus tzlich wird in den tzbeh lter von unten Luft geblasen um den tzvorgang zu beschleunigen Nach einer ungef hren Dauer von 5 10 Minuten ist die Platine fertig ge tzt und kann mit Wasser abgesp lt werden 66 PG 524 Zwischenbericht HAUPTPLATINE 3 3 5 S ubern und Versiegeln Nach dem tzen sind auf der Platine noch R ckst nde von Fotopositivlack vorhanden Dieser kann mit Spiritus entfernt werden Die ges uberte Platine wird abschliessend mit L tlack bespr ht Die Versiegelung verhindert die Oxidation der Leiterbahnen 3 3 6 Bohren Ist die mit L tlack behandelte Platine
166. ordinaten berpr fen Die f r den ermittelten Quadranten zust ndige Teildatenstruktur wird nun mittels eines Pointers bergeben Anschlie end wird der Betrag der Koordinanten ermit telt und dieser im Weiteren verwendet Der gro e Vorteil dieses Vorgehens ist es dass alle PG 524 Zwischenbericht 105 SOFTWARE nachfolgenden Schritte durch die gleichen Funktionen realisiert werden k nnen Es sind also keine Unterscheidungen der vier Quadranten notwendig Das einzige was hierbei zu bedenken ist ist der Aufenthaltsort der Hauptachsen Diese beinhalten alle Koordinaten in denen eine 0 vorkommt Hier muss entschieden werden welche Vectoren die 0 zugewiesen bekommen und in welchen Vectoren diese leer bleiben Im Detail geht es darum wo in der Quadrantermittlung in den If Bedingungen ein gt statt eines gt steht Der Vergleich der beiden M glichkeiten wurde anhand mehrerer Karten vorgenommen Dies sind zum Beispiel zuf llige Karten oder selbst konstruierte Es wird an dieser Stelle nicht auf Einzelheiten eingegangen da es sich nur um oberfl chliche Messungen gehandelt hat Es hat sich jedoch gezeigt dass bei vielen sequenziellen Abfragen auf gleichf rmigen bzgl der Ausma e Karten eine Leistungssteigerung von 30 Prozent realistisch ist In der Realit t treten in hohem Ma e lokal begrenzte Zugriffe auf welche empfindlicher gegen ber langsamen Zugriffen sind Zus tzlich wird mit unf rmigen Karten zu rechnen sein w
167. oter zu nutzen Hier kam es vor allem darauf an ein System zu finden welches neben allen von uns verwendeten Sensoren auch eine solide Community aufweisen kann Letzeres ist von gro er Bedeutung wenn eigene Plugins oder speziellen Einstellungen von N ten werden In solchen F llen steht eine breite Zahl von potentiellen Ansprechpartnern zu Verf gung Player Stage wurde unseren Anfor derungen voll gerecht Es handelt sich hierbei um eine Kombination aus zwei Systemen Zum einen den eigentlichen Simulator welcher den Namen Stage tr gt Dieser dient dazu eine k nstliche Umwelt zu erschaffen und darauf basierend die simulierten Sensoren mit Eindr cken zu versorgen Hierbei wird ein Simulationsserver gestartet der ber geeignete Clients angesprochen wird Der zweite Bestandteil von Player Stage der erwartungsgem Player hei t stellt eine API zur Verf gung welche die simulierte Hardware zug nglich macht Dies wird ber eine Client Software realisiert welche den bereits erw hnten Server von Stage anspricht Die Kombination dieser beiden Komponenten bef higt uns Software f r unseren Roboter zu entwickeln und testen ohne auf die von uns verwendete Hardware 34 PG 524 Zwischenbericht SOFTWARE zur ckgreifen zu m ssen So k nnen mehrere Teams gleichzeitig Bestandteile unserer Ro botersteuerung entwickeln Hierzu muss jedoch eine Vorbedingung erf llt werden der Zugriff auf den Simulator und unseren Roboter muss auf die exak
168. pToFile string dateiname Listing 4 17 Laden Speichern Die Funktionsnamen sind hierbei fast selbsterkl rend Die Methode loadGridMapFrom File l dt aus der angegebenen Datei eine Gitterkarte ein und saveGrid MapToFile sichert die aktuelle Karte in der Datei mit dem angegebenen Dateinamen Was sich nun sehr sim pel anh rt ist jedoch in der Implementierung etwas anspruchsvoller Es wurde ein neues Dateiformat entwickelt welches darauf ausgelegt ist eine effiziente Speicherung zu erzie len Die Effizienz bezieht sich hierbei vor allem auf die zum Laden Speichern notwendige Rechenleistung Da auf einem Embedded Computer gearbeitet wird ist dieser Faktor von enormer Bedeutung Die Speicherplatzfrage stellt durch die geringen Kosten f r zus tzli chen Speicher kein Problem dar Daher wurde ein unkomprimiertes Format entworfen Der zus tzlich n tige Overhead konnte auf 4 Byte reduziert werden Diese 4 Byte stehen am Anfang einer jeden gespeicherten Gitterkarte Sie geben an welche Breite die Gitterkarte aufweist Alle sonst ben tigten Informationen werden w hrend des Einlesevorgangs ermit telt Die H he der Gitterkarte ergibt sich beispielsweise aus der Breite sowie der Anzahl der Daten in der Datei Es werden also einfach solange komplette Zeilen eingelesen bis keine Daten mehr in der Datei zu finden sind Beim Speichern wiederum schreibt man solange ganze Zeilen bis die Gitterkarte komplett erfasst wurde Das Format der einzelnen Zel
169. r Schmutzerkennung mit einer geringen Aufl sung wie 320x240 Pixel schwer zu analysieren 2 2 Software Auch wenn auf viele bereits exisitierende Softwaresysteme zur ckgegriffen werden konnte waren nicht f r alle Anforderungen fertige L sungen vorhanden Im Folgenden wird be schrieben in welchen Bereichen vorgefertigte Anwendungen zum Einsatz kamen und an welchen Stellen eigene Software erstellt werden musste Dies stellt jedoch nur einen kurz en berblick dar welcher einen Eindruck ber unsere Vor berlegungen zu diesem Thema geben soll Detaillierte Beschreibungen finden sich sp ter in diesem Dokument Kapitel 4 an den Stellen an denen auf die konkrete Umsetzung eingegangen wird Vorweg sei noch erw hnt dass bei der verwendeten Programmiersprache die Entschei dung auf C C fiel Diese bietet zum einen aufgrund seines objekt orientierten Ansatzes PG 524 Zwischenbericht 33 GRUNDLAGEN eine gute Basis f r parallele Arbeiten an unseren Softwareprojekten Zum anderen l t sich eine effiziente hardwarenahe Implementierung erreichen Au erdem gibt es noch einen wei teren Grund ber den Rahmen der Projektgruppe hinaus welche f r C spricht Diese Sprache hat sich in allen Bereichen der Softwareentwicklung etabliert Es existieren um fangreiche Dokumentationen zu diesem Thema was uns dabei behilflich sein wird guten Code zu schreiben der sich leicht warten und korrigieren l t 2 2 1 Buildroot Bei Buildroot h
170. rartig kleiner Bauform noch keine ausreichende Reinigungsleistung erreicht Auf Grund dessen soll die mechanische Konstruktion auf das zur Fortbewegung Notwendige reduziert werden Zugleich kann damit mehr Zeit in die Softwareentwicklung und Strategieplanung investiert werden Der Staubsaugerroboter RAPTOR hat folgende Besonderheiten e Der Verschmutzungsgrad des Bodens soll mit Hilfe eines Kameramoduls erkannt wer den Da gr tenteils immer dieselben Stellen in einem Raum besonders verschmutzt sind soll der Roboter immer direkt dorthin fahren Mit Hilfe dieser Strategie kann so schnell ein gepflegtes Gesamtbild der Wohnung erreicht werden Der Roboter soll einen Ausschnitt des Bodens fotografieren anschlie end staubsaugen und noch ein mal fotografieren um dann durch eine Analyse der Bilder den Verschmutzungsgrad in diesem Abschnitt zu bestimmen Da der RAPTOR keinen Saugmechanismus enth lt m ssen die Teilnehmer der Projektgruppe das Staubsaugen mit anderen Hilfsmitteln bernehmen e Menschen und Haustiere sollen mittels Sensoren erkannt werden damit diese recht zeitig umfahren werden k nnen und das Staubsaugen nicht als St rung empfunden wird e Der Roboter soll eine gr ndliche Reinigung der Ecken und R nder von M bel und Tischen in einem Raum gew hrleisten Dies setzt eine Software voraus die in der Lage ist Ecken und R nder zu erkennen Ferner wird die Hardware ben tigt die in der Lage ist ein nahes Heranfahren an Hinderni
171. rbei be deutet true dass es sich um ein Feld am Rande eines Objektes handelt und false dass es von allen Seiten von Feldern des gleichen Objektes umschlossen wird m_sondereigenschaft Bei dieser Eigenschaft handelt es sich um einen Integer der tem por r Informationen speichern kann Diese Informationen d rfen nicht wichtig sein da es jeder Funktion frei steht diese zu ndern Daher kommt sie auch meist nur in Testumgebungen zum Einsatz um bei der Fehlersuche zu helfen Aber auch zur tempor ren Unterst tzung von h heren Funktionen wird diese Eigenschaft verwen det Ein Beispiel ist hierbei die Routenplanung aus Abschnitt 4 2 1 W hrend dieses Vorgangs wird innerhalb der Variable m_sondereigenschaft eine Sch tzung der Ent fernung vom Startpunkt der Route gespeichert Im folgenden werden diese Daten ausgewertet und sind dann nicht mehr von Interesse Ein anderes Einsatzgebiet ist die grafische Ausgabe der Karte Hierbei k nnen zus tzliche Informationen im Vor feld der Ausgabe in diese Variable geschrieben werden welche dann bei der Ausgabe als Bitmap Datei ber cksichtigt werden 108 PG 524 Zwischenbericht VORONOI Abbildung 4 8 Descartes Zerlegung des Raumes 14 4 3 Voronoi In diesem Kapitel wird ber die wichtige Rolle des Voronoi Diagramms in der Geometrie gesprochen die in der Informatik Anwendung findet Zuerst werden auf historische berlegungen eingegangen dann das Voronoi Diagramm defin
172. rden welche Besonderheit der Haushaltsroboter haben wird ohne dabei L sungen und Eigenschaften zu beschreiben Die Bewertungskriterien der Jury die sich im Wesentlichen aus Vertretern von Unternehmen und Universit ten zusammensetzt sind e Originalit t in der Probleml sung Neuheit gegen ber dem Stand der Technik Anwendernutzen und Verwertbarkeit im Markt e Effizienz Praktischer Nutzen zum technischen Aufwand Sorgfalt in der inhaltlichen und formalen Ausf hrung Pr sentation 1 3 Vorgehensweise Die Projektgruppe 524 findet im Wintersemester 2007 2008 und im Sommersemester 2008 mit zw lf studentischen Teilnehmern am Lehrstuhl 12 der Fakult t Informatik der Tech nischen Universit t Dortmund statt Betreut wird das Projekt von den wissenschaftlichen Mitarbeitern Olivera Jovanovic und Robert Pyka des Lehrstuhls 12 f r Technische Infor matik und Eingebettete Systeme Unter der URL http 1s12 www cs tu dortmund de raptor ist der Internet auftritt der Projektgruppe zu finden F r eine bessere Organisation verfolgen die Teilnehmer die Ziele der Projektgruppe in zwei Teams Hardwaregruppe Sariette Bille Omar Bousbiba Daniel Etges Igor Ionov Selma Jabour Yi Lin und Samir Rachidi Softwaregruppe Ender Ayalp Oliver Jokiel Dominik Kopczynski Markus K nne und Daniel Richter 1 3 1 Hardwaregruppe Kapitel 2 1 beschreibt die Auswahl der Hardwareelemente die die Hardwaregruppe in den Anfangswochen der Projektgr
173. re Es werden beim Raptor verschiedene Hardware Komponenten wie zum Beispiel Ultra schallsensoren Kompass und Radencoder verwendet Diese werden mittels des ATMega Mikrocontrollers siehe Kapitel 3 2 eingebunden und angesteuert Doch andere Hardware komponenten wie der WLAN Stick oder die WebCam verf gen ber eine USB Schnittstelle so dass sie direkt am Gumstix angeschlossen werden k nnen Anhand des Beispiels einer WebCam wird gezeigt wie Hardware direkt am Gumstix eingebunden und angesprochen werden kann Als erstes werden die richtigen Linux Treiber f r die WebCam ben tigt Der Raptor hat eine Logitech Quickcam Express also wird der Treiber GSPCA SPCA5xx als Quellcode ben tigt Zuerst muss wie in Abschnitt 4 1 6 beschrieben der Treiber cross kompiliert werden Hierf r wird im gumstix buildroot Verzeichnis ein Ordner angelegt und der Treiber in den Ordner eingef gt F r die Videofunktionen ist wichtig dass die entsprechenden Bibliothe ken auf dem Entwicklungsrechner installiert sind In diesem Fall muss die Bibliothek VAL Video for Linux vorhanden sein Um das cross compiling erfolgreich durchzuf hren muss noch eine nderung im Makefile des Treibers vorgenommen werden Die Zeile KERNELDIR lib modules KERNEL_VERSION build Listing 4 10 Makefile muss durch folgende Zeilen ersetzt werden 90 PG 524 Zwischenbericht GUMSTIX KERNELDIR gumstix buildroo
174. ressourcen f r andere Bauteile weg Auf der anderen Seite d rfen die Motoren nicht zu schwach sein dadurch w re der Roboter nicht mehr in der Lage sich fortzubewegen Klare Schrittweiten und oder pr zise Geschwindigkeiten erm glichen es den zur ckge legten Weg relativ exakt zu bestimmen sowie die Fahrt grader Strecken zu realisieren Der Motor sollte auch pr zise halten k nnen wenn die Abstandsensoren einen Abgrund erfassen um das Runterfallen des Roboters zu vermeiden Das Drehmoment der Motoren bestimmt die Fortbewegung Ein geringer Drehmoment in Kombination mit hoher Last f hren zu einer berlastung des Motors bzw Motortreibers Es existieren Motortreiber L293D die bei berhitzung abschalten Dadurch besteht aber das Problem dass der Roboter st ndig stehen bleibt F r fahrende Roboter kommen nur zwei Motoren in Frage und zwar Getriebemotoren oder Schrittmotoren Im Roboterprojekt werden Getriebemotoren eingesetzt da sie zu den einfachsten kleinsten und universellsten Motoren z hlen Diese Motoren eignen sich be sonders gut zur Konstruktion von flinken wie auch langsamen Robotern Es k nnen aber nur Roboter bis zu 5kg Gewicht angetrieben werden Die Motorsteuerung f r den Getrie bemotor ist relativ einfach Es gibt zwei Anschl sse welche mit jeweils unterschiedlicher Polarit t belegt werden um den Motor laufen zu lassen Je nach Richtung des Stromflus ses dreht sich der Motor entweder vorw rts oder r ckw rts Die
175. rt angeschlossen werden Mit dem Befehl minicom s wird auf dem angeschlossenen Rechner das Konsolenprogramm gestartet das einem Zugriff auf die Konsole des Gumstix erm glicht Doch zuerst m ssen im Men folgende Parameter eingestellt werden e Serial Device dev ttyS0 e Bps Par Bits 115200 8N1 e Hardware Flow Control No e Software Flow Control No Nachdem die Daten gespeichert sind und die Konfiguration verlassen wurde muss die Gumstix Konsole mit minicom o gestartet werden Um in den Bootloader zu kommen muss sofort nach dem Einschalten des Gumstix eine Taste gedr ckt werden Wenn ein Gum gt erschient hat der Vorgang geklappt Zuerst muss das Dateisystems geflasht werden indem das Image des Dateisystems auf den Gumstix kopiert wird Hierf r wird zun chst das Empfangsprogramm des Bootloaders mit 88 PG 524 Zwischenbericht GUMSTIX dem Befehl loady a2000000 gestartet Dieser Befehl sorgt daf r dass die ber den seriellen Port empfangenen Daten im Speicher an die angegebene Adresse welche sich im RAM be findet geschrieben werden Als n chstes m ssen nat rlich auch die Daten an den Gumstix gesendet werden Dies geschieht mittels einer Funktionalit t in Minicom Mit CRTL J A kommen wird der Men modus ge ffnet Durch Dr cken der Taste S wird in das Kommu nikationsmen gewechselt Hier yModem ausw hlen In dem nun auftauchenden Dialog das Dateisystem Image ausw hlen welches durch Kompilieren
176. s 200 96 97 ich bin bereit 98 TWCR 1 lt lt TWEN 1 lt lt TWEA 1 lt lt TWINT 99 ich bin bereit 100 while TWCR amp 1 lt lt TWINT 101 warte auf Anforderung 102 if TWSR amp 0xf8 TW_SR_DATA_ACK 103 TWIerror TWSR 104 uart_puts n rDaten 105 zaehler TWDR 106 uart_puts ltoa zaehler s 10 107 gibt die empfangenen Daten 108 109 ich warte noch auf stopp 160 PG 524 Zwischenbericht C BEISPIELPROGRAMME F R DEN ATMEGA32 110 TWCR 1 lt lt TWEN 1 lt lt TWEA 1 lt lt TWINT 111 ich warte noch auf stopp 112 while TWCR amp 1 lt lt TWINT 113 warte auf Anforderung 114 if TWSR amp 0xf8 TW_SR_STOP 115 TwIerror TWSR 116 uart_puts n rStopp erhalten 117 118 ich bin wieder bereit 119 TWCR 1 lt lt TWEN 1 lt lt TWEA 1 lt lt TWINT 120 ich bin wieder bereit 121 122 123 return 0 124 Listing B 15 TWI Kommunikation 1 volatile uint16_t zeiter 2 Z 3 zeiter muss als volatile definiert sein 4 x damit die Interruptroutine die 5 x Variable aendern kann 6 T 8 9 int main sei 10 Programm fuer Ultraschall 11 Ich verwende Timer0 normal mode WGM01 WGM00 0 12 und der OCO Pin ist nicht verbunden COMO1 COMO0 0 13 TIMSK 1 lt lt TOIEO 14 Z 15 x aktiviert ein
177. s Empf nger besitzt Damit kann auf kurze Entfernung das reflektierte Licht der IR LED durch den IR Fototransistor gemessen wer den Die Menge des reflektierten Lichts bestimmt ob der Fototransistor mehr oder weniger leitend wird Die Reichweite des Sensors betr gt nur wenige Millimeter St rungen durch Fremdlichteinstrahlung sind eine m gliche Fehlerursache Radencoder Mit Hilfe seiner beiden Radencoder kann der RAPTOR die zur ckgelegte Wegstrecke be stimmen eine bestimmte Strecke geradeaus fahren sowie sich um einen bestimmten Win kel drehen Auf der Innenseite der R der sind Encoderscheiben aufgeklebt Auf ihnen sind insgesamt 30 schwarze und 30 wei e Streifen im Wechsel kreisf rmig angeordnet Ein Ra dencoder besteht aus einem Lichtsensor dem CNY70 der so am Roboter angebracht ist dass er auf die Streifen der Encoderscheiben zeigt Der Lichtsensor erzeugt analoge Si gnale Sie werden f r die weitere Verarbeitung durch den Mikrocontroller mit Hilfe eines Schmitt Triggers in digitale Signale umgesetzt Ein Schmitt Trigger erzeugt aus einem ana PG 524 Zwischenbericht 23 GRUNDLAGEN Abbildung 2 12 Der Lichtsensor CNY70 26 Top view Marking aerea 25 10930 Abbildung 2 13 Steckerbelegung des CNY70 26 24 PG 524 Zwischenbericht HARDWARE logen Eingangssignal eindeutige digitale Schaltzust nde Aufgrund dessen reicht es wenn der Mikrocontroller nur noch die Flank
178. s Ende eines Kommunikationspaketes Der Bus ist somit wieder frei f r die n chste Kommunikation Repeated Start Wenn ein Master zwar eine Kommunikation beenden aber sofort eine neue beginnen m chte ohne den Bus freizugeben so kann er statt der Stoppbedin gung auch eine erneute Startbedingung senden Dies wird dann als Repeated Start bezeichnet In der Praxis ist solch ein Vorgehen sinnvoll weil eine Einzelkommunika tion nur lesend oder schreibend sein kann jedoch keine Mischung davon Wenn also ein Master zun chst ein Datum schreiben und dann vom gleichen Slave ein Datum le sen m chte so ist es zu empfehlen nicht erst den Bus freizugeben Dieser gemischte Zugriff mag zun chst unsinnig erscheinen allerdings m chte der Master dem Slave oftmals mitteilen welches Datum z B Register er lesen m chte Hier ist also ein vorheriger Schreibzugriff n tig Sa SDA SDA SCL SCL Startbedingung Stoppbedingung Abbildung 4 21 Start und Stopp Bedingung 23 Sollten zeitgleich mehrere Ger te versuchen eine Kommunikation zu beginnen und Mas ter auf dem Bus zu werden so werden die beiden oder mehr Ger te diese Kollision er kennen und durch eine Arbitrierung einen einzigen Master ermitteln Im Raptor wird aus schlie lich der Gumstix die Master Rolle bernehmen so dass es hier nicht zu Kollisionen kommen kann Somit w re auch die Idee des Repeated Starts zu vernachl ssigen
179. sator zwischen Pinl und Pin3 der Minus Pol geht an Pin3 ein Kondensator zwischen Pin4 und Pin5 der Minus Pol geht an Pin5 ein Kondensator zwischen Pin2 und GND der Minus Pol geht an GND ein Kondensator zwischen Pin6 und GND der Minus Pol geht an Pin6 e Datenverkehr vom Atmel zum PC Abbildung 3 14 ATMEL TxD Pin15 gt MAX232 TlIn Pin11 Am MAX232 Umwandlung in RS232 Pegel MAX232 T10ut Pin14 gt PC RxD Pin2 e Datenverkehr vom PC zum Atmel PC TxD Pin3 gt MAX232 RlIn Pin 13 Am MAX232 Umwandlung in TTL Pegel MAX232 R1Out Pin12 gt ATMEL RxD Pin14 MAX232 R2IN R20UT RIIN RIOUT T20UT T2IN TIOUT TIIN C2 C1 C1 Abbildung 3 14 Verbindung zwischen AT Mega und PC nur Basis Ausgabe im Basic Programm Bascom erwartet eine weitere Direktive baud anschlie end funktioniert die Ausgabe unkompliziert ber den print Befehl Siehe Listing B 8 Verbindung am PC Am PC wird nun das bevorzugte Terminalprogramm verwendet beispielsweise minicom unter Linux oder HyperTerminal unter Windows Dabei ist zu beachten dass eine Fluss kontrolle mit Hardware nicht m glich ist 58 PG 524 Zwischenbericht ATMEGA Auslesen des Ultraschallsensors unter Basic Nachdem die Experimente mit der BreakoutBox am Ultraschallsensor gescheitert sind sollte der Mikrocontroller bessere Ergebnisse liefern Das dazugeh rige Listing B 9 wur de fast 1 1 der Sensor
180. sie scheint aber dennoch eine gewisse Programmier sthetik zu beinhalten 132 PG 524 Zwischenbericht ATMEGA32 Best tigung von Daten Ein Datenpaket besteht immer aus 8 Bit Nachdem der Sender diese 8 Bit bermittelt hat folgt noch ein weiterer SCK Impuls in diesem Impuls greift der Sender nicht schreibend auf die SDA Leitung zu statt dessen obliegt es der Verantwortung des Empf ngers den SDA Pegel auf GND zu ziehen nat rlich wieder bevor auf der SCK Leitung die anstei gende Flanke erscheint das ACK Bit Acknowledge ist in diesem Falle ein Bit wie jedes andere auch Dieses ist dann die Best tigung dass der Empf nger die Daten erhalten und gespeichert hat Abbildung 4 22 Daten vom Sender Daten vom Empf nger SCL 1 2 8 9 E La ee Start Best tigung bedingung Acknowledgment Abbildung 4 22 Der Empf nger quittiert den Empfang eines Paketes indem er die SDA Ader beim 9 Bit auf Null zieht 23 Wenn der Empf nger den SDA Pegel ebenfalls HIGH l sst so ist das f r den Sender ein Zeichen dass der Empf nger die Daten nicht oder nicht richtig erhalten hat Wie in diesem Falle zu verfahren ist ist von der Software abh ngig Allerdings tritt dieser NACK Fall Not ACK Not Acknowledge nicht nur bei Fehlern auf sondern auch wenn der Empf nger keine weiteren Daten erhalten will Dieser Fall tritt beispielsweise bei dem im Raptor verwendeten Kompassmodul auf Nachdem es adressiert und
181. sisch seriell parallel oder USB ist der Anschluss auf der anderen Seite standardisiert Zwar gibt es auch hier noch verschiedene Bauformen e Die Firma Atmel definiert eine Belegung an einer sechspoligen Buchsenleiste Diese findet sich auch am AVRISP mklIl e In vielen Pl nen im Netz wird von einer zehnpoligen Buchsenleiste ausgegangen F r PG 524 Zwischenbericht 51 HARDWARE Abbildung 3 11 AVRISP mkIl unser Programmierger t diese l sst sich einfacher Anschlusshardware finden Daher hat sich dieser Anschluss als ein Standard der Hobbybastler etabliert e In manchen Anwendungen wird ein neunpoliger D Sub Stecker D shaped subminia ture verwendet oftmals dient er zur bergabe auf eine zehnpolige Buchsenleiste Im Wesentlichen sind dort aber immer die gleichen Signale enthalten Tabelle 3 2 listet die verschiedenen Pinbelegungen sowie den Anschluss am ATMega und die Verbindungen zum Bustreiber IC bei einem selbst gebauten Programmer mit Bustreiber 22 auf Die Details werden sp ter noch erl utert Belegung ATMega 6 pol Wanne 10 pol Wanne 9 pol DSub IC MISO T 1 9 5 11 VCC z B 10 2 2 6 20 abgesichert SCK 8 3 7 4 12 14 MOSI 6 4 1 1 18 Reset 9 5 5 3 3 5 7 GND z B 11 6 4 6 8 10 7 8 9 10 LED n a n a 3 2 16 Tabelle 3 2 Die Pinbelegung verschiedener Stecker Um die verschiedenen Adern eines Kabels an einer Buchsenleiste zu identifizieren muss der
182. sse zu erm glichen damit auch dort der Schmutz entfernt werden kann 8 PG 524 Zwischenbericht ZIEL Die mechanische Realisierung kann vom c t Bot weitestgehend bernommen werden Da der Durchmesser des c t Bots nur 12cm betr gt m ssen seine Komponenten f r den RAP TOR angemessen skaliert werden Anstelle des Mikrocontrollers wird ein Embedded Li nux Board benutzt um eine ausreichende Rechenleistung f r die vorgestellten Erweiterun gen sicherzustellen Damit steht den Teilnehmern der Projektgruppe eine fertige Entwick lungsumgebung zur Verf gung Um neben den Infrarotsensoren auch Ultraschallsensoren Navigations und Ortungssensoren anschlie en zu k nnen besitzt das Board vielf ltige I O Anschl sse Der Roboter sollte selbstst ndig nach einer von der Projektgruppe ausgew hl ten Strategie den Raum beziehungsweise auch mehrere R ume wenn m glich erkunden und eine Karte erstellen Au erdem sollte er in der Lage sein sich selbst zu lokalisieren Zus tzlich soll eine graphische Kontroll und Steuerungsschnittstelle implementiert werden Mit Hilfe dieser Schnittstelle werden Parameter wie beispielsweise der Akkuladestand die Sensorwerte und das aktuelle Kamerabild des Roboters berwacht und die graphisch auf bereitete Darstellung des Raummodells zug nglich gemacht Die Kommunikation mit dem Roboter erfolgt funkbasiert Das ausgew hlte Embedded Linux Board stellt eine WLAN kompatible Schnittstelle zur Verf gun
183. ssen sollte ein externer Quarz verwendet werden Auf Hardware Seite wird ein Quarz Baustein zwischen die XTAL Leitungen Pin 12 und Pin 13 gesetzt zus tzlich werden die beiden Leitungen ber einem Kondensator z B 22pF mit GND verbunden Damit der Controller nun nicht mehr seinen internen sondern diesen externen Taktge ber verwendet muss ein sogenanntes Fuse Bit umgesetzt werden Das AVR Studio verf gt 56 PG 524 Zwischenbericht ATMEGA ber einen eigenen Dialog zum Setzen der Fuse Bits welcher ber das Registertab Fu ses ausgew hlt werden kann wenn die Verbindung zum Mikrocontroller hergestellt wurde siehe auch Kapitel 3 2 2 Leider verf gt der Controller ber eine Menge von Fusebits und Konfigurationsm glichkeiten und auch das entsprechende Kapitel im Datenblatt ist kei neswegs als trivial zu bezeichnen F r einen einfachen schnellen Quarz Wir haben 16MHz verwendet funktionierte die Einstellung CKSEL 1111 und SUT 01 ganz gut Damit der Compiler nun auch diese h here Taktrate mit in seine Berechnungen aufneh men kann zum Beispiel bei Warteschleifen erwartet er die Angabe der korrekten Taktrate Dies geschieht in BasCom ber crystal 16000000 Verbindung zum PC In sp teren Experimenten wurden doch mehr Debug Ausgaben n tig als eine Leuchtdiode bieten konnte Auf die Kommunikationsverbindung konnte daher nicht mehr verzichtet werden Leider ist eine solche Ausgabe ber den Programmieradapter
184. t dass der HighPegel permanent 86 x auf 1 gesetzt ist 87 ef 88 wait High_Takt 0 89 90 else 91 92 wait High_Takt 1 93 Sleep Low_Takt 94 95 Listing B 19 Header Datei 1 finclude lt stdio h gt 2 include K 2 H 3 int main int argc char argv 4 5 K PWM 6 printf Starting Countdown 0 T while 1 8 9 10 x Gibt in Prozent an wie schnell der 1l x Signalwechsel von High auf LOW erfolgt 12 x in dem Bsp betr gt der Signalwechsel 13 x von High auf Low bzw Low auf High 50 14 x 15 PWM pwm_singal 5 16 17 return 0 18 Listing B 20 Main Programm PG 524 Zwischenbericht 173 QUELLTEXTE 174 PG 524 Zwischenbericht Abbildungsverzeichnis 2 1 22 2 3 2 4 2 9 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2 17 2 18 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 3 11 3 12 3 13 3 14 3 15 3 16 gumstix verdex XL6P 11 A eer eer ae eer console KEE netwinimicros DEU lll as e al ad Y re da ais Der Ultraschallse sor SREOS 8 3 2 22 2322 ca td Anschl sse f r seperaten Trigger und Echo Pin 8 Anschl sse f r gemeinsamen Trigger und Echo Pin 8 Zeitdiagramm vom Modus 1 8 aura Bes a ee Zeitdiagramm vom Modus 2 8 coords ds Richtwirkung des Sensors It te Dr Der Mieroschalter MBF5B D es 2 e dae cara E Anschl sse des Kontaktsensors 2 Der Lichtsensor CNY70 26 e
185. t 5V von der Spannungsquelle ii 47kOhm LC 47kOhm C Mr Ni OOO Abbildung 3 15 Realisierung der Hauptplatine Kompasssensor und Gumstix 3 4 4 Reset Es ist m glich den Roboter durch einen Taster neu zu starten Abbildung 3 16 zeigt wie dieser an den invertierenden RESET Pin des Mikrocontrollers angeschlossen ist Ist der Taster gedr ckt wird GND durchgeschaltet und der Vorgang ausgel st Uber einen 10 0 PullUp Widerstand bekommt der Taster eine Spannung von 5V Dies ist n tig damit er bei unbeschaltetem Zustand einen HIGH Pegel hat und sich nicht zur cksetzt Der Kondensator hat eine Kapazit t von 100nF 3 4 5 Radencoder Abbildung 3 17 zeigt den Schaltplan der beiden Radencoder An die Pads werden die Lichtsensoren angeschlossen d h jeweils ein Pad rechts und links pro Sensor Da die Bau elemente CNY70 sich sehr nah an den Drehscheiben der R der befinden m ssen wurde f r jeden dieser Sensoren eine gesonderte Platine erstellt Der Schaltplan A 8 hierzu befindet sich im Anhang Die Vorwiderst nde der IR LED des CNY70 besitzen 1000 Die Wi derst nde f r den IR Fototransistor haben 6809 Die beiden Pullup Widerst nde vor den beiden invertierenden Schmitttriggern betragen 47k0 Sie sind an die 5V Spannungsquelle 70 PG 524 Zwischenbericht HAUPTPLATINE 10kOhm C 100nF 13838 Abbildung 3 16 Realisierung der Hauptplatine Reset angeschlossen Die beiden Schmitttrigg
186. t build_arm_nofpu linux 2 6 21gum BUILD_ARM gumstix buildroot build_arm _nofpu CROSS_COMPILE BUILD_ARM staging_dir bin arm linux Listing 4 11 Makefile Jetzt muss die Zeile S MAKE C S KERNELDIR SUBDIRS S PWD CC CC modules Listing 4 12 Makefile durch MAKE C S KERNELDIR SUBDIRS PWD ARCH arm CROSS_COMPILE CROSS_COMPILE modules Listing 4 13 Makefile ersetzt werden Dadurch bekommt der Compiler die Informationen wo sich der Kernel befindet und um welche Architektur es sich handelt Erneut kann durch den make Befehl in einer Konsole der Quellcode kompiliert werden Es entsteht eine ko Datei in diesem Fall das Kernel Modul gspca ko Diese und die 3 zus tzlich in Listing 4 14 aufgef hrten Dateien m ssen nun auf den Gumstix kopiert werden und zwar ins Verzeichnis lib modu les 2 6 21gum kernel drivers media video Zum Schluss muss in der Datei etc modules der Name des neuen Moduls hinzugef gt werden erkennbar in Listing 4 15 Nach einem Neustart des Gumstix sollte die WebCam nun einsatzbereit sein gspca ko gumstix buildroot build _arm _nofpu root lib modules 2 6 21gum kernel drivers media video videodev ko gumstix buildroot build _arm _nofpu linux 2 6 21gum drivers media video v411 compat ko gumstix buildroot build _arm _nofpu linux 2 6 21gum drivers media video v412 common ko
187. t die Leitung auf LOW gezogen hat Umgekehrt lesen alle Ger te einen HIGH Pegel wenn kein Ger t die Leitung auf LOW zieht G ltigkeit von Daten Grunds tzlich gilt dass ein Bit auf der SDA Leitung nur dann g ltig ist wenn es w hrend eines gesamten SCK Impulses konstant bleibt Wenn der Taktgeber selbst die Daten auf den Bus legt so wird er sicherlich selber darauf achten Wenn der Datengeber aber nicht gleich dem Taktgeber ist so darf er seinen Pegel nicht zwischen der steigenden Flanke und der fallenden Flanke auf der SCK Ader ndern Abbildung 4 20 Eine Ausnahme von dieser Regelung sind die Start und die Stopp Bedingung die gerade dadurch zu erkennen sind dass der SDA Pegel w hrend eines SCK Impulses ge ndert wird Abbildung 4 21 130 PG 524 Zwischenbericht ATMEGA32 Device 1 Device 2 Device 3 Device n SDA SCL Abbildung 4 19 Anbindung von Ger ten am C Bus 23 SDA darfsich ndern SDA SDAkonstant SCL Bit g ltig Abbildung 4 20 SDA darf sich w hrend eines SCK Impulses nicht ndern 23 PG 524 Zwischenbericht 131 SOFTWARE Startbedingung Zieht ein Ger t die SDA Leitung auf GND obwohl SCK auf HI liegt zum Beispiel zwischen einzelnen Kommunikationspaketen so signalisiert es damit dass es zum Master auf dem Bus werden und eine Kommunikation beginnen m chte Stoppbedingung Ein ansteigender SDA Pegel bei SCK Leitung auf HI Niveau signalisiert da
188. t gleiche Art und Weise m glich sein Hierzu haben wir eine eigene API definiert welche die Hardware unseres Roboters abstrahiert Im Folgen den wird diese n her betrachtet Diese API muss nun auch den Simulator abstrahieren was bereits umgesetzt wurde Erste Tests der Funktionsf higkeit stehen noch aus aber wir sind zuversichtlich dass wir auf dieser Basis mit hoher Geschwindigkeit unsere Software entwicklung vorantreiben k nnen um am Ende ein leistungsf higes System bereitstellen zu k nnen 2 2 3 Application Programming Interface Wie bereits erw hnt haben wir eine API definiert um uns bei vielen Aspekten der Soft wareentwicklung Schwierigkeiten zu ersparen Diese hat zur Aufgabe die Hardware unseres Roboters zu abstrahieren Dies trennt auf einfache Art und Weise die hardwarenahen und hardwarefernen Softwarebestandteile So kann die zugrundeliegende Hardware effizient an gesprochen werden und Eigenheiten dieser werden schon auf einer sehr fr hen Ebene aus geglichen Sie wird bei der Fehleranalyse von gro em Vorteil sein da solche Aspekte nicht mehr betrachtet werden m ssen Zudem wird die API dabei behilflich sein die Entwick lung der h heren Funktionen parallel vor zu nehmen Dies wird durch den ber die API ansprechbaren Simulator siehe 4 4 erreicht In Abbildung 4 18 ist die von uns entwickelte API zu sehen Wir haben uns bei dem De sign bem ht uns auf wenige Funktionen zu beschr nken Es sollten Abfragen von Werten
189. t wird zun chst auf eine transparente Folie gedruckt Danach kann die Platine ohne Abziehen der Schutzfolie auf die richtige Gr e zugeschnitten werden Mit der be druckten Seite nach unten kann das Layout auf die Platine inzwischen ohne Schutzfolie gelegt werden Bei zweiseitigen Platinen werden die beiden Layoutfolien zuerst bereinan der gelegt und anschliessend mit Tesafilm an den Seiten fixiert Die zurechtgeschnittene Platine kann zwischen die Folien geschoben werden Das Layout und die Platine wird auf die Glasplatte des Belichtungsger tes gelegt Um m gliche Fehlerursachen zu vermeiden muss darauf geachtet werden dass das Layout bei diesem Vorgang nicht verrutscht und die Glasplatte sauber ist Die Vakuumpumpe des Belichtungsger tes sorgt daf r dass das Layout nicht verrutschen kann Der Deckel des Belichtungsger tes kann anschliessend ge schlossen werden um die Platine eine angemessene Zeit zu belichten In Abh ngigkeit von dem verwendetem Belichtungsger t sowie der verwendeten Epoxid Platine ergibt sich eine optimale Belichtungsdauer von 2 Minuten und 30 Sekunden 3 3 3 Entwicklung Nach der Belichtung kann die Platine entwickelt werden um die belichteten Lackteile abzul sen Dazu wird eine Natriumhydroxid L sung mit einem Mischungsverh ltnis von 1 100 verwendet Die Platine kann nach etwa einer halben Minute aus der L sung genom men und anschliessend mit Wasser abgesp lt werden Das komplette Layout der Platine s
190. teile im Bereich der Geschwindigkeit ge habt Au erdem besteht so die M glichkeit den UART Port des Mikrocontrollers f r Debug Ausgaben oder andere Anwendungen zu nutzen Ein zus tzlicher Vorteil ist dass beide Bausteine Anschl sse f r den Bus anbieten und das Protokoll direkt unterst tzen e In Bezug auf den Kompass bietet I C den Vorteil dass die Orientierung direkt aus gelesen werden kann und nicht erst aus einem PWM Signal ermittelt werden muss Da der Kompass direkt an den C Bus angeschlossen wird m ssen daf r keine zus tzlichen Pins am Mikrocontroller oder am Gumstix belegt werden Die Technik Der Bus verwendet zwei Leitungen Eine Leitung SCK Serial Clock wird f r die Tak tung verwendet die andere Leitung SDA f r die eigentliche Daten bertragung Beide Leitungen werden ber Pull Up Widerst nde auf einem hohen Spannungspegel gehalten In vielen Anwendungen sind dies P5V im Raptor erzwingen die Spezifikationen des Gums tix allerdings einen Pegel von 3 3V Weder der Mikrocontroller noch das Kompassmodul hatten damit Probleme Diese beiden Leitungen sind parallel an die entsprechenden Anschl sse der Bus Ger te angeschlossen somit sind also alle SDA Pins aller Ger te miteinander verbunden Abbil dung 4 19 Die Kommunikation zwischen den Ger ten geschieht nun dadurch dass Ger te diese Leitungen auf GND ziehen Durch die implizite Verundung lesen alle Ger te einen LOW Pegel wenn auch nur ein Ger
191. ter des ATMegas Der ATMega32 hat verschiedene eingebaute Timer Counter Diese k nnen beispielswei se f r eine Pulsweiten Modulation verwendet und zur Ansteuerung eines Motortreibers genutzt werden In diesem Beispiel soll dokumentiert werden wie Timer CounterO zur Im pulsmessung am Ultraschallsensor genutzt werden kann Um Pins einzusparen wurde hier bei schon der gemischte 1 Pin Modus siehe 2 1 2 des Ultraschallsensors verwendet Dabei sollte au erdem das Umschalten der Datenflusskontrollregister mitten im Programmablauf dokumentiert werden Das Programm befindet sich im Anhang unter Listing B 16 Wie auch das TWI Listing soll es nur eine Grundlage bilden Die Funktionen sollten sp ter noch in andere Dateien ausgelagert werden Angeschlossen wurde der gemeinsame Pin des Sensors an Pin01 PortB 0 des Mikrocon trollers Diese Auswahl war rein willk rlich ein besonderer Pin ist f r die Messung nicht notwendig Der Counter kann verschiedene Vorteiler verwenden um nicht bei jedem Taktzyklus zu z hlen Leider lassen sich selbst bei gr tem Vorteiler Overflows nicht vermeiden In einer Overflow Interruptroutine werden diese Overflows gez hlt 3 3 Herstellung von Platinen Einfache Leiterplatten bestehen aus einem elektrisch isolierenden Tr germaterial dem so genannten Basismaterial auf dem eine oder zwei Kupferschichten aufgebracht sind Die typische Schichtst rke betr gt 35 um f r Anwendungen mit h heren Str men werden St
192. titut f r Spanende Fertigung an der Technischen Universit t Dortmund herstellen lassen Die beiden Platten werden durch vier Metallstangen mit einem Durchmesser von 0 5 cm verbunden Damit steht das Grundger st des Roboters Die Radkonfiguration sieht zwei normale R der plus ein Kugelrad vor die an die untere Ebene montiert werden Die zwei normalen R der sind die eines Tretrollers Der Durchmesser betr gt jeweils 10 cm und die Breite 2 5 cm Die R der werden auf entgegengesetzten Seiten der Mittelachse der Kreisscheibe angebracht Dadurch kann sich der Roboter auch auf der Stelle drehen Als Kugelrad fungiert ein Deoball der nur eine Funktion als St tzrad hat und im Gegensatz zu den zwei normalen R dern nicht angetrieben wird Damit die Ecken eines Raumes auch gut ges ubert werden k nnen wurden zwei kleine B rsten mit einem Durchmesser von 5cm gekauft Diese wer den vorne an der unteren Platte befestigt Als Motoren f r die R der und B rsten kommen jeweils die gleichen vier Motoren mit 12V zum Einsatz Die folgenden Abschnitte erkl ren ausf hrlich die bisherigen Fertigungsschritte und den Einbau aller bis zum Zwischenbericht angebrachten Teile Zuletzt werden noch die Konstruktionspl ne mit den genauen Angaben in mm angegeben Die Pl ne enthalten alle bisher eingebauten Komponenten sowie einige der geplanten Komponenten Die Konstruktionspl ne sind in Anhang A zu finden PG 524 Zwischenbericht 77 HARDWARE 3 5 1 Die unt
193. tor wird bei der Erl uterung der Datenstruktur beleuch tet welche die Datenhaltung der Gitterkarte implementiert An dieser Stelle bleibt nur festzuhalten dass durch die Funktion getSegmentVector alle Felder zuriickgegeben werden welche von Objekten belegt werden Diese sind nach den einzelnen Objekten sortiert Es bleibt nun noch die Frage zu kl ren wie diese Daten ermittelt werden Hierf r kommt ein Algorithmus zum Einsatz welcher sich aus zwei Segmentierungsalgorithmen der Bildverar beitung ableitet Diese sind zum einen das Schwellwertverfahren 29 und zum anderen das Bereichswachstumsverfahren 17 Der grobe Ablauf l t sich mit folgendem Algorithmus beschreiben for alle Felder do if Feld belegt und Feld keinem Objekt zugeordnet lasse Objekt wachsen end end Listing 4 19 Objekterkennungsalgorithmus Die aufgef hrte If Bedingung ist aus dem Schwellwertverfahren 29 abgeleitet Hierbei wird anhand eines vorher definierten Wertes festgelegt ab welcher Belegungswahrschein lichkeit ein Feld als belegt angenommen wird Die Zeile lasse Objekt wachsen realisiert das Bereichswachstumsverfahren 17 Hierbei wird iterativ versucht in alle Richtungen zu wachsen Dieses Vorgehen ist in Abbildung 4 3 dargestellt Die Zugeh rigkeit eines Feldes zu einem Objekt wird ber die Eigenschaft m_segment in der Klasse Feld gesichert Eine weitere Eigenschaft die in diesem Arbeitsschritt ermittelt wird ist die Eigensch
194. ts uart_puts wi Ae ee ie sleepms 200 166 PG 524 Zwischenbericht C BEISPIELPROGRAMME F R DEN ATMEGA32 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 return 0 x Alternativ komplettes Kamerabild auslesen if Bild for pan_write 0x08 1 for x 1 x lt 324 x 1 gelesen pan_read 0x08 git A if gelesen gt SCHWEL LWERT1 y if gelesen gt SCHWEL LWERT2 y Tri uart putel y e if x 18 0 uart_puts n r else set pelar Listing B 17 Kommunikation mit dem Maussensor PG 524 Zwischenbericht 167 QUELLTEXTE B 4 Motortreiber R O000 AJ On OG G NR Br GA NY ANA D NOA Y b i i k Ehh CO OO cl On On UOUN ta CO OO OO SOON ta CO OG DO OG Ga b include lt stdint h gt include lt avr io h gt include lt stdlib h gt define MOTOR_DIR_L PIN Ly DCH define MOTOR_DIR_L PIN 2Y PC6 define MOTOR_DIR_R_PIN_3Y DCH define MOTOR_DIR_R PIN 4Y PC4 define MOTOR_DIR_PORT PORTC define MOTOR_DIR_DDR DDRC define PWM_DDR DDR define PWM_L OCRIA define PWM_R OCR1B uint8_t motor_left uint8_t motor_right int motor_init void MOTOR_DIR_DDR 1 lt lt DDC7 1 lt lt DDC6 1 lt lt DDC5 1 lt lt DDC4
195. tweder das Ger t die Software oder die USB Verbindung dazwischen nicht schnell genug reagiert um sehr kurze Impulse berhaupt zu erkennen In der Software Suite TracerDAQ gibt es auch noch einen Oszilloskop Modus Dieser arbeitet zwar nur mit einem analogen Eingang zusammen scheint aber im Timing erheblich besser somit konnte der Echo Impuls schon genauer ausgewertet werden Wenn die Measurement Computing Universal Library installiert wurde ist der Zugriff auf die Breakoutbox auch ber eigene Programme zum Beispiel C m glich Wie f r ein C Programm blich muss die entsprechende Header Datei cbw h per include eingebunden werden und die entsprechende Library Datei cbw 1lib im Library Pfad angegeben sein Auslesen eines Eingangs Auch hier wurde mit einem einfachen Testaufbau begonnen Wie schon im ersten Expe riment wurde ein Schalter angeschlossen mit dem der erste digitale Eingangspin Klem me 21 zwischen GND und P5V umgeschaltet werden konnte Das entsprechende Pro grammbeispiel ist Listing B 1 im Anhang Ansteuern eines Ausgangs Das n chste Experiment war mit den gegebenen Programmen der Software Suite nicht m glich Per Software sollte ein Ausgang dargestellt durch eine Leuchtdiode abwechselnd an und ausgeschaltet werden Das entsprechende Programmbeispiel ist Listing B 2 im Anhang Der dazugeh rige Testaufbau war hier ebenfalls wieder sehr einfach e Die Kathode der Leuchtdiode wurde an GND angeschlossen
196. u les 2 6 21gum kernel drivers usb host Optional kann nun die Bluetooth Funktion so fern sie nicht genutzt wird abgeschaltet werden indem im Verzeichnis etc init d die Datei S30bluetooth gel scht oder umbenannt wird Nach einem Neustart des Gumstix kann nun ber den Befehl ifconfig festgestellt werden ob der Ethernet Controller korrekt eingebun den ist gumstix buildroot build_arm_nofpu linux 2 6 21gum drivers net gumstix smc911x ko gumstix buildroot build_arm_nofpu linux 2 6 21gum drivers net smc911x ko gumstix buildroot build_arm_nofpu linux 2 6 21gum drivers usb host ohci hcd ko Listing 4 4 Ethernet Treiber Dateien 4 1 5 Flashen des Kernels Dateisystems Um die Software auf dem Gumstix auf dem neuesten Stand zu halten werden immer mal wieder nderungen am Kernel und auch am Dateisystem von n ten sein Wir haben daher ein Verfahren entwickelt welches eine sichere Variante f r diesen Vorgang darstellt Im Folgenden wird deshalb das Flashen des Kernel ber das Betriebssystems und den Bootloader beschrieben ber das Betriebssystem Nat rlich gibt es auch die M glichkeit einen kompletten neuen Kernel oder ein anderes Dateisystem auf den Gumstix zu berspielen Hierf r werden die Dateien ben tigt welche in Listing 4 5 angegeben sind Diese Dateien werden wieder auf den Gumstix kopiert Die Befehle df oder mount sollten anzeigen in welchem Bereich im Speicher das Root Image liegt
197. u stecken und Verbin dungen durch Drahtbr cken zu erzeugen Die L cher haben einen handels blichen Raster abstand so dass sich viele Bauteile direkt oder mit nur wenig Aufwand einstecken lassen Interne Verbindungen der Steckleisten Die eigentlichen Steckleisten sind spaltenweise miteinander verbunden Abbildung 3 2 Mit dem Raster der Beschriftung hei t das also A1 El F1 J1 A2 E2 F2 J2 Die beiden Steckleisten sind untereinander nicht verbunden Auch sind Pins in verschiede nen Spalten nicht verbunden 39 HARDWARE A Abbildung 3 1 Das Steckbrett unserer Testumgebung mit einem Testaufbau Konventionen Da auf einem solchen Steckbrett die Verbindungen in dem Moment geschaffen werden in dem sie gebraucht werden geht sehr schnell der Uberblick verloren siehe auch Abbildung 3 1 Es wurde versucht diesen Effekt durch ein wenig Struktur etwas einzud mmen Ins besondere die Verwendung verschiedener Kabelfarben sollte f r etwas bersicht sorgen Da im Hardwarelabor eher wenig verschiedene starre Kabel bereit lagen war nur wenig Differenzierung m glich e Schwarze Drahtbr cken wurden verwendet wenn an beiden Enden auf jeden Fall GND Pegel anliegen sollte e Rote Drahtbr cken wurden verwendet wenn an beiden Enden auf jeden Fall Span nung anliegen sollte meist 5V beim Motortreiber wurden aber auch h here Span nungen genutzt e Gelbe Drahtbr cken wurden f r alles andere verwendet Signale Ein
198. uch quasi von selbst e P5V des Sensors wird vom PMD Ger t Klemme 30 versorgt e GND des Sensors wird an einen der GND Pins gelegt z B Klemme 40 e Der Echo Ausgang des Sensors wurde an unserer BreakoutBox mit Klemme 21 FIRSTPORTA O verbunden Damit muss dieser Port auch als Eingang beschaltet werden 46 PG 524 Zwischenbericht TESTUMGEBUNG e Der Trigger Eingang des Sensors wird an der BreakoutBox PMD Ger t von Klem me 32 FIRTSTPORTA 8 bzw FIRSTPORTB 0 ausgel st Die fehlende Genauigkeit dieses Programms folgt aus der Ungenauigkeit der Methode clock Die Millisekunden Aufl sung entspricht Differenzen von 17 cm und der Latenz der USB Aufrufe etwa 10 Millisekunden pro Aufruf In den Testreihen wurden immer nur drei verschiedene Ergebnisse 10 20 und 21 Millisekunden geliefert Zudem sollte noch bemerkt werden dass das Programm in dieser Form ohnehin nicht direkt auf dem Mikrocontroller laufen wiirde Verwendung von Windows Bibliotheken Da an dieser Stelle die Breakout Box in Sachen Flexibilit t und Geschwindigkeit nicht mehr ausreichte wurde in sp teren Experimenten haupts chlich ein Mikrocontroller ver wendet Dies bot zudem den Vorteil dass f r Testzwecke geschriebener Quelltext relativ einfach in das endg ltige Programm umgewandelt werden konnte 3 1 3 Motortreiber Im Folgenden wird auf die Notwendigkeit einer Motorsteuerung allgemein eingegangen es werden zwei Standardbaustei
199. und das Setzen von Statusvariablen im Vordergrund stehen Daher stellt die Implemen tierung nur eine Aufbereitung der Daten dar welche von der Hardware geliefert werden Das hei t dass zum Beispiel keine zwei Sensorenwerte kombiniert werden Dieses Vorge hen wird erst in den h heren Funktionen realisiert Somit kann gesagt werden dass in der Richtung von der Hardware zur Software nur die reinen Rohdaten aufbereitet aber nicht modifiziert werden In der anderen Richtung haben wir dagegen Wert auf mehr abstraktere Funktionen gelegt So wird zum Beispiel in den h heren Funktionen kein Wissen dar ber n tig sein wie die genaue Ansteuerung der Motoren realisiert wird Dies wird von der Implementierung der API umgesetzt Diese Kombination bringt zwei gro e Vorteile Zum einen gehen auf der Sensorenseite keine Informationen verloren da die Auswertung von spezialisierten Algorithmen ber nommen wird Die Aktoren dagegen bekommen f r ihre Arbeit alle Informationen die sie brauchen in einer m glichst komprimierten Form Des Weiteren wird die Geschwindigkeit des Gesamtsystems erh ht da die Sensordaten sehr schnell zur Verf gung stehen und die Aktuatoren durch die hardwarenahe Implementierung der API effizient angesteuert werden k nnen Dies alles wird dazu beitragen ein H chstma an Effizienz bei der Nutzung der verwendeten Hardware zu erreichen PG 524 Zwischenbericht 35 GRUNDLAGEN 2 2 4 Umgebungsmodell Auch wenn bereits vers
200. ungsanschlu 120 pin Busheader Betriebsspannung 3 5V 6V 16 PG 524 Zwischenbericht HARDWARE za netwifimicroSD EU Abbildung 2 3 netwifimicroSD EU 11 e Gr e 93mm x 20mm Dieses Board wird prim r zur drahtlosen Kommunikation zwischen dem Roboter und den Hauptrechnern eingesetzt Wichtige Eigenschaften sind die Ethernetf higkeit und die Unterst tzung von WLAN 802 11 b und 802 11 g Kommunikationsnormen Es gibt ins gesamt 2 Versionen dieses Board wobei die andere Version keinen EU WLAN Standard unterst tzt Zus tzlich ist auf dem Board ein Slot f r eine microSD Karte vorzufinden Das Gumstix besitzt zwar 32 MB Flash und 128 MB Arbeitsspeicher doch gerade bei aufwendigen Prozessen wie der Bildbearbeitung st t man hier schnell an die Kapazit ts grenzen Deshalb ist eine Aufr stung des Speichers sinnvoll Ein weiterer Vorteil bei der Benutzung einer Speicherkarte besteht darin dass die Daten bertragung im Gegensatz zum konventionellen Flashen mittels serieller Schnittstelle schneller erfolgt Erfahrungen mit dem Gumstix Aufgrund seiner Empfindlichkeit ist Vorsicht im Umgang mit dem Gumstix geboten Die PG Teilnehmer d rfen z B das Board nur mit angelegtem Erdungsband ber hren da mit keine statische Entladung innerhalb des Boards stattfindet und somit Besch digungen hervorgerufen werden W hrend der Inbetriebnahme des Gumstix traten diverse Probleme auf e Falls eine zu geringe Spannung anli
201. unter Last ca 300 mA Der Mo tortreiber L298 ist f r diesen Motortyp ungeeignet Zudem m ssten noch Freilaufdioden eingebaut werden da die Motoren nicht direkt an die beiden Ausg nge des L298 ange schlossen werden ohne Freilaufdioden sollte Zus tzlich sch tzen die Freilaufdioden den PG 524 Zwischenbericht 47 HARDWARE IC vor den vom Motor ausgehenden Spannungsspitzen siehe Abb 3 9 Der Schaltkreis L298 beinhaltet ebenfalls zwei komplette H Briicken mit der zwei Motoren angesteuert werden k nnen Die Pinbelegung ist ebenfalls dem L293D sehr hnlich jedoch verf gt er ber eine andere Bauform Der wichtigste Unterschied besteht darin dass jede H Br cke bei L298 bis zu 2A belastet werden kann Es lassen sich also wesentlich gr ere Motoren ansteuern Ein weiterer Vorzug sind die sogenannten SENSE Ausg nge ber die der kom plette Strom flie t Mit dem L298N ist es also m glich den Strom zu kontrollieren den die Motoren ziehen Dazu kann man die beiden CURRENT SENSING Pins benutzen Diese k nnen genutzt werden um die Belastung der Motoren im Einsatz zu berwachen und bei berlastung ber die Software einzugreifen Testschaltung Es wurde eine Testschaltung gebaut dazu gen gte eine kleine SMD Platine auf der der L293D Baustein befestigt wurde Zuvor wurde mit dem Programm Eagle ein Schaltplan der Motorsteuerung erstellt siehe Abb A 5 aus der dann das Board siehe Abb A 11 erzeugt wurde Bei dem Test ste
202. uppe traf Nachdem die Grundlagen gekl rt waren konnte die Realisierung des Prototyps eines autonomen Staubsaugerroboters beginnen Nachzule sen ist dies im Kapitel 3 Der abschlie ende Ausblick des Zwischenberichts siehe Kapitel 5 beschreibt unter anderem das weitere Vorgehen der Hardwaregruppe f r das Sommer semester 2008 10 PG 524 Zwischenbericht VORGEHENSWEISE 1 3 2 Softwaregruppe Da sich die Projektgruppe bei der Herstellung ihres Staubsaugerroboters nah an dem Pro jekt des c t Bots orientiert gibt es einiges an vorgefertigter Software In den ersten Wochen des Wintersemesters 2007 2008 verschaffte sich die Softwaregruppe einen berblick ber vorhandene Software zu diesem Themengebiet Das Kapitel 2 2 beschreibt die Vor ber legungen Die letztendliche Realisierung der Software wird in dem Kapitel 4 gekl rt Die ausbleibenden Programmierarbeiten der Softwaregruppe werden im Ausblick Kapitel 5 festgehalten PG 524 Zwischenbericht 11 EINLEITUNG 12 PG 524 Zwischenbericht 2 Grundlagen Dieses Kapitel beschreibt die Grundlagen der Hard und Software Dazu geh ren unter anderem die Auswahl der verschiedenen Bauelemente sowie die jeweilige Hardwarespezifi kation Ferner wird beschrieben wie auf existierende Software zur ckgegriffen wurde und welche Software selbsterstellt wurde Dieses Kapitel beschreibt demnach nur die Auswahl der Hard und Software Die Realisierung dieser wird im Kapitel 3 b
203. uration der I C Support aktiviert werden der Kernel erneut kompiliert und der neue Kernel geflasht werden Anschlie end m ssen in der Datei etc modules folgende Zeilen hinzuf gt werden 92 PG 524 Zwischenbericht GUMSTIX Abbildung 4 2 Carrier Board mit Anschlusskabel 12c pxa i2c dev Listing 4 16 etc modules Nach einem Reboot sollte nun I C einsatzbereit sein In der Ausgabe von lsmod ist zu sehen ob die 1 C Module auch eingebunden sind 4 1 9 DC Kommunikation Zu Testzwecken wird ein simples C Programm 13 benutzt Am Beispiel des Kompass sensors soll die Kommunikation mittels 7 C verdeutlicht werden Der Kompasssensor wird zun chst mit dem I C Kabel verbunden Die Adresse des Kom passsensors ist 96 Um vom Kompasssensor einen Wert zu erhalten muss zun chst der Sensor in einen Zustand des Sendens berf hrt werden indem ihm ein Integer in diesem alle eine 2 als Byte geschickt Dies erfolgt durch den ersten Befehl aus Listing 4 1 9 An die Adresse 96 wird nun ein Byte mit dem Wert 2 geschickt Die vom Sensor geschickten Daten k nnen mit dem zweiten Befehl aus Listing 4 1 9 empfangen werden count 2 bedeutet dass 2 Byte von der Adresse 96 empfangen werden sollen Es erscheint in der Konsole nun ein Kompasswert in Hexadezimal Um eine API fir die Hardware des Raptors zu erstellen k nnen die Funktionen im Quellcode vom I C genutzt werden F r die Kommunikation mit dem Mikrocontro
204. us dass die Ergebnisse so ungenau waren das eine Rundung nicht mehr m glich war und die Implemtierung somit unbrauchbar ist 4 4 Player Stage Player Stage besteht aus zwei Komponenten welche Player und Stage hei en Player ist eine Softwareschicht die den Zugriff auf die Roboterhardware unterst tzt und den Zugriff auf Netzwerkschnittstellen erm glicht Stage ist ein Simulator f r Player der neben dem Roboter auch diverse Sensoren zur Verf gung stellt Mit Stage ist es m glich Software zu testen bevor sie am realen Roboter eingesetzt wird Neben Stage gibt es noch Gaze bo einen 3D Simulator Abbildung 4 15 gibt die Zusammenh nge wieder Player fungiert als Server Selbst geschriebene Programme k nnen sich ber eine Socketverbindung mit Player verbinden Wenn eine Simulationsumgebung gestartet wurde kann der Client das selbstgeschriebene Programm mit einem Roboter in der Simulationsumgebung mit Hilfe von Player kommunizieren lassen Es ist auch m glich Player mit einem realen Roboter zu verbinden Zudem ist es m glich Player ber eine Konfigurationsdatei zu konfigurie ren Die Simulationsumgebungen lassen sich ebenfalls konfigurieren Stage wird benutzt um die Steuerungssoftware f r den RAPTOR zu testen Dies ist besonders zu Beginn der Entwicklung eine Erleichterung da der RAPTOR noch nicht fertiggestellt ist 4 4 1 Installation Im Folgenden wird die Installation von Player Stage dokumentiert Playerinstallation Diese Inst
205. von Build Root entstanden ist Es tr gt normalerweise den Namen rootfs arm_nofpu jffs2 Wenn der Kopiervorgang beendet ist muss der Flash Vorgang mit dem Befehl pro on 1 0 1 D jera all BE cp b 2000000 40000 4 filesize gestartet werden Um den Kernel zu ko pieren wird wieder das Empfangsprogramm des Bootloaders mit loady 2000000 gestartet und mittels CTRLJ A in das Men des Minicom gewechselt mit S in den Kommunika tionsmodus yModem und im auftauchenden Dialog das Kernel Image ausgew hlt Es tr gt normalerweise den Namen ulmage Nach dem Kopiervorgang muss zum Flashen des Kernel die Befehle aus Listing 4 8 eingetippt werden Der Kernel und das Dateisystem sollten jetzt geflasht sein Um U Boot zu beenden muss bootm eingetippt oder den Gumstix vom Strom getrennt werden katinstall 100000 katload 100000 Listing 4 8 Flashen des Kernel 4 1 6 Eigene Programme Es gibt 2 M glichkeiten eigene Programme auf dem Gumstix laufen zu lassen Die erste M glichkeit ist im Buildroot den gcc und g compiler hinzu zu f gen und die Programme auf dem Gumstix zu kompilieren Die zweite L sung w re ein Cross Compiling Dazu wird im gleichen Verzeichnis in dem sich der Ordner gumstix buildroot befindet ein neuer Ordner angelegt und die Quelldateien des Programms in diesem Ordner eingef gt Als N chstes muss ein Makefile angelegt werden welcher den Inhalt aus Listing 4 9 enth lt In der ersten Zeile
206. zw 4 behandelt 2 1 Hardware Zu Beginn der Projektgruppe wurde die entsprechende Hardware f r den autonomen Ro boter ausgesucht Dazu geh rt die Auswahl des passenden Linux Board der Ultraschallsen soren der Kontaktsensoren der Lichtsensoren des Maussensors des Kompasssensors der Getriebemotoren des Mikrocontrollers und der Kamera Die folgenden Abschnitte befassen sich mit diesem Thema 2 1 1 Linux Board Der Staubsaugerroboter soll in der fertigen Version eine hohe Anzahl an teilweise sehr komplexen Funktionalit ten wie z B Stauberkennung Navigation Objekterkennung etc ausf hren k nnen Die ben tigten Daten aus der Umgebung werden durch die Sensoren bereitgestellt anhand derer der Roboter dann seine n chsten Aktionen planen kann Eine Bearbeitung von Sensordaten erfordert ein hohes Ma an Rechenleistung da Methoden aus den Bereichen der Bild und Signalverarbeitung ben tigt werden Zudem soll der Roboter einen Gro teil der Berechnungen in Echtzeit durchf hren k nnen da er z B m glichst rechtzeitig Objekte erkennen und ggf ausweichen soll Hierf r ist neben einer effektiven Programmierung auch leistungsf hige Hardware erforderlich Au erdem muss eine Viel zahl an verschiedensten Eingabe und Ausgabeger ten wie z B Sensoren Kameras usw unterst tzt werden k nnen Im Gegenzug zur ben tigten Rechenleistung und Flexibilit t stehen jedoch diverse Ein schr nkungen die beim Roboter ber cksichtigt werden
Download Pdf Manuals
Related Search
Related Contents
LE MANDALA INTERACTIF Mode d`emploi Lenovo TC A51-8122 User's Manual 取扱説明書 集じん機 12-Volt 9,5 Amp/Hr Battery Batería de 12V (9,5 A/h - Fisher Sony FS-85USB Desktop Digital Transcriber / Recorder End User Manual KwiKool Portable Air Conditioners JVC LVT2011-006A User's Manual Mitech MFD350 User Manual STONEX X300 - Scan World 3D Copyright © All rights reserved.
Failed to retrieve file