PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit Java programmierbarer Fertigroboter



Andi895
19.12.2013, 18:16
Hallo,

ich habe selbst mit Robocode und ähnlichen Spielereien das Programmieren gelernt. In den Weihnachtsferien werde ich meinen kleinen Bruder besuchen (wir haben ~12 Jahre Altersunterschied) und weil er sich sehr für meine "Arbeit" interessiert (ich studiere Informatik und programmiere nebenher zum Geld verdienen) möchte ich ihm gerne zeigen was "ich so mache". Die nächsten Tage werde ich mir nehmen um etwas für uns vorzubereiten.

Erst dachte ich an ein Jagen und Abschießen Spiel am PC, bei dem zwei Spieler eine Figur programmieren, die dann versucht die Figur des Gegenspielers zu vernichten. Gerade bin ich aber auf die Idee gekommen, dass es "real life" für den Anfang eventuell besser wäre als nur am PC. Ich suche also einen Roboter, den man mit einfachsten Mitteln mit JAVA (wichtig!) so programmieren kann, dass er durch ein Labyrinth läuft oder einen anderen Roboter vom Tisch wirft/fängt etc. Dabei soll keinerlei Wert darauf gelegt werden, wie der Roboter funktioniert, aufgebaut ist oder ähnliches, er soll einfach als Plattform dienen um das Programmierte zu sehen. Roboter zum vom Tisch werfen wären optimal, das werden dann sicher zwei klasse Wochen xD

Was für Vorschläge habt ihr? Lego Mindstorms kann ich mir leider nicht leisten und vor allem nicht zweimal...

Viele Grüße
Andi

MagIO2
19.12.2013, 22:48
Java ist wohl selten für Roboter-Programmierung. Ich hab jetzt auf die Schnelle den NIOBEE gefunden, allerdings ist die Programmierumgebung wohl nur online.

Ansonsten würde mir der Arduino einfallen. Seine Programmierumgebung/-sprache Processing basiert auf Java. Der Roboter von Arduino selbst kostet aber auch 200€.

Andi895
19.12.2013, 23:19
NIOBEE war auch mein erster Treffer, von der Programmierbarkeit mit Java ist er perfekt (obwohl es im Verglich zu C sehr stiefmütterlich behandelt zu werden scheint), aber vom Aufbau (Stabilität, Selbstzusammenbau erforderlich, animiert eher sich mit dem Themenfeld Roboter zu beschäftigen als einfach nur als interessante und spaßige Plattform zum Codeerleben zu dienen) für den Zweck ungeeignet. Du kannst deinen Code für NIOBEE auch offline kompilieren.

Hast du einen Link zum Arduino? Ich kenne das nur als Sammelbegriff für diverse Arduinoboards.

Idealerweise würde ich mir etwas wie hier http://www.hexbug.com/ nur unkompliziert programmierbar vorstellen.

MagIO2
20.12.2013, 05:20
http://arduino.cc/en/Guide/Robot

z.B. zu bestellen bei Pollin, Reichelt ... oder in der Apotheke

radbruch
20.12.2013, 09:37
Hallo

Wenn es unbedingt Java sein muss (was ich nicht nachvollziehen kann) würde sich vielleicht folgendes zum Einstieg eignen:

NanoVM:
http://www.harbaum.org/till/nanovm/index.shtml
http://www.mikrocontroller.net/articles/NanoVM

HaikuVM (für Arduino):
http://haiku-vm.sourceforge.net
https://www.roboternetz.de/community/threads/59698-HaikuVM-A-Java-VM-for-ARDUINO-and-other-micros-using-the-leJOS-runtime

Arexx Programmierbarer Arduino-Roboter AAR-04:
http://www.conrad.de/ce/de/product/191694/Arexx-Programmierbarer-Arduino-Roboter-AAR-04
http://www.produktinfo.conrad.com/datenblaetter/175000-199999/191694-an-01-de-ARDUINO_ROBOTER_AAR_04.pdf

Allerdings wäre das eine echte Pionierarbeit, denn diese Kombination scheint es bisher noch nicht zu geben.

Der arexx-bot ist zwar schon zusammengebaut, leidet aber anscheinend unter Lötmängeln, seine Erweiterungsports sind nur bedingt zum orginalen asuro kompatibel, er hat keine Tasten und es gibt noch keine Library zum Download (, möglicherweise wird eine auf CD mitgeliefert). Gegebenenfalls müßte man sich selbst eine aus der Arduino-Lib für den asuro (und vielleicht der Java-Lib für die bee) zusammenbasteln:

http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Asurino
http://www.robotfreak.de/blog/robotik/aar04-arexx-arduino-robot-erste-eindr%C3%BCcke/754
http://www.roboter.cc/index.php?option=com_content&view=article&id=12%3Anibobee-java-examples&catid=3%3Aprogramme&Itemid=6

