ROS-Gazebo toolbox for simulating different ASRs, easily and reliabily. Different compliant-actuated joints can be simulated and additional ones can be implemented, exploiting the toolbox.
There are currently four different compliant actuator models implemented, taken from the VIACTORS EU Project:
- SEA, compliant joint with a fixed but customizable stiffness value (see Pratt G.A. and Williamson M.);
- qbMove, compliant joint based on agonistic-antagonistic principle with varible stiffness, presented in Catalano M. et. al., developed by qbRobotics;
- BAVS, compliant joint based on agonistic-antagonistic principle with varible stiffness, presented in Petit F. et. al., developed at DLR;;
- AwAS_II, compliant joint based on pivot modulation to vary the stiffness, presented in Jafari A. et. al..
You can find the relative plugin implementation inside the folder viactors_plugins/src/.
To use these plugins within your Gazebo robot, you just have to insert the following strings in your robot's URDF, for each joint (your_joint) that you want to transform in a compliant-actuated joint.
<!-- Custom plugin inseriton -->
<gazebo>
<plugin name="compliant_act" filename="PLUGIN_NAME">
<joint>your_joint</joint>
<operation_mode>5</operation_mode>
<pub_eltau>true</pub_eltau>
<pub_state>true</pub_state>
<sub_ext_tau>false</sub_ext_tau>
</plugin>
</gazebo>
where the PLUGIN_NAME can change according to the four different (or your custom one!) compliant actuators models available, i.e. libqbmove_plugin.so, libsea_plugin.so, libbavs_plugin.so, libawas_ii_plugin.so.
The required and optional tags that you should insert are detailed in the relative files inside the viactors_plugins/urdf_templates/ folder. Some of these tags will depend upon the type of compliant actuator used (they can be also customized by the user within the InitParams virtual function). (see also the referenced article)
A simple example of usage is given inside the folder template_description/ that can be executed with
roslaunch template_description template_gazebo.launch
If you want to change the Gazebo simulation time, used also to simulate the dynamics of the motors, set the <max_step_size> in the .world file, following the example in the template_robot package.
To implement another compliant actuator plugin, according to the article, you have to implement the code of the virtual functions for your compliant actuation model. A template example is given in the file named template_plugin.cpp inside the folder viactors_plugins/src/.
Make sure to also change the CMakeLists as follows
## Declare a C++ library
add_library(template_plugin
src/template_plugin.cpp )
target_link_libraries(template_plugin
${catkin_LIBRARIES}
${GAZEBO_LIBRARIES} )
where the template_plugin name should be changed according to your compliant actuator type (e.g., myNEWvsa_plugin).
The results were published in "Frontiers in Robotics and AI (Sim2Real Research Topic)" journal. (paper link)
If you use this toolbox in your work and you want to cite it, please use the following.
@article{mengacci2021open,
title={An Open-Source ROS-Gazebo Toolbox for Simulating Robots with Compliant Actuators},
author={Mengacci, Riccardo and Zambella, Grazia and Grioli, Giorgio and Caporale, Danilo and Catalano, Manuel G and Bicchi, Antonio},
journal={Frontiers in Robotics and AI},
pages={246},
year={2021},
publisher={Frontiers}
}
Also feel free to upload other compliant actuators model to expand the library. Thank you! :D