Momentanrotationszentrum für einen Differentialantriebsroboter

7

Ich möchte das momentane Rotationszentrum eines Differentialantriebsroboters finden.

Angenommen, ich weiß, dass der Roboter mit einer bestimmten linearen und Winkelgeschwindigkeit fährt, kann ich die Gleichungen (angegeben unter Ein Pfad, der einem Kreisbogen zu einem Punkt in einem bestimmten Bereich und einer bestimmten Peilung folgt ) verwenden, die sich als:(v,w)

xc=x0|vw|sin(θ0)
yc=y0|vw|cos(θ0)

Ich benutze den Webots-Simulator und habe GPS-Punkte für den Roboter ausgegeben, der sich in einem Kreis bewegt (Konstante v, w (1,1)). Anstelle eines einzelnen und ich für jeden Punkt einen Mittelpunkt. Wenn ich es in Matlab plotte, sieht es nicht gut aus:xcyc

kreise.jpg

Die roten Punkte im Bild sind die wahrgenommenen Zentren, sie scheinen nur die Kurve selbst zu verfolgen.

Gibt es ein Detail, das mir fehlt? Ich bin wirklich sehr verwirrt darüber, was passiert.

Ich versuche, die Mitte herauszufinden, damit ich überprüfen kann, ob sich ein Hindernis auf diesem Kreis befindet oder nicht und ob eine Kollision auftreten wird.

Canatan
quelle

Antworten:

2

Es ist schwer zu erkennen, was genau vor sich geht, insbesondere ohne den Code zu sehen oder mehr über das Sensormodell zu wissen. Das heißt, Ihre Flugbahn ist meistens gerade und ist daher meistens nahe Null. Das bedeutet, dass:w

  • Ihr Rotationszentrum ist während des größten Teils Ihres Experiments weit entfernt - wahrscheinlich außerhalb der Grenzen Ihres Diagramms.
  • Aufgrund einer Division durch eine sehr kleine Zahl können numerische Stabilitätsprobleme auftreten.
abey
quelle
Ich habe die Größe des Roboters angepasst, unter der Annahme, dass die Position / Koordinaten des Roboters zur Mitte zeigen und da es sich um einen Differentialantriebsroboter handelt, muss der Radius die Hälfte des Radabstands betragen ... Jetzt erhalte ich so etwas wie docs.google. com / file / d / 0BzLnU1-OKHh7eDZKd3hlUGRwekE /… Die Punkte sind nah genug, aber die Zentren sind einfach so weit entfernt. Ich habe die Zentren jedoch nicht als einzelne Punkte dargestellt. Glaubst du, es liegt daran, dass w zu klein ist? wenn w 1 ist, ist es nicht viel zu klein, oder? Sollte ich mich also auf das Koordinatensensormodell konzentrieren?
Canatan
0

Es sieht so aus, als ob die Sensorwerte etwas rauschen. Stellen Sie sicher, dass Ihr Simulator die Grundwahrheit meldet oder dass Sie eine gewisse Toleranz gegenüber Rauschen haben.

Siehe hier: http://www.cyberbotics.com/dvd/common/doc/webots/guide/section9.2.html

Bestimmtes

Im Supervisor-Code:

So ermitteln Sie die 3D-Position eines Transformationsknotens (oder eines abgeleiteten Knotens) im Supervisor-Code: Sie können die Funktion wb_supervisor_node_get_position () verwenden. Bitte überprüfen Sie die Beschreibung dieser Funktion im Referenzhandbuch.

Mit der Funktion wb_supervisor_field_get_sf_vec3f () können Sie die 3D-Position eines Transformationsknotens (oder eines abgeleiteten Knotens) ermitteln, der sich im Stammverzeichnis des Szenenbaums befindet (die Knoten, die sichtbar sind, wenn der Szenenbaum vollständig reduziert ist). Hier ist ein Beispiel.

Ein Simulationsbeispiel, das sowohl die GPS- als auch die Supervisor-Technik zeigt, ist in der Webots-Installation enthalten. Sie müssen nur diese Welt öffnen: $ WEBOTS_HOME / projects / samples / Geräte / Welten / gps.wbt.


WENN tatsächlich Rauschen in der Zustandsschätzung das Problem ist (Bit-ZF), besteht die Möglichkeit, solche Fehler zu kompensieren, darin, eine Schätzung Ihres Zustands und Ihrer Fehlermodelle zu verwenden. Das geht leider über den Rahmen der Frage hinaus. Wenn Sie Hindernisse vermeiden möchten UND sicher sind, dass ein Sensorfehler das Problem ist, empfehle ich Ihnen:

  1. Suchen Sie in einem breiten Band (einem fetten Kreis) nach Hindernissen, die Ihre Flugbahn mit ein wenig Fehler darstellen könnten

  2. Führen Sie einen Filter aus, um eine Schätzung der Roboterposition zu erhalten, und ermitteln Sie dann die "wahrscheinlichen" Kollisionen

  3. Suchen Sie nur über ein kleines Fenster in die Zukunft nach Hindernissen. Kurzfristig sollte Ihre staatliche Schätzung in Ordnung sein.

Dies sind jedoch hartnäckige Korrekturen für das, was wahrscheinlich ein kleines Problem ist.

Josh Vander Hook
quelle
Danke @Josh. Der Webots-Teil ist nicht das, was ich wirklich anfassen soll, aber ich werde ihn auf jeden Fall untersuchen. Es gibt eine ROS-Schnittstelle, die ich für diesen Roboter und den Webots-Simulator verwende. Selbst wenn es Sensorrauschen gibt, sollten meine Schätzungen nahe beieinander liegen, oder? In einigen Fällen verfolge ich einen vollständigen Kreis mit v und w als 1 und 1, aber die Mitte war so aus. Ist es nur das Sensorrauschen oder stimmt etwas mit der von mir verwendeten Mathematik nicht? Ändert sich das momentane Rotationszentrum weiter, auch wenn sich die Geschwindigkeiten nicht ändern? Wenn es nur Lärm gibt, kann ich das irgendwie erklären?
Canatan
Nein, der ICR ändert sich nicht, wenn V, W und die Roboterposition zum Zeitpunkt i + 1 = genau die Position zum Zeitpunkt i + die korrekte Aktualisierung von V, W. Wenn Sie die neue Position ein wenig verschieben, ändert sich der ICR . Ein kleiner Winkelfehler kann bei großen Kreisen zu einer großen Änderung des ICR führen.
Josh Vander Hook
Danke @Josh. Gibt es eine Möglichkeit, solche Fehler zu kompensieren? Ich versuche, die Kollisionserkennung wie beim dynamischen Fensteransatz zu implementieren und anhand des Abstands zwischen dem Hindernis und dem ICC herauszufinden, ob sich ein Punkt auf diesem Kreis befindet oder nicht.
Canatan
Ich habe die Frage etwas bearbeitet.
Josh Vander Hook
Danke Josh. Ich habe versucht, mithilfe des ICC zu bestimmen, ob das Hindernis auf dieser Kurve liegt, indem ich den Abstand zwischen dem ICC und dem Hindernis berechnet und mit dem Radius (v / w) verglichen habe. Scheint das in einem solchen Fall eine gültige Option zu sein?
Canatan