PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einfacher Robotersimulator für zweirädrige Roboter



robo.fr
25.05.2010, 16:38
Hallo Zusammen,

seit längerer Zeit schwebt mir vor, einen ganz einfachen Robotersimulator in Java zu schreiben.
Früher gab es mal die Programmiersprache "Logo" mit der eine Schildkröte auf dem Bildschirm bewegt werden konnte.

Roboter wie der Asuro oder NIboBee liesen sich so ganz gut darstellen.

Hat schon mal jemand versucht, so ein Projekt zu realisieren?

Gruß,
robo

TobiKa
25.05.2010, 18:19
Was willst du denn genau Simulieren?
Ein Bild vom Roboter übern Bildschirm flitzen zu lassen sit kein Ding.

Vielleicht über ne Scriptsprache programmierbar?
Sollen Sensoren mit einbezogen werden?
Legst du Wert auf Kolisionen und Reaktionen darauf?
Oder die Mechanik?
....

oberallgeier
25.05.2010, 19:46
... einen ganz einfachen Robotersimulator in Java ... Hat schon mal jemand versucht, so ein Projekt zu realisieren ...Du kennst sicher, wie ich, die Vorschläge bzw. Wünsche, dass so etwas gemacht werden sollte (TEAM-Arbeit heisst das dann - T oll E in A nderer M achts). Aber eigentlich sage ich jetzt Hurraahhh zu Deinem Vorhaben. Ich kann mich nicht dranwagen - dazu fehlen mir die Programmier- (ein paar Physik-) Kenntnisse und vermutlich oder vor Allem der Biss dazu.

