-         

Seite 1 von 7 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 63

Thema: 1 Maussensor, Drehung berechnen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.10.2007
    Beiträge
    58

    1 Maussensor, Drehung berechnen

    Anzeige

    Hi community!
    Ich habe folgendes Problem:
    Bei meinem Roboter habe ich einen Maussensor (PAN3101) eingebaut, um die aktuelle Position zu bestimmen. Der Sensor befindet sich ca. 10cm vom Drehmittelpunkt des Roboters entfernt (Siehe grafic im Anhang).

    Wie kann ich jetzt aber bestimmen, um wie viel Grad sich der Roboter gedreht hat?

    Da sich der Sensor auch mitdreht, kann ich ja nicht einfach die erste Position verwenden, den Winkel bestimmen und dann die zweite Position verwenden, um den Endwinkel mit den Winkelfunktionen zu bestimmen, da müsste der Sensor z.B. immer nach Norden schauen.

    Fällt euch ein geeigneter Algorithmus/Modus ein?

    Hier habe ich noch ein Beispiel, wie die Punkte bei einer ca. 90° Drehung aussehen (Während der Drehung werden immer wieder Punkte gemessen)
    (Siehe auch Bild im Anhang rote Punkte)
    Start pos: 0|0 //Position zu Beginn der Drehung
    New pos: 0|0
    New pos: 43|27
    New pos: 61|38
    New pos: 65|44
    New pos: 74|50
    New pos: 92|60
    New pos: 132|81
    New pos: 183|106
    New pos: 264|142
    New pos: 361|180
    New pos: 431|210
    New pos: 461|227
    New pos: 514|256
    New pos: 608|296
    New pos: 727|335
    New pos: 822|370
    New pos: 873|392
    New pos: 925|417
    New pos: 1008|435
    New pos: 1127|469
    New pos: 1227|503
    New pos: 1337|539
    New pos: 1439|577
    New pos: 1547|616
    New pos: 1647|649
    New pos: 1725|687
    New pos: 1805|723
    New pos: 1846|755
    New pos: 1903|791
    New pos: 1959|827 //Position bei ca. 90°

    Hier noch ein Beispiel bei ca. 45° (siehe Bild im Anhang blaue Punkte)
    Start pos: 0|0
    New pos: 2|3
    New pos: 28|22
    New pos: 131|60
    New pos: 213|94
    New pos: 286|114
    New pos: 352|128
    New pos: 424|152
    New pos: 465|169
    New pos: 514|196
    New pos: 609|232
    New pos: 704|271
    New pos: 797|308
    New pos: 901|340
    New pos: 1013|376
    New pos: 1111|413
    New pos: 1212|447
    New pos: 1257|469

    Würde sich der Sensor nicht mitdrehen, dann würden die Punkte einen viertel bzw. achtel Kreis ergeben.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken punkte.jpg   unbenannt_156.jpg  

  2. #2
    Benutzer Stammmitglied Avatar von kaktus
    Registriert seit
    17.05.2004
    Beiträge
    34
    Die zurückgelegt Strecke von X und Y zu der Position nach der Drehung sollte eigentlich gleich sein. Also würde ich den kleineren WErt erst mal mit
    1959/ 827 = 2,369 multiplizieren.
    Der Abstand Y ist bekannt, z.b. 5 cm. Ist X und Y gleich ( nach Multiplikation)
    war es eine 90 Grad Drehung.
    Bloss wie rechnet man die gleichzeitige Drehung raus?

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    07.10.2007
    Beiträge
    58
    Ich verstehe das jetzt nicht ganz, wie du das meinst.
    Mit kleineren Wert multiplizieren und wie die Werte dann gleich sein sollten.

    Ich habe in der Zwischenzeit auch die Koodrinaten wo sich der mittelpunkt befindet:
    Wenn sich der Sensor auf Position 0|0 befindet, so ist der Mittelpunkt auf ca. 0|2524, also auf der Y-Achse um 2524 verschoben.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Theoretisch müsste sich die gemessene Position ja nur seitlich verändern. Bei der Rotation um den Drehpunkt bewegt sich der Sensor ja auf einer Kreisbahn. Wenn der Radius nun verhältnismäßig groß ist, ergibt das als Messergebnis in etwa eine Gerade. Ich kann das ganz gut mit meiner PC-Maus reproduzieren. Du misst also nun die Strecke, die so aus der Sicht des Sensors seitlich zurückgelegt wird. Dies ist der Weg auf dem Kreis mit dem bekannten Radius. Daraus lässt sich dann der Winkel bestimmen. Als Messwert ergibt sich also in deiner Skizze die Bogenlänge zwischen alter und neuer Position. Geteilt durch den radius hast du deinen Winkel im Bogenmaß.

    Die schiefe Gerade aus deiner Grafik kann ich mit meiner Maus reproduzieren, wenn ich die Maus in einem anderen Winkel halten, wenn sie rotiert. Du könntest das entweder rausrechnen (Länge der schiefen Gerade bestimmen) oder den Sensor etwas drehen.

    (So, jetzt muss ich erst mal wieder die Cursorgeschwindigkeit erhöhen. Hatte sie auf ganz langsam gestellt, um besser testen zu können... )

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hallo PRobot,

    die Sache ist einfach, zumindest sieht sie einfach aus. Für Dich ist vermutlich Dein Ansatz von der Geometrie her verwirrend, weil er mit der "normalen" Anschauung nur wenig gemeinsam hat. Vielleicht wird es Dir folgendermassen etwas klarer:

    Denke Dir bitte Deinen Maussensor als einen festen, unverrückbaren Punkt im Weltall (ok ok - vielleicht blos als unverrückbaren Punkt in Deinem Lageplan). Wenn Du Deinen Roboter laufen läßt, dann drehst Du das Weltall (den Lageplan) unter Deinem Maussensor hin und her >> der Roboter bleibt stabil auf dem Achsenursprung. Auf Deine hübsche Zeichnung bezogen heißt das, dass die beiden dargestellten Achsenkreuze sich decken - es gibt dann also nur ein Achsenkreuz! Lediglich Deine Unterlage wandert im Uhrzeigersinn um den "Mittelpunkt" herum. Probier das doch mal auf einem Blatt Papier nachzuspielen.

    Nicht zum Lesen gedacht:
    Die mathematisch positive Drehrichtung ist gegen den Uhrzeigersinn.
    Dein Achsenkreuz teilt "die Welt" in vier Quadranten. Zwischen der positiven X-Achse (X+) und der positiven Y-Achse (Y+) liegt der erste Quadrant, zwischen X- und Y+ liegt der zweite Quadrant, der dritte Quadrant liegt zwischen X- und Y- und schließlich der vierte Quadrant zwischen der positiven X-Achse und der negativen Y-Achse.


    Bei Deiner Drehung wandert also die Welt unter Dir durch und läuft durch den zweiten Quadranten. Die alte Position verschiebt sich also durch die Drehung auf einem positiven Y-Wert und einem negativen X-Wert, wobei die X- und die Y-Koordinate des alten Mittelpunktes dieselben sind.

    Nicht zum Lesen gedacht: in einem vollständigen ebenen Koordinatensystem gibt es diese beiden Achsen X und Y und noch einen Orientierungswinkel - sagen wir alfa. Dieser Winkel bestimmt die Drehung innerhalb der Ebene. Für den eben besprochenen Fall dreht sich der Mittelpunkt bei der von Dir gezeichneten Bewegung im mathematisch negativen Sinn (im Uhrzeigersinn) um 90° - Du siehst es nur einem Punkt nicht an, wie er gedreht ist, weil er eben ein Punkt ist. Da die Maus "nur" X- und Y-Koordinaten kennt, gibt es auch keine Information über die Drehung. Probiere doch mal Deine Maus auf dem Tisch zu drehen - Du wirst sehen, dass der Mauszeiger sich nicht mitdreht - der geht nur auf und ab am Bildschirm. Für komplexe graphische Eingaben gibt es "Mäuse" die auch die Drehung mitkriegen

    Aber in einer vollständigen geometrischen Beschreibung des Punktes hat der sich eben auch gedreht.

    Anderes Beispiel: Ein Kapitän bekommt die "neuen" Koordinaten seines Schiffes mit der Frage wie gefahren werden soll. Bevor er aber nun "Volle Kraft voraus" kommandiert, muss er ja wissen in welche Richtung der Schiffsbug zeigt . Noch ein kurzes Beispiel: Du fährst im Zug - derZug fährt eine gewisse Strecke in einem 90 ° Bogen - Du guckst immer gerade aus - aber in Wahrheit hast Du bei der Abfahrt z.B. nach Osten geblickt und nach Ankunft des Zuges nach Norden.

    Ist diese Erklärung hilfreich für Dich?
    Ciao sagt der JoeamBerg

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hallo,

    @oberallgeier: irgendwie hab ich das mit drhendem weltall, schiff und zug net wirklich geblickt, sorry.

    so, jetzt aber zur frage. ansich ist das ganze doch realtiv simpel:
    y ist uninteressant. nur x interessiert für die drehung.
    dalpha=dx/r

    mfg jeffrey

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von jeffrey
    ... das mit drhendem weltall, schiff und zug net wirklich geblickt, sorry...
    Da muss doch eher ich mich entschuldigen.

    Zitat Zitat von jeffrey
    ... ansich ist das ganze doch realtiv simpel:
    y ist uninteressant.
    In einem ebenen, rechtwinkeligen Koordinatensystem ist in praktisch allen Fällen Y ein interessierender Wert. Sonst ist es ja ein eindimensionaler Raum - ein Linienkosmos.

    Zitat Zitat von jeffrey
    ... nur x interessiert für die drehung...
    X ist eine (geradlinige, translatorische) Koordinate, die mit Drehung nichts zu tun hat.

    Zitat Zitat von jeffrey
    ... dalpha=dx/r ...
    Ok, und weiter ? ? ?
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hallo,
    ich meinte y ist uniteressant für die drehung
    weil y zeigt immer entlang des radius, also wird es sich bei einer drehung nicht ändern.
    jetzt muss man nur noch dalpha aufsummieren, und hat alpha. und somit den gesuchten drehwinkel.
    also man muss vorher noch maussensorwerte in cm umrechnen, also

    dalpha=dx*a/r

    also mann muss halt noch berechnen, nachlesen, messen, ... wieviel maussensorwert/cm man hat, damit x und r die gleiche einheit haben. wenn wir mal 2000/vierteldrehung nehmen. dann kommt kommt a=0,00785 raus.
    allerdings wären dann die 45° eigentlich 55°
    der y wert dürfte sich bei einer reinen drehung und der sensoranordnung wie in der skizze auch nicht ändern, tut er aber
    mfg jeffrey

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    07.10.2007
    Beiträge
    58
    Erstmal danke für die Antworten!!!

    Der Abstand vom Sensor zum Mittelpunkt ist 2524 Koordinaten in Y

    @uwegw
    Also wenn ich die gesamte zurückgelegte Stecke (länge der schiefen Geraden) mithilfe des Pythagoras-Satzes berechne, diese dann durch den Radius (2524) teile und dieses Bogenmaß dann in den Winkel umwandle, erhalte ich:
    bei ca. 90° einen Winkel von 48,27°
    WURZEL(1959²+827²)/2524 = 0,842 Bogenmaß *180/PI = 48,27°

    bei ca. 45° einen Winkel von 30,45°
    WURZEL(1257²+469²)/2524 = 0,531 Bogenmaß *180/PI = 30,45°

    @jeffrey
    Mit deinem Vorschlag, nur die X-Koordinate zu verwenden, erhalte ich auch falsche winkel:
    bei ca. 90° einen Winkel von 44,5°
    1959/2524 = 0,7761 Bogenmaß *180/PI = 44,5°

    bei ca. 45° einen Winkel von 28,5°
    1257/2524 = 0,498 Bogenmaß *180/PI = 28,5°

    Diesen Lösungsweg habe ich auch bereits angeschnitten, aber wie ihr seht, füht dies zu falschen winkeln.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hi,
    kann es sein, dass du messfehler hast, weil bei beiden ansätzen kommen doch etwa ahnliche werte raus, oder beim abstand vermessen? oder radius und durchmesser verwechselt? verschiedene auflösungen in x und y richtung?
    weil wenn deine skizze richtig ist, dann stimmt mein ansatz
    mfg jeffrey

Seite 1 von 7 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •