Elwood – Software

 

Software Beschreibung
Bezugsquelle 
Ubuntu Karmic Koala Elwoods Betriebssystem, erweitert um SSH Server und MJPEG Streamer www.ubuntu.com
Windows XP Inspirons Betriebssystem vorinstalliert
IntelliJ IDEA Community Edition 9.0 Java IDE http://www.jetbrains.com/idea/index.html
VisualVM 1.2.1 Profilingwerkzeug. Analysiert Java Anwendungen auf Speicherverbrauch, Prozessorauslastung etc. https://visualvm.dev.java.net/
JDK 1.6.0_xx Das Java Developement Kit http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
Phidget 21 Treiber Zur Ansteuerung des 1060 – PhidgetMotorControl LV http://www.phidgets.com/drivers.php
phidget21.jar Java API, Aufsatz auf die C Bibliothek des Treibers http://www.phidgets.com/programming_resources.php
jscience.jar Java API für Mathematisch / wissenschaftliche Zwecke.Wird bei uns zur einheitlichen Behandlung von Werten und Maßeinheiten benutzt. http://jscience.org/
TableLayout-bin-jdk1.5-2007-04-21.jar Layoutmanager, der Swing Komponenten tabellarisch anordnet. https://tablelayout.dev.java.net/
xstream-1.2.1.jar Erzeugt tiefe Kopien von Java Objekten. http://xstream.codehaus.org/
EventBus-1.3beta.jar Kommunikation zwischen Java Objekten. Ersetzt das Listener Konzept in Swing. Ermöglicht Kommunikation zwischen Nicht-Swing Komponenten. https://eventbus.dev.java.net/http://www.eventbus.org/
ProGuard4.2 Erzeugt jar Dateien, optimiert und obfuskiert *.class Dateien http://proguard.sourceforge.net/
VirtualBox Virtualisierungssoftware. Virtualisiert Ubuntu auf Windows XP. Vormals Sun Microsystems jetzt Oracle. http://www.virtualbox.org/
ublox u-center 6.0.1 Software zum Testen und aktualisieren des NAVILOCK GPS Empfängers http://www.u-blox.com/de/

Wie eingangs erwähnt besteht die von uns programmierte Software aus einem Client und einem Server. Wobei der Client den Sender repräsentiert und der

Server den Empfänger. Nachfolgend soll nur noch von Sender und Empfänger gesprochen werden. Der Sender besitzt – im Gegensatz zum Empfänger eine grafische Benutzerschnittstelle (GUI). Über diese GUI werden Fahrbefehle erzeugt und an den Empfänger gesendet.

Als erstes möchten wir euch eine kleinen Überblick über die wesentlichen Bestandteile des Senders geben:

Das Anwendungsfenster des Senders


XYControl

Das Herzstück unseres Senders ist das XYControl. Es symbolisiert die Draufsicht eines Joysticks.

Der blaue Knopf stellt den Hebel dar der mit gedrückter Maus nach Links / Rechts für Kurvenfahrt und nach Oben / Unten für Vorwärtsfahrt und Rückwärtsfahrt bewegt werden kann. Der maximale “Knüppelausschlag” wird durch das schwarze Quadrat begrenzt. Um exakt geradeaus fahren zukönnen kann die Taste “G” gedrückt werden. Dadurch wird der Knopf genau mittig zum vertikalen Strich ausgerichtet, bleibt aber in der vertikalen Position unverändert. Das “S” steht für “Speed” und positioniert den Knopf mittig zum horizontalen Strich. Die Positionierung für Kurvenfahrt bleibt unverändert.

Der Buchstabe “N” bedeutet “Neutral” und positioniert den Knopf mittig auf dem Kreuz – Elwood steht still.

Der Wertebereich:

In der Treiberdokumentation ist zu lesen dass ein Wertebereich für die Drehzahl vpn -100% bis +100% verfügbar ist. Für die Beschleunigung wurde +0,1% bis 100% angegeben. XYControl liefert Prozentwerte die exakt dem gesamten Drehzahlspektrum des Treibers entsprechen. Der Beschleunigungsfaktor wird an anderer Stelle in der Anwendung gesetzt.

Wird beispielsweise der Knopf genau mittig bis an den oberen Rand geschoben dann fahren die beiden Motoren bis auf Maximaldrehzahl hoch – Elwood fährt vorwärts.

Elwood fährt rückwärts wenn der Knopf unterhalb der horizontalen Linie platziert wird. Und jetzt wirds interessant: Was passiert wenn wir den Knopf exakt entlang der horizontalen Linie beispielsweise nach links schieben? XYControl liefert jetzt für Vorwärts / Rückwärts 0% dennoch bewegt sich Elwood. Er dreht sich wie ein Panzer auf der Stelle um seine Hochachse – oder etwas romantischer – er macht eine Pirouette. Der Lenkausschlag überlagert den Wert für Vorwärts / Rückwärts. Der linke Motor dreht mit -100%, der rechte mit +100%.

Noch interessanter wird es wenn der Knopf auf eine beliebige Position gebracht. die Werte für Vor / Zurück und Links / Rechts überlagern sich und können den zulässigen Wertebereich überschreiten! Wie wird die Platine drauf reagieren? durchbrennen – vielleicht in einer Art Kernschmelze zu eine formlosen Masse verklumpen?

Ganz so schlimm ist es dann doch nicht gekommen :-) Elwood verhält sich jedenfalls zwiespältig: Einmal so wie es Michi programmiert hat und einmal nach Toms Vorstellungen.

