Liste der Anhänge anzeigen (Anzahl: 2)
1 Maussensor, Drehung berechnen
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.
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für das Angebot.
Da wir Vektorrechnen in der Schule bereits durchgenommen haben, ist das kein Problem für mich.
Ich hatte in den letzten Tagen noch ein anderes Problem, weshalb ich mit dem Programmieren der Drehung nicht beginnen konnte:
Die Maus, aus der ich den PAN3101 verwende, beinhaltet keine schwarze Abdeckung (Siehe bild: HDNS 2200).
Wenn ich den Maussensor auf einem glatten Boden verwende, misst er nicht richtig. Decke ich aber die Led so ab, dass (fast) das gesamte Licht durch den Lichtleiter geht, wird viel genauer gemessen. Also muss ich mir erst noch einen HDNS 2200 Ersatz aus Schaumgummi basteln. Dann kann ich mich an das Problem der Drehung wenden.
Liste der Anhänge anzeigen (Anzahl: 1)
Schade, dass PRobot sich nicht mehr meldet... :-(
Für alle, die dem Thread soweit gefolgt sind, hier die Antwort auf die Fragen von PRobot und jeffrey:
Die Formel, mit der die Fehlausrichtung der x- und y-Richtungen des Maussensors ausgeglichen wird, war so richtig, wie sie in der Version V01 aufgeschrieben war. In der angehängten Datei _V04 habe ich das wieder richtiggestellt. Ausserdem habe ich im Text auch die Messmethode eingebaut, die Richard für den Fehlausrichtungswinkel vorgeschlagen hatte.
Bei PRobot zeigt die y-Richtung der Maus in Fahrtrichtung. Das entspricht einer Rechtsdrehung (im Uhrzeigersinn) um 90°. Rechtsdrehungen haben in der Mathematik ein negatives Vorzeichen. Deshalb ist in PRobots Fall der Fehlausrichtungswinkel -84° und nicht +84°, wie ich zuerst geschrieben hatte. In der angehängten Rechentabelle _V04 ist das jetzt auch richtig eingetragen. Ausserdem enthält die Tabelle die Umrechnung der Daten aus dem ersten Posting von PRobot in den Fahrweg des Roboters. Wie ich das mache, ist in der Tabelle "Erklärungen" nachzulesen.
Bei der Berechnung des Fahrwegs und der Fahrzeugdrehung aus den Daten von PRobot gehe ich davon aus, dass er die Mausdaten aufsummiert hat. Wenn das nicht so wäre, dann hätte sein Autochen während der Fahrt dauernd beschleunigt und das erscheint mir unwahrscheinlich ;-) . Die Drehwinkel, die PRobot vorhersagt, 45° und 90°, kommen trotzdem nicht heraus. Einer der Gründe dafür kann sein, dass der Faktor zum Umrechnen der Mausticks in Wegstrecken falsch ist. In der Tabelle ist dieser Wert variabel - mit 0,05 mm/Tick kommt für beide Datenreihen ungefähr das gewünschte Ergebnis heraus.
mare_crisium
P.S: Die aktuelle Version der Datei OptWegmessungMe_Vxx.pdf in meinem Posting vom 12.09.2008 in diesem Thread.