Zitat Zitat von the_muck
Das Schnelle Bild vom Oszi zeigt das Signal der Lichtschranke bei ~9500 u/min mit eben der 32er Lochscheibe.

Ich habe mir die phidgets Teile mal angeschaut, eigentlich ganz nett aber irgend wie ist die Update Rate für Regelungen recht langsam finde ich. Auch das mit dem PWM Signal für den Motor sehe ich noch Problematisch, die µC haben Hardware PWMs, du müsstest das ja mit der Software stricken.
Ist denn eine hohe Update Rate so wichtig? Ich würde naiv sagen, dass mir 20 oder 30 Takte pro Sekunde reichen sollten.

Zitat Zitat von the_muck
Ideal wäre es wohl für dich wenn man ein Modul hat das mit einem µC die Motoren regelt und das alles extern vom Computer macht. Du gibst die Drehzahl an (meinetwegen mit dem Servosignal) und das Modul hält diese so weit wie möglich.
Ich habe mir das empfohlene RN-VN2 DualMotor Fertigmodul bestellt, mal schauen wann es ankommt.
Ist ein µC, der die Motoren regelt bzw. das Hardware PWM, wie du es beschrieben hast, dem AdvancedServoBoard überlegen? Zeitkritisch ist meine Anwendung ja nicht. Ein Modul, dass die Drehzahl selbstständig hält - das wäre was. Aber dann ja auch schon eine "komplette" Regelung.

Zum Vorankommen der letzten Tage:
Nun ist endlich der größte Brocken der Softwareumstellung getan.
Wobei ich ja nicht weiß was noch kommt also bleiben wir bei "einem großen Brocken".

Die Architektur ist grob in die Punkte
- GrandCentral, der zentralen Klasse, die alle Teilbereiche miteinander verbindet
- Kartenverwaltung, Umrechnung der Sensordaten mit lokaler und globaler Karte (Punktwolken)
- BotThreadverwaltung steuert Verhaltensmuster (als Threads)
- Eventverwaltung umfasst Ereignisempfänger, Ereignisquellen (Sensoren, Servos usw.)
- SensorAktorKomponenten ist die Gruppe von Objekten, die Hardwarekombinationen abbilden (z.B. ServoTower besteht aus Servo0, Servo1 und IR80cm)
- GUI mit 2D Swing und 3D OpenGL Darstellung
zu unterteilen.

Lokal lassen sich weiterhin direkt 2D und 3D Darstellung starten. Bisher habe ich den Roboter per VNC direkt über seine GUI gesteuert und Messwerte darüber anzeigen lassen.
Ich habe mich die letzten Wochen mit Sockets genauer auseinandergesetzt und Testprojekte geschrieben. Das ist etwas aufwändig und letztlich ja nicht mein Fokus. Ein eigenes Protokoll hätte beschrieben werden müssen.. ich habe nun eine komfortablere Lösung per Java Remote Method Invocation (RMI) umgesetzt.

Bild hier  
Bild hier  

Der Roboter kann nun von mehreren Clients gleichzeitig über eine GUI-Anwendung angesteuert werden. Auf dem Bot läuft quasi ein Server, bei dem sich Clients anmelden können und z.B. bei Änderungen des Kartenmaterials benachrichtigt werden. Die komplette Funktionalität, wie Fahrkommandos absetzen, BotThreads starten und die Punktwolkendarstellung ist damit von OS X, Windows und Ubuntu aus möglich. Die Prozessorlast des Bots ist, trotz des Starts aus Eclipse auf unter 3% gesunken. Die Visualisierung der Punktwolken ist komplett Sache der Clients und soll später flexibler werden.

Für Freunde der bewegten Bilder die Aufnahme des Testlaufs:
http://www.youtube.com/watch?v=8GpwtBVU4IE