Mittwoch, 21. Dezember 2011

Abhängigkeiten von der Reifengröße

Um den Segway aufrecht zu halten, braucht die Segwayklasse als Parameter die Reifengröße. Uns stehen vier verschiedene Reifen mit verschiedenen Reifendurchmessern zur Verfügung. Es wurde untersucht, wie sich die Reifengröße auf die Stabilität und andere Faktoren des Segways auswirken.

Die verfügbaren Reifendurchmesser sind:

  • 81.6 mm
  • 62.4 mm
  • 56.0 mm
  • 43.2 mm

Für den Standardsegway nach Legoanleitung sind 56.0 mm als Defaultgröße vorgesehen. Die Stabiltät des Segways war damit schon zufriedenstellend, obwohl die Instabilität beim Ausbalancieren noch spürbar war und um das Ziel, den Segway die Tür mit der Chipkarte öffnen zu lassen doch zu groß war. Für dieses Ziel muss das Gerät doch recht stabil stehen, um die Authentifizierung durchführen zu können.

Als nächstes wurden die größten Reifen getestet. Die Stabilität war am schlechtesten, schon das senkrecht stehen ist in "Rumgeeier" ausgeartet.

Zuletzt haben wir noch die kleinsten Reifen (43.2 mm) getestet, als genaues Gegenteil der größten Reifen. Hier war die Stabilität am besten, der Segway s teht ruhig, und lässt sich auch problemlos steuern.

Die Vermutung liegt darin, dass sich die Motoren (welche doch eine gewisse Anlauf-/Bremsträgheit besitzen) das Rad für die gleiche Strecke nicht so weit drehen müssen, wie bei den größen Rädern. Daraus ergeben sich weniger Ungenauigkeiten aufgrund der Hardware (Motoren) und somit ein stabileres Verhalten des Segways.


Mittwoch, 14. Dezember 2011

Verbindungen mit Bluetooth zulassen

Im Projekt ist jetzt die Möglichkeit vorhanden, Bluetooth-Connections zuzulassen.





Die Implementierung des ICommandListeners wird dann über neue zu fahrende Richtungen benachrichtigt.

Mittwoch, 30. November 2011

Settings des Programms in einer Properties-Datei

Das Programm verwendet mehrere Konstanten, bspw. für den PID-Controller. Diese Konstanten müssten jedesmal bei Änderungen im Code geändert werden, wenn andere Werte verwendet werden sollen. Damit nicht jedesmal eine Änderung im Code und damit eine Neukompilierung notwendig wird, können diese Werte jetzt in eine ".properties"-Datei ausgelagert werden:


Diese Datei enthält Key-Value-Einträge.





Im Code können diese Paare mit dem SettingsReader ausgelesen werden und in den gewünschten Datentyp entsprechend geparst zurückgegeben werden.








Mit dem LeJOS-Hifsprogramm "nxjbrowse" kann dann die Properties-Datei auf den Brick gespielt werden.







Nachdem die Verbindung steht, kann die Properties-Datei mit den veränderten Werte ausgetauscht werden:

Segway "HTWay"-Style und Android Remote Control

Um näheren Einblick in die Materie zu erhalten, wurde der Segway von HTWay nachgebaut(siehe Beitrag davor).

Requirements:
- Lego Mindstorms NXT 2.0(*) software inkl. Dynamic Block Updater PC Version
- NXT-G Programm von HTWay
- NXT Brick mit Lego Standardsoftware, Version 1.29
- Eigenen "Blocks" :
- text to number
- htway gyro block
- htway ir receiver block
- HiTechnic Remote Control .apk Datei


(*) wichtig, da hier Floating Point Operationen unterstützt werden

Instruktionen:
Alle eigenen Blocks in Lego Mindstorms importieren. Dannach das Programm kompilieren und auf die Brick ziehen.
Nach dem Start der Applikation kann eine Bluetooth-Verbindung vom Android-Smartphone aufgebaut werden.

Ergebnis nach Test:
Das Testgerät läuft stabil

Halterung für die Karte


Ziel des Projekts soll ja sein, mit dem Roboter auf einem Tisch an den Türsensor zu fahren und die Tür damit zu entriegeln. Dafür muss der Segway die Karte halten. Hier sieht man den Aufbau der Kartenhalterung.

Liste von Features:
  • Höhenverstellbares Interface
  • Leichter Ein- und Ausbau
  • Benutzerfreundliches Einführen der Karte
  • Die heiße Ische hälts in den Händen


Line Follower mit LeJos

Die bereits mit NXT-G umgesetzten Versionen des Line Followers wurden nun auch mit LeJos erfolgreich umgesetzt. Dabei wurden nur die ersten beiden Versionen mit Java nachprogrammiert. Für Version 3 wurde dann direkt ein vollständiger PID Regler programmiert. Hierzu wurde u.a. auf folgendes Tutorial zurückgegriffen um sich langsam den optimalen Werten für die Gewichtung der P- I- und D-Glieder anzunähern http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindstorms_Robots.html
Vorträge während des Forschungsprojekts zu Regeleungstechnik, PID Reglern und deren softwareseitige Umsetzung mit LeJos brachten das notwendige Wissen. Für den PID Regler wurde die Klasse PIDController aus der LeJos API genutzt. Nach mehrmaligem verbessern der Parameter konnte ein Line Follower erstellt werden, der ohne Oszillation der Testlinie aus dem Lego NXT Pack folgte. Nachdem nun die Grundlagen und das Verständnis für Regelungstechnik mit PID Reglern erarbeitet wurden konnte sich nun auf die eigentliche Problemstellung konzentriert werden: Inverses Pendel (Segway).

Dienstag, 29. November 2011

Vorbereiten der Entwicklungsumgebung für LeJos

Nachdem der Line Follower mit NXT-G erfolgreich umgesetzt wurde, war es an der Zeit die Entwicklungsumgebung für LeJos einzurichten. Hierzu wurde LeJos von http://lejos.sourceforge.net/ geladen und installiert. Da LeJos nicht 64bit kompatibel ist, musste zuerst Java 32bit Version 1.6 und Eclipse Helios 32bit installiert werden. Danach wurde Eclipse um das LeJos NXJ Plugin erweitert. Zudem waren die original Lego NXT Treiber notwendig falls auf dem Rechner nicht bereits NXT-G installiert war. Nach der installation aller benötigten Komponenten war es möglich ein erstes Testprogramm, dass eine Textanzeige ('Hello World') auf dem Display des NXT Bricks ausgibt, zu erstellen und auf den NXT Brick zu übertragen. Auf manchen Rechnern war es notwendig nach jeder Übertragung die Entwicklungsumgebung neu zu starten, da es ansonsten nicht mehr möglich war sich mit dem NXT Brick zu verbinden. Der Grund hierfür konnte nicht gefunden werden.
Nach erfolgreicher Installation und Test der Entwicklungsumgebung war es jetzt möglich sich der Programmierung des PID geregelten Line Followers mit Java und LeJos zu widmen.