Gruß

mic

Andi895
20.12.2013, 11:55
Danke für die Klarstellung MagIO2, ich habe beim Googlen verschiedene Arduinoroboter gefunden, ich war mir nicht sicher, was du meinst. Der Roboter scheidet allerdings aus denselben Gründen wie NIOBEE aus.

Deine Links bieten viel interessanten Stoff, Danke dafür radbruch! Der Roboter scheidet allerdings auch aus denselben Gründen wie NIOBEE aus. Welche Alternative würdest du zu Java vorschlagen? Gibt es dann geeignetere Roboter? Für mich ist Java einfach DIE perfekte erste Programmiersprache.

Meine Tendenz ist gerade keinen Roboter zu kaufen und "klassisch" mit Programmieren anzufangen.

avus17
20.12.2013, 20:57
Wenn du keinen Roboter kaufe möchtest könntest du mal Greenfoot ausprobieren. Das ist komplett in Java
recht anschaulich und eignet sich super für kleinere Spiele.

EDIT: Under dem Link ist auch noch mal ein Beispiel was man damit recht schnell
programmieren kann: http://www.highbankfive.de/SpielWechselDerWelten.php

Flugjo
22.12.2013, 10:59
Hallo zusammen,
ich bin neu im Forum und suche auch einen Roboter den mann in Java programmieren kann.
Meine Tochter lernt Java in der schule und programmiert kleine Spiele. Da sie sich auch für elektronik interessiert, bin ich auf der suche nach einem geeignteten Roboter. Ich selbst kann mit Hardware und löten ganz gut, programmieren ist aber neu für mich. Arduino scheint ja sehr verbeitet zu sein. MagIO2 hat geschrieben daß die Sprache auf Java aufbaut. Der Preis wäre schon erstmal ok.
Von der Mechanik her würde mir der RP6v2 besser gefallen. Im manual steht, das der compiler auch Java kann. Das ist jetzt wahrscheinlich naiv. Kann mann den RP6v2 mit Java programmieren ?
Der Niboo 2 Ist wohl noch nicht soweit. Bei roboter.cc seht bei Niboo 2/ Java : in work.
Die schwierigste Frage ist für mich : welche Sprachen werden in Zukunft am meisten verwendet. Ist eine Tendenz erkennbar ?

grüße
Jo

Für Anregungen uns Entscheidunghilfen bin ich sehr dankbar

MagIO2
22.12.2013, 23:38
Also auf der Produktseite zum RP6v2 steht Programmierung in C. Es wird auch ein AVR mega benutzt und es sollte einem Profi möglich sein die Arduino-Toolchain daran anzupassen, aber das willst du bestimmt nicht machen!

Für Java begeisterte, Anfänger und Künstler ist der Arduino sicher die bessere Wahl. Hier sind vermutlich auch genügend Demos vorhanden und die Entwicklungsumgebung ist Stressfrei installiert und funktioniert einfach mit dem Arduino-Zeugs. Das dürfte gut sein für den Frustlevel.

Java wird erst für Roboter interessant, die etwas mehr Power als AVRs unter der Haube haben. Möglicherweise schon ab Arm Level, Raspberry Pi oder eben PC basierte Robis. Bei Java besteht generell das Problem, dass es außer Netzwerk und Filesystem erst mal keine weitere Verbindung zur Außenwelt hat. Da müssen also auch erst mal Profis ran, die z.B. Treiber schreiben um sowas wie Serielle Schnittstelle oder I/O-Pins nutzbar machen.

White_Fox
23.12.2013, 09:53
Welche Alternative würdest du zu Java vorschlagen? Gibt es dann geeignetere Roboter? Für mich ist Java einfach DIE perfekte erste Programmiersprache.

Für hardwarenahe Anwendungen wie Roboter ist C sehr gut geeignet. Die Syntax ist der von Java sehr ähnlich (wobei man eigt eher sagen müßte, Java ist ähnlich zu C), nur das Code-Konzept ist halt ein völlig anderes. Ist eben nicht objektorientiert. Anstatt mit Klassen arbeitest du dort mit Funktionen. Ich weiß nicht wie du Programmieren gelernt hast, der Umstieg kann dir entweder extrem leicht fallen (dann hast du Java richtig scheiße gelernt) oder du wirst dich ein wenig umgewöhnen müssen, was dir aber auch nicht soooo schwer fallen sollte.

Hintergrund der ganzen Geschichte ist, das Java einfach ziemlich lahmarschig ist und man nur sehr bedingt bis gar nicht an die Hardware rankommt. Java ist toll, wenn man eine Maschine mit Betriebssystem hat wie z.B. einen PC. Da ist es meist auch schnuppe ob man irendwo ein paar Takte verschenkt, wenn man dafür aber z.B. einfach eine grafische Oberfläche programmieren will. Bei hardwarenahen Anwendungen ist es aber so, dass man gar kein Betriebssystem hat auf dem der Java-Interpreter laufen kann. Zudem ist es in diesem Bereich oft sehr wichtig, auf den Takt genau zu arbeiten, z.B. wenn man eine Uhr programmiert oder eine Kommunikation aufbaut.

