Skip to content

NMMI/ROS-Gazebo-compliant-actuators-plugin

Repository files navigation

ROS-Gazebo-compliant-actuators-plugin

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.

How to use the VIACTORS plugins

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/.

Plugin insertion

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)

Usage example

A simple example of usage is given inside the folder template_description/ that can be executed with

roslaunch template_description template_gazebo.launch

Change Gazebo simulation time

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.

How to implement custom plugin

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).

Citation

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

About

Plugin for simulating compliant actuators dynamics in ROS-Gazebo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •