Forum: Mikrocontroller und Digitale Elektronik Roboter soll Weg abfahren


von Roman Witting (Gast)


Lesenswert?

Hallo liebes Forum,

der Winter naht, die Projekte für den Bastelkeller rücken näher.

Dieses Jahr möchte ich mich der Robotik verschreiben. Dazu habe ich 
schon ein paar Erfahrungen mit AVRs/Arduinos und der entsprechenden 
Sensorik (Ultraschall, Temperaturfühler, Lichtschranken,...) sammeln 
können.

Nun habe ich vor, einem kleinen dreirädrigen Roboter das Laufen 
-bessergesagt  Fahren- zu lernen. Die beiden Getriebe-DC-Motoren, die 
ich für die Hinterachse verwende, steuere ich mit einem Arduino und 
einer H-Brücke (via PWM) an, gelenkt wird durch Bremsen des einen 
Rades/Drehen des Anderen, bzw. gegenläufiges Drehen beider Räder.
Das Fahren selbst klappt natürlich schon mal, was ja kein Hexenwerk ist.

Nun soll dieser Roboter aber zwei bestimmte Wege in meiner Wohnung 
abfahren können. Und hier stellt sich genau meine Frage an Euch:
 - Was gibt es für Möglichkeiten, um quasi einer "unsichtbaren Linie am 
Boden" zu folgen, wie man es von den Robotern kennt, die einer 
Markierung/Linie am Boden folgen? Der Grund, keine Linie am Boden haben 
zu wollen beruht auf ästhetischer Natur. Ich (und schon garnicht meine 
bessere Hälfte) möchten einen gelben Strich auf einem anthrazid-farbenen 
Parkett haben.

