schunk_svh_simulation
A MuJoCo-based simulation environment for the SCHUNK SVH
README
SCHUNK SVH Simulation
This package provides a simulated SVH for controller development and testing.
Physics engine and rationales
We build the simulator on Todorov’s MuJoCo physics engine, which has been acquired and open-sourced by Google here. This gives us a strong environment to design and test finger control for object manipulation with minimal dependencies.
Build and install
Download MuJoCo’s pre-built library package and extract that somewhere. It’s ready-to-use and we will just point to it during the build.
cd $HOME wget https://github.com/deepmind/mujoco/releases/download/3.2.3/mujoco-3.2.3-linux-x86_64.tar.gz tar -xf mujoco-3.2.3-linux-x86_64.tar.gz
We make use of the GLFW3 wrapper around OpenGL. You can install it on Ubuntu with
sudo apt-get install libglfw3-dev libglew-dev
Switch to the root of your ROS2 workspace and build the package (standalone) with
colcon build --cmake-args "-DMUJOCO_DIR=$HOME/mujoco-3.2.3" --packages-select schunk_svh_simulation
Getting started
In the root of your ROS2 workspace
source install/setup.bash
ros2 launch schunk_svh_simulation simulation.launch.py
This will start a simulated world with the SCHUNK SVH.
The simulated SVH exposes the same hardware_interfaces like a real right hand does.
For instance, you can use a joint_trajectory_controller to move each joint for easy testing.
source install/setup.bash
rqt --clear-config
Inside rqt, navigate to Plugins, Robot Tools, joint trajectory controller.
You might need to install the rqt_joint_trajectory_controller if that’s not part of your default rqt installation:
sudo apt-get install ros-<version>-rqt-joint-trajectory-controller
Select the appropriate /controller_manager and right_hand as controller.
You can now control each of the SVH’s joints with sliders.
Interaction with the simulator
Supported commands:
Rotate: Left mouse button
Zoom: Middle mouse button
Drag: Right mouse button
Restart: Backspace key
Hardware interfaces for controllers
Exposed interfaces per joint:
command_interfaces: positionstate_interfaces: position, velocity