Hallo,
Ich finde dieses Projekt sehr interessant.
Bin mal gespannt, wie es aussieht, wenn du es in etwa soweit hast,
daß wir es testen können.
Gruß Sebastian
Wie der Titel schon sagt fange ich gerade an ein Robotersimulationsprogramm zu schreiben. Vorstellen tu ich mir das ganze so:
Es gibt ein Grafisches Programm in dem man neue Maps laden , Roboter grund-konfiguieren und die Simulation starten kann.
Die Map besteht aus einer Datei in dem ein array[x][y] Mappoints(simulierte 10cm*10cm oder 20*20) gespeichert ist. Auf einem Point können verschiedene Objekte sein, z.B. einfach ein Gegenstand/Hinderniss, Mauern
aber auch Lichtquellen, Geräuschquellen und was mir später noch so einfällt. Jeder Point hat dadurch auch verschieden Parameter wie helligkeit, Lautstärke, höhe des Objekts usw. Map größen wird es zwei oder drei geben. Mindestens eine 5m*5m große für einen Raum und eine 20m*20m für mehrere Räume.
Später stelle ich mir zu der Mapdatei noch ein mapname Programm vor mit eigener KI, das die Map aktuallisiert. So könnten z.B. Menschen in der Karte herum gehen, Lichter gehen an und aus gehen usw.
Jeder Roboter wird ein eigenständiges Programm werden das mit dem Grafischen Programm kommuniziert, und Position sowie Sensordaten übermittelt.
Auf dem Roboter werden reale Sensoren simuliert, max. Sharp IR Sensoren mit 80cm, mit 150cm und US Sensoren mit 6m Reichweite jeweils max. 8Stck. Sicher wird es noch nen Helligkeitsradar, und Lautstärkenradar (viell. primitiv nur 4 Richtungen) zur auswahl geben. Wahrscheinlich auch einen IR Radar aus 4Stck. Sharp´s 150cm Sensoren.
Einen Roboter wird jeder schreiben können der grundlagen in C kann.
Im Grafischen Programm wählt man aus welche Sensoren auf seinem Roboter alles an sein sollen, anschließend erstellt es eine robotername_status Datei(in der ist gespeichert welche Sensoren an sind) und eine robotername.c in der eine robi_init() am Anfang immer aufgerufen wird. In robi_init() werden verschiedene Threads gestartet um die Position und Sensoren mit hilfe einer Karte zu aktuallisieren, und um die aktuelle Position usw. dem Grafischen Programm mitzuteilen.
Nach der robi_init() kommt nun der Persönliche Code. Mit verschiedenen Funktionen kann man nun seinen eigenen Roboter programmieren.
Also Funtkionen wie.
get_sensor_x()
get_kompass();
roboter_stop()
roboter_geradeaus(geschwindigkeit)
roboter_drehung(X Grad)
usw.
In der robi_init() wird auch ein Thread gestartet der überprüft ob das nächste Kommando ausgeführt werden kann oder ober er z.B. vor einer Wand steht und nicht weiter kann. Dieser Thread benutzt aber nicht die Sensorwerte sonder die Karte selbst.
Im Grafischen Programm wird der Roboter angezeigt mit den aktuellen Sensorwerten. Fast ziemlich sicher wird man auf einen Button drücken können um ein Fenstern zu starten in dem der Roboter in der Karte herumfährt.
Soviel zu meinen Vorstellungen und ich hoffe man konnnte mich verstehen.
Mein ziel ist es, möglichst realistisch zu simulieren ( nicht die Graphik), sodas man die KI vielleicht später auf echte Roboter übertragen kann.
Schreiben tu ich das ganze mit C unter Linux (Ubuntu) und benutze gtk-2.0 und die glib für das Grafische Programm. Für den Roboter wird rein Ansi-C benutzt. Bis jetzt habe ich nur das Grafische Grundprogramm und eine Teil der robi_init() für das eigentliche Roboterprogramm. Bis jetzt kann man einen Roboter erstellen und auswählen welche Sensoren an sein sollen, ihn abspeichern (bis jetzt nur robiname_stat) und anschließen wieder laden. Ein Mapladen Dialog ist vorhanden wobei biss jetzt nur angezeigt wird was man für eine Datei ausgewählt hat. Es wird sicher noch einige Zeit dauern bis eine erste Funktionsfähige Version da ist, da für mich vieles ganz neu ist/war (gkt-2.0,glib, X-Programmierung, Threadprogrammierung), und ich nur darüber gelesen hatte. Aber ich hab zur Zeit viel Freizeit, da ich gerade keine Schule oder sonstiges habe.
Wenn jemand sich denkt wieso nicht unter Windows, ich mag VisualStudio nicht, ich mag die Ungarische Notation nicht. Wobei es auch möglich ist gkt Programme unter Windows auszuführen.
Ich hab den Thread im Open Source Forum aufgemacht da ich, sobald eine lauffähige Version enstanden ist den Sourc Code hier veröffentliche. Oder auch schon früher wenn jemand interesse hat oder aus sonst einem Grund. Hoffentlich wurde es jetzt nicht zu lange.
Gruß Muraad
Hallo,
Ich finde dieses Projekt sehr interessant.
Bin mal gespannt, wie es aussieht, wenn du es in etwa soweit hast,
daß wir es testen können.
Gruß Sebastian
Danke dir izaseba für die Interesse. sowas ist immer nett.
Wenn ich so weiter mache wie bisher denke ich das in einer wocher oder zwei die erste benutzbare Version entstanden ist.
Bis dann
Gruß Muraad
Hallo
Finde Dein Projekt ebenfalls hochinteressant (bin zwar eher auf der Mikrocontrollerseite zuhause), hab einige Kleinigkeiten mit VC programmiert (programmieren müssen), mag es jedoch genauso wenig wie den Rest von MS :- Seid einiger Zeit spiel ich mich jetzt mit GTK unter Linux herum und finde die Bibliothek recht gut, daher freue ich mich schon auf dein Projekt, hoffe dabei einiges lernen zu können.
Gruß
Erstmal danke für die interesse. Freut mich immer wieder \/
Ist auch bei mir das erste mal das ich etwas größeres für den PC schreibe. Vorher nur kleine Konsole programme. Dann hab ich mich auch lange nur mit Mikrocontrollern beschäftigt.
Was GTK betrifft, ich liebe es jetzt schon ich finde die Bibliothek so einfach logisch. Und ich mags das man nicht C++ braucht für Graphik.
Auf www.pronix.de gibts zwei Open Books. Das eine ist für Linuxsystemprogrammierung mit C, da ist auch ein Kapitel über gtk.
Und davor eins über X-Programmierung (ist die Stufe unter gtk) ist ganz interessant da erfährt man noch bisschen genauer wie das abläuft. Das Unterprogramm zur graphischen Anzeigen des Roboters (2-D Karte) werde ich wahrscheinlich damit programmieren (X-Libary). Im gtk Kapitel werden ganz gut die Grundzüge eines gtk Programms erklärt. Wobei ich einige Fehler und Probleme hatte wenn ich es später so wie in dem Buch gemacht hab. Und seitdem schau ich fast nur noch in das Gtk Tutorial auf http://www.gtk.org/tutorial/ oder in die API Referenz. Aber die Grundlagen wie Widgets Packen, Signals (connecten) usw. werden in dem Buch ganzgut erklärt.
Wenn du irgendwelche Hilfe mit gtk brauchst kannst du mich gerne Fragen.
Gruß Muraad
Danke für den Buchtipp (ist fürs Verständnis sehr hilfreich)
Wie sieht’s mit dem Projekt aus?
Gruß
Hallo,
etwas ähnliches gibt es natürlich schon.
Am bekanntesten dürfte wohl das Player/Stage Projekt sein:
http://playerstage.sourceforge.net/stage/stage.html
http://playerstage.sourceforge.net/gazebo/gazebo.html
Auch ganz schick (für Matlab):
http://www.cas.kth.se/toolbox/
Grüße,
zefram
--
www.roboking.de - Jetzt bis zum 31. Mai 2007 anmelden für die fünfte Runde des großen Roboterwettbewerbs für Schüler aus Deutschland, Österreich und der Schweiz -
das reale simulieren der Sensoren ist ein traum und dann gleich mehrere.
man bekommt nur annähernd die werte. es ist dann halt ein spiel, man kann aber keine wahre auswertung fürs leben machen.
mfg pebisoft
Pebisoft simuliert nicht, also kann das nichts gescheites sein
Mal davon abgesehen, dass das "Leben" nur eine Simulation auf einer anderen Ebene ist (es passiert alles nur in deinem Kopf), ist es ein leichtes simulierten Sensorwerten simulierte Ungenauigkeiten hinzuzufügen. Dann kann man sehr schön testen bis zu welchem "Störlevel" ein Algorithmus stabil ist, ohne den Robby dauernd umzubauen. Selbst das Simulieren an sich kann echt spannend sein, weil ein komplexes Verhalten nicht unbeding ein komplexes Programm (=Regeln) voraussetzt (siehe zB. Schach oder Life)Zitat von pebisoft
ciao .. bernd
Lesezeichen