Bitte loggen sie sich ein oder registrieren sie sich.

Einloggen mit Benutzername, Passwort und Sitzungslänge

Autor Thema: RCX-Roboter mit einer Webcam via Internet steuern.  (Gelesen 10921 mal)

maccroche

  • LUG Ambassador
  • Administrator
  • Megafig
  • *****
  • Beiträge: 2273
    • Lego Sammlung, links...
RCX-Roboter mit einer Webcam via Internet steuern.
« am: 24. Mai 2008, 14:54:37 Nachmittag »

Bonjour,

Dieser Artikel soll erklären wie ein RCX-Roboter mit einer Webcam via Internet zu steuern ist.



Wie es begann:
Ich hatte im Jahr 2001 das große Glück, das Lego Set 9747 als Geschenk zu bekommen. Ich konnte meine Liebe zu Lego, Computer und Roboter endlich in einem Spiel zusammenfassen.
Meine Idee war einfach, meinen Computer mit dem Roboter und einer Webcam zu kombinieren, damit mein Bruder den Roboter und die Webcam von Paris aus steuern kann. Es hat funktioniert. Es war lustig zu sehen, wie der ferngesteuerte Roboter sich auf dem Tisch bewegt hat!

Seit dieser Zeit haben sich Zeit und Platz nicht mehr so schnell wieder ergeben und ich bin erst jetzt wieder dazu gekommen, das Modell bzw. die Installation wieder aufzubauen. Dieses Mal habe ich alles fleißig mitprotokolliert.

Die nötigen Applikationen, Installations- und Konfigurations-Schritte und der Aufbau des Lego-Modells werden dokumentiert. Dieses Modell wird sich weiterentwickeln und die nächste Meilensteine sind kurz erwähnt.

Am Schluss soll eine kleine Sammlung an Links als Hilfe dienen und die Suche erleichtern.

* Was wird benötigt?
   Lego RCX Mindstorms: das Set Robotics Invention System 1.5, 9747
   Eine Webcam, z.B. die Vision Command, 9731. Diese ist leicht auf dem Roboter einzubauen und hat ein sehr langes USB-Kabel. Es kann sehr wohl auch eine andere Webcam sein.

* Welche Applikationen sind notwendig?
   Es mag eine Menge sein, aber doch nicht so unüberschaubar. Die Internet Adressen, um diese zu finden, sind unten aufgelistet.
   - Einen Webserver: zB. Apache.
   - Eine Applikation, um die Videobilder ins Netz zu transferieren, "streamen": z.B. Webcam32. Für Webcam32, die dazu gehörige Streaming Applet: "JavaCamPush.cab".
   - Eine Applikation, um den RCX via Internet zu steuern: z.B. webrcx.exe.
   - Eine Applikation, um den RCX zu programmieren: z.B. Bricx Command Center 3.3 alias BricxCC.
   - Die RCX Firmware: Firm0309.lgo oder wie hier Firm0328.lgo.
   - Die ActiveX Kontrolle: spirit.ocx.
   - Eine Java Version, mindestens die JRE muss auf dem Client als auch auf dem Server installiert sein, sonst funktioniert das Bild Streaming nicht.
   
   Anmerkung: Diese Konstellation ist unter MS Windows 2000 & Firefox installiert und erprobt worden. Anpassungen für andere MS Operating Systeme sind möglich, was ich leider nicht ganz ausschließen kann. Es kommen mit Internet Explorer ein paar Fehlermeldungen, ich suche noch woran es liegt. Mit Firefox geht es problemlos!

* Installation, Schritt für Schritt:
Hier sind die notwendigen Schritte zu folgen. Es ist eine vorgeschlagene Reihenfolge, diese kann sicher adaptiert werden.

Anmerkung: Ich gehe davon aus, dass noch keine von allen diesen Applikationen auf dem Rechner installiert ist. Sollte es schon eine oder mehrere geben, sind die Änderungen nicht aufwendig.
Es sollte für einen Laien (kein Computer Guru in dem Fall) so einfach und klar wie möglich sein. Die Bemerkungen sollten euch, die gleichen unangenehmen Fragen / Abstürze wie ich hatte, sparen. Ich kann dafür etwas übersehen haben, ich bitte dann um Rückmeldung für eine ausführliche Ergänzung.

- Installation des Webservers:
   Apache herunterladen und installieren. Siehe den Link unten.
   Die Datei "httpd.conf" (im Verzeichnis "conf") mit dem Stammverzeichnis ("documentroot") und dazugehörigen Leserechten anpassen.

- Bilber Streaming:
   Webcam32 konfigurieren: die TCP/IP Parameters & Portnummer anpassen. Für die Parameter siehe den Link fur JavaCamPush.cab unten: Applet Enabled & Server Push Enabled & Remote access port & Maximun push interval...)
   Nicht vergessen! Die Applet JavaCamPush.cab von Webcam32 ins Stammverzeichnis "documentroot" kopieren!

