PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Der ROBOKNECHT



KingSauce
31.03.2011, 17:56
Moin,

das Ziel meines Projektes ist mir selbst noch nicht so ganz klar, jedefalls sollte der Roboter (aka Roboknecht) möglichst einfach gehalten, die Hardware leicht verständlich sein (keine fertigen Roboterplatinen usw) und einige Grundaufgaben lösen können (z.B.: Linienverfolgung, Ausweichen vor Hindernissen).

Als Basis hab ich mir für 9,95€ ein kleines ferngesteuertes Auto bei Pollin gekauft.
Zum einen muss ich mich dann nicht mehr um Motoren kümmern (außer wenn die jetzigen kaputt gehen) und ganz schick sieht das Teil auch noch aus wenn das Gehäuse drauf ist. Ist ein kleiner blauer VW Touareg :-)

Erster Schritt war die Ansteuerung des Antriebs und des Lenkmotors, die soweit in Ordnung ist:

Ein Atmega8 steuert über ein paar Ausgänge einen L298 an, an dem wiederum die beiden Motoren hängen.
Für Motor und Elektronik wird derzeit die selbe Stromversorung eingesetzt (4x AAA Akkus). Wird aber wohl noch geändert, schon allein, weil die Motoren wohl gern etwas mehr abkriegen könnten. Ursprünglich bekamen die glaube ich um die 7V.

Der zweite Schritt war der Aufbau einer kleinen Photosensoreinheit. Diese besteht aus einem Phototransistor und einer blauen superhellen LED. Wäre sie vorhanden, hätte ich eine weiße LED benutzt, aber mit der blauen sind die Werte für "dunkel" und "hell" eigentlich auch schon sehr gut differenziert. Das hängt dann an einem ADC Pin. Die Werte für "dunkel" und "hell" werden derzeit über zwei Taster vor dem Start kalibriert.

Das Problem ist jetzt allerdings, dass er einen relativ großen Kurvenradius hat, was wohl mit der geringen Motorspannung zusammenhängen könnte. Das heißt, dass er nicht "mit Vollgas" in die Kurve geht und vielleicht auch noch etwas herumdriftet, sondern eher "rollt".

Die Linienfolgetaktik ist augenscheinlich auch noch nicht ganz ausgereift, da er manchmal zu übermütig lenkt.
Deshalb werde ich das ganze nochmal mit zwei Phototransistoren und / oder mit Infrarotdioden und -empfängern ausprobieren. Dann wäre er schonmal nicht auf eine hauchdünne Linie beschränkt, auf der er bleiben muss.

Damit ich im Betrieb sehen kann mit welchen Einstellungen (Motor PWM-Level, Hell- und Dunkelwerte usw) er am besten arbeitet kommt auch noch ein kleines Text-LCD dran. Sind gestern glücklicherweise zwei aus China eingetroffen :). Die Infrarot LEDs und Empfänger dürften auch demnächst ankommen.

Was zu gucken gibts auch. Ich hab einen Youtube-Account für den Roboknecht erstellt, wo ich immer ein paar Videos zum Status des Projekts hochladen werde.
Bis jetzt gibts hier die drei:

#1 Antrieb

http://www.youtube.com/watch?v=J9_QK_E26lY

#2 Lenkung

http://www.youtube.com/watch?v=xBm-L6sTXxI

#3 Linienverfolgung

http://www.youtube.com/watch?v=yHsjMU7Q3i8

Bitte teilt mir eure Erfahrungen zum "kleinradiösen" lenken mit Lenkmotoren mit. Ich hab schon versucht immer kurz rückwärts zu fahren, sodass er quasi ein bischen driftet :D Damit bin ich aber noch nicht so weit gekommen.

Überhaupt ist die Linienverfolgung bestimmt um einiges besser, wenn zwei Sensoren eingesetzt werden. Die kommen wie gesagt auch noch demnächst.

Vielen Dank!
gruss michael


*Update*
#4 Driften bis es knallt

http://www.youtube.com/watch?v=qrAunI-AywI

