Robotics StackExchange | Archived questions

the controller can not subscribe to the topic from gazebo

Hi , everyone. Now, I add a contact sensor for the robot in xacro file, as follow:

<gazebo reference="${robot_name}left_lower_arm">
   <selfCollide>false</selfCollide>
   <sensor type="contact" name="left_lower_arm_contact_sensor">
      <update_rate>100.0</update_rate>
      <contact>
        <collision>${robot_name}left_lower_arm_geom</collision>
      </contact>

      <plugin name="left_lower_arm_gazebo_ros_bumper_controller" filename="libgazebo_ros_bumper.so">
        <alwaysOn>true</alwaysOn>
        <updateRate>100.0</updateRate>
        <bumperTopicName>${robot_name}left_lower_arm_contact</bumperTopicName>
      </plugin>
   </sensor>
   <material>PR2/Grey2</material>
</gazebo>

I can get the data of the contact sensor by typing "rostopic echo r2/leftlowerarm_contact". But when I program in the controller to get the sensor data, I get nothing. The program in the controller is as follow:

left_hand_contact_sub = node.subscribe("r2/left_lower_arm_contact", 10, &R2ImpedanceController::left_hand_contact, this);

My ROS is groovy.Any answer to these questions, or any suggestion is very welcome!

Asked by hannuaa on 2014-04-02 03:56:46 UTC

Comments

Use rxgraph or rqt_graph to check the connectivity between gazebo and your node for the r2/left_lower_arm_contact topic. Include some more of your code, in particular how you create the node object. How do you notice that you get "nothing"? What does the callback look like?

Asked by demmeln on 2014-04-02 04:07:30 UTC

Answers