Ich kann dir gerade nicht folgen, wobei nicht entscheiden?
Seekur: Ich habe keine Ahnung was die Marketing-Abteilung von denen damit sagen will. Aber "velocity control" wär ja was ich oben sagte, das man für die Odometrie-Position die velocity aufintegriert macht man doch immer so?
Ja stimmt, war nur etwas verwirrt weil ich in einem Roboter einen ESC habe von dem ich nur die Geschwindigkeit auslesen kann.
Tja, genau das geht bei meinem kettengetriebenen Modell nicht. Eine einigermaßen schnelle Geschwindigkeitsregelung über die Messung der Gegen-EMK am Antrieb ist zwar durchführbar, hat aber wegen Schlupf und Bodenhaftung mit der Bewegung des Fahrwerks wenig gemeinsam.
Ich messe die Odometrie unabhängig vom Antrieb durch zwei zusätzliche Messräder. Da bekomme ich im 8ms-Zyklus von den Inkrementalgebern +/-0..3 Schritte - das reicht für die Posenberechnung, gibt aber zu wenig Fleisch als Istwert einer Geschwindigkeitsregelung.
Kurz: Ich habe keine Geschwindigkeitsregelung.
So, kurz zusammengefasst: Ich hatte bislang Bewegungsmodul, Powermodul und ein Protokoll angerissen. Fehlt eigentlich noch die nach außen gerichtete Sensorik.
Fertige Lidars (RPLidar/YDLidar < 100€) sind recht erschwinglich geworden und sind mit UART auch problemlos anzubinden. Bei einem Eigenbau mit einem oder mehreren Distanzsensoren (LidarLite, TFMini, VL53L1X) und einer Drehmimik hat man vielleicht noch einige Freiheitsgrade mehr:
- Man kann mehrere Sensoren auf einen Drehteller packen, ohne dass sie sich gegenseitig die Sicht einschränken.
- Man kann mit einem leicht nach unten geneigten Sensor das Nahfeld abtasten.
- Man kann auch Sensoren einbauen, die nichts mit einer Distanzmessung zu tun haben (z.B. die Richtung einer IR-Diode anpeilen).
Letztlich braucht es zum Eigenbau einen Drehantrieb (Motor), eine Drehwinkelerfassung (damit ein Sensorwert einer Richtung zugeordnet werden kann) und einer Übertragung von Strom und Daten (wenn sich der Teller kontinuierlich 360° drehen soll).
Andere Möglichkeit: Kameras in 2 oder 3D, also Kinect, RealSense oder CAM. Sind über USB angeschlossen nicht so bastelintensiv, legen aber die Messlatte der Hardwareanforderungen bezüglich Auswertesoftware recht hoch an.
Dann gibt's auch noch Hilfsmittel zur Positionsbestimmungen per Funk GPS & Co. Die geben aber keine Informationen über die Umgebung (Hindernisse) preis. Man weiß also, wo man in etwa ist, aber ohne Umgebungskarte nicht, wo man entlangfahren kann.
Was gibt's noch?
Wenn man will geht es auch. Mein erster Roboter für den ich einen ROS-Adapter geschrieben habe, hatte auch Ketten. War zugegeben eine Aufgabe über Wochen. Langsam anfahren hilft. Um Fehler bei der Rotation auszugleichen gibt es IMUs. Fehler bei der Rotation führen ja bekanntermaßen zu größeren Fehlern in der Position als Fehler in der Translation. Multikopter bekommen es ja auch hin die Geschwindigkeit über Grund zu messen.
Muss nicht sein wenn man nur eine oder N-Bildzeilen auswertet erhält man ein einfaches Array. Dies habe ich anfangs mit der XTion gemacht . Hat gut funktioniert, Lidar ist aber überlegen wegen der geringeren (Die XTion war bei unter 80cm blind) und höheren Reichweite sowie konstanteren Genauigkeit (Die Daten der XTion waren ab 3m für Slam nicht mehr zu gebrauchen).
Bei den Sensoren würde ich unterscheiden ob ich sie für Hinderniserkennung oder Positionsbestimmung verwende. Dies sind zwei Anwendungsfälle die meiner Meinung nach nichts miteinander zu tun haben, obwohl ich teilweise dieselben Sensoren einsetzen kann. Außerdem würde ich für Hinderniserkennung unterschiedliche Sensortypen miteinander kombinieren, ich verwende z.B. Lidar und US-Sensoren. Das Lidar liefert keine verlässlichen Abstände bei Spiegeln, Fenstern und Sonnenlicht, die US-Sensoren versagen bei schalldämpfenden Stoffen (Kissen..).
Das ist korrekt. Auch bei den käuflichen Staubsaugern mit Lidar findet man immer noch Bumper und andere Sensoren, die die Umgebung unterhalb der horizontalen Lidarebene abtasten.
Dieses Thema birgt einige Tücken. Streng genommen müsste der gesamte Roboter von der Ebene der Bodenfreiheit (was er hochsteigen kann) bis zur höchsten Stelle mögliche Kollisionen melden. Bei Rückwärtsbewegungen gilt das auch für's Heck, mit Omniwheels wird's noch wilder.
(Nähkästchen an)
Ich habe hier ein Klo (an der Wand befestigt) und einige Heizkörper, deren Unterkante sich genau 1cm mit der Höhe der Sensorplattform meines Roboters überschneiden. Kein Sensor sieht, wenn der Robbi sich daran festsetzt. Die obersten 2cm meines Roboters sind wirklich unüberwachte Zone. Der Drehteller der Sensorik bleibt aber bei einer Kollision stecken. Zur Zeit (weil ich keine Lust hatte, noch einen Sensor leicht nach oben messend dranzubauen) besteht meine kreative Lösung darin, den Störfall "Plattformmotor ist an, Richtungsdetektion zeigt aber keine Drehung" als Reflex auszuwerten, durch den sich der Roboter freifährt.
(Nähkästchen aus)
Ich denke mal, jedes "Labor Wohnung/Gelände" hat da so seine Fallen. Da die Hindernisdetektion von den tatsächlichen Abmessungen des Roboters abhängt, spricht aber doch nichts dagegen, sie als Beiwerk in den Modulen, die das Mobil physikalisch vergrößern, zu verpacken. Egal wie viele Sensoren welcher Art man braucht: Ein unpassierbares Hindernis zeichnet sich nur durch seinen Standort aus.
Geändert von Holomino (30.11.2020 um 08:45 Uhr)
Lesezeichen