TurtleBot 2

Der TurtleBot 2

Beschreibung und Eigenschaften

 






















TurtleBot 2 ist ein mobiles Roboterkit mit Open-Source-Software, der mit einer Blackboard Architektur namens ROS (Robot Operating System) gesteuert wird. Durch diese Architektur können verschiedene Programmiersprachen im selben Projekt genutzt werden. Diese sind vorwiegend Python und C++. Durch seinen flexiblen Baustil können ebenso diverse Komponenten ergänzt werden, damit auch mehr Funktionalitäten hinzugefügt werden können.

Im Rahmen eines Projektes wurde er von Studenten liebevoll zu Botty McTurtleFace getauft oder kurz Botty.

Videos

Botty fährt vorwärts und umgeht ein Objekt.

 

Botty fährt ein Viereck.

 

 

Ausstattung

Im Auslieferungszustand besaß der Turtlebot 2 mehrere Hardware Komponenten, um seine Umgebung wahrzunehmen und mit ihr interagieren zu können. Alle sind mit einem NUC PC mit Ubuntu 16.04 verbunden, der sich direkt als Onboard PC auf dem TurtleBot 2 befindet. Folgende Komponenten besitzt er:

  • Greifarm PhantomX Reactor
    Der PhantomX Reactor Arm ist ein ROS-kompatibler Greifarm. Der Greifarm wird über einen Arbotix-M gesteuert, welches ein modifiziertes Arduino-Board zur Ansteuerung von Servo-Motoren ist. Auf dem NUC des TurtleBot kann eine ROS Anwendung gestartet werden, welche Positionierungsbefehle für den Greifarm annimmt und diese Befehle dann an das Arduino-Board weiterleitet. Hierfür befindet sich ein Arduino-Image auf dem Arbotix-M, welches die ROS-Befehle interpretiert und entsprechend die Servo-Motoren ansteuert. 
  • Lidar Hokuyo URG-04LX-UG01
    Es handelt sich hierbei um einen Laserscanner zur Berechnung von Distanzen auf einer horizontalen Ebene. Der Wahrnehmungswinkel beträgt 240° und die Wahrnehmungsreichweite ist bis zu ca. 4 Meter.
  • 3D-Kamera Orbbec Astra
    Die Orbbec ist eine 3D-Kamera mit einem Sichtfeld von 60° horizontal und 49,5° vertikal. Dazu hat sie eine Reichweite von bis zu 8 meter.
  • Kobuki-Base
    Die Kobuki-Base macht den TurtleBot 2 mobil und beinhaltet die benötigte Lithium-Ionen Batterie. Daneben stellt die Basis auch Tasten, LEDs und Bumpers, zur Kollisionserkennung, zur Verfügung.

Allerdings erlaubt seine besondere Baustruktur durch Halterungen und Platten mehrere Etagen über der Kobuki-Base zu stapeln, um auf diese Weise mehr Platz für weitere Komponenten hinzuzufügen. Daher wurden zu den ursprünglichen Komponenten noch ein Mikro für Spracherkennung und Sprachausgabe hinzugefügt. Ebenso wurde die 3D-Kamera ummontiert und an der Unterseite einer der Platten angebracht, damit sie ein besseres Sichtfeld hat.

Arbeiten mit Turtlebot 2
Programmierung

Die Programmierung ist einfacher als man denkt. Wie bereits erwähnt unterstützt ROS sowohl Python, wie auch C++. Im folgenden wird ein Python Beispiel betrachtet, mit dem der TurtleBot 2 ein Viereck fahren soll. Ein Video davon ist weiter oben zu finden.

