Trajektorien-Streaming
Diese Anleitung behandelt die Schritte, die erforderlich sind, um eine Trajektorie aus Posen (im Gelenk- oder kartesischen Raum) an den Roboter zu streamen. Details zu den einzelnen Modi finden Sie außerdem unter Streaming-API.
Roboterzustand als Anfangsbedingung erfassen
Bevor Sie mit dem Streaming beginnen, müssen Sie die aktuelle Pose des Roboters ermitteln, um sie als Anfangsbedingung für die zu streamende Trajektorie zu setzen. Eine ausführliche Anleitung finden Sie im Abschnitt Streaming-Feedback-Nachrichten empfangen.
Einen Algorithmus zur Trajektorienerzeugung implementieren
Diese Software ist das Kernstück jeder Streaming-Anwendung. Zu implementieren ist ein Programm, das eine anzufahrende Zielposition empfängt oder festlegt und eine Trajektorie berechnet, also eine zeitgestempelte Folge von Posen, um diese Position zu erreichen.
Im Bereich der Beispiele finden Sie:
- ein Beispiel für Gelenk-Streaming, das offline eine Gelenktrajektorie unter Einhaltung der Gelenkgrenzen berechnet
- ein Beispiel für kartesisches Streaming, das die aktuelle Position einer Maus in einem GUI-Fenster verfolgt
Die folgenden Unterabschnitte geben allgemeine Hinweise zu den verschiedenen Streaming-Modi.
Trajektorienerzeugung für das Streaming: Gelenkraum
Für die Modi Joint Position und Joint Position and Velocity erwarten wir, dass die
zugrunde liegenden Trajektorien zulässig sind, also die Grenzen für Ruck, Beschleunigung,
Geschwindigkeit und Position an keinem Gelenk überschritten werden. Die jeweiligen Grenzwerte
finden Sie in der Dokumentation der Modi
Position und
Position/Geschwindigkeit.
Auf Basis dieser Grenzwerte muss eine Trajektorie berechnet werden, die einen sanften Übergang vom aktuellen Gelenkzustand (Position, Geschwindigkeit, Beschleunigung) in den gewünschten Zustand realisiert.
In den Beispielen stellen wir einen Wrapper um die Ruckig-Bibliothek bereit, die sanfte Gelenktrajektorien berechnet.
Trajektorienerzeugung für das Streaming: Kartesischer Raum
In den kartesischen Streaming-Modi Cartesian Pose (absolute) und
Cartesian Pose (relative) gibt es keine direkten Grenzen für Geschwindigkeit und
Beschleunigung — der Controller versucht, den gestreamten Positionen so schnell wie möglich zu
folgen.
Aus Sicherheitsgründen wird der Streaming-Modus jedoch verlassen und der Roboter gestoppt, wenn der Positions- oder Orientierungsfehler die Sicherheitsmarge überschreitet (siehe Dokumentation der Modi absolut / relativ). Ein eigener Generator für kartesische Trajektorien sollte daher die aktuelle Pose mitverfolgen und sicherstellen, dass der Roboter der gewünschten Trajektorie folgen kann und innerhalb der Fehlergrenzen bleibt.