Der Roboter muss nicht unbedingt Hindernissen aus dem Weg gehen, da 
schlichtweg keine Hindernisse auf der Geraden, auf der er fahren soll, 
existieren (werden).
Eine reine Steuerung wird trotzdem aufgrund gewisser Abweichungen nicht 
ausreichen (a la "50 Umdrehungen linker + rechter Motor, "10 Umdrehungen 
nur linker Motor, beide Motoren für 10 sec. "EIN" " usw.).
Deshalb muss da schon irgendeine Sensorik mit ins Spiel kommen.

Induktiv wird wohl genauso flach fallen, da ich auch ungern einen Draht 
o.ä. auf meinem Boden befestigen möchte, damit sich der Roboter daran 
orientieren könnte.

Der Roboter soll wiegesagt in einem geschlossenen Raum (keine Boden- 
oder Fahrhindernisse) eine bestimmte Strecke abfahren.

Zweite Problematik ist dann die "Weiche" zur Unterscheidung der beiden 
Fahrwege, die ich vor Antritt der Fahrt dem Roboter übermittle ("fahre 
Route-1" oder "fahre Route-2").


Meine Idee war folgende:
Gibt es nicht einen Stift/Farbe, die für das menschliche Auge nicht 
sichtbar ist, aber z.B. nur unter Schwarzlicht sichtbar wird?
So könnte ich beispielsweise "vor" dem Sensor am Unterboden des Roboters 
eine Schwarzlichtlampe auf den Boden strahlen lassen, woraufhin der 
dahinterliegende Sensor die kurzzeitig sichtbare Linie erkennt/nicht 
erkennt?!


Ich freue mich über eure Vorschläge!

Schönen Feiertag.

von pegel (Gast)


Lesenswert?

Wenn überall freie Sicht ist, stell doch einfach ein paar Laserbojen 
auf.
Hört sich bis jetzt so an als ob 3 reichen.

von Roman Witting (Gast)


Lesenswert?

Also es sollte halt alles möglichst nicht für den Menschen wahrnehmbar 
oder gefährdend sein.

D.h. keine Striche auf dem Boden oder Laser, die einem das Augenlicht 
rauben...

Wäre die Idee mit dem Schwarzlicht realisierbar? Gibt es ähnliche 
Konzepte?

von Teo D. (teoderix)


Lesenswert?

Roman Witting schrieb:
> Wäre die Idee mit dem Schwarzlicht realisierbar? Gibt es ähnliche
> Konzepte?

Logisch, der Strich wird halt nich lange halten, was dich aber sicher 
weniger störrt.

von Stefan F. (Gast)


Lesenswert?

> Nun soll dieser Roboter aber zwei bestimmte Wege in meiner
> Wohnung abfahren können.

Eventuell magst du von meinem Code abgucken (fahren.h und fahren.c) auf 
http://stefanfrings.de/nibobee/index.html

Bei meinen Experimenten musste ich zuerst mal erkennen, dass die beiden 
Motoren unterschiedlich effizient sind und somit ein gleicher PWM Wert 
an beiden Motor keineswegs zu einer geradeaus-Fahrt führt. Auch kleine 
Hindernisse auf dem Bode (Krümel) führten dazu, dass der Roboter seine 
Fahrtrichtung ungewollt änderte.

Nach einigen Versuchen kam ich am besten mit dem Lenkrad Modell (so 
nenne ich das) in Kombination zwei PI Reglern für die beiden Motoren 
zurecht. Zur Steuerung habe ich zwei Werte: Geschwindigkeit und Lenkung. 
gesteuert wird im Grunde genommen so, wie es auch ein mensch tun würde.

Eine simple Formel berechnet, welche Strecke die beiden Räder 
hinterlegen sollen. Nehmen wir als Beispiel die Aufgabe, 1 Meter 
geradeaus zu fahren.

Ich fahre die Leistung beider Motoren (nicht zu schnell) hoch und messe 
dabei fortlaufen die gefahrene Strecke. Schon Bald wird einer der beiden 
Sensoren mehr Impulse melden, als der andere. Ich fahre also 
offensichtlich doch nicht geradeaus. Also führe ich einen Korrekturwert 
für die Lenkung ein, der so lange schrittweise erhöht oder verringert 
wird, bis beide Räder die gleiche Strecke gefahren sind.

Bei einer Kurvenfahrt lässt es sich ebenso machen. Mit der Geometrie 
kann ich für jede Kurve ausrechnen, welche Strecke das linke Rad und 
welche Strecke das rechte Rad fahren muss. Also fahre ich mit 
eingeschlagener Lenkung los und passe dann die Lenkung fortlaufend an, 
bis beide Räder die zuvor berechnete Strecke hinterlegt haben.

Als nächstes muss man sich Gedanken über Beschleunigen und Bremsen 
machen. Das hängt sehr stark von der Hardware ab. Wenn du zu stark 
beschleunigst, rutschen die Räder durch und das Fahrzeug dreht sich weg. 
Gleiches gilt auch für zu rasante Kurven. Und beim Bremsen muss man 
abschätzen, wann man mit dem Bremsen beginnen muss (denke an die Formel, 
die du in der Fahrschule gelernt hast). Trotzdem muss man während des 
Bremsen fortlaufend nachbessern, damit man zügig exakt dort zu stehen 
kommt, wo man wollte.

Beim Bremsweg stellte sich die Berechnung der Wurzel als Knackpunkt 
heraus. Dafür war mein µC einfach viel zu langsam. Also habe einen 
iterativen Algorithmus implementiert, der die Wurzel nur ungefähr 
berechnet. Der Rest ergibt sich durch fortlaufende Korrektur der 
Bremsung.

Ein solltest du bei dem ganzen Odometrie bedenken: Die Räder haben nie 
perfekte Bodenhaftung. Das vorprogrammierte Muster wird also nie exakt 
gefahren. Und die Abweichungen addieren sich im Laufe der Fahrt auf.

Da du keine Markierungen auf dem Boden verwenden willst, möchtest du 
vielleicht optische Baken installieren, an denen sich der Roboter 
orientieren kann. Ich halte das allerdings für ziemlich kompliziert.

Einfacher sind bunte Klebestreifen auf dem Boden (z.B. rot und grün), 
denen der Roboter folgt. Dazu brauchst du nicht einmal diese 
komplizierte PI Regelung. Beleuchte den Boden mit rotem Licht, dann wird 
der rote Streifen sehr hell aussehen und der grüne sehr dunkel. 
Beleuchte ihn mit grünem Licht, dann wird es umgekehrt sein.

Und noch ein Tipp: Versuche nicht, dem Streifen mittig zu folgen. Dazu 
bräuchtest du mindestens zwei Sensoren und es endet oft damit, dass das 
Auto ruckelig immer hin und her lenkt. Es ist viel einfacher, an der 
linken oder rechten Kante des Streifens entlang zu hangeln.

Mein Boden ist sehr hell. Ich verwende einen roten Streifen und grünes 
Licht. Damit erscheint der Streifen sehr dunkel. Zuerst dreht sich der 
Roboter langsam nach links und rechts, um die linke Kante des Streifens 
zu finden. Das ist die Stelle, wo der Lichtsensor den Wechsel zwischen 
Hell und und Dunkel erfasst. Also halb-hell. Dann fahre ich ungefähr 
geradeaus los. Wenn es heller wird, bin ich zu weit links, lenke also 
nach rechts. Wenn es dunkler wird, bin ich zu weit rechts, also lenke 
ich nach links.

Das war's schon. Es klingt allerdings einfacher, als es in der Praxis 
ist.

von Stefan F. (Gast)


Lesenswert?

> nicht für den Menschen wahrnehmbar

Hmm, also doch keine Streifen auf dem Boden.

Dann nimm Baken. Du könntest Infrarot-Sender aufstellen, die mit 
unterschiedlichen Frequenzen pulsen und denen dann folgen. Damit hast du 
an den wichtigen Punkten eine Vorgabe, wo denn "geradeaus" ist. Alles 
andere machst du mit PI Regler und Odometrie Sensoren.

Also eine Mischung aus "folge dem Licht" für die längeren Teilstrecken 
und freiem Fahren für die kurzen und für die Kurven.

> Wäre die Idee mit dem Schwarzlicht realisierbar?

Ich glaube nicht. Denn diese Markierungen müssen irgendwann erneuert 
werden, und wer erkennt den Zeitpunkt und macht das dann praktisch? Da 
will doch keiner mit einem Nachtsichtgerät durch die Halle krabbeln.

von Bernhard S. (b_spitzer)


Lesenswert?

Oder lasse den Roboter in einem bestimmten Abstand zur Wand fahren. Mit 
einem HC-SR04 Ultraschall-Sensor kann man im cm-Bereich genau messen. 
Wenn an der Wand keine Hindernisse (z.B. Schränke) stehen, dann kannst 
du parallel dazu fahren. Wenn plötzlich der Abstand zur Wand um mehrere 
Meter größer wird, stehst du an einer offenen Tür....

von InFo (Gast)


Lesenswert?

Wie wäre es mit Entfernungsmessern oder einem Laserscanner? Wenn du 
sämtliche Abstände zu den Wänden kennst, könnte dein Roboter einer 
"Karte" folgen.

von nicht"Gast" (Gast)


Lesenswert?

Klebeband am Boden. Das lässt sich nach dem spielen schnell wieder 
anziehen

von Alex G. (dragongamer)


Lesenswert?

Ganz ehrlich, all diese Vorschläge (bis auf den Laserscanner, der meines 
Wissens nach aber immer noch sehr teuer ist) sind doch aus dem letzten 
Jahrhundert. Zwar kann man als Bastler dank Arduino und Co. erst seit 
einigen Jahren wirklich damit rumspielen, aber aktueller Stand der 
Technik ist sowas nicht und wurde schon tausendfach umgesetzt.

Wenn du dich mit etwas interessantem auseinandersetzen willst, dann wie 
wärs mit visueller Odometrie?
Kurz gesagt wird dabei die Eigen-Bewegung allein durch eine Stereokamera 
wahrgenommen. Es gibt dafür bereits fertige Bibliotheken inkl. 
Demonstrationsvideo: http://www.cvlibs.net/software/libviso/
Einmal implementiert kann man auch gleich Entfernungsmessungen und 
Hindernisserkennung ohne weitere Sensoren umsetzen.

Funktionieren tut das natürlich nicht auf einem Microcontroler. Auf 
einem Raspberry Pi 3 dagegen schon. Noch besser ein kleiner Intel Nuc.

: Bearbeitet durch User
von Teo D. (teoderix)


Lesenswert?

Alex G. schrieb:
> aber ist sowas nicht und wurde schon tausendfach umgesetzt.

Kennst du den Unterschied zwischen 'aktueller Stand der Technik' und 
'Spaß an der Freude'?

von Alex G. (dragongamer)


Lesenswert?

Teo D. schrieb:
> Alex G. schrieb:
>> aber ist sowas nicht und wurde schon tausendfach umgesetzt.
>
> Kennst du den Unterschied zwischen 'aktueller Stand der Technik' und
> 'Spaß an der Freude'?
Naaaja, ich persönlich habe den Drang beides mit einer Klappe zu 
schlagen. Freude am Experimentieren und gleichzeitig was möglicherweise 
neues anzustreben, was eben noch nicht so oft umgesetzt wurde.

von Teo D. (teoderix)


Lesenswert?

Alex G. schrieb:
> Naaaja, ich persönlich habe den Drang

!

Nachtrag:
Mach doch deine Vorschläge, Sichtweise..., ohne die simplen Projekte 
anderer runter zu machen?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Freude am Experimentieren und gleichzeitig was möglicherweise
> neues anzustreben,

Was soll das sein, eine eigene VR Brille mitsamt Anwendung? Oder ein 
Quantencomputer?

Die Hobbyelektronik hat gerade die Evolution vom Mittelwellenradio über 
Logikgatter zum Mikrocontroller hinter sich. Man sollte schon bei Sachen 
bleiben die man auch beherrschen kann, sonst macht es keinen Spaß.

von Alex G. (dragongamer)


Lesenswert?

Teo D. schrieb:
> Alex G. schrieb:
>> Naaaja, ich persönlich habe den Drang
> Nachtrag:
> Mach doch deine Vorschläge, Sichtweise..., ohne die simplen Projekte
> anderer runter zu machen?
Jetzt übertreibst du ein wenig. Ich hab auch nicht den TE angegriffen, 
sondern nur die Vorschläge komentiert!
Meine Alternative löst sein Problem ja auch und eröffnet so viel mehr 
Möglichkeiten.

Stefan U. schrieb:
> Die Hobbyelektronik hat gerade die Evolution vom Mittelwellenradio über
> Logikgatter zum Mikrocontroller hinter sich. Man sollte schon bei Sachen
> bleiben die man auch beherrschen kann, sonst macht es keinen Spaß.
Also seit der Existenz der Multi-Core Raspberries (Gen. 2) würde ich 
schon sagen dass man mit vertretbarem Aufwand, über die reinen 
Mikrocontroler hinaus kommen kann.

: Bearbeitet durch User
von Der Andere (Gast)


Lesenswert?

Alex G. schrieb:
> über die reinen
> Mikrocontroler hinaus kommen kann.

Aber nur wenn man entsprechende theoretische und Programmierkenntnisse 
hat. Was ist dein Background, und was ist der Background des TOs?

von Brummbär (Gast)


Lesenswert?

Roman Witting schrieb:
> ibt es nicht einen Stift/Farbe, die für das menschliche Auge nicht
> sichtbar ist, aber z.B. nur unter Schwarzlicht sichtbar wird?

Meist sind das Lackstifte, wie je nach Lichteinfall doch durch 
unterschiedliche Reflektionsfähigkeit auffallen.

von Teo D. (teoderix)


Lesenswert?

Alex G. schrieb:
> Jetzt übertreibst du ein wenig. Ich hab auch nicht den TE angegriffen,
> sondern nur die Vorschläge komentiert!

Wirklich?

Alex G. schrieb:
> Ganz ehrlich, all diese Vorschläge (bis auf den Laserscanner, der meines
> Wissens nach aber immer noch sehr teuer ist) sind doch aus dem letzten
> Jahrhundert.

Glaub mir das geht auch neutraler, ja sogar freundlich!

OK OK zugegeben, ich bin Heut etwas empfindlicher als sonnst. :/

Eigentlich hab ich das geschrieben, weil ich der Meinung war, das du das 
nicht so meinst wie es rüberkommt. Dem war ja auch so.... denke ich.

von chris (Gast)


Lesenswert?

Lass die Wohnung mappen, verwende AR tags dafür und man hat dann eine
präzise Mappe im IR oder US bereich. Zusammen mit einem einfachen 
Kompass Sensor kann sich der Roboter zurechtfinden.

von Roman Witting (Gast)


Lesenswert?

Hallo zusammen.

Vielen Dank zunächst für die vielen und interessanten Beiträge!
Da ist ja sicherlich schon einiges Brauchbares dabei, dank eurer Ideen.

Ich möchte nur kurz klarstellen, dass ich mit möglichst wenig Aufwand 
viel Erfolgserlebnis haben möchte. Heißt, dass ich darin keine 
Doktorarbeit schreiben möchte, es soll ja schließlich "nur" ein 
Winterprojekt werden. Bis spätestens Frühjahrsanfang 2018 ;-)

Ich freue mich über weitere rege Beteiligung an meinem Beitrag.

Grüße

von Stefan F. (Gast)


Lesenswert?

Sollen wir jetzt ohne dich weiter diskutieren, oder teilst du uns deine 
Meinung zu den bisherigen Beiträgen mit?

von C. T. (cajt)


Lesenswert?

Roman Witting schrieb:
> Hallo zusammen.
>
> Vielen Dank zunächst für die vielen und interessanten Beiträge!
> Da ist ja sicherlich schon einiges Brauchbares dabei, dank eurer Ideen.
>
> Ich möchte nur kurz klarstellen, dass ich mit möglichst wenig Aufwand
> viel Erfolgserlebnis haben möchte. Heißt, dass ich darin keine
> Doktorarbeit schreiben möchte, es soll ja schließlich "nur" ein
> Winterprojekt werden. Bis spätestens Frühjahrsanfang 2018 ;-)

