Skip to content

ROS-Gazebo plugin for simulate the elastic bheavior of the qbmoves in Gazebo

Notifications You must be signed in to change notification settings

Richi90/ROS-Gazebo-plugin-qbmove

Repository files navigation

ROS-Gazebo-plugin-qbmove

ROS-Gazebo plugin for simulate the elastic bheavior of the qbmove actuators in Gazebo. For those not familiar with these actuators, in brief, the qbMove is a compliant actuator with varible stiffness, based on the agonistic-antagonistic principle presented in Catalano M. et. al., developed by qbRobotics.

The plugin supposes to be able to control the motor position references of the real qbmoves. I'm planning to include the motor dynamics as well, from which test torque controllers, developping another complementary plugin.

Usage

Clone the packages, one implementing the plugin and the others implementing a template example and the qbRobotics utils, in your current catkin workspace.

There are two ways of using the ROS-Gazebo-plugin-qbmove properly:

  • Standalone, within a simple URDF;
  • Embedded, leveraging on the ROS-qbmove nodes inside the utils folder.

For the first solution, the advanced plugin must be inserted directly into the URDF, associated to each joints of your robot (see below).

For the second solution the advanced plugin is embedded into the ROS-qbmove (or qbmove-ros) package, thus it is required. In order to include the plugin, you have to replace the /qbmove_description folder inside the qbmove-ros package with the one inside the /qbmove_utils folder. (NOTE: that package has been modified w.r.t. the qbRobotics!)

URDF template

You can find a simple usage template inside the /example/template_description folder.

Robot namespace definition

The namespace of your robot (required) is defined separately in a yaml file, inside the /config folder as follows

## Namespace of the robot
namespace: "your_namespace"      # default = "toBEassigend"

and is loaded inside the launch file with the following

 <!-- Load the parameter for the compliant plugin from the configuration file -->
 <rosparam command="load" file="$(find template_description)/config/advanced_config.yaml"/>

Plugin insertion

The plugin can be inserted to each revolute (or continous) joint (your_joint) of your robot as follows

Advanced plugin case:

 <gazebo>
     <plugin name="advanced_vsa_j1" filename="libadvanced_plugin.so">
         <joint>your_joint_name</joint>
         <control_type>your_control_mode</control_type>
         <pub_eltau>true</pub_eltau>
         <pub_state>true</pub_state>
         <sub_ext_tau>true</sub_ext_tau>
     </plugin>
 </gazebo>

SEA plugin case:

 <gazebo>
     <plugin name="sea_j1" filename="libsea_plugin.so">
         <joint>your_joint_name</joint>
         <namespace>your_ns</namespace>
         <stiffness>100</stiffness>
         <pub_eltau>true</pub_eltau>
         <pub_state>true</pub_state>
         <sub_ext_tau>true</sub_ext_tau>
     </plugin>
 </gazebo>

Available topics

According to the plugin and the tags seleceted, different topics are generated to allow publishing the relative references.

Advanced plugin case:

Here in the control mode tag, the available controllers and the relative topics are as follows:

  • your_control_mode == 0, the two references are used as motor positions, topic names:
    /your_namespace/your_joint_name/reference_1
    /your_namespace/your_joint_name/reference_2
    
  • your_control_mode == 1, the two reference are used as equilibirum position and preset (according to the qbmove functions) of the actuator, topic names:
    /your_namespace/your_joint_name/equilibirum_pos
    /your_namespace/your_joint_name/preset
    
  • your_control_mode == 2, only the first reference is used as torque input for the joint (suposed rigid), while the second reference is disabled. The topic names become
    /your_namespace/your_joint_name/torque
    /your_namespace/your_joint_name/disabled
    

SEA plugin case:

In this case, the only topic generated to command the motor reference is the following

/your_namespace/your_joint_name/theta_command

Common:

The remaining tags are used to enable other useful publishers, one for publishing the value of the elastic torques (not available in SEA mode), in the following topics

/your_namespace/your_joint_name/tau_el1_state
/your_namespace/your_joint_name/tau_el2_state

and the other one in which retrieving useful information about the joint state, i.e., joint position and velocity q,dq, current references _ref_1,ref_2, joint torque tau and joint stiffness stiff. All of these values are stored in a cusotom message on the following topic

/your_namespace/your_joint_name/state

Finally, it is possible to apply an external torque on the joint with the following subscriber topic (provided that the sub_ext_tau is set as true!)

/your_namespace/your_joint_name/ext_tau

About

ROS-Gazebo plugin for simulate the elastic bheavior of the qbmoves in Gazebo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages