ich bin dabei einen einachsigen, balancierenden Roboter nach dem Prinzip des inversen Pendels zu entwickeln. Die für die Regelung u. a. benötigte Information über den aktuellen Auslenkwinkel (theta) des Bodies soll über eine Accelerometer-Gyroskop-Kombination mit Hilfe eines Kalman-Filters ermittelt werden. Ich hätte hierzu nun eine Frage zum Verständnis und hoffe ihr könnt mir weiterhelfen:
Ich hatte mir gedacht, dass Accelerometer möglichst im Schwerpunkt des Roboters anzubringen, da sich ja die gemessene, statische Beschleunigung in x-Richtung (x-Achse des Accelerometers ist parallel zur Erdoberfläche) meines Wissens nach folgendermaßen zusammensetzt:
ax = at + g*sin(theta)
// at := Beschl. aufgrund der Pendelbewegung (at = l*winkelbeschl.)
// l = Abstand des Accelerometers von Schwerpunkt
=> Bei Annahme l = 0 (Accelerometer ist im Schwerpunkt) müsste folgen:
Wie sieht die Sache nun aber im Falle einer Beschleunigung des Roboters aus? In diesem Fall würde das Accelerometer ja zusätzlich auch noch die Beschleunigung in x-Richtung ausgeben und nach obiger Formel ein entsprechend falscher Winkel herauskommen, oder?
Ich habe mir die Seite von dem Forumsmitglied Uffi http://home.arcor.de/uffmann/ARTIST3.htm angeschaut, auf der er angibt, wie man diese dynamische Beschleunigung mit Hilfe der Messwerte von zwei Achsen herausrechnet. Leider bin ich durch seine Berechnungen nicht durchgestiegen. Er schreibt weiterhin, dass das Accelerometer möglichst auf Höhe der Drehachse und nicht des Schwerpunkts angebracht werden muss. Nun bin ich vollends verwirrt!
Ist es evtl. sogar überhaupt nicht notwendig den dynamischen Beschleunigungsanteil herauszurechnen, da dieser sowieso zumeist nur kurzzeitig auftritt und nachher bei der Sensorintegration durch den Kalman-Filter eh keine große Rolle mehr spielen?
Ich bin zur Zeit etwas verwirrt und hoffe ihr könnt mir weiterhelfen. Schon einmal vielen Dank für eure Mühe.
Es stimmt das der accelerometer beeinflusst wird durch der Beschleunigung in X-richtung. Und wiefiehl ist wiederum abhangig von wo der Acc. montiert ist. Aber das alles auszurechnen ist sehr aufwendig. Dafur filtert men das Signal von der accelerometer recht stark, sodas sich eine Mitelwert bildet ueber langere Zeit. Wen der bot in mittelwert noch immer gerade steht, ist der balance ok. Die gyro messt dan der actuele stand. Dafur sind dan auch beide Sensoren notwendig : gyro gibt den actuele Stand aus mit eine hohe Bandbreite. Wegend den drift von gyro braucht men aber eine korrection ueber langere Zeit. Das macht dan der Mittelwert von acc meter.
Wenn das Accelerometer (eine Achse sollte genügen) in der selben Höhe der Drehachse ist, fällte gerade der Einfluß durch die Dehrung weg. Direkt auf der Achse gibts keine Beschleunigung, sonst nur einen Anteil noch oben und unten, aber nicht nach vorne und hinten. Je weniger Störsignal man von Anfang an drin hat, desto einfacher wird das rausfiltern.
Wenn die Balance durch beschleunigen von Rädern ist, ist der Drehpunkt eventuell gar nicht zugänglich, zu dicht über dem Boden.
ich danke euch beiden schon einmal sehr für eure Antworten. Ich denke mittlerweile auch, dass es wohl am besten wäre das Accelerometer möglichst in der Nähe des Drehpunktes auf Höhe der Räder anzubringen.
Um dies zu verdeutlichen habe ich eine kleine Zeichnung als attachment beigefügt, in dem ich die beiden in Frage kommenden Positionen des Sensors als rot markierte Punkte angegeben habe (einmal im Center of Gravity und einmal in der Drehachse)
Wenn ich euch richtig verstehe, dann ist der Vorteil im Drehpunkt der, dass als wirkende Beschleunigungen auf die x-Messachse des Accelerometers nur zum einen die horizontale Beschleunigung a_beschl aufgrund der Beschl. des Roboters sowie die Komponente g*sin(theta), hervorgerufen durch die Gravitation, auftreten. Falls das Accelerometer dagegen im Punkt CG angebracht wird, so wird zusätzlich zu den beiden genannten Beschleunigungen außerdem noch die Komponente a_tan mit gemessen. Sehe ich das so richtig?
Insgesamt ist es also vorteilhaft, wenn ich den Abstand zwischen Drehpunkt und Position des Sensors , also die Länge L, möglichst klein halte, richtig?
Meiner Meinung nach haben beide Positionen Vorteile! Wenn man den Sensor weit unten positioniert, wird er durch die Vorwärts-Rückwärts-Beschleunigung durch den Motor beeinflusst.
Sowie ich das sehe, würde der Sensor bei beiden Positionen jeweils eine zusätzliche Beschleunigungskomponente aufgrund der Vorwärts- bzw. Rückwärtsbewegung des Roboters messen. Da ist es prinzipiell egal wo man ihn platziert.
Es geht mir jetzt vorzugsweise um die Beschleunigungskomponente hervorgerufen durch die Tangetialbeschleunigung a_tan, die durch die Drehbeschleunigung des Bodies (Pendels) hervorgerufen wird. Da sich der Body um den Drehpunkt dreht, wird der Einfluß dieser Beschleunigung auf die gesamte gemessene Beschleunigung in x-Richtung immer größer, je weiter der Sensor sich vom Drehpunkt befindet, oder sehe ich das falsch?
Nur wenn ich eine Pendelbewegung um 0° annehme (der Roboter fährt vor und zurück, fährt aber nicht längere Strecken geradeaus oder zurück) wäre es wohl besser den Sensor im Schwerpunkt CG anzubringen, da sich dieser Punkt nun näherungsweise immer auf der gleichen Stelle im Raum befindet. So ist zumindest jetzt meine Vorstellung.
Was ist denn nun definitiv besser geeignet? Ich will den Roboter so designen, dass er auch längere Strecken fahren kann.
Hi,
ich denke es ist besser den Sensor in der Drehachse des
Roboters anzubringen, damit Pendelbewegungen nicht
zu zusätzlichen Beschleunigungen führen.
Aber auch in dieser Position ergibt sich das Problem, dass du
nicht zwischen den Beschleunigungswerten des Sensors
unterscheiden kannst, die sich durch die Neigung im Bezug
auf die Erdanziehung ergeben, und solchen die durch die
Motoren beim Balancieren erzeugt werden.
Du kannst natürlich die die Motor-induzierte Beschleunigung
herausrechnen. Dazu müsstest du nur zuerst die Neigung
des Robots kennen, aber die willst du ja gerade bestimmen.
Ein Teufelskreis! Bin gespannt, wie sich das lösen läßt.
Lesezeichen