[08.03.17] Vorstellung der Erfolge mit dem neuen Lidar-Sensor

Nach einigen Wochen Auszeit, hatten wir nun endlich wieder die Gelegenheit, ein reguläres THOMAS-Treffen durchzuführen, wozu es wegen der Absenz von THOMAS zum Schreiben von Sörens Facharbeit und einem ausgeprägten Engagement zur Mithilfe an der Einrichtung bzw. Weiterentwicklung eines neuen Informatik-Systems für die Schule längere Zeit nicht kam. Natürlich waren wir in den vergangenen Wochen dennoch bei weitem nicht untätig und vorallem nach Eintreffen des Lidar Laser-Sensors haben wir diesen im Rahmen mehrerer privater Treffen wie gewünscht zum Laufen gebracht.

Zusätzlich zu den Vorbereitungen, die ich bereits im vorherigen Beitrag erläuterte, haben wir im Laufe der letzten Monate mithilfe der bestellten Komponenten und einer 3D-gedruckten Halterung den Lidar nun endgültig so zusammengebaut, wie wir es uns vorgestellt hatten, und nun überaus erfolgreich in Betrieb genommen. Durch eine Kombination aus einem sehr genau angesteuerten Schrittmotor und einem auf einem Schleifkontakt gelagerten Servo-Motor, an dem der Lidar Distanzsensor befestigt ist, ist der Lidar nun um zwei Achsen frei drehbar, wodurch es möglicht wurde einen dreidimensionalen Laser-Scanner umzusetzen, was wir auf Basis des zuvor erwähnten 3D-Visualisiserungsprogrammes natürlich auch sofort taten. Von der Genauigkeit des Laser-Sensors und der Qualität der durch unsere selbstentwickelte Software generierten 3D-Punktwolke, waren alle überrascht.

Hier ein Video, welches wir auf YouTube luden, und welches bereits eine erstaunliche Popularität erlangte: https://www.youtube.com/watch?v=gCpCGkwwy8I

Sowohl der Lidar, als auch der Schrittmotortreiber und der Servo-Motor sind mit einem Arduino Uno verbunden, welcher die um 0,08°-genaue horizontale Drehung des Lidars und die parallele Weiterleitung aller erfassten Lidar-Abstandswerte über USB an den Steuerungs-PC übernimmt. Zudem ist der Arduino dafür zuständig, nach jeweils 2-3 kompletten Drehungen des Sensors, die vertikale Ausrichtung über den Servo-Motor zu ändern, sodass der Sensor Informationen über jeden Punkt eines Raumes erfassen kann.

Nach den im Video gezeigten erfolgreichen Probeläufen mit einem sehr wackeligen Testaufbau und einer zusammengebastelten Stromversorgung, die aus drei verschiedenen Netzteilen bestand, war es mehr als nötig, sich eine robuste Möglichkeit der Befestigung und Stromversorgung zu überlegen, sodass der 3D-Scanner auf THOMAS befestigt und betrieben werden kann. Um diesem Ziel gerecht zu werden, bestellten wir weitere Alu-Profile, wie wir sie auch schon für das Gestell von THOMAS verwendet hatten, sägten diese entsprechend zurecht und bauten daraus einen Aufsatz für THOMAS, der den Lidar als höchsten Punkt des Roboters mittig positioniert. Das ähnlich kniffelige Problem der stabilen Versorgung mit sowohl 12V und 5V bei einer ausreichend hohen Stromstärke lösten wir, indem wir die Ausgänge des PicoPSU-Akku-Netzteils für das Mainboard anzapften, sodass der Schrittmotor seine 12V nun über den 4-Pin stecker des Computernetzteils bezieht und somit direkt mit der CPU parallelgeschaltet ist und der Servo-Motor die benötigten 5V von der SSD abzweigt. Diese naheliegende Lösung klingt zwar etwas riskant, hat bis jetzt aber zu keinerlei Problemen geführt, solange man mit gebührender Sorgfalt vorgeht.