- Webrcx konfigurieren:
   Webrcx herunterladen und installieren.
   Die "COM" Nummer für den Serienanschluss & die "TCP/IP Port" Nummer einstellen (defaultmäßig COM 1, bzw. Port 7070)
   Wenn nötig (z.B. im Fall einer Fehlermeldung oder keine vorige Installation der mitgelieferten RCX Software) die Datei spirit.ocx in das Webrcx-Verzeichnis kopieren und mit dem Befehl "regsvr32 "\\absoluter Pfad\\"\spirit.ocx" registrieren.

- BricxCC:
   BricxCC herunterladen und installieren.
   Die RCX Firmware in den RCX laden (Menu "Tools/Download Firmware"). z.B. firm0328.lgo laden.
   Das Programm für die Steuerung schreiben bzw. öffnen, kompilieren und z.B. als 5. Programm in den RCX herunterladen.

Die HTML Seite:
   Diese Seite soll sich im Stammverzeichnis ("documentroot") neben der Applet JavaCamPush.cab befinden.
   Es sind 2 Teile: für die Video- und für die RCX-Steuerung.
   Der erste Teil der Seite wird von dem Bild genommen. Ein Beispiel für die HTML Seite kann unten auf dem Link für JavaCamPush gefunden werden.
   Der zweite Teil ist für die RCX-Kontrolle. Die erweiterte HTML Seite ist aus einem Beispiel für Webbrick angepasst (IP Adresse siehe: WebBrickURL, Portnummer...). Siehe Link unten.

* Konkrete Beispiele:
   Ich werde die Programmierungs-Schritte nicht komplett erklären, sondern die Dateien (vorbereitete HTLM Seite und den fertigen RCX-Code) unter dem Link: (rcxwebcam_sample.htm und RCXWebCam_sample.nqc) zur Verfügung stellen.
   Diese müssen an die eigene Installation angepasst werden, siehe Kommentare in den Dateien selbst.

* Und was ist mit dem Legonanteil?
   Na ja, es geht doch hier um einen Lego Roboter, und nicht nur um irgendwelche Applikationen! Hier ist eine kleine Erläuterung, welcher Antriebblock und welches Bewegungssystem verwendet werden.

   Als Bewegungssystem habe ich mich für die zwei Ketten des Modells 9747 (Seite 21 --> 25) entschieden. Es bietet Stabilität für den Roboter und erlaubt sehr enge Umdrehungen.
Mit den Ketten, dem Antriebblock, der Webcam und dem RCX selbst wiegt das ganze Modell ca. 630 g.
   Der Antriebblock ist für die 3 Motoren angepasst. Die Kabeln sollen nicht im Weg sein und die Drehungen der Webcam stören. Es sollte auch leicht und kompakt sein.
Die Motoren A und C sind für die Bewegung des Roboters gewidmet. Für die Programmierung ist zu bemerken, dass der Motor C die Kette in der ungekehrten Richtung dreht!  Der Motor B ist dann für die Drehung der Webcam zuständig.
   Ein paar Bilder mit den verschiedenen Elementen sind in der Galerie http://gallery.lgoe.at/thumbnails.php?album=81 zu sehen.



* Es kann los gehen.
Die eigene Firewall für die ausgewählten Applikationen bzw. Portnummern (Webstreaming und Webrcx hier:8888, bzw. 7070) öffnen. Vorher prüfen, dass keine andere Applikationen die gleichen Port Nummern verwenden.

   Den Webserver starten (für apache via httpd.exe oder via ApacheMonitor.exe).
   Die Applikation für das Bild-Streamen starten.
   Den RCX starten (die firmware sollte installiert sein).
   Webrcx starten und auf dem Knopf "Start" drücken.
   Die HTML Seite aufrufen und genießen.

* Und wo sieht man das Ganze laufen?
   Falls es Interesse an eine live Demo gibt, lasst es mich wissen, damit wir uns einen Termin ausmachen und ich meinen Server konfigurieren kann.

* Konzeptionszeit
   Umgerechnet ca. 5 Arbeitswochen (mit den verschiedenen Installationen, Testen, Wiederversuchen...) auf mehreren Monaten verteilt.

* Aufbauzeit bis zur vollen Funktion nach dieser Anleitung:
   Hoffentlich kurz, ich schätze maximal einen Tag, damit alles funktioniert.

Einschränkungen:
   Die Reichweite der Sender, die Länge des Kabels (zwischen Webcam und Computer).

