Das Software-Konzept, technisch

Grundsätzlich...

...arbeitet der Roboter mit einem Server zusammen. Auf beiden Geräten läuft Software, die unterschiedliche Aufgaben erfüllen muss:
Während auf dem Roboter grundlegende Programmierungen für die Bewegungsabläufe und Auslesen der Sensoren realisiert sind, muss der Server strategische Aufgaben lösen, wie z.B. Wege um Hindernisse berechnen, etc.

Roboter und Server kommunizieren via WLAN miteinander.

Folgende Daten werden vom Roboter gesendet:

  • Komplexere "Erkenntnisse", z.B. "Wand in 85cm, verläuft um 12°gedreht von vorne links nach hinten rechts"
  • Aktueller Status: Spannung, Strom, Temperatur, Position, Lage (im Raum)
    Diese Angaben erfolgen in einem bestimmten Intervall, z.B. einer Sekunde.

Folgende Daten werden vom Roboter abgerufen:

  • auszuführende Kommandos

Es handelt sich dabei weder um eine Echtzeit-Übertragung mit z.B. 25 Datenpaketen pro Sekunde, noch um performance-relevante Daten, denn in kritischen Situationen muss der Roboter selber eine Lösung finden, ohne auf den Server warten zu müssen. Ein hohes Datenaufkommen wäre technisch größtenteils realisierbar, würde aber die Performance des Robots unnötig beeinträchtigen. Ebenso muss man bei WLAN immer mit Verbindungseinbrüchen rechnen, die eine Konfliktbehandlung nötig machen würde, wenn Datenpakete nicht rechtzeitig gesendet werden können.


Vorteile, mit einem Server zusammen zu arbeiten

  • Es können sehr viel komplexere Aufgaben gelöst werden, als es mit einem Einplatinencomputer möglich wäre.
  • Die Server-Power ist beliebig skalierbar hinsichtlich Performance und Hardware. Entweder durch Aufrüsten auf schnellere Hardware, oder durch Zusammenschalten zum Cluster.
  • Der Standort des Servers kann beliebig (weltweit) gewählt werden. Es ist lediglich eine Internetverbindung nötig.
  • Der Server kann viele Robots gleichzeitig bedienen und auf die Daten aller Roboter zugreifen. Somit ist eine Arbeit im Schwarm möglich.
  • Über das Internet ist der Zugriff auf jeden Roboter möglich, z.B. durch mobile Endgeräte.

Die Serversoftware ist webbasiert und muss den Ansprüchen der angeschlossenen Roboter und Aufgaben genügen. Das bedeutet, dass es ebenfalls sehr minimalistische Lösungen geben kann:

  • Falls keine Internetanbindung verfügbar ist: Reicht es, einen Hotspot auf dem Server einzurichten.
  • Falls kein Server verfügbar ist: ...lässt sich die Software auch auf dem Roboter selber installieren, allerdings mit entsprechender Performance- und Speichereinbuße.

Details


Das Betriebssystem des Roboters

Bei dem Betriebssystem des Roboters handelt es sich um Ubuntu Linux, headless, d.h. ohne grafische Oberfläche. Die relevanten Komponenten für die Laus sind:

  • WLAN für einen kabellosen Zugriff
  • SSH für die Terminal-Sitzung
  • Samba für Dateizugriffe via Windows-Rechner
  • Python für die eigentliche Software

Das Betriebssystem des Servers

Beliebig, solange php & mySQL darauf laufen. Performance und Speicher der Hardware müssen den Anforderungen genügen. Diese hängen von der Anzahl der angeschlossenen Roboter ab, sowie von den Aufgaben, die zu koordinieren sind.


Die Kommunikation zwischen Roboter und Server

Der Server stellt einen REST-Webservice () zur Verfügung

Damit ist eine sehr einfache Schnittstelle geschaffen, um sowohl mit komplett unterschiedlichen Robotern (die mit unterschiedlichen Programmiersprachen betrieben werden), als auch mit mobilen Endgeräten zu kommunizieren.

Beim allerersten Kontakt mit der REST-Schnittstelle übermittelt der Roboter eine Konfigurationsdatei im XML-Format, in der er sich selber definiert. Der Server weiß anschließend detailliert über alle wichtigen Parameter des Roboters Bescheid.

Beispielsweise bzgl. Spannungsversorgung: Was ist die Standard-Spannung, bei welchen Minimal- und Maximalwerten muss gewarnt werden, bei welchen Werten ist die Situation kritisch?

Gleichzeitig können diese Werte dann über eine Weboberfläche angezeigt werden.

Der Server ist dabei passiv - er kann keine Kommandos an den Roboter senden, sondern diese lediglich bereitstellen. Der Roboter hat die Aufgabe, sich diese Kommandos in bestimmten Intervallen zu holen.