Hi White_Fox,
dunnerdieWaldFee, Du schraubst die Messlatte ganz schön hoch. Trotzdem versuche ich's mal:
Alle Plattformen haben als Bewegungsmodul die gemeinsame Eigenschaft, per innerem Regelkreis ihre Positionsänderung grob zu schätzen. Selbst Flugzeuge können das per IMU, Höhen- und Geschwindigkeitsmessung. Grob heißt hier mit Abweichungen, aber relativ schnell.
Wie Du nun über eine höhere Instanz die innere Regelung korrigierst, ist variantenreich: Korrektur über Lidar, Kamera, Radar, GPS oder die Sterne. Du wirst nicht für jede Variation ein neues Bewegungsmodul erfinden wollen.
Meine These: Wenn Du aus der höheren Instanz einer geplanten Bahn folgen willst, reicht eigentlich als Schnittstelle der Befehl MoveRelative(dx,dy,[dz]) und die zyklische Rückmeldung Moved(dx, dy, [dz]) aus dem Bewegungsmodul.
Das geht mit Fahr-/Flug-/Schwimmzeug auch um Kurven. Die Äußere Regelung zieht das Gefährt durch die Korrekturen praktisch wie am Gummiseil auf dem geplanten Pfad hinter sich her.
Erstaunlich dabei: Ein PKW hat nicht die gleichen Freiheitsgrade wie ein Panzer (kann nicht auf der Stelle drehen). Ein Flugzeug kannst Du nicht ohne weiteres auf einen Punkt hinterm Flugzeug lenken (es wird nicht rückwärts fliegen). Trotzdem bleibt die o.g. Schnittstelle zum Bewegungsmodul praktisch gleich. Den Wendekreis von Auto oder Flugzeug kannst Du nur in der höheren Instanz durch Neuplanung der Bahn berücksichtigen, weil nur die (im Gegensatz zum Bewegungsmodul) die Informationen zur Kollisionsvermeidung hat.
Es gibt sicher weitere interessante Aspekte:
Steht jmoors' spekulative Raupe vor der Treppe, wird das dann vom Bewegungsmodul oder von der höheren Instanz erkannt? Gibt die höhere Instanz also 2D-Befehle und die Raupe gibt alles, um die Treppe selbständig hochzumöllern? Oder gibt die Instanz den Befehl in 3D und das Bewegungsmodul hebt darauf brav entsprechend der Angabe der z-Komponente das vordere Kettenpaar?
Wenn ich einen Roboterarm auf einem Differentialantrieb montiere, nutze ich die Drehachse des Bewegungsmoduls? Wenn ja, wie drehe ich dann über MoveRelative(dx,dy,[dz])? Statt rauszufahren und wieder im richtigen Winkel einzuparken, wäre hier ein Turn(angle) sicher komfortabler.
Letztlich nur die Frage: Kann Dein Roboterfahrgestell das oder kannst Du Dir vorstellen, Deinem Roboter diese Schnittstelle beizubringen, so dass ich mein Programm und meine Sensorik draufbauen kann?
Lesezeichen