Skip to content

elsayedelsheikh/grab2

Repository files navigation

Grab2 Behavior Demos

ROS2 CI

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:

Screenshot from 2025-07-27 16-36-30

See the sections below for detailed instructions on each option.

Project Overview

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_controller for motion execution

The behavior tree manages the decision-making flow, Nvidia CuRobo handles motion planning, and ROS2 ros2_control executes the robot's motion.

Screenshot from 2025-07-27 16-29-25

Demo Scenarios

  • Simple Room: Franka robot, a bin, and three cubes on a table
  • Toybox: Panda robot with car toys scattered on the ground

Available Behavior Demos

  • collect_cubes
  • collect_toys
  • lookaround_demo
  • target_ik_demo

For more information, see grab2_behavior_tree/behavior_trees.

Available Planners

  • Moveit2
  • Nvidia CuRobo
  • Did you write one? Send a pull request to add it to this list.

Available BehaviorTree Plugins

  • See grab2_behavior_tree/plugins.
  • Did you write one? Send a pull request to add it to this list.

Requirements

Running Demos with Docker Compose

This project uses Docker Compose to manage simulation and demo containers defined in docker-compose.yml.


1. Build the Containers

Build all required images:

docker compose build

2. Start the Isaac Sim Simulation World

You 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.py

    or/ for the toybox world:

    cd isaac_sim_worlds
    ./isaac_py.sh panda_toybox.py

3. Start the Behavior Demo

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

4. Stopping the Demos

To stop all running containers, press Ctrl+C in the terminal or run:

docker compose down

About

Example manipulation behaviors using behavior trees, as well as Docker workflows in ROS2 based projects.

Topics

Resources

License

Stars

Watchers

Forks