PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roomba 520 und MSRS und 'Open Interface' Fragen



Hyla
16.05.2010, 21:29
Hi,

ich bin mal wieder dabei, etwas mit Microsofts Robotics Suite hinzubekommen. Bin jetzt immerhin mal dem Ganzen etwas näher gekommen, stoße aber wie noch jedesmal auf Schwierigkeiten.

Erste Frage:
Hat sich hier jemand ernsthaft mit diesem Thema befasst und ist evtl. da auch weiter gekommen?

Zweite Frage:
Gibt es für die 500er Serie verbindliche Infos zum Open Interface?
Ich hab eine 'Roomba' Variante des Manuals aus dem Jahr 2005 und eine neuere Version für den Roomba Create, beide scheinen aber, was die Steuerung betrifft dem 520er nur teilweise zu entsprechen.

Grüße,
Christoph

m.a.r.v.i.n
17.05.2010, 10:13
Hallo Christoph,

schön mal wieder etwas von dir zu hören.

Zu 1:

Theoretisch ja, praktisch nein. D.h. ich hatte mich mal vor einiger Zeit mit der Simulation von MSRS beschäftigt. Da ich keinen Roomba hatte, eben nur virtuell. Zu mehr als die Beispiele auszuprobieren bin ich aber auch nicht gekommen.

Inzwischen habe ich zwar auch einen Roomba, leider ist mir beim unsachgemässen rumbasteln die serielle Schnittstelle vom Roomba abgeraucht. :cry:

Zu 2:

Zur 500 Serie kenne ich nur das hier:
http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf
Das sollte aber die Steuerung für den 520 komplett abdecken.

Grüße,
Peter

Hyla
17.05.2010, 11:40
Hallo Christoph,

schön mal wieder etwas von dir zu hören.



Nette Begrüßung :)



Zu 1:

Theoretisch ja, praktisch nein. D.h. ich hatte mich mal vor einiger Zeit mit der Simulation von MSRS beschäftigt. Da ich keinen Roomba hatte, eben nur virtuell. Zu mehr als die Beispiele auszuprobieren bin ich aber auch nicht gekommen.

Inzwischen habe ich zwar auch einen Roomba, leider ist mir beim unsachgemässen rumbasteln die serielle Schnittstelle vom Roomba abgeraucht. :cry:



Ohmann - der nackte Horror :(
Aber Jetzt hast Du ja eine gute Entschuldigung, das Ding mal aufzumachen und gründlich zu untersuchen :)



Zu 2:

Zur 500 Serie kenne ich nur das hier:
http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf
Das sollte aber die Steuerung für den 520 komplett abdecken.



Klasse, Peter. Genau das habe ich vermisst ... wie hast Du das denn aufgetrieben? :)
Wahrscheinlich ist ein gut Teil meiner Probleme damit schon erledigt.

---

Stand der Dinge ist bei mir:

- ich habe einen Roomba 520
- installiert ist (unter Windows 7) Microsoft Robotics Developer Studio 2008 in der letzten Version.
- ausserdem Visual 2008 Express (beides ja, wie bekannt, kostenlos erhältlich)
- als 'Tools' habe ich das 'Device Monitoring Studio 6.02' von HHD Software zum Ausspähen des Datenverkehrs und
- das Programm 'Roomba Status' (u.a. zum direkten Senden von Befehlen)
- als Verbindung zwischen Roomba und PC verwende ich XBEE Module, die mit 38.400 BAUD senden (die 500er werden ja mit 115.200 BAUD betrieben, da machen meine XBEEs natürlich nicht mehr mit). Die BAUD-Rate wird zu Beginn mittels Roomba-Status und einem seriellen Kabel eingestellt. Der Roomba merkt sich das eine Weile, irgendwann vergißt er es (nein, ein 'Reset' ist nicht die Ursache, das reicht nicht). Dann muß ich das wiederholen.
- ich kann unter Microsofts "visueller Programmiersprache" VPL auf die vorhandenen iRobot Services zugreifen. Das funktioniert aber nur zum Teil (das scheint alles für die Roomba-Vorgänger bzw. den Create geschrieben zu sein). Services unter C# selbst zu schreiben oder auch nur zu ändern kann ich nicht. Ich finde das, mit meinem bisschen C-Kenntnis doch reichlich, äh, unübersichtlich. Und nur das Vorhandene zu übernehmen ist offenbar nicht genug.
Es bleibt wohl nur, sich durch die Tutorials durchzunagen, wobei ich schon da nie genau weiss, wo anfangen ;)

Vielleicht käme ich mal weiter, wenn sich ein paar von uns zusammentun. Unter anderem deshalb habe ich das auch hier mal wieder angesprochen :)



Grüße,
Peter

Auch Grüße,
Christoph

m.a.r.v.i.n
17.05.2010, 18:01
Hallo Christoph,

reparieren wird wohl nichts. Beim Anschliessen eines Microcontroller Boards habe ich RX und TX vertauscht. Damit waren TX vom Roomba mit TX des Controllers verbunden. Danach waren beide seriellen Ports (Roomba und Controller) defekt. Der Roomba funktioniert aber ansonsten ohne Probleme.

Den Link zur Beschreibung des 500er OI hatte ich in einem anderen Forum entdeckt. iRobot hatte das pdf von seinen Servern entfernt (glücklicherweise nicht vom lettischen Server). Damit sollte wohl verhindert werden, das man bestimmte Features auch bei den preiswerteren Roombas nutzen kann (wie Scheduling) .

