Archiv verlassen und diese Seite im Standarddesign anzeigen : Positionsbestimmung eines Hexapods
Ungolianth
31.12.2016, 23:02
Hallo allerseits,
ich bin gerade dabei einen Roboter für Vermessungsaufträge zu konstruieren. Letztendlich soll dieser, wenn er komplett fertig ist, seine Umgebung inklusive einiger Materialeigenschaften mappen.
Dafür muss ich exakt bestimmen können, wo der Roboter sich gerade befindet, wie er orientiert ist etc.
Die Frage ist nun, wie ich das bewerkstellig, da Methoden wie Odometrie, oder die Verwendung der Sensoren optischer Mäuse, Beschleunigungssensoren etc. erstens nur eine relative und keine absolute Position ausgeben (was über einen Referenzpunkt recht einfach zu regeln wäre) aber andererseits einen sich akkumulierenden Fehler aufweisen. Abgesehen davon konnte ich nirgends glaubhafte Angaben über die Genauigkeit der Methoden finden.
Momentanes Zwischenziel ist eine Positioniergenauigkeit von ±5 mm auf einem Raum von 5mx5m, was sich tendenziell nicht über inverse Methoden umsetzen lässt. Die externen Methoden, wie Ultraschall, Infrarotsensor oder Kameras sind jedoch zumeist auch zu ungenau.
Das einzige, was mir noch einfällt sind Lasertracker, die jedoch recht teuer sind und ich weiß auch nicht, wie viel Aufwand die Implementierung der Kommunikation mit dem Board (Arduino DaVinci und Orion Servo Shield) bedeuten würde. Kennt sich da jemand mit aus?
Odert irgendjemand sonst einen guten Vorschlag, wie ich das realisiert kriegen könnte?
Vielen Dank schonmal und einen guten Rutsch :)
Hey,
der Standardansatz den ich für genaue Positionierung kenne ist: Laserscanner + Odometrie (In dem Fall inverse Kinematik). Die Daten in einen SLAM Algorithmus übergeben. Dieser erstellt eine Karte und berechnet möglichst genau die Position darin. (So in etwa wird das auch hier gemacht : https://www.fzi.de/forschung/projekt-details/lauron/ ). Aber selbst mal damit hat man im Worst Case eine Abweichung > 5mm.
Bevor ich jetzt auf weitere Details bzw.Vorschläge eingehe erst einmal paar Eingangsüberlegungen:
Welcher Teil des Hexapods soll auf 5mm genau positioniert werden? Jedes Bein, das Zentrum, irgendein Sensor? Kann deine Mechanik überhaupt so genau arbeiten? 5mm sind für einen Hexapoden eine ziemliche Anforderungen.
Kommen wir zum sensoriellen Teil bzw. der Lokalisierung.
Du wirst feststellen, dass du mit kaum einem bezahlbaren Sensor (Auch nicht mit einem Lidar - wobei diese meistens unter 5mm Messfehler liegen) überhaupt dauerhaft die geforderte Messagenauigkeit erreichen kannst. Häufig werden deshalb verschiedene Sensoren kombiniert. Z.B. kann man relativen Sensoren sehr genau kleine Änderungen messen, jedoch hat man auf Dauer ein Drift darauf. Deshalb kann einen einen relativen Sensor mit einem absoluten Sensor fusionieren um eine bessere Genauigkeit zu erhalten. Das Stichwort hierfür ist Sensorfusion. Dabei muss man aber in Regel (besonders wenn man gesteigerte Anforderungen hat) ziemlich tief in die Signalverarbeitung einsteigen. Stichwort Kalmanfilter bzw. EKF, oder Partikelfilter. Das sind alles Methoden wie man eine bekannte Ungenauigkeit des Sensors (z.b. der gemessene Wert ist Normalverteilt um den realen Messwert ->Messfehler ist normalverteilt) möglichst gut zu eliminieren. Hierbei gibt es jedoch zigtausende Ansätze bei denen das allgemeine Modell für einen speziellen Fall angepasst wurde.
Vorallem lässt man sowas in der Regel nicht mehr auf einem Aduino laufen sondern eher auf einem System wie dem Raspberry Pi (bzw. je nach Methode braucht man noch vieeel mehr Rechenleistung)
So das mal ein kurzen Überblick. Das Thema ist leider sehr groß und vielfältig weshalb man hierfür nicht die eine Lösung präsentieren kann. Wenn du allerdings letztendlich deine Umgebung mappen willst wirst du um SLAM nicht drum rumkommen (Wobei ich hier auch Leute kenne die das bestreiten würden - Allerdings sind die ALternativen nicht unbedingt so viel einfacher ;) ) , deshalb könnte es sich für dich lohnen gleich richtig in die Thematik einzusteigen.
Ungolianth
02.01.2017, 20:35
Vielen Dank für die Hilfe.
ja, das hört sich ziemlich genau nach dem an, was ich bisher aus diversen Datenblätter etc. ausgelesen habe, aber da ich eben noch keine Erfahrung mit Robotern habe, hätte es ja durchaus sein können, dass ich eine simple Lösung einfach übersehen habe.
Also ja, wie vermutet ist das Ziel einen Sensor, welcher sich auf dem Hexapod befindet, exakt zu positionieren.
Nun gut, dann werde ich mich wohl mal in das Themengebiet der Signalverarbeitung einlesen... Yeiiii
Nein du bist direkt in eine der zentralen Problematiken der Robotik gestolpter, an der auch heute noch mit einigem Aufwand geforscht wird.
Meiner Ansicht nach wirst du nicht um einen Laserscanner auf dauer herumkommen. Deshalb könntest du dir z.B. auf Ebay so einen hier http://www.ebay.de/itm/Sick-Laserscanner-PLS101-312-/331969364929?hash=item4d4aea83c1:g:a1gAAOSwdIFX2AS J ersteigern und mit fertigen SLAM Algorithmen in ROS damit erste Erfahrungen sammeln. (Siehe auch : http://wiki.ros.org/sicktoolbox_wrapper bzw. http://wiki.ros.org/hector_slam )
wenn man die genaue Karte des Raumes bereits kennt, sind Odometrie mit Entfernungssensoren (mehrere IR, US u/o ein Laserscanner, zusammen mit Gyroskop, Accelerometer, Kompass == IMU) zusammen mit einem Partikelfilter (SMC == Sequentielle Monte Carlo Methode) sinnvoll und lösbar, und auch ein Kalman-Filter ist nutzbar, allerdings dann nur der Extended Kalman (EKF), da die meisten Sensorwerte und insb. die Odometrie nicht normalverteilte Fehler haben.
Bei der Odometrie fängt es aber an, schwierig zu werden: denn nur recht schlupffreie Räder auf ebenem Untergrund liefern saubere Odometriedaten, bei Gleisketten (Panzer) ist es schon fast unlösbar, und auch Hexapod Beine sind in Vortrieb und Kurvengang sicher nicht trivial. Da hilft dann auch kein stochastischer Filter weiter.
Wenn man den Raum gar nicht kennt und erst erforschen muss, sind absolut exakte Odometrie oder exakt anpeilbare Bakensysteme zwingend notwendig als Bezugssystem, und mit unsicherer Odometrie und ohne bekannte externe Referenzen ist es wie mit Navigieren auf einem Boot ohne Kompass, ohne Leuchttürme, ohne Sextant und mit unsicherem Log bei unbekannter Strömung und wechselndem Wind auf unbekanntem Revier. Da kann es schon mal sein, dass man nach Indien will und auf der Domrep landet - und die hatten ja damals sogar immerhin Kompass und Sextant... . ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.