Python package for single and dual robot arm motion planning.
Key motivation:
- 🔗 Provide unified interfaces for different motion planners and collision checkers, such as OMPL's powerful (but robot-agnostic) sampling-based planners and Drake's collision checking for robots.
- 🦾 Standardize and add other features taylored to robotic arm motion planning such as joint limits and planning to TCP poses.
Features: this packages provides two main things:
- 🤝 Interfaces: specify interfaces for robot arm motion planning
SingleArmPlannerDualArmPlanner
- 🔌 Implementations: reliable and well-tested implementations of these interfaces.
- OMPL for single and dual arm planning to joint configurations or TCP poses
- cuRobo for single arm planning to joint configurations or TCP poses
Design goals:
-
⚓ Robustness and stability: provide an off-the-shelf motion planner that supports research by reliably covering most (not all) use cases at our labs, prioritizing dependability over niche, cutting-edge features.
-
🧩 Modularity and flexibility in the core components:
- 🧭 Motion planning algorithms
- 💥 Collision checker
- 🔙 Inverse kinematics
-
🐛 Debuggability and transparency: many things can go wrong in motion planning, so we log generously and store debugging information (IK solutions, alternative paths) to troubleshoot issues.
-
🧪 Enable experimentation: Facilitate the benchmarking and exploration of experimental planning algorithms.
Planned features:
- Drake optimization-based planning
See the getting started notebooks, where we set up:
- 🎲 OMPL for sampling-based motion planning
- 🐉 Drake for collision checking
- 🧮 ur-analytic-ik for inverse kinematics of a UR5e
- 🟢 cuRobo for GPU-accelerated motion planning
If you have mostly static scenes, use OMPL. It’s well tested, fast, and runs on your CPU. If you have dynamic scenes that change often and have access to a CUDA-supporting GPU, use cuRobo.
If you want to use cuRobo with airo-planner, you first need to install it according to these instructions. Note that you will need a CUDA-enabled GPU.
airo-planner is available on PyPI and installable with pip:
pip install airo-planner
For visualization of cuRobo worlds (see notebooks/06_curobo.ipynb), you can use the optional rerun dependency.
pip install airo-planner[rerun]
You can use the official cuRobo instructions to configure a new robot, but this requires Isaac Sim. An easier method is to fill in a YAML file with the output of bubblify.
pip install bubblify
bubblify --urdf_path /path/to/urdf --show_collision
Copy the collision_spheres section to the YAML file of your robot, and you are ready to use your own robot!
See the airo-mono developer guide.
A very similar process and tools are used for this package.
See airo-models, releasing airo-planner works the same way.