Flugjo
23.12.2013, 17:07
Danke schon mal die "Aufklärung" .
Für meine Tochter habe ich jetzt mal das Fritzing Creator Kit mit Arduino uno bestellt. Das habe ich erst gestern entdeckt. Das dürtfe doch ein guter Einstieg sein.
Ein robotor wird daraus allerdings wohl noch keiner. Nun könnten wir mir dem http://arduino.cc/en/Guide/Robot weitermachen. oder mir dem RP6v2 oder der nibobee
Kann man die in Punkto Erweiterungs- und Programmiermöglichkeiten miteinander vergleichen ?
Unser Ziel wäre einen Roboter zu programmieren, der im Haus herumfährt, nicht an Hindernissen stehen bleibt, sondern die Fahrtrichtung ändert, und auch nicht die Treppe hinunter stürtzt. Natürlich ist uns dabei der Lerneffekt für meine Tochter und mich wichtig. Zu große frusterlebnisse sind aber auch nicht wünschenswert.
Hat jemand eine Empfehlung für uns ?

Danke für Unterstützung

White_Fox
23.12.2013, 19:15
Da kann ich nur Lego Mindstorms empfehlen.
Da kann man den Roboter ganz nach seinem Geschmack bauen.

Ich habe früher in der Schule damit mal einen Roboter gebaut, der auf Ketten gefahren ist, zwei Berürungssensoren vorne hatte und bei Hinderniskontakt kurz zurück, gedreht, und dann weitergefahren ist. Die Programmierung von den Dingern ist auch äußerst einfach gehalten, dennoch einigermaßen effektiv. Frusterlebnisse sind da weitgehend ausgeräumt.

Und wenn einem das Legozeugs alleine zu langweilig geworden ist, einfach mal die Steuereinheit aufschrauben, schauen was da für ein Controller drin ist (ich weiß, dass es zumindest früher mal ein AVRProzessor war, so einer ist im Arduino übrigens auch) und mal schauen was man damit noch so alles machen kann...

haikuvm
26.12.2013, 14:23
Ich denke so:
Beim Programmieren von Robotern hat der Beginner zwei Probleme.

Erstens muss er sich in die Hardware des Roboters und besonders des Mikrocontrollers hineindenken. Dazu muss man das Handbuch studieren, um beispielsweise zu erfahren wie man ein Bit in Port-Register B setzt, weil damit z.B. die LED verbunden ist, die man zum Leuchten bringen will. In C/C++, aber eben auch in HaikuVM, kann man dies dann durch eine einfache Zuweisung umsetzten:


PORTB |= 1 << 5;
Die Arduino Community geht einen leicht anderen Weg und versucht durch das Bereitstellen einer Arduino Lib von der konkreten (Mikrocontroller-)Hardware zu abstrahieren beispielsweise indem Pins einfach durchnummeriert werden. Diese Lib wird von HaikuVM transparent unterstützt. Durch diese Lib läßt sich die selbe Aufgabe in C/C++, aber eben auch in HaikuVM, wie folgt umgesetzt:


digitalWrite(13, HIGH);


Zweitens ist man bei der Programmierung von Roboteren schnell mit dem Problem der Parallelität konfrontiert. Beispielsweise, wie lasse ich eine LED blinken wärend der Robotor fährt bzw. seine Aufgabe erfüllt? Zur Lösung bieten sich viele Programmiertechniken für C/C++ und Java an (z.B. Zustandsautomaten). Java, und damit auch HaikuVM, bietet darüber hinaus auch das Sprachmittel Threads mit dem sich Parallelität auf "natürliche" Weise abbilden läßt.

Klar, gibt es dann immer wieder die Kritik an die Performance von interpretierendem Java. Aber, so ein 8 MHz AVR ist viel viel schneller als man denkt. Mein ASURO (natürlich in Java/HaikuVM programmiert) folgt locker und zügig einer Linie, erkennt Kollision und läßt in einem parallelen Thread seine LEDs blinken. Wäre er in C/C++ programmiert, wäre kein Verhaltensunterschied zu erkennen. (Intern müsste man evtl. das LED-Blinken trickreicher programmieren.)

Bei einem 16 MHz Arduino ist für Java/HaikuVM sogar noch so viel mehr (Performance-)Luft, dass man getrost alle - für Anfänger und Profis komfortablen - Exceptions wie zum Beispiel NullPointerException und ArrayIndexOutOfBoundsException einschalten kann ohne, dass der Robotor überhaupt was davon "merkt" ;-)