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.
Wenn überall freie Sicht ist, stell doch einfach ein paar Laserbojen auf. Hört sich bis jetzt so an als ob 3 reichen.
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?
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.
> 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.
> 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.
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....
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.
Klebeband am Boden. Das lässt sich nach dem spielen schnell wieder anziehen
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
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'?
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.
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
> 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ß.
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
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?
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.
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.
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.
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
Sollen wir jetzt ohne dich weiter diskutieren, oder teilst du uns deine Meinung zu den bisherigen Beiträgen mit?
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.
Für 2-3 Monate lehrreiche Beschäftigung sollte der NiboBee Bausatz mit ein bisschen eigenen Kreationen drumherum ausreichen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.