Der 520 sollte sich eigentlich genauso steuern lassen wie ein iCreate. Das Protokoll ist ja identisch, bis auf die neu hinzugekommenen Sensoren.
Die Roomba MRDS Schnittstelle könnte man sicher dazu aufbohren. Meine C# Kenntnisse sind leider auch nicht sehr gut und das komplette Framework ist wirklich sehr unübersichtlich.

Hyla
17.05.2010, 21:22
Hallo Christoph,

reparieren wird wohl nichts. Beim Anschliessen eines Microcontroller Boards habe ich RX und TX vertauscht. Damit waren TX vom Roomba mit TX des Controllers verbunden. Danach waren beide seriellen Ports (Roomba und Controller) defekt. Der Roomba funktioniert aber ansonsten ohne Probleme.


Wie, 'funktionieren'? Ich meine: saugen kann ja jeder :)
Also, rein theoretisch solltest Du RX- und TX- Pin schon mal kurz vertauschen dürfen. Welcher Prozessor ist denn so ein Weichei und ist da sofort hin? Es sei denn, Du hattest eine echte serielle Schnittstelle (mit ihren +/-9 oder so Volt) im Spiel. Dann dürfte es natürlich schon mal rauchen ...



Den Link zur Beschreibung des 500er OI hatte ich in einem anderen Forum entdeckt. iRobot hatte das pdf von seinen Servern entfernt (glücklicherweise nicht vom lettischen Server). Damit sollte wohl verhindert werden, das man bestimmte Features auch bei den preiswerteren Roombas nutzen kann (wie Scheduling) .


So weit hatte ich gar nicht gedacht: geht das denn? Dem Roboter einfach per Schnittstelle anstatt per Buttons sagen, wann er zu saugen hat? Gleich morgen mal probieren ...
(hat der 520er denn überhaupt eine Echtzeit-Uhr??)



Der 520 sollte sich eigentlich genauso steuern lassen wie ein iCreate. Das Protokoll ist ja identisch, bis auf die neu hinzugekommenen Sensoren.
Die Roomba MRDS Schnittstelle könnte man sicher dazu aufbohren. Meine C# Kenntnisse sind leider auch nicht sehr gut und das komplette Framework ist wirklich sehr unübersichtlich.

Und die fehlende Cargo-Bay. Tja. We'll see.

Eins habe ich anhand Deines 500er OI-Manuals schon heraus: ich (bzw. der iRobot-Service von MSRS) schicke den Befehl '148, 2, 4, 35' an den Robot. Das bedeutet: schicke mir das Group Packet 4 und den Einzelwert 35 als Stream, das sollten (sowohl beim Create als auch beim 500er) 15 Byte sein, es sind aber 20. Das ist schonmal mysteriös ;)

Ich muß vielleicht auch mal in einem MSRS-Forum nerven ...


Grüße,
Christoph

m.a.r.v.i.n
17.05.2010, 22:26
Hallo Christoph,


Also, rein theoretisch solltest Du RX- und TX- Pin schon mal kurz vertauschen dürfen. Welcher Prozessor ist denn so ein Weichei und ist da sofort hin?

Praktisch leider nein. Sowohl die Roomba Schnittstelle sendet nichts mehr, als auch mein mega328 den ich daran anschliessen wollte. Natürlich nur mit 5V Pegel. Naja, jetzt suche ich halt nach einen günstigen Gebrauchten bei eBay. Alternativ kann ich mir auch ein neues Mainboard aus USA schicken lassen.


(hat der 520er denn überhaupt eine Echtzeit-Uhr??)
Versuch macht kluch.


das sollten (sowohl beim Create als auch beim 500er) 15 Byte sein, es sind aber 20. Das ist schonmal mysteriös ;)

20 Bytes klingt doch i.O. Siehe S. 18 im Manual, dazu kommen noch Header, Packet IDs, CRC usw.


The format of the data returned is:
[19][N-bytes][Packet ID 1][Packet 1 data…][Packet ID 2][Packet 2 data…][Checksum]

Hyla
18.05.2010, 08:25
Hallo Christoph,

Paktisch leider nein. Sowohl die Roomba Schnittstelle sendet nichts mehr, als auch mein mega328 den ich daran anschliessen wollte. Natürlich nur mit 5V Pegel.

Na: Gut, daß ich das nicht wusste beim Anschließen. Ich war wie immer völlig gewissenlos ;)

Alternativ kann ich mir auch ein neues Mainboard aus USA schicken lassen.


Kostet?



(hat der 520er denn überhaupt eine Echtzeit-Uhr??)
Versuch macht kluch.

Jo. Ist aber nicht so einfach. Ich kann die Uhr, so es sie denn gibt, leider nicht auslesen(?). Ich könnte höchstens versuchen, ein 'Schedule' aufzustellen und wenn das dann funktioniert gibt es eine Uhr. Das hab' ich gestern mal probiert und es tat sich nichts ;)

Es gibt natürlich ein 'Work-around', das auch ein schönes Projekt abgeben würde: ein irgendwo positionierter Microcontroller, der seinerseits eine Echtzeituhr betreibt und den Roomba über Funk steuert. Oder auch onboard befindlich ist und den 'Bot direkt steuert.
Ich will mich aber mal nicht von MSRS ablenken lassen. Ich hab das jetzt so oft versucht, entweder kriege ich das hin oder ich lasse das für immer :)
Ohnehin will ich ja eigentlich etwas ganz anderes machen: ich will einen Schwarm von Eigenbau-Robots mittels MSRS steuern.
Ich dachte nur, ich fange mit etwas an, was wenigstens schon mal im Ansatz funktioniert. Anstatt etwas eigenes aufzuziehen und dann gar nicht zu wissen, woran ich denn jetzt eigentlich gescheitert bin :)


