Plugin to simulate tactile sensors in MuJoCo
MujocoTactileSensorPlugin-20230605-compressed.mp4
- Since it is in plugin style, you can use it without rebuilding MuJoCo from the source.
- Plane and cylinder surfaces are supported as sensor mounting surfaces.
- Square and hexagonal grids are supported as sensor arrays.
- It supports both building with cmake as a standalone project and building with catkin as a ROS package.
- If built as a ROS package, sensor information and visualization markers are published as ROS topics.
- Compiler supporting C++17
- Tested on
Ubuntu 20.04 / ROS Noetic
- MuJoCo (>= 2.3.5)
$ mkdir ${HOME}/src && cd ${HOME}/src
$ git clone [email protected]:isri-aist/MujocoTactileSensorPlugin.git --recursive
$ cd MujocoTactileSensorPlugin
$ mkdir build && cd build
$ cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMUJOCO_ROOT_DIR=<absolute path to MuJoCo>
$ make
$ make install
<absolute path to MuJoCo>
is the path to the root directory of MuJoCo.
For example, ${HOME}/.mujoco/mujoco-2.3.5
if you installed MuJoCo from release, or ${HOME}/src/mujoco
if you installed it from source.
# Setup catkin workspace.
$ mkdir -p ${HOME}/ros/ws_mujoco/src
$ cd ${HOME}/ros/ws_mujoco
$ wstool init src
$ wstool set -t src isri-aist/MujocoTactileSensorPlugin [email protected]:isri-aist/MujocoTactileSensorPlugin.git --git -y
$ wstool update -t src
# Install dependent packages.
$ source /opt/ros/${ROS_DISTRO}/setup.bash
$ rosdep install -y -r --from-paths src --ignore-src
# Build a package.
$ catkin init
$ catkin config --extend /opt/ros/${ROS_DISTRO}
$ catkin build mujoco_tactile_sensor_plugin -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMUJOCO_ROOT_DIR=<absolute path to MuJoCo>
Add source ${HOME}/ros/ws_mujoco/devel/setup.bash
to ${HOME}/.bashrc
.
Assume that MuJoCo is installed in ${HOME}/.mujoco/mujoco-2.3.5
from release, and MuJocoTactileSensorPlugin
is cloned under ${HOME}/src/
.
$ cp ${HOME}/src/MujocoTactileSensorPlugin/build/src/libTactileSensorPlugin.so ${HOME}/.mujoco/mujoco-2.3.5/bin/mujoco_plugin
$ cd ${HOME}/.mujoco/mujoco-2.3.5/bin
$ ./simulate ${HOME}/src/MujocoTactileSensorPlugin/xml/sample_tactile_sensor.xml
Assume that MuJoCo is installed in ${HOME}/.mujoco/mujoco-2.3.5
from release, and the path to the catkin workspace is ${HOME}/ros/ws_mujoco
.
# Terminal 1
$ cp ${HOME}/ros/ws_mujoco/devel/lib/libTactileSensorPlugin.so ${HOME}/.mujoco/mujoco-2.3.5/bin/mujoco_plugin
$ cd ${HOME}/.mujoco/mujoco-2.3.5/bin
$ ./simulate `rospack find mujoco_tactile_sensor_plugin`/xml/sample_tactile_sensor_ros.xml
# Terminal 2
$ roslaunch mujoco_tactile_sensor_plugin display.launch
This is a ROS-independent plugin to simulate tactile sensors.
The following attributes are required.
sensor_nums
: Number of sensors in each of the X and Y directions in a 2D arraysensor_interval
: Interval between adjacent sensors [m]surface_radius
: Radius of the sensor mounting surface (zero for plane, positive for cylinder)is_hex_grid
: Whether the sensor grid is square or hexagonal (true for hexagonal, false for square)
An example of tags to be added to the MJCF file:
<extension>
<plugin plugin="MujocoTactileSensorPlugin"/>
</extension>
<sensor>
<plugin name="tactile_sensor" plugin="MujocoTactileSensorPlugin" objtype="site" objname="[site name]">
<config key="sensor_nums" value="20 20"/>
<config key="sensor_interval" value="0.02"/>
<config key="surface_radius" value="0.5"/>
<config key="is_hex_grid" value="true"/>
</plugin>
</sensor>
This is a plugin with ROS interface to simulate tactile sensors. This is only available when built as a ROS package.
In addition to the attributes of MujocoTactileSensorPlugin
, the following attributes are required.
frame_id
: Frame ID of ROS topic (Site name is used if omitted)topic_name
: ROS topic name of sensor datapublish_rate
: Period to publish the topic of sensor data [Hz]
An example of tags to be added to the MJCF file:
<extension>
<plugin plugin="MujocoTactileSensorRosPlugin"/>
</extension>
<sensor>
<plugin name="tactile_sensor" plugin="MujocoTactileSensorRosPlugin" objtype="site" objname="[site name]">
<config key="sensor_nums" value="20 20"/>
<config key="sensor_interval" value="0.02"/>
<config key="surface_radius" value="0.5"/>
<config key="is_hex_grid" value="true"/>
<config key="topic_name" value="/mujoco/tactile_sensor"/>
<config key="publish_rate" value="10"/>
</plugin>
</sensor>