Image Fusion

Um alle Ereignisse auf dem Wettbewerbsspielfeld zu erfassen und den gegnerischen Roboter zu lokalisieren, nutzen wir ein Kameratracking-System. Dieses besteht aus einem ~1.60m hohen Turm auf dem eine Luxonis Oak W Kamera montiert ist. In der vergangenen Saison haben wir diese bereits genutzt um den Gegner zu tracken und neuerdings auch, um Objekte mit Hilfe von edge detection zu klassifizieren.

Eine Kamera reicht jedoch nicht ganz, um das gesamte Spielfeld abzudecken. Aus diesem Grund soll probiert werden zwei Kameras gleichzeitig zu nutzen, deren Bilder miteinander kombiniert werden. Auf Grundlage des kombinierten Bildes können dann Ereignisse im gesamten interessanten Bereich beobachtet werden. Wichtig ist hierbei insbesondere die Qualität des Merges und damit die Minimierung von Verzerrung, aber auch eine gute Performance.

Edge Detection mit einer Oak W Kamera

BLDC Motortreiber

Wir benutzen viele verschiedenen Aktoren, um Aktionen mit unserem Roboter auszuführen. Aktuell haben wir selber Platinen und Software für die Ansteuerung von Servos und DC-Motoren entwickelt. Um in Zukunft noch mehr Optionen in der Aktorauswahl zu haben, würden wir gerne ein Treiber für Brushless DC Motoren (BLDC) entwickeln.

Dafür müssen folgende Teile entwickelt werden:

  • BLDC-Reglerplatine (z.B. mit STSPIN32 Mikrocontroller)
  • Software zur Ansteuerung und Regelung der Motoren (C++)

Ein paar Infos zu BLDC-Motoren gibt es z.B. hier.

 

Katamaran Antrieb

Bisheriger Antriebsblock

In der TURAG legen wir sehr viel Wert darauf, so viele Bestandteile unseres Roboters wie möglich selber zu entwickeln und dabei zu lernen. Aus diesem Grund haben wir eine komplett eigene Antriebseinheit entwickelt, welche in den Robotern der letzten Jahre stets zum Einsatz gekommen ist. Jetzt wollen wir jedoch aufbauend auf unseren Erfahrungen eine zweite Version gestalten.

Ziel ist es den Antrieb kleiner zu machen und mehr Flexibilität durch eine Katamaran-Bauweise (zwei getrennte Antriebsblöcke) zu schaffen.

Dafür müssen folgende Teile entwickelt werden (natürlich macht nicht einer alles):

  • BLDC-Reglerplatine (Hauptaufgabe, entweder STSPIN32 oder sowas wie TMC9660)
  • Hauptprozessorplatine (vergleichsweise simpel, im Prinzip ein STM32(H7) mit RS485-Interface)
  • Softwareanpassung des bisherigen Codes an einen externen Motortreiber
  • Antriebsblöcke mit eingebauter Odometrie

Dabei kannst du mit folgenden Tools arbeiten:

  • KiCad für das Platinendesign
  • C++ zur Programmierung
  • SolidWorks für die mechanische Konstruktion

Damit bietet das Projekt Teilaufgaben aus den Bereichen der mechanischen Konstruktion, dem Platinendesign und der Programmierung.

Programmierung von Minirobotern

Für den diesjährigen Eurobot-Wettbewerb müssen wir neben unserem großen Hauptroboter müssen wir auch Aufgaben mit kleineren Robotern absolvieren.

Die Roboter (offiziell SIMAs genannt) müssen zu bestimmenten Zonen auf dem Spielfeld fahren und dabei Hindernissen, Gegnern und sich gegeneinander ausweichen. Die SIMAs werden über einen ESP32 Mikrocontroller angesteuert und besitzen einen Distanzsensor, um Gegner in Fahrtrichtung zu erkennen und zusätzlich zum Antrieb mindestens einen weiteren Motor, um Aktionen durchzuführen.

Für die Programmierung der SIMAs gibt es folgende Aufgaben:

  • Ansteuerung der Motoren zum Fahren
  • Kommunikation mit dem Hauptroboter via MicroRos
  • Aufbauend auf den Daten unserer Kamera:
    • Gegner- und Hindernisvermeidung
    • Pfade planen und fahren
Offener SIMA vom Eurobot 2025

Kompakte Kugelrollen

Konstruktion einer möglichst kompakten gefederten Kugelrolle.

Zusammenfassung

Unsere Roboter verfügen über zwei Antriebsräder und stützen sich zusätzlich auf Kugelrollen [1] ab. Für größere Aktoren in der Nähe des Bodens sind diese Rollen oft zu sperrig. Kompakte und in sich gefederte Kugeln sind verfügbar [2] aber bisher noch nicht getestet. Wichtig ist, dass die Kugelrolle trotz kompakter Bauform nicht zu klein wird, um Unebenheiten im Boden ausreichend ausgleichen zu können. Die Steifigkeit der Federung solle möglichst einfach anpassbar sein, damit je nach Fahrverhalten des Roboters nachjustiert werden kann.
Ziel dieses Projekts ist der Aufbau einer kompakten Kugelrollen-Baugruppe mit Federung und einfacher Schnittstelle zur Montage im Roboter.

Aufgaben

  • Recherche zu möglichen Komponeneten oder fertigen Lösungen
  • Aufbau einer wiederverwendbaren Baugruppe im CAD

Tools

  • SolidWorks CAD

Links

[1] https://www.maedler.de/product/1643/1629/468/kugelrollen-310-320-mit-befestigungselement
[2] https://www.halder.com/gb/Products/Standard-Parts/Machine-and-Fixture-Elements/Spring-Plungers/Spring-Plungers-with-moveable-ball-and-internal-hexagon