def drive(meter): # starte den Motor Service, um mit ihm kommunizieren zu können rospy.wait_for_service('motor') job = rospy.ServiceProxy('motor', call) # Die Nachricht ist in diesem Fall ein Objekt "call" # erzeuge die Nachricht param=[] param.append(meter) command=call() command.call="forwardByMeters" # die vom Motor erwünschte Aktion command.param=param # die zurück zu legende Distanz #sende die Nachricht response=job(command.call,command.param) # Übermittelung der Nachricht return response # Ausgabe der zurück erhaltenen Antwort def turn(angle): # starte den Motor Service, um mit ihm kommunizieren zu können rospy.wait_for_service('motor') job = rospy.ServiceProxy('motor', call) # Die Nachricht ist in diesem Fall ein Objekt "call" # erzeuge die Nachricht param=[] param.append(angle) command=call() command.call="turnRigthByAngle" # die vom Motor erwünschte Aktion command.param=param # die zurück zu legende Distanz in Gradzahl #sende die Nachricht response=job(command.call,command.param) # Übermittelung der Nachricht return response # Ausgabe der zurück erhaltenen Antwort if __name__ == "__main__": for x in range (0,4): print("Going Forward to "+str(drive(1.0))) sleep(0.1) print("Turning around to: "+str(turn(90))) sleep(0.1) Weiterlesen

News zur B.O.T. Challenge

 

Es gibt einige Neuigkeiten zur diesjährigen BOT Challenge!

Allen voran die wichtigste Neuerung: Aus organisatorischen Gründen wird der geplante Termin am Freitag, den 07.06.2019, auf einen Ausweichtermin verschoben. Zur Auswahl stehen Samstag, der 08.06.2019, und der drauf folgende Samstag, der 15.06.2019. Hier könnt ihr innerhalb der nächsten 7 Tage abstimmen, an welchem Termin die BOT Challenge stattfinden wird.

Antreten könnt nicht nur in den bereits bekannten Disziplinen Line Follower Parcours und Maze Parcours, denn wir suchen dieses Jahr auch den kreativsten Eigenbauroboter! Begeistert uns mit euren kreativen Einfällen!

Die Anmeldefrist zur BOT Challenge läuft am 12.05.2019 ab. Bereits über die Hälfte der Teilnahmeplätze sind vergeben – also seid schnell und meldet euch unter bot-challenge@hs-kl.de an!

Nach der ersten Trainingsmöglichkeit am Offenen Campus, findet am 15.05.2019 um 15:15 Uhr ein weiterer Trainingstermin im Visionarium in der Hallplatzgalerie Zweibrücken statt, bei dem ihr die Möglichkeit habt euren Code unter wettbewerbsähnlichen Bedingungen zu testen.

Habt ihr noch Fragen zur bevorstehenden BOT Challenge oder seid euch noch unsicher? Meldet euch per Mail oder schaut einfach in unserem FAQ vorbei. Da findet ihr Antworten auf alle relevanten Fragen.

In den nächsten Wochen wird es noch eine weitere Neuerung in den Sozialen Medien des Arbeitskreis Smart Machines geben. Die Facebookseiten der BOT Challenge und des Arbeitskreis Smart Machines werden zeitnah zusammengelegt. Zukünftig findet ihr alle wichtigen Informationen und News auf der Facebookseite des Arbeitskreis Smart Machines!

 

Offener Campus 06.04.2019

Ein Bild, das Boden, Person, drinnen, Wand enthält. Automatisch generierte Beschreibung

Am Samstag, den 06. April, fand der alljährliche offene Campus der Hochschule Kaiserslautern an den Standorten Kaiserslautern, Pirmasens und Zweibrücken statt. Zwischen 10 und 15 Uhr hatten die Besucher die Möglichkeit sich über die Hochschule, deren Angebote und einige regionale Unternehmen zu informieren. Neben Informationsständen zu Studiengängen, Vorträgen und Experimenten wurde auch der Arbeitskreis Smart Machines vertreten.

Zahlreiche Schüler des ansässigen Gymnasiums besuchten den offenen Campus mit ihren eigenen Robotern im Gepäck. Sie nutzten die Chance ihre, im Rahmen einer AG, programmierten Roboter auf einer Teststrecke des Line Follower Parcours auszuprobieren und zu verbessern.

 

Viele offene Fragen rund um die BOT Challenge wurden vor Ort gestellt: Die Besucher fragten, ob die Kacheln des Line Follower Parcours am Tag der BOT Challenge am Boden befestigt werden, mehrere Läufe an dem Tag stattfinden werden und wie viele Lichtsensoren verwendet werden dürfen. Unter der Rubrik FAQ (BOT Challenge) auf unserer Website werden diese und alle weiteren Fragen beantwortet.

