RoboSoccer Gruppe A4 - WS 19/20

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Daniel Klassen & Moritz-Ben-Joe Kühnrich & Anton Baraschenkov



Alle Rechte bei Disneys König der Löwen

Einleitung

Im Rahmen des Informatikpraktikums im Wintersemester 19/20 haben wir mit Lego Mindstorms NXT einen Roboter konstruiert, gebaut und programmiert, welcher in der Lage ist autonom gegen einen anderen Roboter Fußball zu spielen.


Team

  • Anton Baraschenkov
    • Entwicklung der Spielstrategie
    • Umsetzung der Spielstrategie in NXC
    • Anfertigung des Plakats
  • Daniel Klassen
    • Konstruktion des Roboters
    • Entwicklung der Spielstrategie
    • Umsetzung der Spielstrategie in NXC
    • Anfertigung des Plakats
    • Anfertigen des Wiki-Artikels
  • Moritz Kühnrich
    • Konstruktion des Roboters
    • Entwicklung der Spielstrategie
    • Umsetzung der Spielstrategie in NXC
    • Anfertigen des Wiki-Artikels

Das Spielfeld

Die Maße des Spielfeldes sind 190cm x 129cm. Die Tore befinden sich wie bei einem echten Fußballfeld jeweils an den beiden Enden des Spielfeldes in der Mitte und sind ca 25cm breit.

Hardware

Die Grundlage für den Roboter bietet ein Lego Mindstorms Bausatz den jede Gruppe gestellt bekommen hat. Die finale Konstriktion von Jens ist mit der Zeit entstanden und stammt vom Grundprinzip von unseren ersten Ideen, bis hin zu stetigen Verbesserung. Besonderes Augenmerk liegt bei der Konstruktion auf einem niedrigen Schwerpunkt, einem möglichst kleinen Wendekreis und schnellen Fahrbewegungen.

Die Motoren

Jens steht auf drei Rädern: zwei von getrennten Motoren angetriebenen und einem Stützrad an der Hinterseite. Mittig nach vorne ragt der Schuss- bzw. Fangmotor, der bei der Ballsuche kontinuierlich dreht um den Ball zu fangen, und ihn zu schießen, wenn der Ball gefangen wurde. Bei den Motoren handelt es sich um Servomotoren. Diese sind Elektromotoren, die mit einem inkremental Sensor zu Positionserkennung der Motorwelle ausgestattet sind.

Der Kompasssensor

Möglichst weit weg von den Motoren, liegt der Kompasssensor, der zur Orientierung von Jens dient. Der Kompasssensor sollte deshalb so weit weg von Magnetfeldquellen wie möglich sein, weil er nach dem magnetoresistiven Prinzip arbeitet. Das bedeutet, dass intern durch eine Änderung des außen angelegten Magnetfelds, eine Änderung des Messwiderstandes geschieht. Dies ist auch erwünscht, allerdings im Idealfall ausschließlich durch das Erdmagnetfeld und nicht durch äußere Störeinflüsse. Er gibt einen Digitalen Messwert zwischen 0 und 359 aus. 0 entspricht der Himmelsrichtung Norden, 90 Osten, 180 Süden und 270 Westen.

Der Infrarotsensor

Direkt darunter, auf Höhe des Balläquators ist der Infrarotsensor angebracht, der die Richtung und die Stärke des vom Ball ausgesendeten Infrarotsignals erkennt. Intern wird das Feld, indem der Sensor das Infrarot Signal des Balls empfangen kann in 9 Bereiche aufgeteilt, sodass Jens laut Programm immer versucht den Ball in Bereich 5 direkt vor sich zu haben.

Der Infrarotsensor

Direkt darunter, auf Höhe des Balläquators ist der Infrarotsensor angebracht, der die Richtung und die Stärke des vom Ball ausgesendeten Infrarotsignals erkennt. Intern wird das Feld, indem der Sensor das Infrarot Signal des Balls empfangen kann in 9 Bereiche aufgeteilt, sodass Jens laut Programm immer versucht den Ball in Bereich 5 direkt vor sich zu haben. so wars erstmal

Ultraschallsensor

Der Ultraschallsensor befindet sich an der Rückseite und misst die Distanz nach links zum Spielfeldrand. Intern ist diese Distanz dafür um nach dem Ballfang eine genauere Ausrichtung zum Tor zu berechnen und letztendlich auszuführen. Die Distanzmessung funktioniert dabei so, dass der Ultraschallsensor periodisch Ultraschallwellen aussendet und mittels der Zeit, die die Wellen brauchen um vom reflektierten Objekt zurück zum Sensor zu gelangen und der Schallgeschwindigkeit, die Entfernung misst

Spielstrategie

Mithilfe des Programms "PaP-Designer" haben wir den groben Ablauf unserer Spielstrategie visualisiert:

main

Umsetzung in NXC

Wir haben uns an den PaPs orientiert die wir angefertigt haben und darauf hin zur Übersichtlichkeit den Code in einzelne Subroutine gegliedert.

main

→ zurück zum Hauptartikel: Informatikpraktikum WS 19/20