das sollten (sowohl beim Create als auch beim 500er) 15 Byte sein, es sind aber 20. Das ist schonmal mysteriös ;)



20 Bytes klingt doch i.O. Siehe S. 18 im Manual, dazu kommen noch Header, Packet IDs, CRC usw.


The format of the data returned is:
[19][N-bytes][Packet ID 1][Packet 1 data…][Packet ID 2][Packet 2 data…][Checksum]

Tja. Jetzt muss ich das doch mal ganz lesen ;)
Ich bin halt davon ausgegangen, dass das mit dem Stream ähnlich geregelt ist, wie mit dem Befehl zur Ausgabe von Group- oder Einzel-Packets: da werden nämlich nachweisbar nur die jeweils verlangten Daten gesendet und keinerlei Header.
Ich hab mal einen Blick geworfen auf den Source-Code zum verwendeten Service und leider bin ich nicht weiter ...


Danke,
Christoph

m.a.r.v.i.n
18.05.2010, 12:38
Hallo Christoph,

ein Ersatz Board aus USA kostet ca 60€ inkl. Versand, dazu kommt dann noch 19% MwSt. Ich habe 2 Anbieter gefunden die weltweit versenden:
http://stores.ebay.de/Robotic-Vacuum-Parts
http://stores.ebay.de/caSino187
Dort werden auch Upgrade Kits angeboten, um einen 520 oder 530 aufzupimpen inkl. Anzeige und Tasten.

Mich würde ja interessieren, ob man einen 520 o. 530 auch nachträglich mit einem RF Modul aufrüsten kann, wie die 560 Modelle oder höher. Das Board scheint identisch zu sein, auch die Lötpunkte für das RF Modul sind vorhanden. Fragt sich nur, ob auch die Firmware das unterstützt. Damit könnte man dann auch die Lighthouses und die Wireless Remote Control (WCC) verwenden.

Ich habe mich in letzter Zeit mit dem Roomba RF Protokoll befaßt, in der Hoffnung ich könnte damit das OI ersetzen. Scheint aber wohl gänzlich anders zu funktionieren, schade.



Jo. Ist aber nicht so einfach. Ich kann die Uhr, so es sie denn gibt, leider nicht auslesen(?). Ich könnte höchstens versuchen, ein 'Schedule' aufzustellen und wenn das dann funktioniert gibt es eine Uhr. Das hab' ich gestern mal probiert und es tat sich nichts ;)

Hast du auch vorher die Uhr gestellt (Opcode 168). Bei meinem Roomba (625pro) mußte ich auch zuerst einmal die Uhrzeit einmalig stellen. Die Uhr läuft sonst nicht (zeigt nur ---- an).

Hyla
18.05.2010, 13:24
Hallo Christoph,

Hast du auch vorher die Uhr gestellt (Opcode 168). Bei meinem Roomba (625pro) musste ich auch zuerst einmal die Uhrzeit einmalig stellen. Die Uhr läuft sonst nicht (zeigt nur ---- an).

Ja, hatte ich. Tat sich nichts. Naja. Ist jetzt nicht so wichtig ...

Grüße,
Christoph

m.a.r.v.i.n
19.05.2010, 12:20
Hallo Christoph,

gerade bei Channel9 entdeckt. Es gibt dort eine an die Roomba 500 Reihe angepasste MRDS Library.
http://channel9.msdn.com/playground/Sandbox/414590-Roomba-500-series-robots-in-Microsoft-Robotics-Studio/

Hyla
19.05.2010, 12:43
Hallo Christoph,

Hast du auch vorher die Uhr gestellt (Opcode 168). Bei meinem Roomba (625pro) musste ich auch zuerst einmal die Uhrzeit einmalig stellen. Die Uhr läuft sonst nicht (zeigt nur ---- an).

Ja, hatte ich. Tat sich nichts. [...]

Grüße,
Christoph

Naja. Tat sich doch was. Heute nacht um ca. 1:30 begann der Roomba plötzlich sein Reinigungsprogramm. Ich konnte ihn nur mühsam überreden, das zu lassen ;)

Christoph

Hyla
19.05.2010, 12:44
Hallo Christoph,

gerade bei Channel9 entdeckt. Es gibt dort eine an die Roomba 500 Reihe angepasste MRDS Library.
http://channel9.msdn.com/playground/Sandbox/414590-Roomba-500-series-robots-in-Microsoft-Robotics-Studio/

Klasse! Ich probiers dann gleich mal aus...

Grüße,
Christoph

m.a.r.v.i.n
19.05.2010, 13:17
Heute nacht um ca. 1:30 begann der Roomba plötzlich sein Reinigungsprogramm. Ich konnte ihn nur mühsam überreden, das zu lassen ;)

Ja das kenn ich, mein Roomba wollte auch schon mal Montag früh um 3:20 staubsaugen. Da hatte ich wohl AM und PM verwechselt.


Klasse! Ich probiers dann gleich mal aus...

Naja, freu dich mal nicht zu früh. Die Lib ist von 2008 und demnach für eine ältere MRDS Version geschrieben. Ob das mit der aktuellen Release noch funktioniert?

Hyla
19.05.2010, 17:19
Klasse! Ich probiers dann gleich mal aus...