Implementierung eines IMU Systems

Board mit eingebauter IMU

Für die Verbesserung unseres Gegnererkennungssystems würden wir gerne IMUs (Inertia Measurement Units), also Beschleunigungssensoren nutzen. Bisher basiert unsere Gegnererkennung ausschließlich auf Triangulation mit Ultraschall. Die zusätzlichen Informationen einer IMU auf den gegnerischen Robotern soll diese noch genauer machen.

Aufgaben

  • Erstes Testen verschiedener IMUs m.H. von Dev – Boards
  • Erstellen einer kompakten Platine zur Ansteuerung des Sensors + Kommunikation mit unserem Roboter
  • Software zur Auswertung der Sensoren
  • Einarbeitung in derzeitiges System
  • Software zur Sensorfusion (Ultraschall+IMU)

Tools

  • C / C++
  • KiCad

Adaptive Pfadplanung

Lokale Pfadplanung

Für unsere nächste Wettbewerbssaison wollen wir gerne unsere Pfadplanung so adaptiv wie möglich gestalten. Dafür ist eine lokale Pfadplanung angedacht, die auf Basis eines vorerst globalen Pfades sich bewegenden Hindernissen ausweicht und auch durch enge Lücken navigieren kann. Als Hindernisse zählen zum Beispiel Roboter der anderen Teams, aber auch unsere eigenen Bots und fest verbaute Spielelemente.

Aufgaben

  • Einarbeitung in die Grundlagen von Pfadplanungsalgorithmik
  • Implementierung eines (lokalen) Pfadplanungsalgorithmus
  • Test und Inbetriebnahme des Systems an den Robotern

Tools

  • C++
  • Robot Operating System (ROS)
  • Vorschlag zur Implementierung (nav2)

Odocal-Automation

Umsetzen eines Tools zur automatischen Odometriekalibrierung.

Zusammenfassung

Unsere Roboter orientieren sich auf dem Spielfeld unter anderem mit Hilfe einer Odometrie. Diese besteht aus zwei mitlaufenden Rädern, die die zurückgelegte Distanz messen und so eine Positionsbestimmung ermöglichen. Damit die Berechnung der Pose möglichst genau ist, müssen die exakten geometrischen Parameter des Messsystems kalibriert werden [1]. Bisher wurde dieser Prozess manuell druchgeführt.
Inzwischen sind wir in bestitz einer Cognex -Kamera [2], die über weitreichende Funktionen zur Objekterkennung und Positionsbestimmung verfügt. Ziel ist es mit dieser Kamera ein automatisches Messsystem aufzubauen und den Kalibrierungsprozess so weit wie möglich zu automatisieren.

Aufgaben

  • Aneignen von Grundwissen zur Funktionsweise der Odometrie
  • Einarbeiten in vorhandenen Code und Systeme zur Odometriekalibrierung
  • Konzipieren und Umsetzen einer automatisierten Lösung
  • Test und Validierung des Systems

Tools

  • C++ (Code verstehen, neu geschriebene Module können auch anders umgesetzt werden)
  • Robot Operating System (ROS)
  • Cognex In-Sight

Links

[1] http://www.cs.cmu.edu/~motionplanning/papers/sbp_papers/kalman/chong_accurate_odometry_error.pdf
[2] https://www.cognex.com/products/machine-vision/2d-machine-vision-systems/in-sight-7000-series/specifications

ArUco Erkennung

Es soll ein System zum Lokalisieren von ArUco Markern aufgebaut werden.

Zusammenfassung

In den neusten Eurobotregeln wurde ein neues System zur Objekterkennung eingeführt: ArUco Marker [1]. Diese können benutzt werden um die Position und Orientierung von Spielelementen herauszufinden oder sogar Gegner zu erkennen. Daher soll ein wiederverwendbares System zum Erkennen und zur Positionserfassung dieser Marker implementiert werden. Im Roboter kann dazu einen Webcam an den Hauptrechner angeschlossen werden, deren Bilder in einem ROS-Node [2] ausgewertet werden sollen.
Es ist nach Regelwerk außerdem zulässig ein zusätzliches Erkennungssystem über dem Spielfeld zu montieren. Dafür müsste ein Haltesystem konstruiert und geeignete Hardware zur Bildverarbeitung und Kommunikation (z.B. RapsberryPi) ausgewählt werden.

Aufgaben

  • Einarbeitung in ArUco und geeignete Bibliotheken
  • Implementierung eines Systems mit Kamera im Roboter
  • zusätzlich: Aufbau eines zentralen Erkkenungssystems

Tools

  • Programmiersprache nach Wahl
  • Robot Operating System (ROS)
  • SolidWorks CAD

Links

[1] https://docs.opencv.org/trunk/d5/dae/tutorial_aruco_detection.html
[2] http://wiki.ros.org/aruco

Spannungsversorgung

Unsere bisherige Spannungsversorgung für 12V, 6V und 5V beruht auf integrierten Schaltreglermodulen, die mit KFZ-Sicherungen abgesichert sind. Dieses System verbraucht relativ viel Platz, ist relativ unflexibel was verschiedene Spannungen angeht und in seiner Leistung durch die verwendeten Schaltreglermodule begrenzt.

Es gilt zu untersuchen, ob eine digitale Spannungs-Regelung und Überwachung auf Basis eines STM32(G4) diese Nachteile beseitigen kann.

Hier ein Video ST, das zu unserem Anwendungsfall passt:
https://www.youtube.com/watch?v=7FfBoeuk_Gc