Die diesjährige BOT Challenge findet am 07. Juni 2019 in der Aula der Hochschule Kaiserslautern am Standort Zweibrücken statt. Es stehen noch viele freie Plätze zur Verfügung! Ihr interessiert euch für Roboter und habt Spaß am Programmieren? Dann ist die BOT Challenge genau das Richtige für euch. Informationen rund um die BOT Challenge sind unter der gleichnamigen Rubrik zu finden. Anmelden könnt ihr euch per Mail: bot-challenge@hs-kl.de.

EV3

Lego Mindstorms EV3 Education Kit

Typ, Ausstattung, Fähigkeiten, kurze Beschreibung

Das EV3 ist ein Set der Lego Mindstorms-Reihe. Durch das Lego-Baukastensystem lässt sich eine sehr vielfältige Auswahl an verschiedensten Robotern zusammenstellen. Programmiert wird dieser Roboter über den EV3-Baustein und die Lego Mindstorm Software (LMS) via Blocksprache oder über Java for Lego Mindstorms (LeJOS).

Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

  • ARM 9 Prozessor – TI Sitara AM1808 (ARM926EJ-S core) 300 MHz
  • 16 MB Flash-Speicher
  • mit einer SD-Karte erweiterbar (Micro SDHC bis 32 GB)
  • 64 MB Arbeitsspeicher – Ram
  • Unterstützung eines USB-Host-Mode USB 1.1 bis zu 12 Mbit/s und Anschluss von WLAN-Dongles oder USB 2.0 bis 480 Mbit/s
  • Bluetooth 2.1
  • Monochromes LCD, bzw. Schwarz-Weiß Matrix-Display (178 × 128 Pixel)
  • Bedientasten des EV3-Steins (vier Richtungs-, eine Auswahl-, eine Einschalt-/Ausschalttaste)
  • ein 50cm, zwei 35cm und vier 25 cm lange Anschluss-Kabel für die Motoren und Sensoren mit Stecker vom Typ RJ12
  • Sechs AA-Batterien oder ein wieder aufladbarer Akku mit 2050 mAh, der Ladevorgang des Akkus dauert im Allgemeinen drei bis vier Stunden und erfolgt über ein 10 V Gleichstromnetzteil, die sechs AA-Batterien wiegen insgesamt mehr als der Akku und mit montiertem Akku ist der EV3 Stein größer als mit eingelegten AA-Batterien
  • Anschlussbuchsen für vier Sensoren und vier für Motoren
    • Anschluss 1: Berührungssensor
    • Anschluss 2: Kreiselsensor/Temperatursensor
    • Anschluss 3: Farbsensor
    • Anschluss 4: Ultraschallsensor/Infrarotsensor
    • Anschluss A: Mittlerer Motor
    • Anschluss B & C: Zwei Große Motoren

    2 x große Servomotoren: 20 N/cm Drehmoment, 40 N/cm Kippmoment (langsamer aber stärker als der kleine Servomotor) und ein Winkelsensor mit einer Präzision von unter 1 Grad. Höchstgeschwindigkeit beträgt 160 bzw. 170 U/min
    1 x mittlerer Servomotor: 8 N/cm Drehmoment, 12 N/cmm Kippmoment, Höchstgeschwindigkeit beträgt 240 bzw. 250 U/min
    1 x Ultraschallsensor: verwendet reflektierte Schallwellen, um die Distanz zwischen dem Sensor und Objekten zu messen, die sich vor dem Sensor befinden. Diese Messung wird vorgenommen, indem hochfrequente Schallwellen ausgestrahlt werden und indem dann die Zeit gemessen wird bis die reflektierte Schallwelle wieder beim Sensor eintritt. Die Distanz zu einem Objekt kann in Zoll oder Zentimeter gemessen werden. Bei Verwendung der Maßeinheit „Zentimeter“ (cm) liegt die erkennbare Distanz zwischen 3 und 250 cm (bei einer Messgenauigkeit von +/- 1 cm). Bei Verwendung der Maßeinheit „Zoll“ liegt die messbare Distanz zwischen 1 und 99 Zoll (bei einer Messgenauigkeit von +/- 0,394 Zoll). Der Sensor kann auch einfach als Sender für Ultraschallwellen verwendet werden, um einem anderen Sensor Informationen zu schicken. Ebenso kann er auch nur als Empfänger eingesetzt werden, um Nachrichten zu empfangen, welche von einem anderen Ultraschallsensor ausgesendet wurden. Der Sensor besitzt eingebaute LEDs, welche mit einem Leuchten anzeigen, wenn gesendet wird oder Blinken, wenn der Sensor empfängt.
    1 x Farbsensor bzw. Lichtsensor: der Sensor kann in drei verschiedenen Modi verwendet werden: Farbmodus, Modus Stärke des reflektierten Lichts und Modus Stärke des Umgebungslichts. Im Farbmodus erkennt der Farbsensor sieben Farben: Schwarz, Blau, Grün, Gelb, Rot, Weiß, Braun sowie keine Farbe. Der Farbsensor arbeitet mit einer Erfassungsrate von 1 kHz. Im Modus Stärke des reflektierten Lichts misst der Farbsensor die Stärke des reflektierten Lichts, das von einer Rotlichtlampe ausgestrahlt und dann von Objekten wiedergespiegelt wird. Der Sensor arbeitet mit einer Skala von 0 (sehr dunkel) bis 100 (sehr hell). Im Modus Stärke des Umgebungslichts misst der Farbsensor die Stärke des Lichts, das aus der Umgebung durch das Fenster des Sensors dringt. Hierbei könnte es sich um Sonnenstrahlen oder den Lichtkegel einer Taschenlampe handeln. Der Sensor arbeitet mit einer Skala von 0 (sehr dunkel) bis 100 (sehr hell).
    1 x Kreiselsensor bzw. Gyroskopsensor: zur Ermittlung der Winkelposition und der Rotationsgeschwindigkeit des Roboters. Der Sensor kann eine maximale Drehrate von 440 Grad pro Sekunde messen. Die Genauigkeit liegt dabei bei +/- 3 Grad bei einer 90 Grad Drehung. Anhand der Drehrate kann festgestellt werden, ob sich ein Teil des Roboters dreht oder erkannt werden, wann der Roboter umkippt. Die Aktualisierungsrate des Sensors beträgt 1 kHz.
    2 x Berührungssensoren bzw. Tastsensoren: der Sensor erkennt drei verschiedene Zustände – gedrückt (berührt), ausgelassen und angestoßen (gedrückt und wieder ausgelassen), der Sensor kann entweder zur Hindernisdetektion verwendet werden oder damit der Roboter weiß, wann er etwas in seinen Greifzangen hat.

    Basisfunktionen

    Mit der EV3 kannst du deinen eigenen Wunsch Roboter erstellen, da dieser mit Legosteinen kompatibel ist. Er lässt sich mit der Lego Mindstorm Software per Blockprogrammierung oder mit Java programmieren. Die EV3 Steuereinheit lässt sich mit Bluetooth verbinden. Über ein Display können die aufgespielten Programme ausgewählt werden.

    Preis: EV3 Home Edition (275€), EV3 Education Kit (400€)

    Programmierung und IDE

    Programmiert wird dieser Roboter über den EV3-Baustein und die Lego Mindstorm Software (LMS) via Blocksprache oder über Java for Lego Mindstorms (LeJOS).

    Programmierung in EV3

    Die EV3-Programmierumgebung mit der gleichnamigen Programmiersprache basiert auf LabVIEW. Diese zielt auf Kinder und Erwachsene ohne jegliche Programmiererfahrung ab. Dabei wird kein Programmcode selbst geschrieben, sondern das Programm wird mittels Zusammenklicken erstellt. Durch das Verschieben und Verbinden der einzelnen Programmierblöcke entsteht nach und nach das gewünschte Programm. Neben Variablen gibt es auch die klassischen Kontrollstrukturen wie bspw. Schleifen und Verzweigungen. Zusätzlich kann auf Ereignisse reagiert werden und mit Hilfe von Datenleitungen können Daten zwischen den einzelnen Blöcken ausgetauscht werden.

    =&2=&

    Das Programm wird im Stile eines klassischen Ablaufdiagramms aus einzelnen, miteinander verbundenen Programmierblöcken zusammengesetzt, die dann nach dem Transfer des Programms auf den EV3-Stein und dem Programmstart in der gegebenen Reihenfolge abgearbeitet werden. Ein Programmierblock kann im Grunde als eine Funktion angesehen werden, der bestimmte Eingangsparameter übergeben werden und die bestimmte Ausgangsparameter zurückliefern kann.


    Den ersten Block seines Programms muss der Entwickler mit dem standardmäßig vorhandenen Startblock verbinden. Das Programm endet, wenn ein Block ohne Nachfolger erreicht wird. Das gewünschte Verhalten eines jeden Blocks lässt sich über dessen Eigenschaften einstellen. Neben den klassischen Kontrollstrukturen stehen dem Programmierer auch Motorsteuerungsblöcke, Warteblöcke, etc. zur Verfügung. Letztere warten mit der Ausführung eines Programmabschnitts so lange, bis eine bestimmte Bedingung eingetreten ist. Auch zur Abfrage von Sensoren existieren diverse Blöcke, die die Messdaten über entsprechende Ausgangsparameter bereitstellen. Des Weiteren ist es dem Entwickler möglich, eigene Programmblöcke zu erstellen.

    Programmierung in JAVA

    Zur Programmierung der MINDSTORMS-Roboter in der Programmiersprache Java muss zunächst das kostenlose und Open Source bereitgestellte Softwarepaket LeJOS EV3 von der zugehörigen Website heruntergeladen und installiert werden. Es ist für Windows, Linux und Mac OS X verfügbar. Mithilfe des EV3 SD Card Creators wird eine bootbare SD-Karte mit einem Linux-Betriebssystem inkl. einer Java-SE-Embedded 7-Laufzeitumgebung erzeugt. Nach nur wenigen Sekunden steht die SD-Karte, die anschließend in den Micro-SD-Kartenleser eingelegt wird, bereit. Als IDE sollte Eclipse Kepler verwendet werden, da dafür ein passendes LeJOS-EV3-Plug-in bereitsteht.

    Nach dem Erstellen eines Projekts ist das Ansprechen der Hardware denkbar einfach. Für jedes Bauteil gibt es eine zugehörige Java-Klasse, über die sich der jeweilige Aktor bzw. Sensor steuern bzw. abfragen lässt. Um einen Motor anzusprechen, ist im ersten Schritt ein entsprechendes Objekt zu instanziieren. Dem Konstruktor ist dabei der Port zu übergeben, an dem der Motor hängt. Über das erzeugte Objekt erfolgen anschließend die gewünschten Methodenaufrufe.

    forward() und backward() stellen wohl die wichtigsten Methoden dar. Sie werden nicht blockierend ausgeführt – bewirken also, dass der Motor in die gewählte Richtung losgedreht wird und setzen unmittelbar danach mit der Programmausführung fort. Erst ein Aufruf von stop() hält den Motor wieder an. Mit rotate() steht zur Motorsteuerung auch eine blockierende Variante zur Verfügung. Hier ist als Aufrufargument der Drehwinkel zu übergeben. Weiterhin können die Motoren auch direkt über die bereitgestellten statischen Objekte angesprochen werden. Neben der Programmierung in Java kann EV3 auch in Python, C# oder RobotC programmiert werden, allerdings nicht so komfortabel wie mit Java.

    B.O.T. Challenge

    Line Follower Algorithmus – Flussdiagramm

    Die oberen Bilder sind lizenziert unter einer Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

    Beispielcode EV3

    Hier kannst du Beispielcode für EV3, sowohl für LMS als auch für LeJOS downloaden.

    Der hier veröffentlichte Code ist unter der Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz lizenziert.

    Dokumentation und Tutorials

    =&5=&