Kennst Du den Mono Wheel Simulator von Christian H ? Zu Zeiten der absehbaren Fertigstellung von Murdoc_mm´s Mono Wheel Bot (https://www.roboternetz.de/phpBB2/viewtopic.php?t=34392&sid=e50d83a45c29fefa536a60f43e400a2d) hatte Christian H einen Simulator geschrieben. Seine Arbeit fing mit diesem Posting an. (https://www.roboternetz.de/phpBB2/viewtopic.php?p=343314&sid=e50d83a45c29fefa536a60f43e400a2d#343314) Zwei, drei Seiten in dem Thread drehten sich dann um die verschiedenen Ausbaustufen des Simulators, später hatte ich dazu dann diesen Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?p=345022#345022&sid=bb6b6b6e0626cdc7eec3f3e32de830de) speziell zu diesem Simulator eröffnet. Das Ding wurde von Christian H sogar mit Autopilot (https://www.roboternetz.de/phpBB2/viewtopic.php?p=343650&sid=e50d83a45c29fefa536a60f43e400a2d#343650) ausgestattet und solchen tollen Dingen. Sollte für Murdoc_mm eine Hilfe bei der Softwareplanung sein.

Der Simulator hiess damals einrad.exe, ich habe aber auf die Schnelle die hübschen Bildchen über die Simulationsergebnisse (tracking, Neigungswinkel, etc) vermisst. WENN Dich das interessiert, kann ich nach der *.exe suchen. Oder Du schreibst Christian H direkt ne Mail.

................http://oberallgeier.ob.funpic.de/MW-track-mai2010.jpg
................Diese Simulatorfahrt auf die Schnelle . . .

Prima Idee - auf alle Fälle ! ! *Grübelmurmelnachdenk* dann könntest Du mir gleich für (m)einen Zweirädrer eine physikgetreue Simulation für (m)eine Regelung bauen. DANN käm ich mit diesem Thema (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=465839&sid=b23b0468757a649252c29bdaf0a329b9#465839) wohl wieder in die Gänge (ich bin sicher, dass Du weißt, dass dies NICHT ernst gemeint ist).

rossir
25.05.2010, 21:11
Ich habe simbad aus dem Netz geladen. Das ist ein Roboter Simulator auf JAVA Basis. Verspricht somit auf vielen Plattformen lauffähig zu sein und ist unter meinem Windows XP extrem schnell und war dort simpelst zu installieren. Simbad ist (sogar) ein 3D Robot Simulator mit (kleiner) Physikengine und liegt (auch) im Quellcode vor.

Genug Beispielcode ist vorhanden.

Ich habe simbad probiert und war begeistert davon wie realistisch mein Roboter in meiner Arena mit Hilfe eines Distanzsensors den Hindernissen in der Arena ausweicht.

Schön wäre, wenn ein orginal ASURO C-Programm den von simbad simulierten Roboter (nämlich dann den simulierten ASURO) steuern könnte.

robo.fr
25.05.2010, 21:44
Hallo Alle,

vielen Dank für eure Antworten.


Du kennst sicher, wie ich, die Vorschläge bzw. Wünsche, dass so etwas gemacht werden sollte (TEAM-Arbeit heisst das dann - T oll E in A nderer M achts). Aber eigentlich sage ich jetzt Hurraahhh zu Deinem Vorhaben. und vermutlich oder vor Allem der Biss dazu.

Hallo Oberallgeier, das T-E-A-M Problem ist mir bekannt. Ich hatte auch schon Bedenken beim Verfassen des Posts. Morgen werde ich voraussichtlich mal ein Stückchen Code posten, damit mal ein Anfang gemacht ist.


Ich kann mich nicht dranwagen - dazu fehlen mir die Programmier- (ein paar Physik-) Kenntnisse
Nach den Projekten, die ich von Dir gesehen habe, kannst Du bestimmt einiges beitragen. Ich wollte den Simulator am Anfang auch ziemlich einfach halten und hoffe, dass das ganze Projekt nicht zu trivial erscheint. Die Welt in der sich der Roboter bewegt, soll flach sein, damit fallen Fallbeschleunigungen usw. schon mal weg.


Simbad ist (sogar) ein 3D Robot Simulator mit (kleiner) Physikengine und liegt (auch) im Quellcode vor.

Simbad habe ich schon gesehen, scheint mir im Moment allerdings noch zu kompliziert. Ich fände es besser, so ein Projekt von Null aufzuziehen und mitzuwachsen.
Die 3D-Engine finde ich eher unpraktisch, weil es auf einer Standard-Java Installation nicht läuft und immer noch zusätzliche Libraries installiert werden müssen.



Schön wäre, wenn ein orginal ASURO C-Programm den von simbad simulierten Roboter (nämlich dann den simulierten ASURO) steuern könnte.

Für den Asuro reicht meiner Meinung nach die 2D-Version aus. Das C-Programm laufen lassen zu können, wäre natürlich toll. Eigentlich könnte man den Code für den Asuro mit dem GCC komplieren, wenn man die Funktionen der Asuro-Lib als Schnitstellenfunktion definiert.

oberallgeier
25.05.2010, 23:59
... kannst Du bestimmt einiges beitragen ...Im Prinzip habe ich nix dagegen. Aber meine Javakenntnisse beschränken sich leider nur auf einfachste Modifikationen bestehender Codestückchen - z.B. Gummiband-Mauszeiger als Uhr oder Zeichnungen in HTML-Seiten; nix Komplexes!

Die flache Erdscheibe ist ja, zeitlich gesehen, noch immer der Rekordhalter, das geht sicher gut. Und für meine Roboterrechnungen habe ich sogar ausschliesslich translatorische Bewegungsgleichungen . . . obwohl ich die hübschen asuro-Drehmessungen hier im Forum kenne.

robo.fr
26.05.2010, 08:40
Hier gibt es meinen ersten Simulator-Versuch.

Mit compile.bat lassen sich die zwei Java-Source-Files Robosim.java und Rotoer.java kompilieren. Mit start.bat kann der Simulator gestartet werden.

Ok, zugegeben, das Programm ist etwas schlicht: Es zeigt einen blauen, im Kreis fahrenden Roboter.

Ich habe die Bewegungsgleichungen für einen Zweirad-Roboer verwendet.

Der Befehl

robi.bewegen(x_schritt, y_schritt);
( in paintComponent )

bewegt den Roboter indem das linke Rad um x_schritt und das rechte Rad um y_schritt bewegt wird. Daher kann man mit geeigneten Parametern den Roboer alle Bewegungen machen lassen Im Kreis drehen, gerade aus fahren, auf der Stelle drehen ...

Falls einige Java-Experten unter euch sind, bin ich für Kommentare sehr dankbar.

robo.fr
26.05.2010, 12:27
Hier gibt es noch eine neuere Version 01.
In dieser Version habe ich die Roboterklasse auf die Klasse Asuro vererbt.


for(int n=0;n<10000;n++)
{
asuro.MSleep(500);
asuro.StatusLED(LedColor.GREEN);
asuro.MSleep(500);
asuro.StatusLED(LedColor.RED);
asuro.MotorSpeed(100,100);
asuro.MotorDir(AsuroMotor.FWD,AsuroMotor.FWD);
asuro.MSleep(400);
asuro.MotorDir(AsuroMotor.RWD,AsuroMotor.FWD);
asuro.MSleep(500);

}

Jetzt kann man schon ein klein wenig den Asuro simulieren. Ich habe ein paar Asuro Befehle in Java gebaut, so dass man den Roboter damit steuern kann. Die StatusLED ist auch implementiert. Leider ist der Java-Style nicht ganz C-kompatibel, aber ich denke, man kann das Programm ziemlich leicht für den Asuro umbauen.

robo.fr
26.05.2010, 19:58
Im Prinzip habe ich nix dagegen. Aber meine Javakenntnisse beschränken sich leider nur auf einfachste Modifikationen bestehender Codestückchen - z.B. Gummiband-Mauszeiger als Uhr oder Zeichnungen in HTML-Seiten; nix Komplexes!

Hallo Oberalgeier,

was hältst du von dem Vorschlag, zur Übung die Back-LED Funktionen in der Asuro.java zu implementieren?
Das könnte mit geringen Java Kenntnissen machbar sein und Du lernst viel.

Beste Grüße,
robo

robo.fr
27.05.2010, 11:42
Was willst du denn genau Simulieren?
Ein Bild vom Roboter übern Bildschirm flitzen zu lassen sit kein Ding.

Ok, das geht mitlerweile.


Vielleicht über ne Scriptsprache programmierbar?
Das eher nicht. Am besten wäre natürlich in der Orginalsprache und mit den Originalfunktionen des jeweiligen Roboters. Also vornehmlich in C. Soweit ich gesehen habe, gibt es in Java die Möglichkeit, externe C-Programme aufzurufen und Daten via Standard-IO auszutauschen. Meine ersten Versuche damit waren allerdings noch nicht von Erfolg gekrönt. Das externe C-Programm konnte zwar gestartet werden, der Datenaustausch hat allerdings nicht geklappt.


Sollen Sensoren mit einbezogen werden?
Auf jeden Fall, in der aktuellen Version wird ein Asuro modelliert und die Schalter als Sensoren benützt. Die Liniensensoren lassen sich noch einfach implementieren.


Legst du Wert auf Kolisionen und Reaktionen darauf?

Hindernisse sollten detektiert werden. Das wäre besonders interessant, wenn man mehrere Roboter gleichzeitig fahren lässt.

Oder die Mechanik?
Die Mechanik könnte man in gewissen Grenzen implementieren. Ich habe mich darum noch nicht gekümmert, deshalb fährt der Roboter noch etwas unrealistisch ruckartig. Für den Asuro gibt es schon relativ gute fertige Modell für die Motoren. Dies Modelle könnte man auf jeden Fall einbauen. Die Parameter ließen sich relativ einfach für andere Roboter wie z.B. den NiboBee einbauen.

Im folgenden die neueste Version des Simulators: Es wird ein Hintergrundbild geladen und die Schalter erkennen die Farbe "Rot". Das Beispielprogramm lässt den Roboter soweit fahren, bis er auf ein rotes Hindernis trifft, dann kehrt er um.

robo.fr
29.05.2010, 10:08
Der Vollständigkeit halber hier der Link auf die erweiterte Asuro Version:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=54498

robo.fr
31.05.2010, 12:59
Hier der Simulator mit einer NiboBee-Nachbildung.

Leider im Moment noch mit der Asuro-Befehlslibrary. Vielleicht hat ein Java-Spezialist unter euch Lust, bei der Umsetzung der NiboBee Befehle zu helfen.

RobbyFan
16.06.2010, 18:17
Hallo,

cooles Projekt, gute Arbeit
Ist das opensource ???
Mich würde der Quellcode interessieren


MfG Marcel