From b4f531444ed90a6ce7d2dab00361d1cb344c845b Mon Sep 17 00:00:00 2001 From: Masaki Murooka Date: Sun, 21 Apr 2024 22:24:35 +0900 Subject: [PATCH] [doc] Add McMujocoTactileSensorSytem.md --- README.md | 2 ++ doc/McMujocoTactileSensorSytem.md | 31 ++++++++++++++++++++++ doc/images/McMujocoTactileSensorSytem.png | Bin 0 -> 46651 bytes 3 files changed, 33 insertions(+) create mode 100644 doc/McMujocoTactileSensorSytem.md create mode 100644 doc/images/McMujocoTactileSensorSytem.png diff --git a/README.md b/README.md index 610ff07..eb8cfff 100644 --- a/README.md +++ b/README.md @@ -50,3 +50,5 @@ sensors: The above configuration assumes a ROS topic named `/mujoco/tactile_sensor` with a message of type [mujoco_tactile_sensor_plugin/TactileSensorData](https://github.com/isri-aist/MujocoTactileSensorPlugin/blob/main/msg/TactileSensorData.msg) being published by some node (e.g. [isri-aist/MujocoTactileSensorPlugin](https://github.com/isri-aist/MujocoTactileSensorPlugin)). The tactile sensor frame (e.g. `jvrc1_right_elbow_tactile_sensor`) must be defined in a URDF model (e.g. `jvrc_description/urdf/jvrc1.urdf`). The force sensor (e.g. `RightElbowForceSensor`) must be defined in robot module (e.g. `mc_rtc/src/mc_robots/jvrc1.cpp`). + +For system details for using tactile sensor with mc_mujoco, please refer to [here](doc/McMujocoTactileSensorSytem.md). diff --git a/doc/McMujocoTactileSensorSytem.md b/doc/McMujocoTactileSensorSytem.md new file mode 100644 index 0000000..42f7acb --- /dev/null +++ b/doc/McMujocoTactileSensorSytem.md @@ -0,0 +1,31 @@ +## System details for using tactile sensor with mc_mujoco + +### Data flow +MujocoTactileSensorPlugin (MuJoCo plugin) simulates the tactile sensor and publishes the data as a ROS topic. Then, McRtcTactileSensorPlugin (mc_rtc plugin) subscribes the data and sets them as measured values in mc_rtc's force sensor. + +![McMujocoTactileSensorSytem.png](images/McMujocoTactileSensorSytem.png) + +### Model and configuration files + +Typical descriptions of tactile sensors in the model and configuration files are as follows: + +- MJCF (XML) + - The `site` (i.e., frame) of the tactile sensor (\#Frame1) + - `topic_name` to publish the tactile sensor data +- URDF + - Dummy (fixed) joint and link for the frame of the tactile sensor (\#Frame2) +- mc_rbdyn::RobotModule + - Force sensor frame (\#Frame3) +- Configuration file of the mc_rtc controller (e.g., YAML) + - Frame of contact (\#Frame4) +- Configuration file of McRtcTactileSensorPlugin (e.g., YAML) + - Frame name of the tactile sensor defined in the URDF + - Force sensor name defined in the mc_rbdyn::RobotModule + - Topic name defined in the MJCF + +These descriptions are subject to the following constraints: + +- The parent link of \#Frame1, \#Frame2, \#Frame3, and \#Frame4 must all be identical. +- The locations of \#Frame1 and \#Frame2 must be identical. +- The locations of \#Frame1 and \#Frame3 do not have to be the same; dummy location (e.g., Identity) is acceptable for \#Frame3. +- The locations of \#Frame1 and \#Frame4 do not have to be the same; however, they are the same in the main test case. diff --git a/doc/images/McMujocoTactileSensorSytem.png b/doc/images/McMujocoTactileSensorSytem.png new file mode 100644 index 0000000000000000000000000000000000000000..2634cb79ab3def29e80d639c9ecc3ff1f43ac495 GIT binary patch literal 46651 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