Spray painting drone

Endlich kann ich ein Video eines Projektes veröffentlichen an dem ich zusammen mit einem Kollegen vor einiger Zeit lange gearbeitet habe:

Auf der Drohne selber wird ROS eingesetzt. Alle Funktionen, auch das Öffnen und Schließen des Farbventils sind über ROS verfügbar. Basierend auf Daten der Intel RealSense wird eine Karte erstellt.

Eine Schwierigkeit war die Flugdynamik der Drohne, da der Schlauch für die Farbzuführung unter großem Druck steht und so relativ inflexibel ist. Dies muss der Flugcomputer, ein Pixhawk, ausgleichen. Für die Kommunikation zwischen Pixhawk und dem Hauptcomputer wird Mavros verwendet.

Roboy Abschluss

Das Roboy driverless Project ist nun abgeschlossen! Das Ergebnis der harten Arbeit meines Teams (und all der anderen Teams die an Roboy gearbeitet haben) lässt sich hier begutachten:


Wir haben unser Arbeit seht gut in unserem GitHub Wiki dokumentiert. Um einen Einblick und den Software- und Hardwarestack zu bekommen den wir entworfen haben kann ich diesen Artikel sehr empfehlen.

Roboy Zwischenpräsentation

Seit nun 3 Monaten arbeiten mein Team und ich daran das Roboy und seine Rikshaw autonom fahren können. Dazu gehört der gesamte software Stack: von der Kartierung der Umgebung, über das Pathplanning und Hindernisvermeidung, dem Erstellen eines Fahrzeugmodells bis hin zum Kalibrieren der Sensoren zueinander.

Nun haben wir unsere Zwischenergebnisse präsentiert.

Am 1. März müssen wir fertig sein, wir liegen aber gut im Zeitplan. Ich bin zuversichtlich das wir unsere Ziele erreichen!

Unser gesamter Code ist (wie alles von Roboy) opensource, unsere beiden Repositories sind auf Github hier und hier zu finden.

Franka Emika Panda

Seit ein paar Wochen habe wir nun den Panda Roboter von Franka Emika bei uns im Labor. Dies ist ein kollaborativer Roboterarm, der Roboter ist mit inertial measurement units (IMUs) und Sensoren in den Motoren ausgestattet um Kollisionen des Arms zu erkennen und die Bewegung schnell abzubrechen. So kann der Roboter sicher mit Menschen zusammen arbeiten.

Hier in diesem Video kann man erkennen wie gut die Vermeidung von Unfällen des Roboters funktioniert.

Hier ist der Roboterarm in zusammengeklapptem Zustand auf einer Platte montiert bei uns im Labor.

Die Projekte welche wir mit dem Arm und eventuellen anderen Sensoren und Komponenten machen werden sind für das Erste geheim – das es aber unglaublich coole Sachen sind welche wir vorhaben kann ich schon berichten!

Roboy Autonomous Driving

Seit Oktober bin ich der team lead bei Roboy für autonomous driving. Roboy ist ein Forschungsprojekt in dem es darum geht einen humanoiden, menschengroßen Roboter zu bauen. Dieser hat, im Gegensatz zu den meisten anderen Robotern, keine Motoren direkt in den Gelenken. Dafür hat der Roboter Seile, welche wie Sehnen funktionieren. So sind die meisten Motoren im Brustkorb untergebracht.

Das Ziel für dieses Semester ist es das Roboy in der Lage ist autonom auf einem (großen) Dreirad über den TUM Campus in Garching zu fahren. Ich wurde ausgewählt das autonomous driving team zu leiten. Informationen zu den Aufgaben in diesem Semester gibt es hier.

Ich habe beschlossen das wir ein 2D LiDAR von SICK, zusammen mit einer Intel RealSense, Odometriesensoren und einem Hall-Sensor für den aktuellen Lenkwinkel verwenden.

Odometrie und Motorcontroller ROS nodes

Im Moment arbeite ich an einem ROS Node welcher die Lichtschranken überwacht, die Odometrie berechnet und eine nav_msgs/odometry message publiziert. Dies kann ich dann als zusätzlichen Input für den Google Cartographer SLAM benutzen. Allerdings bin ich mir noch nicht sicher wie genau die Odometrie wird. Einerseits wegen des beträchtlichen Drift welcher durch die „Panzer Lenkung“ zustande kommt, andererseits weil der Taktgeber nur 32 Flanken pro Umdrehung generiert, was in einer Strecke von 1,9cm Pro tick resultiert. Die Kovarianz der Odometrie muss ich dann durch Messungen ermitteln.

Zusätzlich arbeite ich an einem ROS node welcher die Motoren steuert, so sind dann alle Systeme mit ROS ansprechbar.

orb_slam_2_ros

Seit kurzem ist meine Implementierung des ORB-SLAM2 für ROS online. Im vergleich zu der originalen Implementierung von Raul Mau-Artal ist meine Version auf den Einsatz mit ROS optimiert. Das Package kann komplett mit catkin build gebaut werden und die Position, die Pointcloud und ein Livestream der Kamera mit gefundenen Keypoints wird als ROS topic publiziert. Darüber hinaus verzichtet das Package auf den integrierten viewer, das Laden des vocabulary file wurde stark beschleunigt und Parameter sind über den ROS Parameterserver einstellbar.

Das Package findet sich hier, auf dem offiziellen Github account von appliedAI.

ROS Kinetic auf der Jetson

Auf der Nvidia Jetson TX2 Läuft jetzt Ubuntu 16.04 und ROS Kinetic. ROS ist eine Robotik Middleware und erleichtert das Entwickeln von Prototypen sehr. Im ROS Framework kommunizieren die Programmteile (Nodes) untereinande nach dem publisher-subscriber Prinzip.

Im Moment arbeite ich an einer Library welche die GPIO Funktionen der Pins und I2C bereit stellt. Diese benutze ich dann um meinen Motorcontroll-Node zu bauen.

 

ROS Kinetic Kame

ORB-SLAM auf der Drohne

ORB-SLAM auf der Drohne funktioniert bis jetzt nicht immer verlässlich. Ich konnte das das Ergebnis durch Anpassungen an den Parametern zwar noch etwas verbessern, trotzdem verliert die Drohne gerade bei schnellen Bewegungen das Tracking. Auch das Initialisieren der Karte schlägt manchmal noch fehl.

 

Im Video sieht man sehr gut die ORBs welche vom Algorithmus gefunden und verfolgt werden. Die Drohne fliegt etwas durch den Raum zum testen.

Das paper zum ORB-SLAM findet sich hier.

 

Test auf dem Schiff

Wir haben nun unser Setup im live Betrieb auf einem Schiff getestet. Dabei haben wir die Daten aller Sensoren aufgezeichnet damit später die (neuen) Algorithmen in den gleichen Situationen immer und immer wieder testen zu können.

Hier ein kleiner Teil unseres Setups, eine Kamera und ein LiDAR.