KingSauce
02.04.2011, 13:50
Hab gestern mal das eine Text LCD am Atmel getestet und funktioniert direkt einwandfrei :)
Finde ich schonmal sehr schön. Damit werd ich jetzt noch ein wenig herumspielen und dann mal sehen wie es sich auf dem Roboknecht platzieren/befestigen lässt. Nicht dass es zerrissen wird wenns mal wieder knallt... Eventuell werde ich später noch einen kleineren Atmel fertigmachen, der nur auf Messwerte wartet und diese an das LCD weiterschickt.
Wenn alles an dem einen µC hängt könnte das noch ein ganz schöner Kabelsalat werden und die E/A Pins sind auch schnell alle weg.

Und ich seh gerade, dass der NDS Touchscreen, den ich hier noch liegen habe genau die richtige Breite für das LCD hat. Eine Blende davor, damit der Rest vom Touchscreen verschwindet und man hat ein stilsicheres Userinterface für den Roboknecht. :)

KingSauce
04.04.2011, 23:00
Soooo das hier musste unbedingt noch heute raus.

Roboknecht mit LCD aufm Kopp:


http://www.youtube.com/watch?v=gmfzLizAY4I

lokirobotics
06.04.2011, 20:32
Schönes Projekt, gefällt mir! Ist das dein erster Bot?
Ich hätte einen Hinweis für das Geschwindigkeits "Problem" bei den unterschiedlich schweren Zuladungen:
Wenn du eine Möglichkeit schaffst, die Geschwindigkeit zu messen, kannst du einen Regler implementieren, der den Bot immer auf einer bestimmten Geschwindigkeit hält.

Deinen Motortreiber solltest du auch gegen den L293D austauschen können. Der nimmt weniger Platz in Anspruch und sollte mit den Motoren nicht überfordert sein.

Ich bin gespannt, wie's weitergeht.

Frohes Schaffen!

KingSauce
06.04.2011, 21:35
Moin,

sehr schön das jemand antwortet :)

Jau, das ist mein erster Bot. Das heißt mein erster von Null aufgebauter. In früheren Jahren gabs natürlich Experimente mit dem Lego Mindstorms ;) Deswegen sind Grundkenntnisse über diverse Sensoren usw vorhanden.
Das mit der Motoransteuerung war allerdings völliges Neuland für mich, weshalb ich mich jetzt immer wieder freue, wie einfach das eigentlich mit dem Treiberbaustein ist.

Der L293 ist auch wohl wirklich ne Nummer besser geeignet, schon allein weil der nicht diese blöde Bauform hat. Ich hab den jetzt in einem ganz normalen DIP Sockel drin und dazu halt die Beine zurecht gebogen...
Sobald die Kiste meinen Ansprüchen gerecht wird (zB Linie vernünftig folgen, Kollisionen vermeiden), werd ich das ganze nochmal vernünftig aufbauen und auch den L293 einsetzen. Platine fräse ich mir dann wohl auf der Arbeit.

Von wegen Kollisionen vermeiden: Ich habe gerade mal spaßeshalber die Sensoreinheit nach vorne gerichtet und er erkennt Wände erstaunlich gut. Egal ob es braunes Holz ist oder eine weiße Wand. Klar dreht er bei dunklen Materialien später ab, weil mehr Licht absorbiert wird, aber funktionieren tut das an sich sehr gut, obwohl mir die Lösung schon sehr billig vorkommt im Gegensatz zu Ultraschallgedöns. :D

Wenn man das Ganze noch optimiert, indem man an jede Ecke des Roboknechts eine LED+Sensor packt und die LEDs vielleicht noch in einem einfachen Morsecode leuchten lässt sollte das schon sehr gut funktionieren denk ich. Es sei denn das hat jetzt nur geklappt, weil er in einer recht dunklen Ecke der Wohnung rumgegurkt ist ;) Aber ich hoffe mal man kann einfach die gut funktionierende "Lichtgrenze" für eine gesehene Wand auf das Umgebungslicht addieren.
Würde er dann halt vor der Fahrt mit ausgeschalteten LEDs das Umgebungslicht abmessen.