Nach Abschluss dieser Arbeiten kehrte THOMAS jedoch nur kurzzeitig zu seinem Zuhause in der Schule zurück, da Sören diesen kurz dannach mit nach Hause nahm, um mit dem Schreiben seiner Facharbeit zu beginnen. Im Rahmen dieser Arbeit hat Sören versucht die sehr genauen Sensordaten, über die THOMAS nun verfügt, für einen selbstenwickelten SLAM-Algorithmus zu verwenden. Dabei vereinfachte er die Umsetzung des SLAM-Verfahrens so, dass sich der Algorithmus lediglich an dem Abstand zur Wand vor THOMAS orientiert, wodurch bei einer ausreichend genauen Geradeausfahrt recht gute Ergebnisse erzielt werden können. Eine Demonstration dieses Algorithmus findet sich hier: https://www.youtube.com/watch?v=YI7zMsjBXiA

Die Zeit des heutigen THOMAS-Treffens haben wir genutzt, um die vergangenen Fortschritte zu reflektieren und den von Sören entwickelten Algorithmus auch im Schulgebäude zu testen und zu demonstrieren.

Wir freuen uns bereits darauf, soweit es die Zeit zulässt, in Zukunft weitere Experimente mit THOMAS und dem Lidar-Sensor durchführen zu können. Beispielsweise haben wir darüber nachgedacht die sehr günstig erhältlichen Google Cardboard VR-Brillen mit einer 3D-Visualisierung von THOMAS Messdaten zu kombinieren, sodass man sich mit einem Handy und einer solchen VR-Brille virtuell in Räumen bewegen kann, die mit Hilfe des 3D-Scanners aufgenommen wurden. Sobald wir die Gelegenheit finden, diese Art „Real Virtual Reality“ umzusetzen, werden wir unsere Erfolge hier oder auf unserem YouTube-Channel „TechsOnTube“ veröffentlichen.

 

[26.09.16] Entwicklung einer 3D-Visualisierung

Im Beitrag über das letzte Treffen, habe ich kurz angerissen, wie wir uns die Befestigung des bald eintreffenden Lidar-Sensors vorstellen und habe geschrieben, dass dieser um zwei Achsen frei drehbar angebracht werden soll, um die Aufnahme von dreidimensionalen Umgebungskarten zu ermöglichen. Zugehörig zu der Hardware, die zum Aufnahmen solcher 3D-Karten nötig ist, gibt es aber auch eine zweite Komponente um die erfassten Messdaten gut untersuchen und darstellen zu können: Ein Programm, welches die gemessenen Entfernungswerte vom Sensor empfängt und in eine 3D-Visualisierung einträgt.

Nachdem ich einige Zeit lang die technischen Vorbereitungen geschaffen habe um eine solche Visualisierung komplett auf Basis einer in C# selbstgeschriebenen 3D-Engine, die auf der Direct3D-Bibliothek aufbaut, umzusetzen, habe ich mich aus Gründen der schnelleren Anpassbarkeit und des Zeitaufwands entschieden, stattdessen auf die recht verbreitete Unity3D-Engine aufzusetzen. Diese Engine, die eigentlich für die Programmierung von Spielen gedacht ist, ermöglichte es mir nach einigen Stunden Aufwand eine später gut nachvollziehbare und erweiterbare Umsetzung der gewünschten Funktion, die Daten über eine Netzwerk-basierte Schnittstelle zu empfangen und als Punktwolke, die sich ringförmig um die Roboterposition herum bildet, einzutragen.

Im Detail werden die Messpunkte in zum Roboter relative Koordinaten umgerechnet und als Eckpunkte zu einem Mesh hinzugefügt. Dank eines Shaders werden diese Eckpunkte anschließend sichtbar gemacht und, abhängig von ihrer Entfernung zum Roboter, unterschiedlich eingefärbt. Die so erstellte Punktwolke ist zuletzt mit der Maus frei drehbar um sie genau betrachten zu können.

Da der Lidar Lite V3 noch nicht angekommen ist, folgt ein Screenshot mit einigen mathematisch errechneten Testdaten:

