Archiv verlassen und diese Seite im Standarddesign anzeigen : Positionsbestimmung im Raum und Ausrichtung: Funktionsweise
Guten Tag allerseits!
Heute wird es ein wenig kompliziert:
Ich suche jemanden, der mir erklären kann, wie ich folgendes anstellen kann:
Ein Roboter steht in einem Raum.
Er soll seine Position anhand von 4 Abstandssensoren ermitteln: Bisher weiß ich das x1+x2+x3+x4=y ist, also konstant.
Das Ergebniss möchte ich als Koordinaten darstellen. Das funktioniert auch, wenn der Roboter immer "in eine Richtung" blickt.
Aber was, wenn er sich verdreht? Ich habe zwar einen Kompass, weiß aber nciht wie ich damit die Koordinate berechnen kann! (Bin erst in der Mittelstufe, in Mathematik beschäftigen wir uns damit erst später.)
Wenn ich die Koordinaten des Roboters habe, mächte ich mich zum Punkt P mittels Magnetfeldsensor hindrehen.
Wie berechen ich den Winkel zum Punkt P von der Koordintat X|Y?
Wer mir also ein paar Formeln posten oder mir Links empfehlen kann, ist er dazu herzlich eingeladen!
Vielen Dank für eure Bemühungen und freundliche Grüße
skg-rob
Hallo rob,
trag doch zunächst selbst was zur Erklärung bei und poste eine schön übersichtliche Skizze, wie das aussieht, wenn der bot schräg im Raum steht. Zeichne die wichtigen Strecken und Winkel ein und beschrifte sie. Falls dir was dabei auffällt, kannst du das ja auch gleich posten.
Mit einer Zeichnung als Grundlage kann man gleich viel leichter drüber reden.
grüsse,
Hannes
jetzt komm erst mal paar fragen. wie ist der Raumbeschaffen?, Was für Abstandsensosren willst du nutzen?, und mit 4 absands sensoren wirds eigentlich einfach. 3 wäre cooler.
bei einem Rechtekigen leeren raum
anordnung ein Vorne/Hinten/LInks/rechts x = Raumbreite-links und x+rechts = Raumbreite y= Raumlänge-vorn y+Hinten = Raumlänge
ich hoffe das ich mich nicht grad vertan hab aber es sollte so gehen ansonsten SKIZZE hilft auch weiter.
Ich glaube die Zeichnung ist selbsterklärend, aber noch einmal:
Der Roboterposition R wird aus den 4 Sonars berechnet. Dann wird der Winkel berechnet, in dem sich der Roboter drehen müsste, wenn er nach VORNE (Y-Achse) zeigen würde, sodass er dann in Richtung P schaut.. Wie weit er sich tatsächlich drehen muss, ist berechenbar aus Richtung Aktuell minus Richtung Soll.
Wenn noch etwas unklar ist, immer raus damit.
http://img3.abload.de/img/zeichnung5ht2.png
Vielen Dank und freundliche Grüße skg-rob
hardware.bas
09.05.2009, 18:02
Erinnert mich son bischen an einen Schnittmusterbogen von meiner Oma.
Nicht bose sein, aber ich verstehe an der Zeichnung..... NICHTS. VG Micha
Gut, neuer Versuch:
http://www.abload.de/image.php?img=bildschirmfoto-1gzjo.png
Das Problem wird hier wohl am ehesten die Sensorik sein.
Fragen, die sich stellen sind: wie gut können die Abstandssensoren schiefe flächen ab (also wenn du die wand nicht im rechten Winkel misst).
wie gut ist der Kompas?: ich habe schon gehört, das soein Kompas total scheiße ist, vor allem wenn irgendelche Leitungen, oder vor allem Motoren in der Nähe sind, dann kanst du Nordost nicht mehr von Nord unterscheiden.
Hier ist mein Vorschlag, wie man es wohl am sichersten lösen würde (theoretisch auch mit nur einem Sensor möglich (mit Schrittmotoren oder irgendwelchen Sensoren, mit denen du genau Messen kannst, was deine Räder gerade machen)):
Du drehst dich so weit um die eigene Achse, bis du im rechten Winkel zu einer Wand stehst. Diesen Zustand erkennst du daran, dass du beim Messen, während du dich drehst, einen Tiefpunkt misst (ein Wert, der kleiner ist, als seine Umliegenden Werte).
Dann drehst du dich jeweils um 90° und misst somit die Koordinaten, an denen du stehst (wenn du mehrere Abstandsmesser hast, ist das natürlich nicht nötig).
Dann nimmst du deinen Kompas zuhilfe, und guckst, in welcher Ecke du stehst (mit den gleichen Koordinaten sind 2 Positionen im Raum möglich).
Den Winkel berechnen sollte dann nicht mehr schwer sein.
Wie gesagt, das Größte Problem wird wohl sein, dass die Sensoren nicht so genau messen.
Gruß, Yaro
Hallo rob,
in der Zeichnung steht: Dieser Winkel soll berechnet werden, anhand der Position des Roboters.
Du hast nicht geschrieben, was gegeben ist. Ich nehme einmal an, dass auch die Koordinaten von P gegebenn sind.
Der Winkel ist der Arcustangens von (XP-Xrobo)/(YP-Yrobo).
X Achse nach rechts, Y Achse nach oben, Winkel im Uhrzeigersinn wie Kompassrose.
Die Information über solche Aufgaben findet man im Wiki unter Trigonometrie.
grüsse,
Hannes
Hallo,
wenn der Kompass geht, ist die Lösung ja einfach - auch denn der BOT "verdreht" steht:
Drehe den Bot bis der Kompass die die Richtung zurückgibt, in der dein Ziel liegt. Wenn Norden 0° ist, dann sieht dein Ziel auf der Zeichnung aus wie 30° also muss der Kompass Dir eine 30 zrückmelden. Dann fahr einfach darauf zu und "guck" immer mal wieder auf den Kompass ob die Richtung noch stimmt. Siehe Wandern mit dem Kompass (http://www.optikerteam.de/Kompass-Funktion.htm) ;-)
Wenn du dich nicht auf den Kompass verlassen kannst, sieht es meiner Meinung nach schlecht aus, da dein Bot keine "Raumkenntnise", keine Orientierungshilfen und keine Orientierung hat. (Geh mal in einen dunklen Raum, dreh dich 10 Mal um dich selbst - wart ein wenig bis dir nicht mehr schwindelig ist - und lauf dann zur Tür...)
Selbst wenn deine Abstandsensoren dir sagen "das ist was" weis du nie in welche Richtung du guckst - selbst wenn du genau in die richtige Richtung schaust.
Lurchi
Das Problem wird hier wohl am ehesten die Sensorik sein.
Fragen, die sich stellen sind: wie gut können die Abstandssensoren schiefe flächen ab (also wenn du die wand nicht im rechten Winkel misst).
wie gut ist der Kompas?: ich habe schon gehört, das soein Kompas total XXXAUTOZENSIERTXXXe ist, vor allem wenn irgendelche Leitungen, oder vor allem Motoren in der Nähe sind, dann kanst du Nordost nicht mehr von Nord unterscheiden.
Hier ist mein Vorschlag, wie man es wohl am sichersten lösen würde (theoretisch auch mit nur einem Sensor möglich (mit Schrittmotoren oder irgendwelchen Sensoren, mit denen du genau Messen kannst, was deine Räder gerade machen)):
Du drehst dich so weit um die eigene Achse, bis du im rechten Winkel zu einer Wand stehst. Diesen Zustand erkennst du daran, dass du beim Messen, während du dich drehst, einen Tiefpunkt misst (ein Wert, der kleiner ist, als seine Umliegenden Werte).
Dann drehst du dich jeweils um 90° und misst somit die Koordinaten, an denen du stehst (wenn du mehrere Abstandsmesser hast, ist das natürlich nicht nötig).
Dann nimmst du deinen Kompas zuhilfe, und guckst, in welcher Ecke du stehst (mit den gleichen Koordinaten sind 2 Positionen im Raum möglich).
Den Winkel berechnen sollte dann nicht mehr schwer sein.
Wie gesagt, das Größte Problem wird wohl sein, dass die Sensoren nicht so genau messen.
Gruß, Yaro
Erstens arbeiten die Sensoren ausreichend genau. Wieso sollen 2 Positionen mit den gleichen Koordinaten möglich sein?
Ich möchte die Koordinaten anhand von 4 Sonars feststellen, und zwar ohne das er sich dreht, weil es schnell gehen muss.
Hallo,
wenn der Kompass geht, ist die Lösung ja einfach - auch denn der BOT "verdreht" steht:
Drehe den Bot bis der Kompass die die Richtung zurückgibt, in der dein Ziel liegt. Wenn Norden 0° ist, dann sieht dein Ziel auf der Zeichnung aus wie 30° also muss der Kompass Dir eine 30 zrückmelden. Dann fahr einfach darauf zu und "guck" immer mal wieder auf den Kompass ob die Richtung noch stimmt. Siehe Wandern mit dem Kompass (http://www.optikerteam.de/Kompass-Funktion.htm) ;-)
Wenn du dich nicht auf den Kompass verlassen kannst, sieht es meiner Meinung nach schlecht aus, da dein Bot keine "Raumkenntnise", keine Orientierungshilfen und keine Orientierung hat. (Geh mal in einen dunklen Raum, dreh dich 10 Mal um dich selbst - wart ein wenig bis dir nicht mehr schwindelig ist - und lauf dann zur Tür...)
Selbst wenn deine Abstandsensoren dir sagen "das ist was" weis du nie in welche Richtung du guckst - selbst wenn du genau in die richtige Richtung schaust.
Lurchi
Woher weiß ich das der Winkel 30° Beträgt und wo sich der Punkt P befindet verrätst du mir das? Genau dazu brauche ich ja die Position von dem Roboter, und daran scheiterts.
Hallo rob,
in der Zeichnung steht: Dieser Winkel soll berechnet werden, anhand der Position des Roboters.
Du hast nicht geschrieben, was gegeben ist. Ich nehme einmal an, dass auch die Koordinaten von P gegebenn sind.
Der Winkel ist der Arcustangens von (XP-Xrobo)/(YP-Yrobo).
X Achse nach rechts, Y Achse nach oben, Winkel im Uhrzeigersinn wie Kompassrose.
Die Information über solche Aufgaben findet man im Wiki unter Trigonometrie.
grüsse,
Hannes
Ja, der Roboter weiß wo der Punkt P ist.
Er weiß nciht, welche koordinaten ER hat.
Ich weiß nciht, wie man die Koordinaten des Roboters berechnen kann anahand von 4 Sonars und ich weiß nciht, wie ich den Winkel eines Punktes R'RP bestimme (R' ist die Koordinate des Roboters , allerdings mit Y von R gleich Y Punkt P).
Wichtiger ist zuerst jedoch die Bestimmung der Position des Roboter anhand von 4 Sonars. Das Problem besteht nur darin, dass er dass auch machen soll, wenn er nciht in die "übliche" Richtung (also "vorne") schaut, sondern z.b nach links Hinten.
Ich werde mal den Link durchlesen und auch deine Formel durchgehen und schauen, ob es mir hilft.
Trozdem vielen dank und mfg skg-rob
Noch ein mal, in zwei Schritten:
http://www.abload.de/image.php?img=bildschirmfoto-2trou.png
http://www.abload.de/image.php?img=bildschirmfoto-3iv7s.png
mfg skg-rob
Hallo rob,
in deiner Zeichnung ist gestanden, " ... aufgrund der Position des Roboters", jetzt sagst du, dass die Position nicht bekannt ist.
Das ist kein Problem, das kann vorkommen, wenn die Aufgabenbeschreibung unklar ist. Meine Formel stimmt trotzdem, wir müssen mit der Lösung nur früher ansetzen.
Der Roboter kann mithilfe des Kompass 4 Abstandsmessungen senkrecht auf die 4 Wände vornehmen. Er muss natürlich die Ausrichtung des Raumes kennen. Das Koordinatensystem kann am einfachsten nach dem Raum ausgerichtet sein. 2 Abstände ergeben schon die Koordinaten und die andern 2 Abstände sind zur Kontrolle. Mit DIESEN Koordinaten kannst du dann in die Formel aus dem vorigen Post gehen und den Winkel in Richtung P ermitteln.
grüsse,
Hannes
EDIT: Unsere Postings haben sich überschnitten, die obige Antwort berücksichtigte daher das letzte Posting nicht.
Mit dem letzte Posting wird klar, dass du schräge Sonardistanzen verarbeiten willst. Wenn du genaue schräge sonardistanzen hättest, könnterst du die Koordinaten (über den Abstand zur Wand) leicht ausrechnen.
Abst. zur Wand = schräge Sonardist. * cos(Winkel zwischen Richtung zur Wand und Richtung der Sonarmessung)
Aber: Damit wirst du kaum Erfolg haben. Die schräge Sonarmessung wird keine guten Echos produzieren. Es werden daher sehr oft keine Echos gehört werden, oder IRGENDWELCHE Sekundärechos. Wenn du aber doch ein Sonarecho bekommst, weisst du die genaue Richtung nicht, weil die Sonarmessung zu wenig scharf gebündelt ist.
Ich würde den Sonarsensor drehbar machen und senkrecht auf die Wände zielen. Dafür brauchst du nur einen Sensor.
H.
Hmmm, nein das geht nicht. Das würde viel zu lange dauern und das will ich genau vermeiden. Ich habe schon einen Roboter gesehen der das ganze mit 3 Sonars im 120° Abstand gelöst hat. Nur weiß ich die Formel zur Berechnung nicht.
Den Teil ab Edit verstehe ich nciht: Kann ich nciht einfach die Sonarwerte in eine Formel (wenn es denn nun eine gibt die ich verwenden kann, oder gibts es einen Ausdruck für solche Berechnungen nach denen ich googeln könnte?) einbauen und dann weiß ich wi ich stehe? Weil die Summe aller Distanzen bleibt konstant. Der Kompass sagt mir wie ich stehe. Und weiter?
Sorry wenn ich dich nerve weil ich es nciht kapiere, aber deine Formel hilft mir nur dann, wenni ch weiß wo der Robo steht? Aber genau das, weiß ich nciht.
Trozdem Danke das du mir wenigstens das mit der Winkelberechnung erklärt hast.
mfg skg-rob
Abst. zur Wand = schräge Sonardist. * cos(Winkel zwischen Richtung zur Wand und Richtung der Sonarmessung)
Das ist die Formel, mit der du den Abstand zur Wand errechnest, wenn du eine schräge Sonardistanz hast. cos ist der Kosinus, das ist eine Winkelfunktion. Der Winkel, den die cosfunktion als Argument übergeben bekommt, ist die Abweichung der Sonarmessung von der Lotrechten zur Wand.
Also schön der Reihe nach:
Robo steht schräg und macht eine Distanzmessung mit Sonar. Die Messrichtung zeigt nicht senkrecht zur Wand, sondern weicht um einen bestimmten Winkel ab. Diesen Abweichungswinkel kennst du, weil der Kompass zeigt, wie der Robo ausgerichtet ist. Von diesem Abweichungswinkel wird der Kosinus berechnet. Wenn du die gemessene Sonardistanz mit dem Kosinus vom Abweichungswinkel multiplizierst, bekommst du den Abstand zur Wand. Aus dem Abstand zur Wand berechnest du eine Koordinate.
Am Besten zeichnest du das in eine Zeichnung rein, dann sehe ich, was du davon verstehst und was nicht.
Die Begriffe zum Suchen und Nachschauen habe ich schon genannt: Tigonometrie, Wiki, Kosinus.
grüsse,
Hannes
http://www.abload.de/image.php?img=bildschirmfoto-4h5oi.png
Ich weiß jetzt nciht wie ich die Abstände, die ja nicht recchtwinklig zum Koordinatensystem verlaufen, zusammen bringe. Vlt. mit Parallelen zu den vier Wänden, die sich in einem Punkt treffen? Aber wie macht das dann der Roboter?
Das Koordinatensystem kann nach den Wänden ausgerichtet sein. Anders wird es für dich zu Kompliziert. Aber so ist der Abstand zur linken Wand die x Koordinate und der Abstand zur Wand, die in deiner Zeichnung unten ist, die y Koordinate.
Die Abstände, die mit der cos Formel aus den schräge gemessenen Werten errechnet wurden, sind schon im rechten Winkel zur Wand und damit auch parallel zu den Koordinatenachsen.
grüsse,
Hannes
Ok, aber dann weiß ich ja nciht mehr wo P liegt, weil das ja nur dann bekannt ist, wenn das Koordinatensystem immer gleihc bleibt.
Doch, das weisst, du, das Koordinatensystem bleibt immer gleich am Raum ausgerichtet.
Achso: Mit cosinus schmeiß ich kwasi den Faktor Schräg stehen heraus. Super Danke! Thema erledigt! Jetzt bau ich den Robo und werde dass dan ausprobieren.
Vielen Herrzlichen Dank, vohopri! Super dass es Menschen gibt, die nciht schnell genervt sind und einem etwas erklären ;-)
Mit cosinus schmeiß ich kwasi den Faktor Schräg stehen heraus.
Mein Mathelehrer hätte das anders formuliert, aber es kommt schon so ungefähr hin.
wünsche viel Spass beim Projekt und grüsse,
Hannes
Dein Mathelehrer hätte es mir aber nicht erklären können ;-)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.