Thymio II

Thymio II

Typ, Ausstattung, Fähigkeiten, kurze Beschreibung

Der Thymio ist ein kleiner, programmierbarer Lernroboter, der perfekt für Programmiereinsteiger geeignet ist.

Er besitzt 2 Antriebsmotoren (Heckantrieb und Bug-Sporn), 5 IR Abstandssensoren, 2 Helligkeitssensoren (Boden), weitere Sensoren (s. Grafik), on-top,  Bedienpanel, Multi-color LED, Lautsprecher und USB. Zudem ist er Lego-kompatibel (andere Reifen, Anbauten).

Dieses Werk unter liegt dem © der Webseite https://www.thymio.org/de:thymio und ist im Original lizenziert unter einer Creative Commons Attribution-ShareAlike 3.0 License

Basisfunktionen

Der Thymio besitzt standardmäßig mehrere Modi, wie z.B. Line-follower Bot, Hindernis Vermeidung oder Verfolger. Desweiteren ist er selbst programmierbar und verfügt über Bot-zu-Bot Kommunikation im API (ohne Wifi)

Preis: Basisgerät 139,- opt. Varianten: Wifi (189,- ) IR Fernsteuerung (12,-)

Thymio II ist ein Open Source und Open Hardware Projekt. Das vollständige 3D-Design des Roboters Thymio II ist frei verfügbar, wie auch der Source Code und die Programmierumgebung. Diese Dokumente sind unter der Creative Commons Lizenz veröffentlicht und als LGPL erhältlich.

Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Programmierung und IDE
  • Für Anfänger und Schüler: Visual Programming Language (VPL): https://www.thymio.org/de:visualprogramming
  • Mittleres Niveau: Google Blockly: https://www.thymio.org/de:blocklyprogramming
  • Programmiersprache Aseba: http://wiki.thymio.org/de:asebalanguage
    Die Syntax der Programmiersprache Aseba gleicht derjenigen von Matlab (verbreitete wissenschaftliche Programmiersprache). Dies ermöglicht Programmierern mit Vorkenntnissen sich schnell zu orientieren und Aseba in Kürze zu erlernen. Semantisch gesehen, ist Aseba eine einfache, imperative Programmierung mit einem einzelnen Datentyp (16 Bit Ganzzahlen mit Vorzeichen) und Vektoren davon.
  • Aseba besitzt eine ereignisbasierte (event-based) Architektur, was eine asynchrone Ereignisauslösung ermöglicht. Extern können Ereignisse zum Beispiel von einem anderen Aseba-Netzwerkelement ausgelöst werden. Intern können Ereignisse zum Beispiel von einem Sensor mit aktualisierten Daten ausgelöst werden.