Demo der 3D-Visualisierung anahnd von Beispielwerten

[21.09.16] Thomas erwacht aus dem Winterschlaf

Nach der Teilnahme an der Maker-Faire war es zunächst eine Zeit lang still um den eigentlichen Kern des Projektes, die gebaute Roboter-Hardware. Wie auch in den vergangenen Beiträgen berichtet, haben wir uns in dieser Zeit vorrangig mit der Planung zukünftiger Erweiterungen der Sensorik-Plattform und dem erneuten Einrichten des Steuerungs-Computers befasst.

Die zwei Schulstunden des heutigen Treffens haben wir dafür genutzt um THOMAS wieder Leben einzuhauchen und mit einem frisch aufgeladenen Akku wieder in Betrieb zu nehmen und einige Testfahrten zu machen. Nachdem wir einige male – ganz im Sinne unserer Fahrkünste – mit gewissen Hindernissen kollidiert sind, viel uns auf, dass solche Kollisionen dazu führen konnten, dass die WLAN-Verbindung zum Roboter abbrach und auch nicht wiederhergestellt werden konnte. Nach verschiedenen Ansätzen der Fehlersuche stießen wir leltztendlich aber auf ein doch recht simples Problem: Die WLAN-Karte, über die die Verbindung zum Steuerungscomputer hergestellt wird, schien minimal zu wackeln, was dazu führte, dass Linux auf Probleme mit der Kommunikation mit dem PCI-Gerät stieß und so ein Neustart erforderlich wurde.

Nachdem wir diese Herausforderung auf professionelle Weise mit einem stabilisierenden Kabelbinder meistern konnten, sollten wir Thomas auch bei der bevorstehenden Präsentation zur Übergabe des JugendForscht-Schulpreises zuverlässig navigieren können.

Neben den Hardware-Arbeiten im Rahmen des Projekt-Treffens kamen wir aber auch mit der weiteren Planung für die optimale Anbringung des Lidar-Sensors voran und haben uns nun dafür entschieden, den Sensor auf einem 3D-gedruckten Gestell so zu befestigen, dass er mit einem Schrittmotor und einem Servo frei drehbar ist. Die Übertragung der Messwerte erfolgt dabei über einen Schleifkontakt, der über einen Keilriemen angetrieben wird. Auf diese Weise wird es Thomas in naher Zukunft hoffentlich möglich sein, seine Umgebung als dreidimensionale Karte zu erfassen und darzustellen. Weitere Experimente bezüglich der Weiterverarbeitung dieser Messwerte zur Umsetzung eines SLAM-Verfahrens wird Sören Busse als Facharbeitsthema bald anstellen.

 

[07.09.16] Einrichtung des Steuerungscomputers

Nach einer mehrwöchigen Pause war es uns nun wieder möglich mit den Thomas-Treffen fortzufahren. Wie im letzten Beitrag prophezeit haben wir uns im dieswöchigen Treffen vorrangig der Neuinstallation unseres Steuerungscomputers „Albert“ gewidmet. Auf diesem findet sich nun die nötigste Software zur Programmierung des Arduino-Sensorsystems und zum Weiterentwickeln der verschiedenen umfangreichen Softwarekomponenten, die unserem Roboter Leben einhauchen.

Den zweiten Teil unseres Treffens haben wir darin investiert, die Fachschaft Physik im Rahmen eines kleinen technischen Nebenprojektes zu unterstützen. Dabei haben wir unsere, zum Teil auch im Rahmen des Thomas-Projektes erworbenen, Informatikkentnisse dazu genutzt ein kleines Programm für den Unterricht zu entwickeln, welches in Verbindung mit einem Arduino die Messwerte eines Gewichtssensors groß und leserlich darstellen kann. Dieses Nebenprojekt wurde im Anschluss privat beendet und es freut uns, dass wir der Physik-Fachschaft, die uns  vorallem bei den Hardwarearbeiten an Thomas desöfteren unterstützt hat, auf diese Weise etwas zurückgeben konnten… :-)