Verschiedene Details der Programmierung wollen wir euch nicht vorenthalten und später hier präsentieren.

Zwei weitere Komponenten die für die Steuerung sehr hilfreich sind sollen hier noch vorgestellt werden:
Das Zweibalkendiagramm bei 0% Drehzahl

Wir benutzen dieses Diagramm für den Soll / Ist Vergleich der Drehzahl für jeden Motor. Das Diagramm kann einen Wertebereich von -100% bis +100% darstellen.

Die Neutralstellung (0%) wird oben dargestellt. Der Linke Balken Zeigt den Wert der nach der Berechnung am Empfänger zum Treiber geschickt wird. Der Rechte Balken repräsenteirt den Wert den der Treiber zurückliefert. Ein Vergleich der beiden Balken gibt Aufschluss über Drehzahl, Beschleunigung und Drehrichtung relativ zum berechneten Wert. Jeder Motor hat sein eigenes Zweibalkendiagramm.

Und Last but not least ein Balkendiagramm das die Verbindungsqualität zwischen Sender und Empfänger anzeigt.
Diagramm Signalqualität

Dieses Diagramm zeigt uns die Qualität des WLAN Signals an. Dies ist wichtig für uns, denn wir müssen wissen ab wann Elwood auf sich selbst gestellt ist. Wenn die Verbindung länger unterbrochen ist (der Wert ist einstellbar wie wir noch sehen werden) muß Elwood allein zurechtkommen – quasi Elwood allein zu Haus.


Tab Empfänger

Auf dem Tab “Empfänger” haben wir die Möglichkeit Elwoods Empfänger bzw.die jeweilige Steuereinheit zu konfigurieren. Mit dem Parameter “Implementierung” entscheiden wir ob Elwood mit Michis oder Toms Implementierung der Steuerung betrieben wird. Das Verhalten der Steuerungen kann mit den beiden nächsten Parametern “Kurvenradius” und “Drehzahldifferenz” zusätzlich beeinflusst werden. Der Parameter “Zeitüberschreitung”gibt an wie lange der Empfänger auf ein Signal des Senders wartet. Wird diese Zeit überschritten, dann wechselt Elwood in den Failsafe Modus – er bleibt stehen. Hinweis: Auch wenn keine Steuerungssignale vom XYControl gesendet werden kommunizieren Sender und Empfänger. Wird länger als über den oben genannten Zeitraum kein Signal empfangen, dann tritt der Failsafe Modus in Kraft.

Elwood lebt!

Nach Abschluss der Arbeiten an der Hardware wollten wir auch Softwareseitig eine Aktualisierung bzw. Funktionserweiterung durchführen:

1: Die Videoanzeige vom Browser in den Sender integrieren

2: Elwood soll GPS Daten auswerten und bestimmte Wegpunkte anfahren können.

3: Beim Verlust der WLAN Verbindung zum Ausgangsort zurückkehren.

Zu diesem Zweck haben wir die GUI anders aufgeteilt:

Aus dem Sendertab wurde der Textticker in ein eigenes Tab verlagert. Der frei gewordene Platz steht jetzt dem Kompass zur Verfügung.

Die Anzeige der Signalqualität ist in die Statuszeile gewandert.

Die Videoübertragung sollte mit dem Java Media Framework (JMF) durchgeführt werden. Leider funktionierte das nicht so wie wir uns das vorgestellt hatten: Die Implementierung war begleitet von diversen Abstürzen der beteiligten Windows – Maschinen mit unvorhergesehenen Neustarts oder Bluescreens. Die Ursache kann durchaus auch an der etwas sonderbaren Hard/Software Kombination der beteiligten Rechner liegen (Uralt Hardware mit Windows Vista). Nachdem die Implementierung auf Windows stabil lief war ein Test mit Ubuntu angesagt: Leider ein kompletter Fehlschlag. Der notwendige Codec stand nicht zur Verfügung. Im Internet haben wir eine Java Anwendung gefunden die MJPEG Daten darstellen kann: Cambozola – auf JMF konnte somit verzichtet werden.

Damit funktionierte die Übertragung und Darstellung ohne Probleme, aber nicht ruckelfrei.

Das zweite Thema – die GPS Datenauswertung – war leider komplett unmöglich. Es konnten zwar Längen – und Breitengrad über den Linux Dienst gpsd ausgelesen werden, die Kompassangabe aber nur sporadisch. Die Daten wurden mithilfe der Java Bordmittel (Socket) problemlos gelesen und anschließend geparst. Die Kompassangabe stand nur bei höherer Schrittgeschwindigkeit zur Verfügung.

Die Befürchtungen die wir beim lesen des Datenblattes der Navilock Maus hatten haben sich leider bestätigt. Die Positioniergenauigkeit ist für unsere Zwecke zu ungenau, entspricht aber den Angaben im Datenblatt. Das Auslesen der GPS Daten durch die mitgelieferte Software u-center 6.01 haben die Angaben bestätigt. Die in diversen Internet Foren erwähnte gute Verbindungsqualität in geschlossenen Räumen können wir bestätigen. Einmal mit den Satelliten in Verbindung kann man sich quer durchs Haus bewegen ohne daß die Verbindung verloren geht oder merklich schlechter wird. Einziges wirkliches Manko war die Installation des Windows Treibers.

Fazit: Um ausreichend genau navigieren zu können muss man sich relativ zügig über grössere Distanzen bewegen – Elwood kann das leider nicht.

Robotik in Java.