Skip to content

Demos

You can use the demos to start robots and cameras in simulation or real and command them using CRISP_PY and CRISP_GYM. For instance, you could run in one terminal shell the container for your robot and different shells the containers for the cameras.

Example setup in our lab

First we start our robots (FR3s):

docker compose up launch_dual_franka
Then we start the cameras:
CAMERA_NAMESPACE=right SERIAL_NO=xxxxxxxx docker compose up launch_realsense
...and another camera:
CAMERA_NAMESPACE=right docker compose up launch_camera
We have a zellij/tmux session which starts all of these commands in individual panes, to be able to stop and restart them easily. Then, we are able interact with these containers directly using CRISP_PY or CRISP_GYM.

Check "Running a demo" for more information on how to launch the demos.

Available demos

For now, these are the available demos in this repository. New demos are welcome, in particular if tested with real hardware. Some other manipulators that could be added to this list is Duatic or other dual setups.

Robots Franka Robotics FR3 FR Dual FR3 IIWA 14 Kinova Gen3
MuJoCo simulated Hardware
Real Hardware 1 1

We also have some examples with cameras.

Robots Real Sense Any Camera / Webcam Orbecc
Camera demo 2

Running a demo

  1. (TEMPORARY) Clone the crisp controllers to the repo (later it will be part of the Dockerfile)
    git clone git@github.com:utiasDSL/crisp_controllers_demos.git crisp_controllers_demos
    cd crisp_controllers_demos
    git clone git@github.com:utiasDSL/crisp_controllers.git crisp_controllers
    

Warning

Do NOT use Docker Desktop. Just go for the normal Docker CLI.

  1. Build and start the provided container.
    docker compose build
    
  2. Start your robot:

    docker compose up launch_iiwa
    
    or
    LEFT_ROBOT_IP=172.16.1.2 \
    RIGHT_ROBOT_IP=172.16.0.2 \
    FRANKA_FAKE_HARDWARE=true \
    docker compose up launch_dual_franka
    
    or
    ROBOT_IP=172.16.0.2 \
    FRANKA_FAKE_HARDWARE=true\
    docker compose up launch_franka
    
    or
    docker compose up launch_kinova
    

  3. Now you can publish to /target_joint, /target_wrench or /target_pose! Check crisp_py examples to see how to easily use it.

Warning

If you work in different machines (using crisp_py or others) you might want to consider using a different RMW. Check how to multi-machine setup. To use a different middleware just pass an extra environment variable:

RMW=<zenoh|cyclone> docker compose up ...

For the cameras, you can run:

docker compose up launch_camera

...and in case you are running a realsense:

docker compose up launch_realsense

Check the docker-compose.yaml to see how to define your own services.

Troubleshooting

Rviz does not open when launch the robots. Why?

Simply run xhost + on a terminal to enable any host to use the X. You need this because we are running the demos in a container.

When executing ros2 topic list in a different terminal, I can not see any topics. However, the container is running. Why?

Probably you are using a different ROS_DOMAIN_ID. The default now is set to 100 but you can change it when running the container. To change it in your shell run export ROS_DOMAIN_ID=100 && ros2 daemon stop && ros2 daemon start.

How are the manipulors being simulated?

We implemeted a simple MujocoHardwareInterface to simulate the robots. This code is heavily inspired by the simulator in cartesian_controllers, but probably better alternatives to use mujoco as a backend simulation would be mujoco_ros2_control. One could also use gazebo. The mujoco files come from the mujoco menagerie and have been slightly modified to use torque based actuators + we added some friction to the joints (to increase realism).


  1. Untested, but effort interface available. 

  2. TODO, still not available in the demos