Naja, freu dich mal nicht zu früh. Die Lib ist von 2008 und demnach für eine ältere MRDS Version geschrieben. Ob das mit der aktuellen Release noch funktioniert?

Also ... die Sources hatte ich doch schon mal in der Hand gehabt ...

- Verzeichnis "Roomba500" aus dem Zip-File in den Ordner samples/platforms/ kopieren
- "TestRoomba500" in den Ordner samples
- Migration beider Verzeichnisse mit 'dssprojectmigration /b-' (gestartet unter samples/platforms bzw. samples/)

Beim Kompilieren von "TestRoomba" wird bei mir ein Verweis nicht gefunden (Ccr.Adapters.Winforms), den im Projekt einfach löschen und neu eintragen.

Beides läßt sich dann kompilieren. Beim Starten des Roomba-Service ist jetzt der Roomba500 zusätzlich zu Roomba und Create auszuwählen. Der Connect funktioniert auch. Ein paar Fehlermeldungen kommen ("bad data"), ob das ernsthaft was zu sagen hat weiss ich noch nicht.
Das Programm 'TestRoomba' zeigt dann allerdings nur eine leere Form, in der man tippen kann. Weiter passiert nichts. Sollte eigentlich demonstrieren, was mit den neuen Fähigkeiten zu machen ist ... (jeder Druck auf die Roomba-Clean-Taste sollte einen Befehl auslösen).


Grüße,
Christoph
Added:
Adresse mit Begleittext zu den Sources:
http://social.msdn.microsoft.com/Forums/en-US/roboticstroubleshooting/thread/16f1a913-b0e7-4901-80d5-b1e5dc43efc9

Hyla
19.05.2010, 18:42
Naja. Tat sich doch was. Heute nacht um ca. 1:30 begann der Roomba plötzlich sein Reinigungsprogramm. Ich konnte ihn nur mühsam überreden, das zu lassen ;)

Christoph

also:

- mit Roomba-Status stelle ich beim Roomba520 die Uhrzeit: 168, 3, 19, 23 (Mittwoch, 19:23)
- Und hiermit stelle ich ihn auf einen automatischen Start am Mittwoch um 19:25 ein: 167, 8, 0, 0, 0, 0, 0, 0, 19, 25, 0, 0, 0, 0, 0, 0

Und: um 19:25 fährt er los, der Kleine :)

Super. Geht also, definitiv. :)

Wie man die Uhrzeit auslesen könnte habe ich immer noch nicht raus. Geht das denn?

Grüße,
Christoph

m.a.r.v.i.n
20.05.2010, 10:21
Verzeichnis "Roomba500" aus dem Zip-File in den Ordner samples/platforms/ kopieren
- "TestRoomba500" in den Ordner samples
- Migration beider Verzeichnisse mit 'dssprojectmigration /b-' (gestartet unter samples/platforms bzw. samples/)

Beim Kompilieren von "TestRoomba" wird bei mir ein Verweis nicht gefunden (Ccr.Adapters.Winforms), den im Projekt einfach löschen und neu eintragen.

Habe ich auch so gemacht (zusätzlich noch /vs2008) , gab aber trotzdem noch ca. 50 Fehlermeldungen (benutze MRDS 2008 R2). Inzwischen compiliert es zwar auch ohne Fehler, aber erst nachdem ich diverse Änderungen aus den aktuellen Quellen übernommen habe.
Probieren kann ich halt leider nicht, mangels funktionierender Hardware. Die bestehenden Roomba VPL Beispiele gehen auch nicht mehr.

Mal sehen, dieses Wochenende gibt es wieder 3 gebrauchte Roombas bei eBay. Davon wird hoffentlich einer bald mir gehören.

'Bad Data' hört sich für mich nach falscher Baudrate an.


Wie man die Uhrzeit auslesen könnte habe ich immer noch nicht raus. Geht das denn?
AFAIK nein, ebensowenig wie die Scheduler Zeiten.

Edit: MRDS 2008 R2 ist schon wieder veraltet. Heute erschien MRDS 2008 R3. Eine Express Version gibt es nun nicht mehr, nur noch die Vollversion (aber kostenlos!).

Hyla
20.05.2010, 12:08
Mal sehen, dieses Wochenende gibt es wieder 3 gebrauchte Roombas bei eBay. Davon wird hoffentlich einer bald mir gehören.


Ich drück' Dir die Daumen :)



'Bad Data' hört sich für mich nach falscher Baudrate an.


Glaube ich nicht. Das passt schon. Eher bekommt MRDS auf seine Anfragen die falschen Antworten.



Wie man die Uhrzeit auslesen könnte habe ich immer noch nicht raus. Geht das denn?
AFAIK nein, ebensowenig wie die Scheduler Zeiten.

Hat man bei iRobot Vielleicht nicht so ganz zuende gedacht. Aber diese Version des Roomba ist halt doch eher für die 'Sauger', nicht die 'Schrauber' gedacht :)



Edit: MRDS 2008 R2 ist schon wieder veraltet. Heute erschien MRDS 2008 R3. Eine Express Version gibt es nun nicht mehr, nur noch die Vollversion (aber kostenlos!).

Gestern oder vorgestern hab ich nach einem Update geschaut. Gibts ja nicht.
Aber: hältst Du das für ein gutes Zeichen, dass die ihr Produkt 'verramschen'?
Oder anders gefragt: wie erfolgreich im merkantilen Sinne ist eigentlich MRDS?
Würde mich mal interessieren ...

Christoph

Hyla
20.05.2010, 15:24
Hi,

