A C++ library implementing steering functions for car-like robots with limited turning radius, including Dubins, Reeds-Shepp, and continuous curvature variants.
Steering Functions is a C++ library that implements path planning algorithms for car-like robots with limited turning radius. It provides both classic steering functions like Dubins and Reeds-Shepp paths, along with continuous curvature variants that produce smoother trajectories. The library solves the problem of generating feasible paths for vehicles that cannot turn instantaneously, which is essential for autonomous navigation in constrained environments.
Robotics researchers and engineers working on motion planning for car-like robots, autonomous vehicles, or mobile robots with nonholonomic constraints. It's particularly useful for those integrating path planning with ROS or OMPL-based systems.
Developers choose this library because it offers a comprehensive collection of steering functions with different continuity properties in a single, well-documented package. Unlike implementing these algorithms from scratch, it provides tested implementations with ROS integration and support for uncertainty propagation, saving significant development time for robotic motion planning projects.
This C++ library provides steering functions for car-like robots with limited turning radius, enabling motion planning for vehicles that cannot turn on the spot. It implements both classic algorithms like Dubins and Reeds-Shepp paths, along with newer continuous curvature (CC) and hybrid curvature (HC) variants that produce smoother, more realistic trajectories.
The library focuses on providing both optimal and suboptimal steering functions with varying continuity constraints, enabling researchers and developers to choose the right trade-off between path length, smoothness, and computational cost for their specific robotic applications.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements both classic optimal paths (Dubins, Reeds-Shepp) and newer continuous curvature variants (CC-Dubins, HC-Reeds-Shepp), offering trade-offs between length, smoothness, and computation for diverse robotic needs.
Includes RViz visualization and pre-configured build steps for ROS 1/2, making it easy to test and deploy within common robotics frameworks without extra glue code.
Supports Gaussian belief propagation along paths, enabling motion planning under uncertainty—a standout feature for autonomous vehicles in dense scenarios, as cited in the associated research.
Provides explicit computation times and statistics for each algorithm (e.g., HC-Reeds-Shepp takes 464.3 µs mean), helping users make informed choices based on their real-time constraints.
The README explicitly warns it's a research prototype untested for specific use cases, requiring significant adaptation and safety validation for any deployment beyond academia.
Algorithms like HC-Reeds-Shepp have average times over 400 µs—orders of magnitude slower than Dubins—which can bottleneck high-frequency planning in real-time systems.
While ROS integration is a pro, it adds dependency overhead; building without ROS requires manual CMake flags and might lack community support for standalone issues.