Dokumentation eines selbstgebauten autonomen
Transcription
Dokumentation eines selbstgebauten autonomen
Dokumentation eines selbstgebauten autonomen Fußballroboters für den Bewerb RoboCup Junior Soccer Timo Gürtler Fachbereichsarbeit aus Angewandter Informationstechnologie Betreuer: Leander Brandl BRG Kepler 2011/2012 Inhaltsverzeichnis 1 Vorwort ...................................................................................................................... 3 2 Robocup Junior Soccer B ......................................................................................... 4 2.1 Der Bewerb ........................................................................................................... 4 2.2 Der Roboter ........................................................................................................... 5 2.3 Das Feld ................................................................................................................ 6 3 Planung und Konstruktion ......................................................................................... 7 3.1 Einschränkungen und grundlegende Ideen ........................................................... 7 3.2 Planung mit Autodesk Inventor Professinal 2011 und Eagle ............................... 7 3.3 Fertigung ............................................................................................................... 9 4 Der Roboter ............................................................................................................. 10 4.1 Roboter von vorne ............................................................................................... 10 4.2 Roboter von rechts .............................................................................................. 11 4.3 Aufbau ................................................................................................................. 12 4.3.1 Material .......................................................................................................... 12 4.3.2 Räder .............................................................................................................. 12 4.3.3 Schussmechanismus-Kicker ........................................................................... 13 4.3.4 Motoren .......................................................................................................... 14 4.3.5 Motorhalterung ............................................................................................... 15 4.3.6 Dribbler .......................................................................................................... 16 4.3.7 Griff ................................................................................................................ 17 4.3.8 Hülle ............................................................................................................... 18 4.4 Elektronik ............................................................................................................ 19 4.4.1 Motorplatine ................................................................................................... 19 4.4.2 Infrarotsensoren und Ball ............................................................................... 20 4.4.3 IR-Platine ....................................................................................................... 21 4.4.4 Hauptplatine/Mainboard................................................................................. 22 1 4.4.5 Ultraschallsensoren ........................................................................................ 23 4.4.6 Kompass ......................................................................................................... 24 4.4.7 Tasterplatine ................................................................................................... 25 4.4.8 Energiezufuhr ................................................................................................. 26 4.4.9 Display ........................................................................................................... 26 5 Software ................................................................................................................... 27 5.1 Flußdiagramms.................................................................................................... 27 5.2 Beschreibung des Flußdiagramms ...................................................................... 28 5.3 Programm Erklärung ........................................................................................... 29 6 Quellen ..................................................................................................................... 50 6.1 Abbildungen: ....................................................................................................... 50 6.2 Kapitel inhaltlich entnommen ............................................................................. 51 6.3 Zitate ................................................................................................................... 51 6.4 Grundlegende Informationen .............................................................................. 51 6.5 Datenblätter im Anhang: ..................................................................................... 51 7 Anhang ..................................................................................................................... 53 7.1 Atmega 128 ........................................................................................................ 53 7.2 GHM-3 Motor .................................................................................................... 55 7.3 ZMF-2551d.001 ................................................................................................. 56 7.4 Tsop 1138 ........................................................................................................... 57 7.5 SRF 10 ................................................................................................................ 58 7.6 CMPS-03 ............................................................................................................ 59 2 1 Vorwort Seit der 4. Klasse trete ich schon im Wettbewerb Robocup Junior an. Über die Jahre haben sich unter den teilnehmenden Schülern des BRG Keplers einige Gruppen gebildet, die sich immer intensiver mit dem Bau und der Programmierung von Robotern beschäftigten. Einer solchen Gruppe gehöre auch ich an. Das Team Android besteht aus 5 Mitgliedern: Alexander Kargl, Hao Wang, Paul Friedl, Kevin Meighen-Berger und mir. Zuerst traten wir im Wettbewerb Robocup Junior Rescue an und seit 2010 in Bewerb Soccer B. In diesen 2 Jahren haben wir vieles ausprobiert und mehr und mehr Wissen gesammelt. Mit dem in dieser Fachbereichsarbeit beschriebenen Roboter fuhren wir zur Weltmeisterschaft 2011 und erreichten einen guten Platz im Mittelfeld auf den man zu Recht stolz sein kann. Am Ende der 7. Klasse wurden wir von unserem Informatiklehrer Leander Brandl gefragt, ob einer von uns eine Fachbereichsarbeit über unseren Fußballroboter schreiben möchte, damit das von uns gesammelte Wissen nicht verloren geht und jüngere Schüler in der Zukunft darauf aufbauen können. Über die Sommerferien entschloss ich mich eine Fachbereichsarbeit zu schreiben. Zuerst dachte ich, es würde einfach werden eine Dokumentation über unseren Roboter zu erstellen, aber schon nach den ersten Seiten wurde mir bewusst auf was ich mich dabei eingelassen habe. Ich hoffe, dass diese Fachbereichsarbeit allen Schülern, die im Wettbewerb Soccer antreten, hilft und wünsche ihnen im Namen des Teams Android viel Erfolg bei den kommenden Wettbewerben. 3 2 Robocup Junior Soccer B 1 2.1 Der Bewerb Die Disziplin Soccer B ist in zwei Altersklassen eingeteilt: Soccer B Primary und Secondary. In der Primary-Liga spielen Teams, deren Mitglieder unter 15 Jahre alt sind. In der Secondary-Liga treten Schüler bis zu einem Alter von 19 Jahren gegeneinander an. Ein Team muss aus mindestens 2 Mitgliedern bestehen. Jedes Team benötigt einen Teamleader, der sein Team repräsentiert. Ein Spiel besteht aus zwei Halbzeiten zu je 10 Minuten, die durch eine 5-Minuten Pause getrennt sind. Nur zum Starten darf der Roboter während des Anstoß von einem Teammitglied berührt werden. Ein Tor ist erst erzielt, wenn der Ball in seiner ganzen Größe über der Torlinie ist. Danach findet wieder ein Anstoß statt. Es gewinnt das Team mit den meisten Toren am Spielende wobei auch ein Unentschieden möglich ist. Auf dem Spielfeld befinden sich 5 neutrale Punkte. Wenn der Ball in das Out rollt, kann das Team, das den Ball nicht als letztes berührt hat, entscheiden auf welche der beiden neutralen Punkte einer Seite der Schiedsrichter den Ball legen soll. Sollte einer der Punkte von einem Roboter blockiert sein, kann der Ball auch auf den Mittelpunkt gelegt werden. Wenn ein Roboter „damaged“ ist, muss er das Spielfeld für mindestens eine Minute verlassen und darf erst wieder ins Spiel, wenn der Schaden behoben ist. Als „damaged“ zählt ein Roboter wenn: er nicht mehr auf den Ball reagiert er in einem Eck oder an der Wand hängt er sich durchgehend auf der Stelle dreht 1 http://rcj.robocup.org/rcj2011/soccer_2011.pdf [Datum:23.11.2011] 4 2.2 Der Roboter Gespielt wird mit 2 Robotern pro Team. Die Roboter unterliegen bestimmten Auflagen: Die Roboter dürfen nicht höher als 22 cm und breiter als 22 cm sein. Das Maximalgewicht der Roboter ist auf 2,5 kg beschränkt. Der Ball darf nicht weiter als 3 cm in die Roboter eindringen. Die Roboter müssen sich in alle Richtungen bewegen können. Die Roboter müssen einen Griff besitzen, damit diese von einem Schiedsrichter aufgehoben werden können. Die Roboter dürfen nicht gelb oder blau sein, da die Tore mit diesen Farben gekennzeichnet sind. Das gleiche gilt für das T-Shirt des Teammitglieds, das die Roboter bedient. Die Roboter dürfen während des gesamten Wettbewerbes nicht ausgetauscht oder einem anderen Team verliehen werden. Es ist aber erlaubt, einzelne Teile auszutauschen. Die Roboter dürfen über Bluetooth miteinander kommunizieren. Die Roboter dürfen während eines Wettbewerbes nicht ferngesteuert werden und müssen autonom fahren. 5 2.3 Das Feld Das Soccer B Feld ist einschließlich der Outzone 182 cm breit und 243 cm lang. Das Spielfeld ist mit weißen Linien markiert. Diese kennzeichnen die Outlinie und den Strafraum. Die Ouzone hat eine Breite von 30 cm. Die Tore sind 45 cm breit und haben eine Höhe von 14 cm. Die neutralen Punkte sind schwarz markiert. Als Boden des Spielfelds dient ein grüner Teppich. Das gesamte Feld ist außerdem noch von einer 14 cm hohen Wand umgeben. Abbildung 1: Soccer B Feld 2 2 http://robocupjunior.at/10-0-Soccer.html [Datum: 23.12.2011] 6 3 Planung und Konstruktion 3.1 Einschränkungen und grundlegende Ideen Die Grundvorgaben für den Bau unseres Roboters waren die Richtlinien von Robocup Junior für die Disziplin Soccer B. Ein Roboter darf nicht höher als 22 cm sein, er muss in einen Zylinder mit einem Durchmesser von 22 cm passen und darf nicht schwerer als 2,5 kg sein. Des Weiteren darf der Ball nicht weiter als 3 cm in den Roboter hineinragen. Bei der Konstruktion wurde versucht, das maximale Gewicht, sowie die maximale Größe zu erreichen um von einem gegnerischen Roboter nicht leicht verdrängt zu werden und auch das eigene Tor gut abzudecken. Um die maximale Größe nicht zu überschreiten und trotzdem genug Platz für alle Teile eine Roboters zu schaffen, bestehen die Roboter aus 3 übereinander angeordneten Ebenen. Auf der untersten Ebene befinden sich die Motoren, die Motorplatine, der Schussmechanismus und die Motoraufhängungen. Auf der mittleren befinden sich die Infrarotsensoren mit der dazugehörigen Platine, die Hauptplatine und der Dribbler. Auf der obersten Ebene befinden sich die Tasterplatine, das Display sowie der Kompass. 3.2 Planung mit Autodesk Inventor Professinal 2011 und Eagle Unsere Roboter, der im Jahr 2010 eingesetzt wurden, sind ohne unterstützendes Computerprogramm geplant worden. Es wurden Skizzen erstellt und danach ein Model aus Sperrholz gebaut. Rückblickend war das ein großer Arbeitsaufwand, den uns dieses Jahr das Planungsprogramm Autodesk Inventor Professinal 2011 vereinfacht hat. Dieses Programm ist sehr umfangreich, weshalb es am Anfang notwendig war einige Tutorials durchzuarbeiten. Nach einer kurzen Einführungsphase gab es aber kaum mehr Probleme. Der Hauptgrund für die Wahl dieses Programms war, dass es in einer Schülerversion gratis verfügbar ist. Mit diesem Programm wurde unsere Arbeit sehr erleichtert. Dank der 3D Planungsansicht konnten Mängel noch vor dem Bau des 7 Roboters festgestellt und behoben werden. Auch die Änderung einiger Maße oder die neue Planung eines Bauelements sind schnell und problemlos durchführbar gewesen. Abbildung 2: 3D‐Modell eines Motors Die Motor-, Infrarot- und Tasterplatine wurden von uns selbst entworfen. Wir erstellten diese mit der Software Eagle. Mit dieser kann man Schaltpläne einfach zeichnen und die einzelnen Komponenten dann anordnen. Da mit dieser Software bisher nicht gearbeitet wurde, mußten wir uns zunächst erst einmal intensive mit der Software beschäftigen. Dieser Aufwand war aber die Mühe wert. Abbildung 3: Tasterplatine in Eagle Abbildung 4: Schaltplan in Eagle 8 3.3 Fertigung Alle Ebenen, die Motorhalterung, Teile des Dribblers und die zuvor genannten mit Eagle geplanten Platinen wurden von uns gefertigt. Die Teile wurden danach in das Programm AutoCAD übertragen. Mit diesem Programm wurde die Kanten der zu fräsenden Teile in Layergruppen eingeteilt. Im nächsten Schritt wurde den Layern eine Tiefe zugewiesen bis zu der die Fräse arbeiten sollte. Die CNC-Fräse fuhr danach der Kanten bzw. den Layern des Objektes und fräste sie aus. Die Platinen sind nach dem Isolationsverfahren gefertigt. Bei diesem werden nur die Umrisse der einzelnen Leiterbahnen von der Kupferfläche weggefräst und somit von einander elektrisch isoliert. Die Software Eagle mit der die Platinen geplant wurden rundete leider die Koordinatenergebnisse bei Kurven von Leiterbahnen. Aufgrund dieser ungenauen Fräsdaten wurden nicht alle Leiterbahnen vollständig isoliert, es blieben Übergänge zum isolierten Teil der Platine vorhanden. Diese mussten händisch entfernt werden. Abbildung 5: Zuschneiden der PE Platten mit der CNC Abbildung 6: Fertigung einer Platine Fräse 9 4 Der Roboter 4.1 Roboter von vorne 1 2 8 3 7 4 5 6 Abbildung 7 1. Kompassmodul CMPS-03 2. Dribblermotor 3. Zahnradübersetzung des Dribblers 4. Dribblerrolle 5. Kicker mit Frontplatte 6. Omniwheels 7. Ultraschallsensor SRF-10 8. LCD Display 10 4.2 Roboter von rechts 1 2 5 4 3 Abbildung 8 1. Tasterplatine 2. IR-Platine 3. LiPo Akku 4. GHM-3 (Gear Head Motor) 5. IR-Sensor TSOP1138 11 4.3 Aufbau 4.3.1 Material Für diesen Roboter entschieden wir uns, eine 8 und eine 5 mm dicke Polyethylen (PE) Platte als Ebenenmaterial zu verwenden. Das Material eignet sich gut für den Bau eines Roboters, da es sehr leicht und robust ist, und nicht wie z.B. Plexiglas zerspringen kann und weil es einfach zu bearbeiten ist. 4.3.2 Räder Da sich der Roboter in alle Richtungen bewegen können und auch in der Lage sein muss, sich am Stand zu drehen, kamen von Anfang an nur Omniwheels in Frage. Omiwheels, auch Allseitenräder genannt, sind Räder an deren Außenseite sich kleinere Räder befinden deren Laufrichtung zum Mittelpunkt des eigentlichen Rades gerichtet ist. Die äußeren kleineren Räder werden als Subwheels bezeichnet. „Diese Räder werden zum einen in der mobilen Robotik für omnidirektionale Antriebe verwendet. Diese Roboter haben meist drei angetriebene Allseitenräder, deren Achsen sich im Mittelpunkt des Roboters schneiden. Durch den Antrieb der Räder in verschiedenen Geschwindigkeiten ist der Roboter in der Lage, in jede Richtung zu fahren und jegliche Rotation auszuführen.“3 Im letzten Jahr gab es Probleme mit diesen Rädern. Der grüne Spielfeldteppich, der den Rasen auf dem Spielfeld symbolisiert, hat den Zweck den Robotern einen guten Grip zu bieten. Die alten Omniwheels rutschten trotz der Unterlage durch, so dass eine genaue Manövrierung des Roboters nicht möglich war. Darum entschieden wir uns dieses Jahr andere Omniwheels zu kaufen. Die neuen Omniwheels sind eine Spezialanfertigung aus dem Iran. Sie bestehen aus 2 kreisrunden Aluminiumhälften, die an den Außenseiten Lücken für die insgesamt 13 Subwheels aufweisen. An der Innenseite der beiden Hälften befindet sich eine Rille in die ein Draht eingesetzt ist. Auf diesem Draht sind die Subwheels aufgefädelt. Nachdem der Draht eingesetzt ist und sich alle Subwheels an der richtigen Position befinden, 3 http://de.wikipedia.org/wiki/Allseitenrad [Datum: 26.12.2011] 12 werden beide Hälften miteinander verschraubt und das Rad ist zusammengebaut. Die Subwheels bestehen aus einem Messingrad, das an der äußeren Kante eine Rille für einen Gummiring aufweist. Abbildung 9: Omniwheel Diese neuen Omniwheels haben den Vorteil, dass sie aufgrund des Gummirings auf den Subwheels dem Roboter einen besseren Halt bieten. Die Schwachstelle der Räder waren die kleinen Messingräder der Subwheels. Die Kraft, die auf diese bei einem schnellen Bremsmanöver wirkte, wurde unterschätzt. Es kam sogar soweit, dass auf einem Omniwheel 11 von 13 Subwheels beschädigt wurden. 4.3.3 Schussmechanismus-Kicker Beim Kicker des Roboters kommt ein Hubmagnet Typ ZMF-2551d.001 der Firma Tremba zum Einsatz. Ein Hubmagnet ist die einfachste und am öftesten eingesetzte Schussmethode bei einem Soccerroboter. Diese Hubmagneten sind in allen Größen und für unterschiedliche Lasten erhältlich. Ein Hubmagnet besteht aus einem Elektromagnet und einem Eisenkern mit einer Feder. Wenn Strom am Elektromagnet anliegt, zieht er den Eisenmagnet an und der Roboter schießt. Wenn kein Strom mehr anliegt, drückt die Feder den Eisenkern wieder an die Ausgangsposition zurück. Der Hubmagnet benötigt, wenn auch nur für kurze Zeit, hohe Ströme, weshalb er mit einem Relais geschaltet 13 wird. Die Kickerschaltung wird über den Pin B0 des Mikroprozessors gesteuert. Da der Eisenkern sich verjüngt und an der Vorderseite eine lange Stange besitzt, war es nötig eine Frontplatte an dem Eisenkern zu befestigen, damit der Ball kontrolliert nach vorne geschossen werden kann. Der Kicker ist gleich wie die Motoren befestigt und an der Vorderseite zwischen dem rechten und linken Motor platziert. Abbildung 10: Elektromagnet Kicker4 4.3.4 Motoren Als Motoren werden die schon im letzten Jahr verwendeten GHM-3 (Gear Head Motor) von Lynxmotion benutzt. Diese weisen ein hohes Drehmoment (3.9 kg-cm) sowie eine mittlere Geschwindigkeit (max. 291 U/min bei 7,2V) auf. Zusätzlich ist das PreisLeistungs-Verhältnis der Motoren gut. Die 3 Motoren sind in einem Winkel von 120 Grad zueinander angeordnet. Ursprünglich wurde auch überlegt 4 Motoren zu verwenden. Der Vorteil bei 4 Motoren ist, dass bei einer Bewegung weniger Kraft als mit 3 Motoren verloren geht. Die Motoren sind so groß, dass man 4 Motoren nebeneinander platzieren könnte, aber danach keinen Platz mehr für andere Bauteilteile wäre. Ein weiterer Nachteil ist, dass jeder Motor 121 Gramm wiegt und die Motoren damit in Summe den größten Teil der Masse des Roboters ausmachen. 4 http://www.tremba.de/zylindermagnete/zylindermagnete.php [Datum 20.12.2011] 14 Abbildung 11: Motor mit Maßen5 4.3.5 Motorhalterung Da eine Motorhalterung bei der letzten Weltmeisterschaft mitten im Wettbewerb gebrochen ist, wurde besonderer Wert darauf gelegt, eine stabile und starre Konstruktion zu bauen. Es wurde entschieden, eine bereits unter den anderen Teams verbreitete Halterung zu benutzen. Die Halterung besteht aus zwei halbkreisförmigen Teilen in deren Mitte sich der Rumpf des Motors befindet. Beide Hälften werden so fest miteinander verschraubt, dass sich der Motor in der Mitte nicht mehr bewegen kann. Die anfänglichen Bedenken, dass sich der Motor möglicherweise zwischen den zwei Hälften noch drehen könnte, zerstreuten sich beim Praxistest schnell. Beim Einbau des Motors muss jedoch darauf geachtet werden, dass sich der Motor in der richtigen Position befindet, da sich die Drehachse nicht im Zentrum des Motors befindet sondern um ein paar Millimeter nach unten versetzt ist. Bei einem fehlerhaften Einbau liegt das Rad nicht mehr auf dem Boden auf. 5 http://www.lynxmotion.com/images/data/ghm03.pdf [Datum: 10.12.2011] 15 4.3.6 Dribbler Der Dribbler ist eine sich durch einen Motor drehende Rolle, die den Ball in Rotation zum Roboter halten soll. Laut den Regeln ist es nicht erlaubt den Ball festzuhalten. Außerdem darf der Ball nicht weiter als drei cm in den Roboter hineinragen. Ein Dribbler ist nach den Regeln erlaubt, da der Ball vom Roboter zu keinem Zeitpunkt „festgehalten“ wird, sondern nur ständig in Bewegung zu sich versetzt wird. Der Dribbler ist ein wichtiges Bauteil ohne den es nicht möglich ist eine Bewegung nach hinten auszuführen, da man den Ball ohne diesen nur anschieben könnte. Zusätzlich wurde unser Dribbler so gebaut, dass er vor- und zurückkippbar ist. Das hat folgende Vorteile: bessere “Sogwirkung“ der Dribbler fährt dem Ball nach wenn er hinausfällt Die bessere “Sogwirkung“ entsteht da der Ball nicht nur vom Dribbler gedreht wird sondern auch gewissermaßen unter den Dribbler hineingezogen wird, da der Dribbler sich hebt, wenn er den Ball berührt. Sollte der Ball durch eine Berührung mit einem anderen Roboter oder den Spielfeldbanden aus dem Dribbler hinausfallen, dann kippt der Dribbler dem Ball nach und der Roboter kann noch einmal in Ballbesitz kommen. Das Problem bei der Konstruktion war, dass der Ball nie weiter als drei cm in den Roboter hineinragen darf und, dass der Durchmesser des Roboters im voll ausgefahrenen Zustand nicht größer als 22 cm sein darf. Die Kippkonstrunktion benötigt jedoch viel Platz. Schlussendlich entschieden wir uns für eine Konstruktion, bei der sich der Motor und die drehbare Rolle auf einem kippbaren Arm befinden. Der Motor, der von uns verwendet wird, ist ein Getriebemotor mit 150 U/min. Das war aber zu langsam weshalb eine Legozahnradübersetzung eingebaut wurde. Die sich drehend Rolle besteht aus Legorädern, die eine gute Haftung haben. 16 Der Dribbler wurde durch zwei Gummiringe an der tiefsten Position gehalten und wird bei Ballberührung angehoben. An der Unterseite der nächst höheren Ebene ist ein Taster montiert, der immer dann betätigt wird, wenn sich der Dribbler hebt. So kann festgestellt werden, ob man im Ballbesitz ist oder nicht. Abbildung 12: Dribbler Kippkonstruktion Abbildung 13: Dribbler mit Ball 4.3.7 Griff Laut den Regeln der Soccer B League muss jeder Roboter einen Griff besitzen. Der Griff ist abgesehen vom Kompass das höchst montierte Teil des Roboters. In den Griff wurden drei Grifflöcher und ein zentrales Loch, durch das der Kompass ragt, gefräst. An der Vorderseite des Griffs wurde der Teamname eingefräst. Der Griff besteht aus Plexiglas um das Display darunter zu sehen. Abbildung 14: Griff 17 4.3.8 Hülle Die Hülle dient dem Zweck den Roboter zu schützen. Ursprünglich war es geplant, eine sehr dünne Aluplatte um den Roboter zu biegen und Löcher für die Infrarotempfänger in die Platte zu schneiden. Es fand sich aber ein besseres Material. Eine Mappe der Firma Libro besteht aus einem für Infrarotes Licht durchlässigen Plastik. Es ist leichter als Aluminium, ist leicht biegbar und bietet genügend Schutz. An der Oberseite der untersten Platte befindet sich eine Rille in die die Hülle geschoben wird. An der mittleren und an der oberen Ebene wird sie festgeschraubt. Es gab auch eine Variante mit Klettverschluß an der mittleren und oberen Ebene allerdings bot der Klettverschluß nicht ausreichend Halt. 18 4.4 Elektronik 4.4.1 Motorplatine An der Motorplatine sind folgende Komponenten angeschlossen: Master Ein/Ausschalter der direkt mit dem Akku und der Motorplatine verbunden ist. Stromanschluss des Atmega 128 Stromanschluss der Schaltung für den Schuss Hubmagneten (Schuss) Dribblermotor 3 Antriebsmotoren Der Masterschalter ist ein einfacher Kippschalter, der den Zweck hat, die Stromzufuhr zu unterbrechen ohne den Akku abstecken zu müssen. Es sind 4 Motoren an der Platine angeschlossen, die 3 Antriebsmotoren und der Motor des Dribblers. Die Motoren werden mit einem Motortreiber des Typs IC L6203 angesteuert. Dieser ist quasi der Nachfolger des weit verbreiteten L298 und hat einen viel geringeren Spannungsabfall. Deshalb benötigt dieser auch keine aufwendige Kühlung. Abbildung 15: Motorplatine in Eagle Boardansicht 19 4.4.2 Infrarotsensoren und Ball Der Ball, der bei dem Soccer Wettbewerb verwendet wird, wird von der Firma HiTechnic produziert. Dieser hat einen Durchmesser von 75 mm und besitzt 20 Infrarot Leds, die ein moduliertes Infrarot Signal mit einer Frequenz von 40 kHz aussenden. Das vom Ball gesendete Signal ist in unterschiedliche Signalstärken eingeteilt. Man kann die Länge des empfangenen Signales messen und weiß, wie weit der Ball entfernt ist, da die schwächeren Signale nicht empfangen werden, wenn der Roboter weiter vom Ball entfernt ist. Unsere Roboter empfangen dieses Signal mit 8 Infrarotempfängern vom Typ TSOP1138, die rund um den Roboter auf unsere Infrarotplatine gelötet sind. Dieser Infrarotempfänger ist zwar für ein 38 kHz Signal gedacht, aber er empfängt das Signal vom Ball dennoch sehr gut. Der Ball wurde manchmal an der falschen Stelle geortet. Die falsche Ortung ergab sich einerseits aus dem großen Öffnungswinkel des TSOPEmpfängers und andererseits aus Reflexionen des Signals von den Spielbanden. Beide Probleme konnten durch die Einschränkung des Öffnungswinkels und durch Bedecken der Seiten des Empfängers zum Teil gelöst werden. Abbildung 16: Soccer Ball6 6 7 Abbildung 17: TSOP11387 http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=IRB1005 [Datum: 27.12.2011] http://www.dz863.com/datasheet-844179663-TSOP1140_Ir-Receiver-Modules-For-Remote-Control- Systems/ [Datum: 27.12.2011] 20 4.4.3 IR-Platine Die Infarotplatine besteht aus drei Teilen: einer Frontplatine mit zwei Empfängern, die vorne unter dem Kicker liegt und zwei Seitenplatinen mit je 3 Empfängern. Die Frontplatine ist mit der linken Seite verbunden. Auf der rechten Platine laufen alle Signale zusammen und werden an den Port F des Atmega 128 übergeben. Der Port F besitzt einen ADC (Analog-to-Digital-Converter). Dort wird das analoge Signal (0-5 Volt) der TSOP- Empfänger in einen dazu proportionalen Wert umgewandelt. Dieser Wert gibt wider, wie stark das gemessene Signal war, bzw. wie weit der Ball vom Roboter entfernt ist. Die Infrarotempfänger sind an der Frontplatine nach rechts gedreht und die vordere Seite ist abgedeckt. Da die TSOP-Empfänger nicht nach Hinten “sehen“ können, die vordere Seite abgedeckt ist und sich auf der rechten der Sensoren der Roboter befindet, ist der Winkel aus dem Signale kommen können, sehr eingeschränkt. Das hat den Vorteil dass eine genauere Ortsbestimmung des Balles möglich ist. Abbildung 18: vordere IR‐Platine Abbildung 19: IR‐Platine rechte Platine in Eagle Abbildung 18: IR‐Platine linke Platine in Eagle 21 4.4.4 Hauptplatine/Mainboard Als Hauptplatine für den Roboter verwenden wir ein Modul mit der Bezeichnung ETBASE Mega 128. Von diesem Modul aus werden alle Komponenten des Roboters gesteuert. Abbildung 19: Atmega Modul8 Der Aufbau sieht folgendermaßen aus: 1. Mikrocontroller Atmega 128 von Atmel 2. Resetschalter 3. 16 MHz Quarz 4. Potentiometer zur Bestimmung der Helligkeit eines angeschlossenen LCD Displays 5. Port C PC0-PC7 8 http://ulita.ms.mff.cuni.cz/pub/predn/nprg037/ET-BASE%20AVR%20%20ATmega64_128_Manual.pdf [Datum: 5.1.2012] 22 6. ISP Port zum Übertragen des Programms auf den Mikrocontroller 7. LCD Port zum Anstecken eines Displays 8. Port D PD0-PD7 9. Port B PB0-PB7 10. Port E PE0-PE7 11. Port F PF0-PF7 ausgestattet mit einem Analog-Digitalwandler mit einer Auflösung von 10 Bit 12. Port A PA0-PA7 13. RS232 Connector 14. RS232 Connector 15. LED zum Anzeigen, ob das Modul eingeschalten ist 16. Stromanschluss 4.4.5 Ultraschallsensoren Es werden vier Ultraschallsensoren des Typ SRF-10 zur Positionsbestimmung und zur Gegnererkennung eingesetzt. Im Vergleich zu den im letzten Jahr verwendeten Infrarotsensoren von Sharp arbeiteten die Ultraschallsensoren relativ genau. Ein Nachteil dieser Sensoren ist der große Öffnungswinkel und die Beeinflussbarkeit durch andere Ultraschallsensoren. Die Ultraschallsensoren wurden auf der obersten Ebene montiert und sind im 90°-Winkel zueinander angeordnet. Die minimale Reichweite der Sensoren beträgt 4 cm, das Maximum 6 m. Die Messung der SRF-10 erreichte bei unseren Bedingungen eine Genauigkeit von +/- 5 cm. Die Kommunikation der Ultraschallsensoren erfolgt über den I2C-Bus des Atmega 128. Ein weiteres Problem gab es bei der Abstandsmessung zu seitlichen Objekten. Da der SRF-10 einen großen Öffnungswinkel besitzt und das erste zurückkommende Signal gemessen wird, ist es nicht möglich zu sagen, auf welcher exakten Position an der Seite sich das gemessene Objekt befindet. 23 9 Abbildung 20: Ultraschallsenoren mit Kompass Abbildung 21: Ultraschallsensor 4.4.6 Kompass Um die aktuelle Ausrichtung sowie die Richtung, in der sich das gegnerische Tor befindet, zu bestimmen, verwenden wir das Kompassmodul CMPS-03. Dieses bestimmt die Ausrichtung relativ zum Erdmagnetfeld. Der Kompass wird sowohl von äußeren Einflüssen (wie z.B. ein Spielfeld, das auf einem Metalltisch steht) als auch von selbst erzeugt Einflüssen (z.B. durch die Elektromotoren) beeinflußt. Diese äußeren Einflüsse können aber durch das Neukalibrieren des Kompasses vor jedem Wettkampf minimiert werden. Um innere Einflüsse in Grenzen zu halten ist der Kompass das am höchsten montierte Bauteil an unserem Roboter. Da der Kompass weit von den Motoren entfernt ist, ist auch der eigene Einfluss der Magnetfelder der Motoren gering. 9 http://www.acroname.com/robotics/parts/R241-SRF10.html [Datum: 17.12.2011] 24 Abbildung 22: Kompaßsensor10 4.4.7 Tasterplatine Die Tasterplatine wurde von uns gefertigt und befindet sich gut erreichbar auf der obersten Ebene. Auf der Tasterplatine befinden sich 4 Taster mit denen man das Programm des Roboters steuern kann. Weiters ist es auch möglich, zwischen SensorWerten hin- und her zuschalten. Bei der Tasterplatine wurde auch darauf geachtet sie möglichst klein zu konstruieren. Deshalb kommen Mikrotaster mit einer Größe von 6*6 mm zum Einsatz. Abbildung 23: Tasterplatine in Eagle 10 http://www.robot-electronics.co.uk/images/cmps3pin.jpg [Datum: 20.12.2011] 25 4.4.8 Energiezufuhr Als Stromversorgung wurde ein Lithium-Polymer-Akkupack mit 3 Zellen, 11,1V und einer Kapazität von 2000mAh verwendet. Diese Art von Akkus hat den Vorteil, dass sie sehr lange eine konstante Spannung abgeben und, dass sie unabhängig vom aktuellen Ladezustand aufgeladen werden können. Es tritt kein Memory-Effekt wie bei gewöhnlichen NiCad-Akkus auf. Der einzige Nachteil dieser Akkus ist, dass sie nie vollständig entladen werden dürfen, da sie sonst unbenutzbar werden. . Abbildung 24: Lipo Akku 4.4.9 Display Als Display entschieden wir uns für ein 2-zeiliges LCD Punkt Matrix-Modul mit je 16 Zeichen pro Zeile. Dieses Display wurde an den LCD Port unseres Atmega 128 geschlossen. Abbildung 25: LCD Display11 11 http://www.neuhold-elektronik.at/catshop/popup_image.php?pID=160 [Datum: 26.12.2011] 26 5 Software 5.1 Flußdiagramms Darstellung der Grundlogik des Programms mithilfe eines Flußdiagramms: Abbildung 26: Flussdiagram des Programmes 27 5.2 Beschreibung des Flußdiagramms In dem ersten Teil des Programms werden alle Variablen, die im Programm benützt werden, initialisiert. Direkt danach werden der Kompass, die Infrarot- und Ultraschallsensoren in das Programm eingebunden. Nach der Initialisierung des Kompasses wird der Winkel des gegnerischen Tores in einer Variablen gespeichert. Anschließend wird ermittelt, ob der Roboter den Ball hat oder nicht. Im nächsten Abschnitt des Programms werden die Ultraschallsensoren zur Positionierung am Feld benutzt. Falls keiner der Infrarotsensoren ein Signal vom Ball erhält (z.B. ein anderer Roboter steht vor dem Ball), findet eine Zentrierung im eigenen Tor statt um ein Gegentor zu vermeiden. Die Motordreh-Variable wird aus den Ultraschallwerten und den Kompasswerten berechnet. Sie ist eine der wichtigsten Variablen im Programm, die Einfluss auf die Motorgeschwindigkeiten nimmt, sodass der Roboter immer zum gegnerischen Tor schaut. Das bringt einen großen Vorteil, denn so kann man gleich nach der Ballannahme auf das gegnerische Tor schießen ohne sich zuerst aufs Tor ausrichten zu müssen. Um genau zu wissen, wo sich der Ball befindet, wird ermittelt, welcher der Sensoren den kleinsten Wert zurückliefert. Danach weiß man, wo sich der Ball genau befindet. Zusätzlich zur reinen Position des Balls wird aber auch der Abstand zum Ball gemessen um die Geschwindigkeit mit der der Roboter den Ball anfahrt zu regulieren. Danach sollte sich der Roboter hinter den Ball befinden und den Ball annehmen. Da der Roboter die ganze Zeit in Richtung des gegnerischen Tores ausgerichtet ist, fährt dieser danach nur mehr ein kurzes Stück vor um Geschwindigkeit für den Schuss zu sammeln. Danach schießt der Roboter. 28 5.3 Programm Erklärung Das gesamte Programm wurde von uns entwickelt und wird im folgenden Kapitel beschrieben. Im ersten Teil des Programms erfolgt die Einbindung der Bibliotheken. Als nächstes findet die Definition der globalen Variablen statt. Auf die einzelnen Variablen wird später noch eingegangen. 29 Nun werden alle Variablen initialisiert und ihnen wird einen Wert zugewiesen. Beginn des Programms und Initialisierung des Kompasses und der IR-Sensoren. 30 Dies sind die Ereignisse im Falle eines Tastendrucks. Der Taster 1 erhöht die Statusvariable um 1. Der Taster 2 setzt die Statusvariable auf den Wert 10 (Wettbewerbsprogramm) Der Taster 3 lässt den Roboter schießen, deaktiviert den Dribbler und setzt die Statusvariablen auf 0 Der Taster 4 setzt beide Statusvariablen gleich. Dies hatte Vorteile in der Handhabung der Sensorabfragen. 31 Bestimmung des Winkels Teil 1 In Teil 1 der Winkel-Bestimmung wird die Variable Winkel_Neu aus der Variable WERT berechnet. Nach diesem Programmabschnitt befindet sich das gegnerische Tor genau auf 180 Grad, also genau vor dem Roboter. Das Vereinfachte die Programmierung. 32 Winkel Bestimmung Teil 2 In dem 2. Teil der Winkel Bestimmung werden die Werte des Kompasses in drei verschiedene Fälle eingeteilt und die Variable WERT berechnet. genau 180 -> Wert_Winkel ist 2 In diesem Fall wird der Kompass Wert gleich direkt übernommen. über 180 -> Wert_Winkel ist 1 unter 180 -> Wert_Winkel ist 0 33 Status 0: Motoren Stop LCD Startanzeige Status 1: Motoren Stop LCD Kompassanzeige 34 Status 2: Dieser Status zeigt auf dem Display den Wert der Infrarotsensoren mit dem niedrigsten Wert an und gibt dessen Wert aus. Status 3: Zeigt die Werte aller Infrarotsensoren an. 35 Status 4: Zeigt die Werte der Ultraschallsensoren an. Status 5 und 6: Zum Testen des Fahrverhaltens des Roboters bei zugeteilten Motorwerten. 36 Status 7: Zum Überprüfen, ob der Ball Taster gedrückt ist oder nicht. Status 8: Aktiviert den Dribbler 37 Start des Hauptprogramms Status 10: Das Hauptprogramm beginnt und der Wert der Variable MOTOR_DREH wird bestimmt. Der Roboter sollte prinzipiell immer zum gegnerische Tor “schauen“. Nachdem er sich durch Ungenauigkeiten oder Zusammenstöße immer wieder verdreht, wurde die Variable MOTOR_DREH eingeführt. Diese verändert die Motorwerte so, dass der Roboter sich während der Fahrt wieder in Richtung des gegnerischen Tores ausrichtet. 38 Im nächsten Programmsegment wird bestimmt, welcher Sensor den niedrigsten Wert hat und dementsprechend werden Motorwerte zugewiesen um sich dem Ball anzunähern. IR_DIRECTION gibt an, welcher der 8 Sensoren den Ball empfängt. Min gibt den kleinsten Wert allen Sensoren an. Teilweise werden auch Werte zwischen den Sensoren noch einmal verglichen. Beispiel: (b[7]+150<=b[0]) 39 40 41 42 Jetzt wird die Ausrichtungsvariable festgelegt. Sollte der Roboter trotz der Motordrehvariable sich zu sehr drehen, gibt es ein Programmsegment in dem sich der Roboter wieder ausrichtet. 43 Wenn der Roboter den Ball nicht sehen sollte, werden die Ultraschallsensoren abgefragt und somit die Distanz zu Spielbande ermittelt. 44 Nachdem der Abstand gemessen ist werden neu Motorwerte zugewiesen. Danach sollte der Roboter sich in der Mitte des eigenen Tores gestellt haben und dieses verteidigen. 45 46 Ausrichtung, wenn Roboter sich gedreht hat. 47 Im nächsten Teil des Programmes schießt der Roboter bei Ballbesitz. Dabei wird die Distanz zur Spielbande erneut gemessen. Danach sollte der Roboter sich direkt auf das gegnerische Tor drehen und schießen. 48 Am Ende des Programmes übergibt der Roboter die Motorwerte den Motoren und das Programm beginnt wieder am Anfang. 49 6 Quellen 6.1 Abbildungen12: Abbildung 1. Soccer B Feld: URL: http://robocupjunior.at/10-0-Soccer.html [Datum: 23.12.2011] Abbildung 10. Elektromagnet Kicker: URL: http://www.tremba.de/zylindermagnete/zylindermagnete.php [Datum: 20.12.2011] Abbildung 11. Motor mit Maßen URL: http://www.lynxmotion.com/images/data/ghm03.pdf [Datum: 10.12.2011] Abbildung 15. Soccer Ball URL:http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=IRB1005 [Datum: 27.12.2011] Abbildung 16. TSOP 1138 URL: http://www.dz863.com/datasheet-844179663-TSOP1140_Ir-Receiver-Modules- For-Remote-Control-Systems/ [Datum: 27.12.2011] Abbildung 20. Atmega Modul URL:http://ulita.ms.mff.cuni.cz/pub/predn/nprg037/ETBASE%20AVR%20%20ATmega64_128_Manual.pdf [Datum: 5.1.2012] Abbildung 22. Ultraschallsensor SRF 10 URL: http://www.acroname.com/robotics/parts/R241-SRF10.html [Datum: 17.12.2011] Abbildung 23. Kompaßsensor CMPS-03 URL: http://www.robot-electronics.co.uk/images/cmps3pin.jpg [Datum: 20.12.2011] Abbildung 26. LCD Display URL:http://www.neuhold-elektronik.at/catshop/popup_image.php?pID=160 [Datum: 26.1.2012] 12 Alle Abbildungen ohne Quellenangabe sind eigene Abbildungen bzw. Screenshots. 50 6.2 Kapitel inhaltlich entnommen Kapitel 3 Robocup Junior Soccer B: URL: http://rcj.robocup.org/rcj2011/soccer_2011.pdf [Datum:21.12.2011] 6.3 Zitate Im Kapitel 5.3.2 Räder URL: http://de.wikipedia.org/wiki/Allseitenrad [Datum: 26.12.2011] 6.4 Grundlegende Informationen Spielfeld: URL: http://robocupjunior.at/10-0-Soccer.html [Datum: 23.12.2011] Ball: URL:http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=IRB1005 [Datum: 27.12.2011] Spielregeln: URL: http://rcj.robocup.org/rcj2011/soccer_2011.pdf [Datum: 23.11.2011] 6.5 Datenblätter im Anhang: Atmega 128: URL: http://www.lynxmotion.com/images/data/ghm03.pdf [Datum: 20.1.2012] GHM-3 Motor: URL: http://www.lynxmotion.com/images/data/ghm03.pdf [Datum: 20.1.2012] ZMF-2551d.001: URL: http://www.roboter-teile.de/datasheets/ZMF-2551d.001.pdf [Datum: 20.1.2012] Tsop 1138: URL: http://www.datasheetcatalog.org/datasheets/restul/305097_DS.pdf [Datum: 20.1.2012] 51 SRF 10: URL: http://www.robotikhardware.de/download/srf10doku.pdf [Datum: 20.1.2012] CMPS-03: URL: http://www.datasheetcatalog.org/datasheets2/10/108026_1.pdf [Datum: 20.1.2012] 52 7 Anhang 7.1 Atmega 128 13 13 http://www.lynxmotion.com/images/data/ghm03.pdf [Datum: 20.1.2012] 53 54 7.2 14 GHM-3 Motor 14 http://www.lynxmotion.com/images/data/ghm03.pdf [Datum: 20.1.2012] 55 7.3 15 ZMF-2551d.001 15 http://www.roboter-teile.de/datasheets/ZMF-2551d.001.pdf [Datum: 20.1.2012] 56 7.4 16 Tsop 1138 16 http://www.datasheetcatalog.org/datasheets/restul/305097_DS.pdf [Datum: 20.1.2012] 57 7.5 17 SRF 10 17 http://www.robotikhardware.de/download/srf10doku.pdf [Datum: 20.1.2012] 58 7.6 18 CMPS-03 18 http://www.datasheetcatalog.org/datasheets2/10/108026_1.pdf [Datum: 20.1.2012] 59