Laserscanner und Touchscreen verkabelt

 Heute wurden nun der Laser und der Touchscreen auf dem Roboter verkabelt, denn so wie es sich hier darstellt, konnte es für den endgültigen Betrieb natürlich nicht bleiben:

Ein Stromanschluss für den Laserscanner war vom alten Scanner noch vorhanden. Der Touchscreen, der mit 12V betrieben wird, benötigte jedoch noch eine Anschlussbuchse. Da dazu die Verteilerplatine ausgebaut werden musste, wurden bei der Gelegenheit zwei zusätzliche Buchsen für 5V und 24V als Reserve mit verbaut:

    

Und das Ergebnis kann sich doch sehen lassen, oder?

    

Roboter unter Linux getestet

 Heute wurden noch einmal alle Komponenten direkt auf dem Roboter unter Linux getestet:

 Wie man sieht, sind der Laserscanner und der Touchscreen noch nicht endgültig verkabelt. Sowohl deren Stromversorgungen als auch die Datenkabel müssen jeweils noch auf dem Bot angeschlossen und verlegt werden.

S300 Laserscanner eingebunden

 Das Update des Programmcodes ist so gut wie abgeschlossen. Hier die erste Ansicht, die natürlich fast wie vorher aussieht, nun eben mit Daten vom SICK S300 Laserscanner:

Es sieht aber nur fast genau so aus, wie vorher: Denn: Der S300 hat eine Auflösung von 0,5 Grad bei 270 Grad "field of view". Darum werden im Screenshot auch 540 statt 270 Laserlinien angezeigt. Daher war auch das Anpassen des Sourcecodes aufwändiger, da an vielen Stellen die Auflösung des Scanners zusätzlich mit integriert werden musste (LaserThread, ObstacleCheckThread, GUI, …).

Ein paar Ausreißer gibt es noch: Wie man sieht ist der Wert für 0 Grad noch falsch (längste rote Linie rechts oben im Bild) und die Flags werden nicht vollständig für alle Linien gesetzt (z.B: grün für den größten freien Bereich). Um einen Eindruck über die Anpassungen zu bekommen, hier eine git Übersicht:

 direcs/bin/direcs.ini                  |   10 +-
 direcs/direcs.pro.user                 |   18 +-
 direcs/direcs.qrc                      |   95 ++–
 direcs/direcs.tag                      |  412 ++++++——-
 direcs/images/kdevelopbanner-small.gif |  Bin 2930 -> 0 bytes
 direcs/src/aboutDialog.ui              |   52 +-
 direcs/src/camThread.cpp               |    8 +-
 direcs/src/camThread.h                 |   10 +-
 direcs/src/consoleGui.cpp              |    4 +-
 direcs/src/consoleGui.h                |    4 +-
 direcs/src/direcs.cpp                  |  100 ++–
 direcs/src/direcs.h                    |    2 +
 direcs/src/direcsSerial.cpp            |  133 ++++-
 direcs/src/direcsSerial.h              |   37 +-
 direcs/src/gui.cpp                     |   42 +-
 direcs/src/gui.h                       |   21 +-
 direcs/src/inifile.cpp                 |   17 +-
 direcs/src/inifile.h                   |   14 +-
 direcs/src/interfaceAvr.cpp            |   48 +–
 direcs/src/interfaceAvr.h              |   16 +-
 direcs/src/laser.h                     |    4 +
 direcs/src/laserSickS300.cpp           | 1068 ++++++++++++——————–
 direcs/src/laserSickS300.h             |  186 ++—-
 direcs/src/laserThread.cpp             |  726 ++++++++++++++++++—-
 direcs/src/laserThread.h               |   64 ++-
 direcs/src/obstacleCheckThread.cpp     |   16 +-
 direcs/src/obstacleCheckThread.h       |    2 +-
 direcs/src/speakThread.cpp             |    2 +-
 direcs/src/speakThread.h               |    2 +-
 direcs/src/src.pro                     |   53 +–
 30 files changed, 1717 insertions(+), 1449 deletions(-)
 delete mode 100644 direcs/images/kdevelopbanner-small.gif

 

Unterstützung für Laserscanner mit mehr als 180 Grad

Nach vielen vielen Änderungen am Sourcecode ist nun die Umstellung für den Einsatz unterschiedliche Laserscanner fertig. Da zum damaligen Entwicklungsstand nicht absehbar war, dass jemals andere Laserscanner als der PLS 101 zum Einsatz kämen, waren leider die damaligen 180 Grad fest in verschiedensten Stellen im Sourcecode "hart codiert". Dieses betraf z.B. den obstacleCheckThread, die GUI und natürlich den laserThread, der die Daten von den Laserscanner ausliest und speichert. Auch ein Einsatz unterschiedlicher Laserscanner für "vorne" und "hinten" auf dem Roboter war dadurch bis heute nicht möglich.

Um das Ganze für künftige Anwendungen flexibler zu gestalten ist die Angabe sowohl der Laserscannertypen als auch der Gradzahlen (field of view, fow) nun in der ini-Datei möglich. Und so sieht das Ergebnis dann (im Simulationsmodus) aus (ein Scanner mit 30, der andere mit 270 Grad):

Um eine Vorstellung davon zu bekommen, was das bedeutete (inkl. erster Integrationsversuche des neuen Laserscanners S300 in den Sourcode), schaue man sich die Änderungen am git branch an:

From .
 * branch            S300       -> FETCH_HEAD
Updating dee663e..9f5ffa8
Fast forward
 direcs/bin/direcs.ini              |    8 +-
 direcs/direcs.kdevses              |   36 +-
 direcs/direcs.pro.user             |  243 ++++++
 direcs/direcs.tag                  |  340 +++++++++
 direcs/src/consoleGui.cpp          |    3 +-
 direcs/src/consoleGui.h            |    3 +-
 direcs/src/direcs.cpp              |  195 ++++–
 direcs/src/direcs.h                |    5 +
 direcs/src/gui.cpp                 |  161 +++–
 direcs/src/gui.h                   |   24 +-
 direcs/src/laser.cpp               |    8 +-
 direcs/src/laser.h                 |    4 +-
 direcs/src/laserSickS300.cpp       | 1441 +++++++++++++++++++—————–
 direcs/src/laserSickS300.h         |  175 +++++
 direcs/src/laserThread.cpp         |  565 ++++++++++—-
 direcs/src/laserThread.h           |   70 ++-
 direcs/src/mainWindow.ui           |   19 +-
 direcs/src/obstacleCheckThread.cpp |  112 ++–
 direcs/src/obstacleCheckThread.h   |    8 +-
 direcs/src/src.pro                 |    3 +
 20 files changed, 2413 insertions(+), 1010 deletions(-)
 create mode 100644 direcs/direcs.pro.user
 create mode 100755 direcs/src/laserSickS300.h