Das LCD lohnt sich auf jeden Fall, denn es beschleunigt die Weiterentwicklung extrem. Da hab ich einfach den Sensor nach vorne gebaut (also geklebt *hehe*) den Knecht vor die Wand gestellt und den Wert vom LCD abgelesen. Schnell ein billiges Ausweichmanöver programmiert (fahre rückwärts und links, sobald ADC > 15 warte 400ms und fahre für 400ms vorwärts rechts, ansonsten fahr mit ein bischen weniger Gas vorwärts) und schon kann er einer Hand und meinem Klavier ausweichen :D Teppich ist natürlich böse, aber mit ein wenig Sensor-gen-Boden-Neigung sollte das auch kein Problem mehr sein.

Geschwindigkeit messen macht auf jeden Fall Sinn. Ich würde das dann entweder optisch lösen, also ein paar Striche aufs Rad und wieder per Photoirgendwas abmessen, oder mit einem Beschleunigungssensor (zB beim Anfahren, Abbremsen messen). Einen Beschleunigungssensor wollte ich sowieso noch einbauen (für was auch immer). Könnte ich zB das Driften optimieren, sodass man ihn vielleicht dazu bringen kann einen unendlich langen Donut zu drehen.

Außerdem noch was zur Lenkung:
Es hatte mich ein User angeschrieben, ob ich nicht mal versuchen wollte den Roboknecht rückwärts fahren zu lassen um den Lenkradius zu verkleinern. Das hatte ich mir auch mal überlegt, aber irgendwie wieder verworfen weil ich es für zu schwer kontrollierbar hielt.
Das werde ich morgen auf jeden Fall nochmal versuchen.

gruss michael

KingSauce
15.04.2011, 20:50
Soooo... Hab jetzt die IR Dioden und so bekommen, allerdings entäuschen mich die Empfangsdioden ziemlich. Oder ich bin zu blöd die zu benutzen.

Hab jedenfalls ne ganze Menge Phototransistoren für den IR Bereich wiedergefunden und die funktionieren 1A! Kann man einfach direkt vom ADC Port auf Masse legen (Oder ist das nicht gut so? :D) und misst ordentliche Werte.
Zwei von den Transistoren hab ich schnell aufn Schnipsel Platine gelötet und quick und extrem dirty einen Code zusammengekloppt (Ohne Kalibrierung und nix), sodass er zB einer Infrarot LED schon so halbwegs folgen kann.
Ist das ganze auf den Boden gerichtet und damit der Abstand auch viel geringer, sollte das überhaupt kein Porblem sein ;)
Nachm WOchenende gehts dann weiter mit Liniefolgen via 2 Phototransistoren und nach Ostern übernimmt er die Weltherrschaft.

KingSauce
20.04.2011, 21:19
Hab in letzter Zeit leider wenig Zeit gehabt, aber jetzt gibts wieder was neues.
Gestern und heute hab ich meine neue Infrarotsensoreinheit fertig. Diese besteht aus zwei IR-Dioden von IR-Sender/Empfängerpaaren, die ich vor längerer Zeit mal bei Pollin bestellt habe.
Die mitgelieferten Sender sind leider relativ schwach oder haben einen ungünstigen Abstrahlwinkel, sodass diese nur auf sehr geringer Entfernung funktionierten. Einsatzzweck laut Datenblatt sei auch ein Band auf dessen Ende zu kontrollieren.... so wirklich dick ist ein Kassettenband o.ä. eben nicht ;)

Deshalb hab ich als Sender eine ganz normale Infrarotdiode hergenommen, die per NPN Transistor gesteuert wird. Die Infrarotdioden hängen ohne weitere Elektronik direkt an zwei AD-Wandler Eingängen. Also: Masse--|<---ADC Läuft sehr gut, wie man das auf dem LCD (im Video) sehr schön erkennen kann.


http://www.youtube.com/watch?v=Q2bkibVXHgU


gruss michael

Zu guter letzt noch ein kleines Video wie toll das ganze reagiert.