Doch auch über den Stand unseres nächsten geplanten Weiteterentwicklungs-Schrittes möchte ich euch selbstverständlich auf dem Laufenden halten. Die Finanzierung des im vorherigen Bericht erwähnten Lidar-Sensors namens „Lidar Lite v3“ ist nun geklärt und somit konnten wir den Sensor vorbestellen. Wir warten gespannt auf die Zustellung in wenigen Wochen, sodass wir diesen auf Thomas montieren und einige Experimente durchführen können. Mit Hilfe dieses Laser-Sensors erwarten wir wesentlich bessere Ergebnisse in Hinsicht auf die autonome Kartierung mittels SLAM erzielen zu können, als es mit den Infrarot-Sensoren bisher möglich war. Über dieses Thema halte ich euch ebenfalls gerne auf dem Laufenden und möglicherweise werden wir auf YouTube auch eine kleine Videodokumenation dazu erstellen.

[10.08.16] Und weiter geht’s!

Nach einer weiteren langen Pause, tut sich, aus organisationstechnischen Gründen, auch auf diesem Blog wieder ein wenig mehr! Nach einem erfolgreichen Besuch der Maker Faire in Hannover haben wir uns weitere Ziele gesteckt und arbeiten zudem daran, eine Nachfolge für unser Team zu finden und einzuarbeiten, um dem Grundgedanken des Generationenprojekts gerecht zu werden.

Für den weiteren Verlauf des frisch angebrochenen Schuljahres planen wir uns weiter mit der Aufgabe der autonomen Navigation innerhalb des Schulgebäudes zu befassen. Dafür bedienen wir uns zwei verschiedener Ansätze: Einerseits wägen wir über eine Anschaffung eines Lidar-Laser-Sensors ab, welchen wir auf der Maker Faire bereits kennenlernen und testen konnten. Hierbei bestehen allerdings gewisse Schwierigkeiten, was Verfügbarkeit, Preis und rechtliche Lage im Schulbetrieb angeht. Andererseits arbeitet Sören Busse im Rahmen einer Facharbeit an einer WLAN-basierten Methode zur Positionsbestimmung, welche möglicherweise bald auf THOMAS zum Einsatz kommen könnte. Über diese und weitere Fortschritte werde ich, Marcus Wichelmann, im Laufe der nächsten Wochen ausgiebiger berichten.

In dem heutigen und ersten Treffen des neuen Jahres hatten wir vorrangig zunächst die Planung des kommenden Schuljahres und die Aktualisierung von „Albert“, unserem Arbeits- und Steuerungscomputer, im Blick. Auf diesem haben wir nun einen frischen Beta-Build der elementary OS Distribution installiert, wodurch uns die neuesten Entwicklungswerkzeuge und Bibliotheken zur Verfügung stehen, auch wenn man dafür eventuelle Instabilitäten in Kauf nehmen muss. Im nächsten Treffen werden wir die Einrichtung dieser Betriebssystem-Neuinstallation vorraussichtlich abschließen können, sodass eine erste Wiederinbetriebnahmen von THOMAS erfolgen kann, wobei kleinere Fehler, die bei der Maker Faire auftraten, untersucht und (hoffentlich) behoben werden können.

[27.05.16] Trefft uns auf der Maker-Faire!

Maker-Faire StandEntsprechend einer Empfehlung der Jugend Forscht Jury haben wir uns für diesen Freitag und Samstag auf der Maker-Faire für einen Stand angemeldet auf dem wir THOMAS vorführen und präsentieren können. Zudem lässt sich hier auch unser neuestes Nebenprojekt „CalcStreamer“, zum kabellosen Übertragen des Bildschirminhaltes eines grafischen Taschenrechners, begutachten und testen.

Denjenigen, die eine Gelegenheit finden bei uns am Stand 111 vorbeizuschauen, bietet sich zudem die Möglichkeit den Roboter selbst mit Hilfe eines Joysticks und einer Videoübertragung zu steuern – also kommt vorbei! :-)

