This repository provides manipulation demos
- Using BehaviorTree.CPP, Moveit2, Nvidia cuRobo, and ROS2 with Nvidia Isaac sim.
- You can use this package with any simulator that supports topic based ROS2 control.
- Docker containers are available as well.
Available demos:
- Isaac Sim: Check Start Isaac Sim world
- No Isaac Sim: Run mock hardware demo
See the sections below for detailed instructions on each option.
This project demonstrates robot manipulation using a modular tech stack:
- BehaviorTree.CPP v4.6 for task-level logic and decision making
- Nvidia CuRobo for fast, efficient, real-time trajectory planning
- ROS2 with ros2_control and
joint_trajectory_controllerfor motion execution
The behavior tree manages the decision-making flow, Nvidia CuRobo handles motion planning, and ROS2 ros2_control executes the robot's motion.
- Simple Room: Franka robot, a bin, and three cubes on a table
- Toybox: Panda robot with car toys scattered on the ground
collect_cubescollect_toyslookaround_demotarget_ik_demo
For more information, see grab2_behavior_tree/behavior_trees.
- Moveit2
- Nvidia CuRobo
- Did you write one? Send a pull request to add it to this list.
- See
grab2_behavior_tree/plugins. - Did you write one? Send a pull request to add it to this list.
- NVIDIA GPU with driver version 550+ is required for simulation and demo containers.
- Docker and Docker Compose must be installed.
- Ensure NVIDIA Container Toolkit is set up for GPU access in containers.
This project uses Docker Compose to manage simulation and demo containers
defined in docker-compose.yml.
Build all required images:
docker compose buildYou can start the Isaac Sim simulation world in two ways:
-
Using Docker Compose: Launch the simulation environment in a container with:
docker compose up isaac-simple-room
or/ for the toybox world:
docker compose up isaac-toybox
-
Using a Local Isaac Sim Installation (version 4.5): If you have Isaac Sim installed locally, you can run the simulation script directly:
cd isaac_sim_worlds ./isaac_py.sh panda_bin_cubes.pyor/ for the toybox world:
cd isaac_sim_worlds ./isaac_py.sh panda_toybox.py
In a separate terminal, start the behavior demo container:
-
Simple Room Demo (with Isaac Sim):
docker compose up simple-room-demo
-
Toybox Demo:
docker compose up toybox-demo
-
Simple Room Demo (no Isaac Sim, mock hardware): (No Isaac Sim required; can be run standalone, without objects to grab)
docker compose up simple-room-demo-no-isaac
To stop all running containers, press Ctrl+C in the terminal or run:
docker compose down