Ruckig
Echtzeit-ruck-begrenzte zeitoptimale Trajektoriengenerierung für Roboter und Maschinen
Lizenz
MIT
Überblick
Ruckig ist eine Bibliothek zur sofortigen Bewegungsgenerierung für Roboter und Maschinen, die zeitoptimale, ruckbegrenzte Trajektorien in Echtzeit berechnet. Sie erzeugt Trajektorien zu einem Zielwegpunkt (mit Position, Geschwindigkeit und Beschleunigung) aus einem beliebigen Anfangszustand, begrenzt durch Geschwindigkeits-, Beschleunigungs- und Ruckgrenzen – mit garantiert zeitoptimalen Lösungen für Zustand-zu-Zustand-Bewegungen.
Ruckig ist der erste Typ-V-Trajektoriengenerator für beliebige Zielzustände, leistungsfähiger und schneller als die Reflexxes-Typ-IV-Bibliothek. Er erreicht Rechenzeiten unter einer Millisekunde, geeignet für Regelzyklen bis hinunter zu 250 Mikrosekunden, mit einer numerischen Präzision von 1e-8 für Position/Geschwindigkeit und 1e-12 für Grenzwerte, validiert an über 5 Milliarden zufälligen Trajektorien.
Die Kernbibliothek ist in C++ ohne Abhängigkeiten geschrieben, unterstützt C++20 bis hinunter zu C++03, und Python-Bindings sind über pip verfügbar. Sie lässt sich in wichtige Robotik-Frameworks einbinden, darunter MoveIt 2 (ROS 2) als Plugin zur Trajektorienverarbeitung, CoppeliaSim sowie Frankx für die Steuerung von Franka-Emika-Robotern.
Entwickelt am Karlsruher Institut für Technologie (KIT) und auf der RSS 2021 vorgestellt.
Ruckig ist eine Bibliothek zur instantanen Bewegungsgenerierung, die zeitoptimale, ruckbegrenzte Trajektorien für Roboter und Maschinen in Echtzeit berechnet. Entwickelt am Karlsruher Institut für Technologie (KIT) und vorgestellt bei RSS 2021, ist sie zu einer der am weitesten verbreiteten Open-Source-Bewegungsplanungskomponenten in der Robotik geworden, mit über 5 Milliarden berechneten Trajektorien in Produktionsumgebungen.
Die Bibliothek ist der erste Typ-V-Trajektoriengenerator für beliebige Zielzustände und übertrifft damit die Fähigkeiten der bekannten Reflexxes-Typ-IV-Bibliothek. Bei einem beliebigen Anfangszustand (Position, Geschwindigkeit, Beschleunigung) und einem Zielwegpunkt mit Geschwindigkeits-, Beschleunigungs- und Ruckbegrenzungen berechnet Ruckig die mathematisch optimale Trajektorie in Sub-Millisekunden-Zeit — schnell genug für Regelzyklen von nur 250 Mikrosekunden. Die numerische Präzision ist auf 1e-8 für Positionen/Geschwindigkeiten und 1e-12 für Grenzwerte validiert.
Ruckig ist in C++ geschrieben, ohne externe Abhängigkeiten, und unterstützt Compiler-Standards von C++03 bis C++20, mit Python-Bindings, die über pip verfügbar sind. Das Design ohne Abhängigkeiten macht die Integration in jeden Robotik-Stack unkompliziert. Die Bibliothek ist in MoveIt 2 (ROS 2) als Trajektorienverarbeitungs-Plugin, in CoppeliaSim für Simulation und in Frankx für die Steuerung von Franka Emika-Robotern integriert.
Die Kombination aus mathematischer Strenge, Echtzeitfähigkeit und reibungsloser Integration hat Ruckig zu einer Standardkomponente in Forschungslaboren und industriellen Robotikunternehmen weltweit gemacht.
Warum es wichtig ist
Glatte, ruckbegrenzte Trajektoriengenerierung ist für den realen Roboterbetrieb unerlässlich. Ruckig bietet eine abhängigkeitsfreie Echtzeit-Lösung, die bereits in MoveIt 2 integriert und von Hunderten von Forschungslaboren und Unternehmen verwendet wird.
Welches Problem es löst
Echtzeit-Generierung glatter, ruckbegrenzter Bewegungsprofile für Roboter, die sofort auf Sensoreingaben reagieren müssen und dabei Geschwindigkeits-, Beschleunigungs- und Ruckbeschränkungen einhalten
Wichtigste Punkte
- Zeitoptimale ruck-begrenzte Trajektoriengenerierung in unter einer Millisekunde Berechnungszeit
- Keine Abhängigkeiten im C++-Kern -- einfache Integration in jeden Robotik-Stack
- Bereits in MoveIt 2 (ROS 2) und CoppeliaSim integriert
- Über 5+ Milliarden zufällige Trajektorien mit 1e-12-Präzision auf Grenzwerte validiert
Für wen
- Roboterarm-Entwickler
- Bewegungsplanungs-Ingenieure
- ROS 2 / MoveIt-Entwickler
- Industrieautomatisierungs-Ingenieure
Einschränkungen
- Community-Version unterstützt keine lokale Wegpunktberechnung (Pro-Funktion)
- Positionsgrenzen nur in der Pro-Version verfügbar
- Tracking-Schnittstelle für beliebige Signale erfordert Pro-Version
- Python-API-Dokumentation weniger umfassend als C++