nachdem ich jetzt mal R3 installiert habe, kann ich weder die Roomba500-Sourcen kompilieren, noch die Dateien für den Parallax BoEBot (was für mich gleichermaßen schmerzhaft ist).
Langsam wird es doch Zeit, mal jemanden zu finden, der sich auskennt mit dem Kram :)
Sonst wird mir das Ganze doch zu frustrierend.

Grüße,
Christoph

m.a.r.v.i.n
21.05.2010, 10:45
Hallo Christoph,


nachdem ich jetzt mal R3 installiert habe, kann ich weder die Roomba500-Sourcen kompilieren, noch die Dateien für den Parallax BoEBot (was für mich gleichermaßen schmerzhaft ist).


Was mich ein wenig wundert, dass es vorher bei dir funktioniert hat. Ich hatte die Probleme ja schon mit der MRDS 2008 R2.
Nach einigen Anpassungen im Code liess sich zwar alles fehlerfrei übersetzt, aber beim Starten gab es dann Laufzeit Fehler. Nun habe ich aber eine funktionierende Version. Wenn du es ausprobieren willst, schick ich sie dir per eMail.

Was den BoeBot betrifft, welche Quellen verwendest du. Ich kann dir nur ProMRDS (http://promrds.com/) empfehlen. Dort gibt es aktualisierte und erweiterte Quellen für den BoeBot zum Download (Chapter 14).


Aber: hältst Du das für ein gutes Zeichen, dass die ihr Produkt 'verramschen'?
Oder anders gefragt: wie erfolgreich im merkantilen Sinne ist eigentlich MRDS?
Würde mich mal interessieren ...

Naja, MRDS war wohl immer nur ein Bastelprojekt einiger engagierter Entwickler. Das große Geld oder zumindest die Entwicklungskosten hat es sicher nicht eingespielt. Mit der kostenlosen Express Version konnte man ja fast alles machen, bzw. es hatte mich zumindest bisher kaum gestört. Allerdings ist aus MRDS heraus DSS und CCR als eigenständiges Framework entstanden.

Mit der R3 hat sich nun einiges getan:
* Das Compact Framework wird nicht mehr unterstützt.
* Nur noch C# und VPL werden offiziell unterstützt.
* Alle anderen Sprachen und Beispiele wurden zu Codeplex (http://mrdssamples.codeplex.com/) ausgelagert.

Mal sehen wie es weitergeht.

Hyla
21.05.2010, 14:08
Hallo Christoph,


nachdem ich jetzt mal R3 installiert habe, kann ich weder die Roomba500-Sourcen kompilieren, noch die Dateien für den Parallax BoEBot (was für mich gleichermaßen schmerzhaft ist).


Was mich ein wenig wundert, dass es vorher bei dir funktioniert hat. Ich hatte die Probleme ja schon mit der MRDS 2008 R2.


Tja. Irgendwie ging das. Aber ist ja egal, jetzt:

Nach einigen Anpassungen im Code liess sich zwar alles fehlerfrei übersetzt, aber beim Starten gab es dann Laufzeit Fehler. Nun habe ich aber eine funktionierende Version. Wenn du es ausprobieren willst, schick ich sie dir per eMail.

Vielen Dank!! Der Dienst selbst ließ sich problemlos kompilieren, TestRoomba war erst nach neu-auswählen des user.iRobot.Y2007.M01- (und .proxy-) Verweises zu kompilieren. Beim Starten kriege ich aber eine Fehlermeldung (Service creation failure). Einmal kam auch wieder die leere Visual-Form, ohne weitere Funktion. Das war bei mir unter R2 auch so.


Was den BoeBot betrifft, welche Quellen verwendest du. Ich kann dir nur ProMRDS (http://promrds.com/) empfehlen. Dort gibt es aktualisierte und erweiterte Quellen für den BoeBot zum Download (Chapter 14).

Ich hatte die Nerven verloren, gestern. Pro-MRDS kenne ich (ich hab' sogar das Buch hier, bin aber damit auch nicht wirklich glücklicher als vorher ;) ). Ich hab die Sourcen nochmal frisch eingespielt und es nach Anweisung neu kompiliert. Geht wieder (s.u.).


Naja, MRDS war wohl immer nur ein Bastelprojekt einiger engagierter Entwickler. Das große Geld oder zumindest die Entwicklungskosten hat es sicher nicht eingespielt. Mit der kostenlosen Express Version konnte man ja fast alles machen, bzw. es hatte mich zumindest bisher kaum gestört. Allerdings ist aus MRDS heraus DSS und CCR als eigenständiges Framework entstanden.

Letztlich kann es uns ja auch egal sein, nur befürchte ich, dass die Weiterentwicklung über kurz oder lang gestoppt wird ...


Mal sehen wie es weitergeht.
Eben. :)

Ich hab' ja schon angedeutet: ich betrachte den Roomba nur als Mittel, mit dem MRDS überhaupt mal so ein bisschen weiter zu kommen.
Im Endeffekt will ich ja meine Swarm-Bots damit realisieren. Ich hab ja gar keine BoeBots, ich verwende das Parallax-Projekt nur, weil der BoEBot von der Funktionalität her meinen Robots vergleichbar ist. Das wird bei mir also dann auf AVR-Basis laufen ( darf ich eigentlich noch 'ATM18' sagen? ;) ). Da hatte ich zumindest auch mal Anfangserfolge: ich hab' den BASICStamp-Code von Parallax erst versuchsweise unter BASCOM nachprogrammiert und dann in C unter Verwendung von ATM18 ( again ;) ) Sourcen von Udo J. Und zumindest damit habe ich den Beginn einer Kommunikation hinbekommen: ich konnte den Handshake beobachten und hin und wieder schienen auch die Servo-Motoren sich anders zu drehen als vorher :)
Ich würde das aber ohnehin ganz anders machen, als Parallax: Es müßte eine ASCII-Kommunikation sein ('Bandbreite' erstmal egal...); Funkverkehr nur auf Anforderung durch den Zentralrechner; ID-Feld (um eben einen Schwarm steuern zu können); CRC-Routinen...
Das heisst aber, dass ich von Grund auf neue Services schreiben müßte und das wiederum kann ich nur, wenn ich dieser C#- und NET-Programmiererei etwas näher käme.

Grüße,
Christoph

m.a.r.v.i.n
21.05.2010, 14:34
TestRoomba war erst nach neu-auswählen des user.iRobot.Y2007.M01- (und .proxy-) Verweises zu kompilieren. Beim Starten kriege ich aber eine Fehlermeldung (Service creation failure). Einmal kam auch wieder die leere Visual-Form, ohne weitere Funktion. Das war bei mir unter R2 auch so.

Hast du nicht das TestRoomba Projekt aus meinen Archiv verwendet? Dort hatte ich die Verweise im Projekt schon angepasst. Außerdem muss .NET 3.5 verwendet werden. Bei mir funktioniert das soweit, nur das ich immer wieder Timeouts bekomme, weil der Roomba nicht antwortet. Wie soll er auch?


Ich würde das aber ohnehin ganz anders machen, als Parallax: Es müßte eine ASCII-Kommunikation sein ('Bandbreite' erstmal egal...); Funkverkehr nur auf Anforderung durch den Zentralrechner; ID-Feld (um eben einen Schwarm steuern zu können); CRC-Routinen...
Das heisst aber, dass ich von Grund auf neue Services schreiben müßte und das wiederum kann ich nur, wenn ich dieser C#- und NET-Programmiererei etwas näher käme.

Das ist wohl der schwierigste Teil an MRDS. Eigene Services zu schreiben, oder gar von Grund auf neu anfangen. Das ProMRDS Buch besitze ich auch und es ist die beste Quelle die ich zu dem Thema kenne. Naja, das wird schon :wink:

Edit:
Hier gibt es ein paar interessante News über die Zukunft von MRDS.
http://spectrum.ieee.org/automaton/robotics/robotics-software/052010-microsoft-shifts-robotics-strategy-makes-robotics-studio-available-free

Hyla
21.05.2010, 16:48
Hast du nicht das TestRoomba Projekt aus meinen Archiv verwendet? Dort hatte ich die Verweise im Projekt schon angepasst.
Doch, das hatte ich. Ich muss aber trotzdem zwei Verweise, die er nicht findet, händisch neu laden.

Außerdem muss .NET 3.5 verwendet werden.
Das ist so eingestellt.

[...] nur das ich immer wieder Timeouts bekomme, weil der Roomba nicht antwortet. Wie soll er auch?

Go Peter, go! :)



Edit:
Hier gibt es ein paar interessante News über die Zukunft von MRDS.
http://spectrum.ieee.org/automaton/robotics/robotics-software/052010-microsoft-shifts-robotics-strategy-makes-robotics-studio-available-free
Schau ich mir mal an. Danke!

Christoph

Christoph

Hyla
21.05.2010, 16:52
Hi,

ich hab Roomba500 nochmals neu kompiliert. Das startet jetzt, in der Konsole kommen verschiedene Fehlermeldungen, dass Services nicht gestartet wurden:

Rebuilding contract directory cache. This will take a few moments ...
*** Service creation failure most common reasons:
- Service contract identifier in manifest or Create request does not match C
ontract.Identifier
- Service references a different version of runtime assemblies
- Failure to load referenced assemblies (not found in binary folder or unabl
e to load types)
Additional information can be found in the system debugger log.
[05/21/2010 17:20:17][http://rana:50000/manifestloader/dcc8273b-8cc4-4a1a-985f-
348d9dab8096]

(...)

Contract directory cache refresh complete
** Error creating service. Service type:http://schemas.microsoft.com/robotics/2
007/01/irobot.html [05/21/2010 17:20:22][http://rana:50000/constructor]
** Error creating service. Service type:http://schemas.microsoft.com/robotics/2
006/12/irobot/stream.html [05/21/2010 17:20:22][http://rana:50000/constructor]

Ich kann dann mit der 'CLEAN'-Taste das TestRoomba-Programm starten und von Menue-Punkt zu Menuepunkt weiter schalten. In einem Fenster sehe ich dann Erfolgs- bzw. Failure-Meldungen. Z.B.:

DrivePWM stopiRobot command DrivePWM is invalid for this iRobot model.

(laut Open Interface Specs sollte das an sich möglich sein: evtl. einer der nicht gestarteten Dienste?)

und:

Roomba 500 sensors:
Timeout waiting for Roomba 500 sensor notification

(das selbe Problem?)

Aber ist wieder ein Teil-Erfolg :)

Christoph

m.a.r.v.i.n
21.05.2010, 22:10
OK, ich habe das ganze noch einmal auf einem anderen PC ausprobiert. Dort gab es auch diese Service creation Failure. Ich habe doch noch einen Fehler im TestRoomba500 Projekt File gefunden. Die beigefügte Projekt Datei austauschen, das Projekt nochmals migrieren und compilieren, dann könnte schon etwas mehr funktionieren.

Bei diesem 2.PC tritt dafür ein anderes Problem auf. Statt des Control Panels kommt nur ein Anmeldedialog mit Nutzer und Passwort Abfrage. Keine Ahnung was das soll. Egal was ich eingebe, es kommt nur ein Error 403. MRDS steckt doch voller Eigentümlichkeiten.

Hyla
21.05.2010, 22:33
OK, ich habe das ganze noch einmal auf einem anderen PC ausprobiert. Dort gab es auch diese Service creation Failure. Ich habe doch noch einen Fehler im TestRoomba500 Projekt File gefunden. Die beigefügte Projekt Datei austauschen, das Projekt nochmals migrieren und compilieren, dann könnte schon etwas mehr funktionieren.


Hmm.. :)
Aus Deinem File:

<ReferencePath>C:\Dokumente und Einstellungen\pr\Microsoft Robotics Dev Studio 2008 R3\bin\</ReferencePath>

Den Pfad gibts bei mir schon gar nicht :)

