Bist du auf der Suche nach einem praxisnahen technischem Wahlpflichtfach, in dem man sich mit Gleichgesinnten kreativ austoben kann? Dann möchten wir dich herzlich zur IMST Challenge einladen!Weiterlesen
Wir sind ein gemischtes Team von Berufsschülern, Studierenden, Professoren, Industriepartnern – gegründet 2020 – und wir freuen uns jederzeit über Neuzugänge!
Mitglieder des R2K-Kickers Teams:
Adrian Müller (Prof. Informatik): Hybride KI, Projektleitung
Andreas Hobelsberger (AI, 5. Sem): Simulator Developer, Card Development
Connor Lismore (AI, 5. Sem.): Bilderkennung
Thomas Jäger (MI, 6. Sem): „the Trainer“, Code, Kicks, Taktik!
und als unser Berater: Philipp (abat+): für den Transfer der Inhalte auf Industrie 4.0 und KI Projekte
Ehemalige Mitglieder des R2K-Kickers Teams:
David Kostka (AI, 6. Sem.): Bilderkennung
Jannis Schottler (AI., 2. Sem): RobCup Junior League Weltmeister
Jonas Lambing(BBS KL): Cards, Deployment
Markus Dauth (Master Informatik 1.Sem): Agiles Testen, Optimierung
Mike Hindi (AI, 6. Sem): Bilderkennung
Felix Mayer(AI, 6.Sem.): Teach-In, Optimierung Steuerung
Über den Link unten könnt ihr unserem Chat auf Discord besuchen. Wenn ihr daran interessiert seid, mehr über uns und unsere Arbeit zu erfahren, dann besucht uns bei einem unserer wöchentlichen Treffen.
Warum wir uns „R-ZWEI KICKERS“ nennen?
Was findet ihr auf dieser Webseite? So ziemlich alles: worum es geht, wie wir arbeiten, welche Arbeitsmaterialien wir für neue Team Mitglieder vorbereitet haben – und ganz unten auf der Seite eine Liste der aktuellen Projekte und offenen Arbeiten. Viel Spaß beim Lesen😉
Worum geht es? Der RoboCup soll die Robotik und KI Forschung fördern und das vor einem öffentlichen Publikum. Ein Fußball spielender Roboter mag wie eine eher wissenschaftliche Herausforderung aussehen, aber man muss dabei eine Fülle von Standard Problemen – wie man sie aus der heutigen Industrie kennt – lösen, und ist damit ein guter Einstieg in die Welt der KI.
Unser Kooperationspartner abat+ unterstützt uns deshalb bei Projekt- und Bachelor-Arbeiten in den Feldern robuste Bildverarbeitung, innovative Roboter Programmierung und Prozessoptimierung in der diskreten Fertigung, um neue Geschäftsfelder für die Industrie 4.0 zu erschließen.
Unsere Naos 😃
Macht sie nicht kaputt!
„kick their asses!“
Achtung, die neuen Corona Regeln beachten.
Unsere drei Roboter Regeln😎
Was ist die RoboCup Standard Platform League?
Der Robot Soccer World Cup ist die Fußball WM für Roboter. Der erste Wettkampf wurde 1997 bestritten und heute werden neben Fußball auch viele andere Wettkampf Arten ausgefochten, wie z. Bsp. auch die RoboCup Rescue League, bei dem die Roboter auf eine Rettungsmission entsandt werden.
Beim RoboCup lassen verschiedene Teams aus aller Welt ihr 5 Roboter in 2 Mannschaften gegeneinander wetteifern und dabei um den Fußball kämpfen, den Gegner austricksen und Tore schießen. Die „Standard Platform League“ (SPL) verwendet ausschließlich den gleichen Roboter, den NAO v6.
Die kleinen Roboter müssen sich vollständig autonom über das Spielfeld bewegen und dürfen nur wenig miteinander kommunizieren, um dennoch eine Team Strategie zu entwickeln, die zum Sieg führt. Dabei sollen sie trotz allem unabhängig voneinander agieren können.
GORE 2022
Wegen den letzten uns wohl bekannten, weltweiten Corona Restriktionen wurde der RoboCup 2019 remote abgehalten, wodurch auch einige Turniere wie der SPL nicht in der selben Form stattfinden konnten. Aber innerhalb der deutschen Community wurde schon damals ein „German Open Replacement Event“ geplant, um zumindest trotz reiner remote Teams das Event unter Turnier Bedingungen stattfinden lassen zu können. 2022 war es dann soweit, dass vor dem offiziellen Start des RoboCup 2022 das GORE sich widerholt hat und im vollen Umfang vor Ort statt fand in der Handelskammer Hamburg. Remote Teams nahmen dennoch teil weil diese sogar von außerhalb von Deutschland kamen!
Arbeiten mit dem NAO
Arbeitsumgebung
Der kleine humanoide Roboter NAO ist unser Spieler auf dem Spielfeld und wir sind sein Trainer. Bei uns wird er sowohl mit C++ als auch mit Python programmiert. Dabei wird Python bei der Bilderkennung, wie zur Erkennung des Balls und des Tors, verwendet und C++ für den ganzen Rest. Darunter fällt zum Beispiel seine Bewegung über den Fußball Rasen.
Voraussetzung hierfür ist die im Projekt bereits mitgelieferte IDE CodeLite oder vorzugsweise Visual Studio code. Als Betriebssysteme benutzten wir derzeit Ubuntu 18.04 LTS (empfohlen) und Windows 10 zum Einsatz.
Außerdem gibt es auch einen Simulator. Dann muss man nicht immer vor Ort sein um seinen Code zu testen. Der Simulator ‚SimRobot‘ ist sogar vom amtierenden Weltmeister des RoboCup (B-Human – Uni Bremen und DFKI) entworfen.
Beispiel Code
Wie gut müsst ihr programmieren können? Beantwortet es euch selbst.
Unten seht ihr ein Code Beispiel. Wenn ihr in der Lage seid, nachzuvollziehen was dort passiert, dann seid ihr bestens vorbereitet.
Sollte der NAO umfallen muss er laut Regelwerk selbst in der Lage sein wieder auf zu stehen. Der folgende Code erreicht das.
void FallEngine::safeFall(FallEngineOutput& output) const
{
// set stiffness of each joint
for(int i = 0; i < Joints::numOfJoints; i++)
output.stiffnessData.stiffnesses[i] = 10;
// falling backwards ? sit up.
if(output.fallingBackwards)
{
MotionUtilities::sit(output);
}
// falling forward ? stand up.
else if(output.fallingForward)
{
MotionUtilities::stand(output);
}
}Weiterlesen
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
Der Nao ist ein autonomer, humanoider Roboter entwickelt von dem französischen Unternehmen Aldebaran Robotics. Er besitzt eine Vielzahl an Sensoren, Motoren und Kameras, sowie eine Spracherkennung und -ausgabe. Seit 2008 wurden mehrere Versionen des Nao veröffentlicht . Die aktuellste Version, der Nao V6, ist 2018 erschienen.Weiterlesen
Der Arbeitskreis Smart Machines war auch auf den Welcome Days 2018 vertreten und bot im Rahmen eines Workshops einen Einblick in die Roboter-Programmierung — für Einsteiger!
Die Teilnehmer des Workshops (allesamt ohne besondere Vorkenntnisse!) konnten sich am ersten Tag zunächst anhand von Beipielcode mit den Grundlagen des Programmierens vertraut machen. Im zweiten Schritt galt es dann, diesen Code zu verbessern, zu optimieren, und zu erweitern, was sehr schnell und gut funktionierte. Und weil auf der Teststrecke gelegentlich sehr viel los war, haben einige ihren Code sogar noch um eine Bremse erweitert, falls der Thymio (unser Lernroboter) ein Hindernis — etwa einen Trödler — vor sich entdeckt. Und das ganz ohne Anleitung oder Hinweis!
Am zweiten Tag wurde es dann ernst: Es wurde ein Thymio vorgeführt, der auf einem Ball balancierte, und Aufgabe war es, den Code dazu vollständig selbst zu entwickeln. Und auch hier waren alle Teilnehmer erfolgreich!
Insgesamt kann man also von einem rundum erfolgreichen Workshop sprechen. Wir hoffen, es hat allen Teilnehmern so viel Spaß gemacht wie uns und wir konnten einigen das Arbeiten mit Robotern näher bringen.
Wer es selbst einmal versuchen möchte, darf jederzeit einen unserer Roboter ausleihen. Nachfolgend die Ressourcen, die auch den Workshop-Teilnehmern zur Verfügung standen, ergänzt um Lösungsansätze:
(Please note that this tutorial is work in progress)
Introduction
We appreciate your interest in programming intelligent machines. Here we show you what kind of materials, resources and know-how the working group Smart Machines has to offer. In addition, we are always available for questions and joint projects.
Our idea was to use soft- and hardware for gesture recognition to remotely control drones, mobile robots and robotic arms to intelligently support workflows. A very elegant and easy-to-use method to achieve this is the Tactigon board by Next Industries. It is a very small, easily programmable Arduino based board equipped with a gyroscope, an accelerometer and many other sensors to allow the detection of gestures, and it also comes with enough computing power to interpret them and make them useful.
The advantage of this approach is that the user can control machines intuitively through easily understandable and learnable gestures while retaining a free mind to focus on the actual problem they are working on, not on operating their equipment. And because the Tactigon uses Bluetooth, there are no wires to trip over, either.
In this tutorial we provide you with
references to basic information to get you started
example code and videos
the full API documentation of the Tactigon
game breaking issues that we’ve run into, and possible solutions
For advanced users who have already programmed an Arduino board, we have further information, for example on
the technical implementation of gesture recognition
how to tell the robot where it is, so it can accurately navigate
the man-machine interface concept
To develop applications using the Tactigon, the working group Smart Machines has purchased the drone Crazyflie 2.0 among others. You can find all our information on the Crazyflie, including sample code for use with the Tactigon, on this page.
An important note to conclude: All members of the HS-KL can borrow the resources of the working group at any time; for use in lessons and tutorials, or even for a graduation thesis.
Getting started
Before you start, you’ll need a system running Windows (tested on 7 and 10, make sure to install the latest windows updates). The Tactigon is not yet compatible with Mac, Linux or other systems (as of September 2018). Additionally, you’ll need a USB-A to micro-USB cable to upload your sketches to the board.
Please note: The Tactigon uses Bluetooth Low Energy (BLE) for wireless communication. Make sure that any other devices you want it to communicate with also support BLE.
The Tactigon is based on the Arduino platform, so for everything to run smoothly, it is recommended that you use the official Arduino IDE for development. You can find it here.
After downloading and installing the IDE, follow this guide to prepare it for the Tactigon.
The full documentation of the Tactigon can be found here and here.
Please note: All code for the Tactigon must be written in C.
Bluetooth Low Energy
Follow this tutorial on how to set up BLE on the Tactigon. Please note that there are code samples at the very end of the linked page which the text refers to.
Points to consider:
The role of Tactigon can be CENTRAL or PERIPHERAL, depending on the direction in which the connection is to be established. See bleManager.InitRole(TACTIGON_BLE_CENTRAL); in the linked tutorial code above.
BLE is not a mandatory part of Bluetooth. Please make sure your hardware is compatible.
Basic concepts
When working with the Tactigon or other BLE devices, you’ll run into the following concepts:
UART: Universal Asynchronous Receiver Transmitter. Standard serial interface between PCs and microcontrollers
COM: Serial port interface. Refers not only to physical ports, but also to virtual ports, such as ports created by Bluetooth or USB-to-serial adapters.
USB HID: Device that receives input from humans and gives output to humans.
The Arduino IDE can monitor the current serial (COM) interface [screenshot pending]. This can be very useful for debugging — use Serial.println("example text"); to write example text to the COM port.
Sensor values, reading out values
For a list of all classes supported by the tactigon,
The Crazyflie 2.0 is an open-source quadcopter with 2 micro controllers developed by Bitcraze: The NRF51 Cortex-M0 Chip handles radio communication and power management. The STM32F405 Cortex-M4@160MHz Chip manages flight control, sensor and telemetry data, motor control as well as additional user development. Crazyflie 2.0 supports Bluetooth LE as well as 2.4GHz 20dBm radio control.
Hardware specifications
In this paragraph you will find a list of the Crazyflie’s hardware specifications.
These specifications match the developer’s data, a full list can be found here.
Mechanical specification
Weight: 27g
Size (WxHxD): 92x92x29mm (motor-to-motor and including motor mount feet)
Radio specification:
20 dBm radio amplifier tested to > 1 km range LOS with Crazyradio PA
Bluetooth Low Energy support with iOS and Android clients available (tested on iOS 7.1+ and Android 4.4+)
Radio backwards compatible with original Crazyflie and Crazyradio
Micro-controllers:
STM32F405 main application MCU (Cortex-M4, 168MHz, 192kb SRAM, 1Mb flash)
nRF51822 radio and power management MCU (Cortex-M0, 32Mhz, 16kb SRAM, 128kb flash)
Vielen Dank an alle Teilnehmer/-innen der Umfrage zum Beitrag des Arbeitskreises für den ersten Hackathon im Fachbereich I/MST am Standort Zweibrücken. Wie im Vorfeld bereits angekündigt möchte der Arbeitskreis die Umfrage-Ergebnisse veröffentlichen, um einen Einblick in mögliche Themenbeiträge für den Hackathon zu ermöglichen.
Die Mehrheit der Teilnehmer stimmte für die Programmierung eines Open-Source Quadcopters, gefolgt von der Programmierung eines Roboterarms. Den dritten Platz belegten der Alphabot, sowie ein humanoider Roboter mit der gleichen Anzahl an Stimmen. Im Folgenden eine Visualisierung des Ergebnisses. Zu beachten gilt hierbei dass eine Mehrfachauswahl möglich war.