Zukunft & Weiterentwicklung:
   Meine nächsten schlaflosen Nächte sind schon für die Weiterentwicklung der Roboter gebucht. Mein Wunsch ist, diesen Roboter dann auf den Platten meiner Space MOCS laufen zu lassen, und dieses via Internet zur Verfügung zu stellen. Wir könnten es bei einer kommenden Ausstellung versuchen, es geht auch zwischen den Zügen.
   Die offenen Punkte sind, die richtige Positionierung des Roboters zu erkennen und nachzuvollziehen. Der Roboter sollte wissen, wo er ist und bei einer Gabelung nur die möglichen Richtungsmöglichkeiten erlauben.

   Ich möchte vermeiden, dass sich der Roboter zu weit umdreht und damit entweder dem Infrator Sender den Rücken zeigt oder an dem Kabel der Webcam hängen bleibt. Ich möchte z.B. nur bis 6 Drehungen Links oder Rechts zulassen und dann die weitere Drehung verhindern (ein bisschen Programmierung ist noch notwendig).

   Für den Roboter selbst möchte ich auch die Webcam auf einen Kran (z.B. die des Modells 8460, da kommt noch Pneumatic dazu) einbauen, und damit einen weiteren Freiheitsgrad (in die Höhe) erlauben. Der Arm des Krans bedeutet dafür weitere Stabilitätsherausforderungen.
   
   Ein weiterer Schritt wäre, dieses Modell und die Programmierung für den NXT Roboter zu erweitern, aber erst wenn ich ein NXT Set habe.

Na ja, das war's. Es hat wirklich SPASS gemacht! Es bleibt faszinierend den Roboter zu sehen, der plötzlich anfängt sich zu bewegen.
Eure Kommentare, Rückmeldungen, Empfehlungen sind alle sehr erwünscht!

Viel Spaß mit euren Erfahrungen!
Vincent

Link Sammlung:
   Apache: http://httpd.apache.org/
   BricxCC: http://bricxcc.sourceforge.net/
   Firmware: auf dem Mindstorms CD im Verzeichnis \FIRM\ oder RCX 2.0 Beta: http://mindstorms.lego.com/sdk2beta/default.asp
   LEGO® MINDSTORMS(tm) Internals: http://www.crynwr.com/lego-robotics/
   Spirit.ocx auf dem Mindstorms CD im Verzeichnis \System\
   Spirit.ocx Technical References: http://www.vorlesungen.uni-osnabrueck.de/informatik/robot00/doc/lego/pbrick.pdf
   Webbrick: http://popbubble.com/Lego/WebBrick/
   WebBrick JavaScript API 1.0: http://popbubble.com/Lego/WebBrick/CodeExamples/APIDemo.html
   webcam32: http://www.webcam32.com/support/webcam32help/index.html
      JavaCamPush.cab: http://www.webcam32.com/support/webcam32help/javacampush.html
   webrcx: http://www.sckans.edu/~sireland/lego/webrcx/

Schlüsselwörter: Lego, Mindstorms, RCX, Java, Webcam, BricxCC
« Letzte Änderung: 25. Mai 2008, 23:53:35 Nachmittag von maccroche »
Gespeichert

Mike

  • human-cyborg relations
  • Vereinsmitglieder
  • Megafig
  • ****
  • Beiträge: 4322
    • @mike's mindstorms
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #1 am: 25. Mai 2008, 01:01:35 Vormittag »

Bravo Vincent, Bravo!   :hello2:


Das nenne ich mal eine gute Dokumentation!
Schaut ziemlich komplett aus, aber das werde ich selbstverständlich noch testen! (ich melde mich dann mit meinen blöden Fragen, Du hast es so gewollt!  ;) )


lg
Mike

spaceman

  • Newbie
  • *
  • Beiträge: 13
    • brickshelf
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #2 am: 25. Mai 2008, 17:58:21 Nachmittag »

hi rcx-fraks!

   vincent zu deinen projekt ... is echt der hammer

 frage:
    läst sich das ganze auch mit dem bausatz 8275 (bulldozer) und mit einen ir-stick machen?
    hat sich schon jemand gedanken darüber gemacht eine mini-cam (für modellbau) zu verwenden?
      da fällt das usp-kabel weg
   wie groß ist/soll die fahrzeug-plattform sein?

     .....gz und weiter so.....
     mfg spaceman
Gespeichert

maccroche

  • LUG Ambassador
  • Administrator
  • Megafig
  • *****
  • Beiträge: 2273
    • Lego Sammlung, links...
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #3 am: 26. Mai 2008, 00:04:42 Vormittag »

salut Mike, spaceman,

Danke für die Kommentare.
Die HMTL Seite und NQC Code sind jetzt freigegeben. Danke Mike für die Tests!