Here you go: https://linorobot.org/

Ohne Erfahrung aus erster Hand zu haben: Die Teile des Systems sind 
relativ gut verfügbar, wenn auch nicht spottbillig (aber insgesamt 
<1k€). Wie groß der Schmerz beim Integrieren des Ganzen wird lässt sich 
nicht so wirklich gut abschätzen, ohne es zu machen. Vielleicht ist es 
wirklich nur Steckbrett Verdrahtung + embedded Linux + ROS Tutorial(s) 
abarbeiten. Als Bonus: Am Ende wäre es auch deutlich mehr als nur ein 
Linienfolger.

von Stefan F. (Gast)


Lesenswert?

Für 2-3 Monate lehrreiche Beschäftigung sollte der NiboBee Bausatz mit 
ein bisschen eigenen Kreationen drumherum ausreichen.

von pegel (Gast)


Lesenswert?

Man kann dem Robi auch eine LED auf den Kopf setzen und mit einer Kamera 
die Position überwachen.

http://www.sebulli.com/campos/index.php?lang=de

von gugg (Gast)


Lesenswert?

Irgendwie kommt mir das doch sehr bekannt vor ;-)

von gugg (Gast)


Lesenswert?


von Teo D. (teoderix)


Lesenswert?

Tee, Boden - Japanisch eingerichtet? ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.