Ich denke, ich spiel' das ganze Teil nochmal neu ein ...



Bei diesem 2.PC tritt dafür ein anderes Problem auf. Statt des Control Panels kommt nur ein Anmeldedialog mit Nutzer und Passwort Abfrage. Keine Ahnung was das soll. Egal was ich eingebe, es kommt nur ein Error 403. MRDS steckt doch voller Eigentümlichkeiten.

Been there ;)

Ich glaube, ich habe im Endeffekt im Explorer die eigene Adresse als "vertrauenswürdig" eingetragen. Danach ging das Aufrufen der Seiten ohne Abfrage ...

Grüße,
Christoph

m.a.r.v.i.n
21.05.2010, 23:01
Das Projekt muß immer durch das MigrationsTool gejagt werden. Das ersetzt dann die absoluten Pfade mit denen der Zielmaschine.
ImPrinzip geht es aber nur um das fehlende Wort 'user' im Manifest. 'iRobot.user.manifest.xml' anstelle von iRobot.manifest.xml'. Außerdem stand 2x dieselbe Property Gruppe im Projekt File.


...
<StartArguments>-port:50000 -tcpport:50001 -m:"samples\config\iRobot.user.manifest.xml" -m:"samples\TestRoomba500\TestRoomba500.manifest.xml"</StartArguments>