[13.02.16] Doppelter Erfolg bei „Jugend forscht“

Nach langem Suchen und Überlegen haben wir, Sören Busse und Marcus Wichelmann, schließlich einen geeigneten Wettbewerb für „THOMAS“ gefunden. Dabei fiel die Wahl auf „Jugend forscht“, einem offengehaltenen Wettbewerg, bezogen auf die Themenwahl der Projekte, mit über 50 Jahren Erfahrung und breitem Bekanntheitsgrad. Neben uns gab es noch 6 weitere Mittbewerber in der Rubrik „Technik“.

Wir erreichten in unserer Rubrik den 2. Platz mit der Themenformulierung THOMAS – Eine universell Einsetzbare Robotikplattform, allerdings waren wir darüber sehr überrascht, da Jugendforscht in der Regel eine Forschungsfrage vorraussetzt und diese bei einer „Plattform“ so nicht gegeben war. Daher hatten wir uns keine sehr großen Hoffnungen auf einen Preis gemacht. Noch überraschender war dann der unerwartete Schulpreis in der Höhe von 1000€, den die Schule aufgrund der Generationenförderung bekommen hat. Dabei ging es unter anderem um die Erstellung von Schnittstellen und Protokollen sowie die Nutzung einer einfach, verständlichen Programmiersprache, sodass auch für die nachfolgenden Generationen eine simplerere Implementierung von Funktionen ermöglicht werden kann.

Verlauf:

Am Dienstag Morgen, den 09.02.2016 erfolgte die Anfahrt zur Leibniz Universität nach Hannover. Gleich darauf begannen wir mit dem Aufbau des Standes zur Vorführung von THOMAS und machten uns mit den anderen Mitbewerbern bekannt. Das Jurygespräch mit einer entsprechenden Vorführung, die der wesentliche Bestandteil des gesamten Wettbewerbs war, begann bei uns direkt nach der Mittagspause um 13:30 Uhr. Im späteren Verlauf gab es überraschender Weise noch ein zweites Gespräch mit einer weiteren Jury, die scheinbar die Hauptjury bei ihrer Entscheidung unterstützt hat. Am Abend folgte dann die Veranstaltung bei der MTU Maintenance in Hannover, mit anschließender Werksführung und Abendessen. Der Transport dahin erfolgte mit enstprechenden Shuttlebussen. Nach der Übernachtung in der Jugendherberge musste am Nächsten morgen die Anfahrt zur Universität selbst organisiert werden, was aber dank des ausgeprägten öffentlichen Nahverkehrs überhaupt kein Problem darstellte. Dieser Tag war für die Öffentlichkeit zur Begutachtung der Projekte gedacht, bei der auch entsprechende Interviews mit der Presse geführt wurden: Interview der HAZ (ab 1:04). Die Preisverleihung begann dann püntklich um 12:00 Uhr, wo die Sieger in den einzelnen Kategorien bekannt gegeben wurden. Die Veranstaltung endete dann gegen 15:00 Uhr und es erfolgte die Abreise wieder zurück nach Vechta.

IMG_2187 Jugend_forscht2016

 

 

[04.03.15] Fortschritte in letzter Zeit

sensorik_steuerungIn letzter Zeit wurden, neben dem ständigen Zerschießen von Soft- und Hardware, auch einige Fortschritte gemacht. Zum Einen wurde ein Telemetrie-Programm zum leichten drahtlosen Überwachen des Systems geschrieben. Zum Anderen wurde das Sensorsystem von THOMAS verbessert. Außerdem haben Sören und Marcus eine Arduino-Steuerung implementiert, die es mithilfe einer Fernbedienung oder eines Joysticks ermöglicht, das Sensorsystem zu steuern. Zudem kann diese Steuerung auch die Kamera bedienen, also nach links und nach rechts drehen. Der Bildschirm befindet sich auf einem Plexiglas-Gestell, das u.a. den Arduino schützt.

[17.12.14] THOMAS 2.0

