bjoerng
25.08.2010, 15:41
Hallo Leute,
ich sitze gerade an der Kinematik meines differential angetriebenen R2-D2. Der Microcontroller liefert mir alle 50ms die Encoderinkremente, und ich baue die zu einer Trajektorie zusammen. Nach den klassischen Formeln der Differentialkinematik rechne ich aus den Raddrehgeschwindigkeiten die Bewegungsgeschwindigkeit in vx, vy und die Drehrate va (im Roboterkoordinatensystem) aus. x, y und a sind Position und Rotation des Roboters in Weltkoordinaten und starten bei 0.
Wenn ich das Ganze jetzt in Weltkoordinaten umsetzen muß, berechne ich
x += cos(a)*vx - sin(a)*vy
y += sin(a)*vx + cos(a)*vy
a += va
...transformiere also vx und vy mit der aktuellen Roboterdrehung ins Weltkoordinatensystem und addiere sie auf x und y, und a inkrementiere ich einfach mit va.
Meine Frage: Ich nehme also die Bewegung als stückweise geradlinig an, interpretiere also (vx vy)^T als Bewegungsvektor. Dabei mache ich einen Fehler, denn der Robbi bewegt sich ja auf einem Kreisbogen. Macht Ihr das auch so, berechnet Ihr tatsächlich den Kreisbogen (aufwendig!), oder habt Ihr andere Ideen?
Danke für jeden Input!
ich sitze gerade an der Kinematik meines differential angetriebenen R2-D2. Der Microcontroller liefert mir alle 50ms die Encoderinkremente, und ich baue die zu einer Trajektorie zusammen. Nach den klassischen Formeln der Differentialkinematik rechne ich aus den Raddrehgeschwindigkeiten die Bewegungsgeschwindigkeit in vx, vy und die Drehrate va (im Roboterkoordinatensystem) aus. x, y und a sind Position und Rotation des Roboters in Weltkoordinaten und starten bei 0.
Wenn ich das Ganze jetzt in Weltkoordinaten umsetzen muß, berechne ich
x += cos(a)*vx - sin(a)*vy
y += sin(a)*vx + cos(a)*vy
a += va
...transformiere also vx und vy mit der aktuellen Roboterdrehung ins Weltkoordinatensystem und addiere sie auf x und y, und a inkrementiere ich einfach mit va.
Meine Frage: Ich nehme also die Bewegung als stückweise geradlinig an, interpretiere also (vx vy)^T als Bewegungsvektor. Dabei mache ich einen Fehler, denn der Robbi bewegt sich ja auf einem Kreisbogen. Macht Ihr das auch so, berechnet Ihr tatsächlich den Kreisbogen (aufwendig!), oder habt Ihr andere Ideen?
Danke für jeden Input!