Ja, es ist grundsätzlich möglich alle möglichen Webcams zu verwenden, je kleiner & drahtloser desto besser. Minimale Anpassungen sind sicher nötig.
Sicher kann man alle anderen Sets dazu nehmen, umbauen, es ist hier nur als Konzept zu nehmen!

Der Roboter ist insgesamt 19 cm lang und 15,5 cm breit. Die Platform ist 5 * 5 cm groß, da die Webcam so imposant ist.

Vincent
Gespeichert

Mike

  • human-cyborg relations
  • Vereinsmitglieder
  • Megafig
  • ****
  • Beiträge: 4322
    • @mike's mindstorms
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #4 am: 26. Mai 2008, 12:24:57 Nachmittag »

Hi

frage:
    läst sich das ganze auch mit dem bausatz 8275 (bulldozer) und mit einen ir-stick machen?

Wenn sich ein NXT dann auch über's Internet steuern läßt (Vincent, kauf Dir endlich einen NXT!  ;) ), dann gibt es da eine Möglichkeit: Hitechnic hat einen IR-Sensor für den NXT im Programm, der die PF- Funktionen als auch die RCX-Sprache versteht ...


lg
Mike

maccroche

  • LUG Ambassador
  • Administrator
  • Megafig
  • *****
  • Beiträge: 2273
    • Lego Sammlung, links...
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #5 am: 02. Juli 2008, 14:29:13 Nachmittag »

salut,

Wenn es für die internationalen Leser leichter ist, könnte ich diesen Artikel in Englisch übersetzen.

Meint ihr, daß allgemein andere Artikel für eine Translation relevant sein könnten?
Ich denke an den Ambassadoren und an den Anzahl von den nicht deutschsprechender Leser (und die englische Grammatik ist mir viel lieber weil leichter).

lg,
Vincent

Gespeichert

shary

  • Administrator
  • Megafig
  • *****
  • Beiträge: 3180
    • http://www.brick.at
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #6 am: 02. Juli 2008, 15:40:47 Nachmittag »

Hi Vincent,

gewisse Beiträge - wie zB der deine - sind sicherlich auch für die englischsprachige Community interessant. Eine Übersetzung ist daher bestimmt kein Fehler. Allerdings denke ich, dass du die englischsprachige Community hier kaum erreichen wirst. Ich denke also: Übersetzung - ja, hier posten - ja, aber zusätzlich auch auf internationalen Plattform posten (zB Eurobricks).

lg Verena

Gespeichert
Unsere LEGO Fan Seite: www.brick.at

Mike

  • human-cyborg relations
  • Vereinsmitglieder
  • Megafig
  • ****
  • Beiträge: 4322
    • @mike's mindstorms
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #7 am: 02. Juli 2008, 15:52:31 Nachmittag »

Vincent


Bei "international" denke ich eher an http://lugnet.com ...


lg
Mike

shary

  • Administrator
  • Megafig
  • *****
  • Beiträge: 3180
    • http://www.brick.at
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #8 am: 02. Juli 2008, 16:00:09 Nachmittag »

Klar, das natürlich auch. War ja nur ein Beispiel und auch wenns eurobricks heißt, ist es sehr international (ich glaub ca. die Hälfte aller Ambassadore sind dort mehr oder weniger aktiv). Gibt ja ev. auch fachspezifische Plattformen, oder? Ich mag lugnet.com nur nicht so gern, der Aufbau ist mir zu chaotisch und unübersichtlich.
Gespeichert
Unsere LEGO Fan Seite: www.brick.at

Mike

  • human-cyborg relations
  • Vereinsmitglieder
  • Megafig
  • ****
  • Beiträge: 4322
    • @mike's mindstorms
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #9 am: 02. Juli 2008, 16:44:50 Nachmittag »

Hi


Ich mag lugnet.com nur nicht so gern, der Aufbau ist mir zu chaotisch und unübersichtlich.
Da gebe ich Dir natürlich sofort recht, da muß man durch ...

Aber, was soll ich von einem Forum halten (Eurobricks), wo mein Mindstorms in eine Gruppe mit Bionuckle gezwängt wird?  ;)


lg
Mike

maccroche

  • LUG Ambassador
  • Administrator
  • Megafig
  • *****
  • Beiträge: 2273
    • Lego Sammlung, links...
Re: RCX-Roboter mit einer Webcam via Internet steuern.
« Antwort #10 am: 02. Juli 2008, 16:53:29 Nachmittag »

Zitat
Aber, was soll ich von einem Forum halten (Eurobricks), wo mein Mindstorms in eine Gruppe mit Bionuckle gezwängt wird? 

Wie der Philosoph schon gemeint hat: "das nennt sich Fortschritt!"

lg,  ;)
« Letzte Änderung: 02. Juli 2008, 18:03:26 Nachmittag von maccroche »
Gespeichert