Nach längerer Zeit haben wir uns nun entschlossen die THOMAS-Webseite mit neuem Leben und aktuellen Artikeln zu füllen.
Nach knapp eineinhalb Jahren ist so einiges passiert: THOMAS wurde mit einer komplett neuen und leistungsfähigeren Hardware ausgestattet, die alten Akkus wurden durch einen 28Ah-Bleiakku ersetzt und die Verkabelung der Gesamten Hardware wurde von Grund auf erneuert und übersichtlicher gestaltet. Dank eines neu angeschafften, schnelleren AccessPoints ist es mit Hilfe eines Kamera-Streams nun außerdem möglich den Roboter ohne direkten Sichtkontakt über das Internet zu fernzusteuern.
Aktuell wird an der Kommunikation zwischen Arduino und THOMAS gearbeitet, wobei auch schon einige Teilerfolge erzielt werden konnten. Dadurch soll es THOMAS zukünftig ermöglicht werden mit den Ultraschallsensoren zu interagieren und vorprogrammierte Aufgaben, unter Verwendung eines später folgenden Object-Trackings, selbstständig zu erledigen.

[24.07.13] Kommunikation zwischen Arduino und THOMAS

Mit der Entscheidung in die Sensorik einzusteigen haben wir uns ja bekanntlich für die Plattform „Arduino“ entschieden. Damit einhergehend musste eine Möglichkeit zur Kommunikation zwischen Rechner (THOMAS) und Arduino her. Heute Abend ist es mir endlich gelungen, eine Linux/Ubuntu kompatible „C++“-Konsolenanwendung zu schreiben, welche über die Serielle Schnittstelle mit dem Arduino kommuniziert. Dafür habe ich folgende Quellcodes verwendet:

Arduino zu THOMAS

Arduino:

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println("Test");
  delay(1000);
}

C++:

#include <stdio.h>
#include <string.h>

char cSerialPortFilename[] = "/dev/ttyACM0";

int main()
{
  char cReadBuffer[1024];

  FILE *SerialPort = fopen(cSerialPortFilename, "r");

  if (SerialPort == NULL)
  {
    printf("ERROR");    
    return 0;
  }

  printf(cSerialPortFilename);
  printf(":n");

  while(1)
  {
    memset(cReadBuffer, 0, 1024);

    fread(cReadBuffer, sizeof(char), 1023, SerialPort);

    if(sizeof(cReadBuffer) != 0)
    {
      printf(cReadBuffer);
    }
  }

  return 0;
}

THOMAS zu Arduino

Arduino:

int LEDPin = 13;
int LEDState = 0;

void setup()
{
  pinMode(LEDPin, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  if(Serial.available() > 0)
  {
    LEDState = Serial.read();

    switch(LEDState)
    {
      case '1':
        digitalWrite(LEDPin,HIGH);
        break;
      case '0':
        digitalWrite(LEDPin,LOW);
        break;
      default:
        break;
    }
  }
}

C++:

#include <stdio.h>
#include <string.h>

char cSerialPortFilename[] = "/dev/ttyACM0";

int main()
{
  FILE *SerialPort = fopen(cSerialPortFilename, "w");

  if (SerialPort == NULL)
  {
    printf("ERROR");    
    return 0;
  }

  char cWriteBuffer[] = {'1'};

  fwrite(cWriteBuffer, sizeof(char), sizeof(cWriteBuffer), SerialPort);

  fclose(SerialPort);

  return 0;
}

In Zukunft soll möglicherweise eine Verbindung der Motorensteuerung und des hier dargestellten Arduino-Kommunikation-Programmes stattfinden. Beide Anwendungen werden im Idealfall dann modular als eigene Klassen/DLLs/Bibliotheken in einem zentralen Hauptprogramm zusammengeführt, welches die gesamte Steurung des Roboters bilden wird.

Hinweis: Der oben dargelegte Quellcode deckt lediglich die Kommunikation bei der richtigen Konfiguration der seriellen Schnittstelle ab. Zur vollen Autarkie müsste noch der Code zum Setzen der Baud-Rate auf bspw. 9600 integriert werden.