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):
Then we start the cameras: ...and another 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
- (TEMPORARY) Clone the crisp controllers to the repo (later it will be part of the Dockerfile)
Warning
Do NOT use Docker Desktop. Just go for the normal Docker CLI.
- Build and start the provided container.
-
Start your robot:
or or or -
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:
For the cameras, you can run:
...and in case you are running a 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).