Ich glaube, ich habe im Endeffekt im Explorer die eigene Adresse als "vertrauenswürdig" eingetragen. Danach ging das Aufrufen der Seiten ohne Abfrage ...

Danke für den Tip. Das probier ich mal.

Edit: Super, das hat geklappt

Hyla
21.05.2010, 23:23
ImPrinzip geht es aber nur um das fehlende Wort 'user' im Manifest. 'iRobot.user.manifest.xml' anstelle von iRobot.manifest.xml'.

Du meinst 'user.iRobot.manifest.xml' ? :)




Ich glaube, ich habe im Endeffekt im Explorer die eigene Adresse als "vertrauenswürdig" eingetragen. Danach ging das Aufrufen der Seiten ohne Abfrage ...

Danke für den Tip. Das probier ich mal.

Edit: Super, das hat geklappt
Prima. :)

So. Jetzt gehts überhaupt nicht mehr. Morgen gehts weiter :)

Christoph

m.a.r.v.i.n
23.05.2010, 10:55
Du meinst 'user.iRobot.manifest.xml' ? :)

Nein, 'iRobot.user.manifest.xml' ist richtig. Die Manifeste findet man im Ordner 'samples/Config'.

Ich habe das gesamte Projekt nochmal aktualisiert und auf Googlecode geuppt. Hier ist der Link:

http://robotfreak.googlecode.com/files/Roomba500_v301.zip

Hyla
23.05.2010, 12:33
Du meinst 'user.iRobot.manifest.xml' ? :)

Nein, 'iRobot.user.manifest.xml' ist richtig. Die Manifeste findet man im Ordner 'samples/Config'.

Ich habe das gesamte Projekt nochmal aktualisiert und auf Googlecode geuppt. Hier ist der Link:

http://robotfreak.googlecode.com/files/Roomba500_v301.zip

Prima, vielen Dank.
Muß aber nochmal fragen:
wenn Du "build-roomba500l.cmd" ausführst: bekommst Du Fehlermeldungen oder geht das fehlerfrei?
Ich jedenfalls bekomme weiterhin Meldungen:

-------------------------------------------------------------------------------

Die Erstellung von Projekt "C:\Users\Christoph\Microsoft Robotics Dev Studio 20
08 R3\samples\TestRoomba500\TestRoomba500.sln" ist abgeschlossen (rebuild Ziel(
e)) -- FEHLER.


Fehler beim Erstellen.

"C:\Users\Christoph\Microsoft Robotics Dev Studio 2008 R3\samples\TestRoomba500
\TestRoomba500.sln" (rebuild Ziel) (1) ->
"C:\Users\Christoph\Microsoft Robotics Dev Studio 2008 R3\samples\TestRoomba500
\TestRoomba500.csproj" (Rebuild Ziel) (2) ->
(ResolveAssemblyReferences Ziel) ->
C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft. Common.targets : warning MS
B3245: Dieser Verweis konnte nicht aufgelöst werden: Die User.IRobot.Y2007.M01.
Proxy, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be7d93292cce4bd1, proce
ssorArchitecture=MSIL-Assembly konnte nicht gefunden werden. Vergewissern Sie s
ich, dass die Assembly auf dem Datenträger vorhanden ist.. Wenn dieser Verweis
für Ihren Code erforderlich ist, können beim Kompilieren Fehler auftreten.
C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft. Common.targets : warning MS
B3245: Dieser Verweis konnte nicht aufgelöst werden: Die User.IRobot.Y2007.M01,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=be7d93292cce4bd1, processorAr
chitecture=MSIL-Assembly konnte nicht gefunden werden. Vergewissern Sie sich, d
ass die Assembly auf dem Datenträger vorhanden ist.. Wenn dieser Verweis für Ih
ren Code erforderlich ist, können beim Kompilieren Fehler auftreten.