=&1=&

var run = 0

onevent start

#falls das Ereignis ‘start’ eintritt, starte

run = 1

onevent stop

#falls das Ereignis ‘stop’ eintritt, halte an

run = 0

onevent ir_sensors

if run == 1 then

#wenn==1, dann

   emit sensors_values proximity_sensors_values

   #Gib das Ereignis ‘sensors_values’ aus mit den Variablen ‘proximity_sensors_values’

end  

#Ende des ‘if’ blocks

# Blinken beim Steuern nach rechts, links und hinten:

onevent timer0

   if turnleft==1 then

       if yellowl==0 then

           yellowl=1

           call leds.bottom.left(32,32,0)

       else

           yellowl=0

           call leds.bottom.left(32,0,0)            

       end

   else

       call leds.bottom.left(32,32,0)

   end

[…]

=&2=&

B.O.T. Challenge 2019

Was ist die B.O.T. Challenge 2019?

Die Wettbewerber schicken selbst programmierte Roboter in (mindestens) einer von zwei Disziplinen („Challenges“) gegeneinander ins Rennen. In der ersten Disziplin („Line Follower“) müssen die Roboter einer schwarzen Linie durch einen Rundkurs folgen. In der zweiten Disziplin („Maze“) müssen sie den Weg durch ein Labyrinth finden. Bewertet werden Zeit, Qualität der Programmierung und Anzahl der Fehler. Weiterlesen