(Lego-)Roboter in C++ programmieren
-
Hallo,
ich werde im Sommer eine Projektarbeit zum Thema Roboterprogrammierung (konkret Positionsbestimmung, probabilistic robotics) schreiben und möchte mich nun schon ein bisschen einarbeiten. Leider weiß ich überhaupt nicht, wo ich anfangen soll.Zu Hause habe ich noch die erste Generation von Lego Mindstorms. Anscheinend kann man das in C++ programmieren ( http://brickos.sourceforge.net/ ). Hat das hier schon mal jemand ausprobiert? Und lohnt es sich, da Zeit reinzustecken? Das Ding hat anscheinend nur 512kb Hauptspeicher und 128kb RAM... sollte ich mir vielleicht doch lieber gleich was Besseres zulegen? Es gibt ja jede Menge Bausätze, z.B. bei Conrad.
-
Legoroboter lohnt sich auf jeden Fall, der wird sogar an manchen Unis im Informatikstudium den Studenten vorgeworfen. Gerade für Linienfolgung, Erkennen von Sackgassen usw. macht sich das ganz gut, um das algorithmische Denken zu schulen.
Wenn man das Denken schon hat und "schwerere" Dinge machen möchte, stößt man bei dem aber leider doch schnell an Grenzen. Da passen z.B. nur 3 Sensoren dran. Schon allein für Linienfindung machen sich 3 Lichtsensoren viel besser als einer, aber dann geht eben der Ultraschallsensor für die Sackgasse nicht mehr. Würdest du dir extra zu dem Thema das Ding kaufen wollen, würde ich dir also eher abraten, aber wenn du es schon hast, ist das sicher erstmal ein Anfang. Du wirst dann ja selbst merken, an welchem Punkt du was besseres brauchst.C++ als Programmiersprache kannte ich noch nicht, sondern nur einen C-Dialekt. Die Programme sind ja aber meistens nicht sonderlich kompliziert, da spielt das keine große Rolle. Lediglich das zusammenklicken in der mitgelieferten Software ist ein Krampf
-
Der Speicher klingt doch mal sehr ausreichend.
Muss man halt vernünftig programmieren und nicht den Stil adaptierten, mit dem heutzutage Desktoprechner vergewaltigt werden.
-
also wir haben das in der schule mit der mitgelieferten graphischen benutzeroberfläche gemacht.
und das war scheisse. anders kann mans nicht sagen, konstanten waren nach dem speichern/neu laden nicht mehr konstant. die speicherungen waren so gut 12 mb gross bei nichtmals grossen programmen... usw usw. ein totaler krampf
in java oder auch c meinetwegen wäre das ein ganzes stück besser gewesen...
so würde ichd as gerne nochmals wiederholen
-
ipsec schrieb:
C++ als Programmiersprache kannte ich noch nicht, sondern nur einen C-Dialekt. Die Programme sind ja aber meistens nicht sonderlich kompliziert, da spielt das keine große Rolle. Lediglich das zusammenklicken in der mitgelieferten Software ist ein Krampf
meinst sicherlich nqc, oder? damit hab ich das ding früher auch gerockt, die hardware ist also prinzipiell nicht "zu schwach". ist halt im wesentlichen ein nett verpackter microcontroller, der sich dank der mitgelieferten sensoren einfach mit input versorgen lässt und weils halt lego ist auch gut mechanisch in eine maschine integrieren lässt.
Ich hab auch mal mit lego-elektronik in der schule ne facharbeit geschrieben, wo mir eben dieser aspekt sehr gelegen kam.bei uns an der uni programmieren die etis auch an den mindstormsgeräten rum, ich glaube, die dürfen da sogar mit assembler dran.
wenn dir aber die begrenzte zahl von ein/ausgängen am legoteil im wege steht, kannst du ja immer noch ( wenn du nicht allergisch gegen lötzinn bist oder so^^) wirklich selber die hardware zusammenbauen, diese dinger hier hab ich schon öfters bei so projekten verbaut gesehen, zusammen mit allerlei sensoren und motoren/servos.
da hast du den vorteil, sensorisch nicht so limitier zu sein, musst dafür aber das wägelchen selber bauen. ums gute programmieren kommste wohl bei beidem nicht rum
edith sagt gerade:
hier hat dochErhard Henkes auf seiner seite auch zu verschiedenen roboterbausätzen was, könnte vll. auch hilfreich sein.
-
NQC ist für die erste Robotergeneration, aktueller ist NXC (Not eXactly C) und NBC (Next Byte Code, eine Art Assembler)
-
Erst mal danke für die Antworten, ich werd den Kram mal mitnehmen, wenn ich Ostern zu hause bin, anschließend berichte ich von den Ergebnissen
Auf der Seite von Erhard Henkes bin ich auf den Nibo gestoßen, den finde ich sehr interessant. Offenbar bekommt man einen Nibo 2 Bausatz schon für 111€:
http://www.reichelt.de/?ACTION=3;ARTICLE=87461
Ich habe aber noch nie Elektronik gelötet... ist sowas für einen Anfänger überhaupt zu bewältigen?
-
Ich weiß nicht, Nibo ist schon sehr fein zu löten, aber machbar mit Leuchtlupe. Du findest bei Erhard Henkes auch C++-Programmierung (state pattern) des Nibo1. Es lohnt sich immer mit dem Asuro anzufangen, leicht zu löten (oder bei ebay auch gebraucht - fertig aufgebaut - zu kaufen), klasse community, und da kann man schon eine Menge anfangen trotz kleinem µC, C++ geht da aber nicht vernünftig. Also man kann den Asuro zum Einstieg empfehlen, z.B. zum Löten und Lernen des Programmierstils und der Tools, und dann Umstieg auf den Nibo2 (am besten mit Grafikdisplay 128*64 Pixel) mit deutlich mehr Möglichkeiten.
Den RP6 sollte man auch mal anschauen: http://www.conrad.de/ce/de/product/191524/?insert=U1&hk=WW2&utm_source=epro&utm_medium=seosite&utm_campaign=link&WT.mc_id=epro Bewertungen lesen sich positiv. Siehe: http://www.youtube.com/watch?v=o2okdm7lwEE http://www.youtube.com/watch?v=4BDZD8rekl0&feature=related http://www.youtube.com/watch?v=SZ3aWmsqfFQ&NR=1 etc.
-
Also für die neuen lego bots gibts multiplexer, also maximal 16 Sensor ports!!!
-
Ich kann dir den ASURO empfehlen.
Hab den damals für ca 50euro gekauft. Muss man halt selber löten, evtl. findet man aber auch bereits zusammengebaute auf ebay.Jedenfalls kann man den in ganz normalem C programmieren! Und das ist echt eine feine Sache, wenn man bedenkt dass viele Roboterbausätze mit schrecklichem Basic zu programmieren sind! Oder gar graphisch! Das geht mal garnicht.
Mit Asuro kann man dank C wirklich fast alles anstellen.
Hier ein paar Beispiele die ich gemacht habe:
+PID Regler damit das Teil perfekt geradeaus fährt (Radgeschw. messbar)
+PID Regler zum Linien Verfolgen
+TV Fernsteuerung mit der IR LED
+Abgrunderkennung - das Teil bleibt an der Tischkante stehen, und fällt nicht runter.
+Barcode lesen
+Mit den Fühlern kann man quer durch einen Raum fahren und bei einem Zusammenstoß umdrehen
+Soundausgabe mittels PWM auf den Motoren, man kann damit einfache Melodien wie "Für Elise" wiedergeben!
+usw...Wie du siehst ist wirklich viel machbar!!!
Hier ein Video von Asuro (nicht von mir) : http://youtu.be/rdta7wqpvm0