"C:\Users\Christoph\Microsoft Robotics Dev Studio 2008 R3\samples\TestRoomba500
\TestRoomba500.sln" (rebuild Ziel) (1) ->
"C:\Users\Christoph\Microsoft Robotics Dev Studio 2008 R3\samples\TestRoomba500
\TestRoomba500.csproj" (Rebuild Ziel) (2) ->
(CoreCompile Ziel) ->
TestRoomba500.cs(23,26): error CS0234: Der Typ- oder Namespacename "Robotics"
ist im Namespace "Microsoft" nicht vorhanden. (Fehlt ein Assemblyverweis?)
TestRoomba500.cs(24,26): error CS0234: Der Typ- oder Namespacename "Robotics"
ist im Namespace "Microsoft" nicht vorhanden. (Fehlt ein Assemblyverweis?)
TestRoomba500.cs(25,33): error CS0234: Der Typ- oder Namespacename "Robotics"
ist im Namespace "Microsoft" nicht vorhanden. (Fehlt ein Assemblyverweis?)
TestRoomba500.cs(26,24): error CS0234: Der Typ- oder Namespacename "Robotics"
ist im Namespace "Microsoft" nicht vorhanden. (Fehlt ein Assemblyverweis?)

2 Warnung(en)
4 Fehler

-------------------------------------------------------------------------------

Dazu gibts jede Menge Warnungen und Statusberichte (ich hab ein Log-File, bei Interesse).

Das Witzige ist, dass ich 'iRobot.sln' problemlos kompilieren kann. Und besser noch: Ich kann das Projekt auch debuggen, und im Gegensatz zu Deiner Vor-Version kann ich jetzt auch analoge Werte abfragen (zuletzt gabs nur Nullen).

Beim Kompilieren von TestRoomba dann aber wieder Fehler: ('Fehlt ein Assmblyverweis'). User.IRobot.Y2007.M01 und die dazugehörige Proxy-Datei werden nicht gefunden :)
Ich kann das natürlich fixen, dann kann ich TestRoomba auch starten, dessen Funktion ist aber wieder mal nicht gegeben.

Grüße,
Christoph

m.a.r.v.i.n
23.05.2010, 12:56
Beim Kompilieren von TestRoomba dann aber wieder Fehler: ('Fehlt ein Assmblyverweis'). User.IRobot.Y2007.M01 und die dazugehörige Proxy-Datei werden nicht gefunden Smile
Ich kann das natürlich fixen, dann kann ich TestRoomba auch starten, dessen Funktion ist aber wieder mal nicht gegeben.

Ja, ist bei mir auch so. Liegt wohl daran das die iRobot.user DLLs gerade erst neu erstellt werden und deshalb dem System noch nicht bekannt sind. Ich habe auch keine Idee, wie man das fixen kann. Evtl reicht es, noch mal das build script zu starten. Vieleicht ist in dem Archiv noch eine Datei mit eingepackt, die diese Abhängigkeiten beinhaltet (habe die .suo Dateien in Verdacht).
Ansonsten hilft wohl wirklich nur die Verweise von Hand neu einzubinden.

Hyla
04.06.2010, 09:31
Hi,

es gibt eine neue PRO-MRDS Version für das RDS 2008 R3:

http://promrds.codeplex.com/

Und Du, M.A.R.V.I.N., hast ein Mesh für die 500er für die Simulation gemacht, sehe ich: www.robotfreak.de/blog

Nett. Ist das eigentlich viel Arbeit? Ich hab mich da noch nie rangetraut ...

Grüße,
Christoph

m.a.r.v.i.n
04.06.2010, 20:25
Hallo Christoph,

nachdem ich bei den Gebraucht Roomba Versteigerungen kein Glück hatte, habe ich mir aus USA ein neues Mainboard kommen lassen. Jetzt habe ich wieder einen voll funktonsfähigen Roomba. Auch der Anschluß an den PC gelang jetzt ohne Probleme und Rauchzeichen. Uff, tief durchatmen.

DIe Wartezeit habe ich dann mit dem Erstellen einer neuen 'Haut' für die Roomba Simulation unter MRDS verbracht. Schwer ist das nicht aber relativ zeitaufwändig.

Hyla
04.06.2010, 21:12
Hallo Christoph,

nachdem ich bei den Gebraucht Roomba Versteigerungen kein Glück hatte, habe ich mir aus USA ein neues Mainboard kommen lassen. Jetzt habe ich wieder einen voll funktonsfähigen Roomba. Auch der Anschluß an den PC gelang jetzt ohne Probleme und Rauchzeichen. Uff, tief durchatmen.

Gratulation dazu :)


DIe Wartezeit habe ich dann mit dem Erstellen einer neuen 'Haut' für die Roomba Simulation unter MRDS verbracht. Schwer ist das nicht aber relativ zeitaufwändig.
Habs mal ausprobiert, sieht gut aus. Das mit der spiegelbildlichen Schrift kann man sicher auch noch hinbekommen? :)

Grüße,
Christoph