Robotics StackExchange | Archived questions

how to use gazebo_ros_f3d contact sensor

Goal: I would like to add a contact sensor gazebo plugin to robot in Gazebo, which can connect to ROS (indigo + gazebo7+ubuntu14). Specifically, adding gazeborosf3d contact sensor to grasping_frame link.

I learn from Tutorial: Using Gazebo plugins with ROS

I add the below script to source code of MODEL.xacro, in the meanwhile reference to the source code of gazeborosf3d for contact message and Camera section

<!-- modify the script of Camera section to corresponding contact plugin according to gazebo_ros_f3d.cpp API--->
      <gazebo reference="grasping_frame">
             <sensor type="contact" name="my_contact">
                <update_rate>30.0</update_rate>
                <contact>
                  <collision>grasping_frame_collision</collision>
                </contact>
                <plugin name="contact_sensor_controller" filename="libgazebo_ros_f3d.so">
                    <robotNamespace>/seven_dof_arm</robotNamespace>
                    <bodyName>grasping_frame</bodyName>
                    <topicName>grasping_frame_contact_fb</topicName>
                    <frameName>grasping_frame</frameName>
                </plugin>
            </sensor>
      </gazebo>

Then I

roslaunch seven_dof_arm_gazebo seven_dof_arm_world.launch

gazebo crash:

[ INFO] [1496675172.098873708, 0.022000000]: waitForService: Service [/gazebo/set_physics_properties] is now available.
[ INFO] [1496675172.124006178, 0.047000000]: Physics dynamic reconfigure ready.
[INFO] [WallTime: 1496675172.168461] [0.089000] Calling service /gazebo/spawn_urdf_model
Service call failed: transport error completing service call: unable to receive data from sender, check sender's logs for details
Segmentation fault (core dumped)
[gazebo-2] process has died [pid 8635, exit code 139, cmd /opt/ros/indigo/lib/gazebo_ros/gzserver -e ode /home/shawn/catkin_ws/src/gazebo_ros_demos/rrbot_gazebo/worlds/rrbot.world __name:=gazebo __log:=/home/shawn/.ros/log/827c11a8-4a00-11e7-bf24-e4a4716f540f/gazebo-2.log].
log file: /home/shawn/.ros/log/827c11a8-4a00-11e7-bf24-e4a4716f540f/gazebo-2*.log
[gazebo_gui-3] process has died [pid 8659, exit code 255, cmd /opt/ros/indigo/lib/gazebo_ros/gzclient __name:=gazebo_gui __log:=/home/shawn/.ros/log/827c11a8-4a00-11e7-bf24-e4a4716f540f/gazebo_gui-3.log].
log file: /home/shawn/.ros/log/827c11a8-4a00-11e7-bf24-e4a4716f540f/gazebo_gui-3*.log
[urdf_spawner-4] process has finished cleanly
log file: /home/shawn/.ros/log/827c11a8-4a00-11e7-bf24-e4a4716f540f/urdf_spawner-4*.log

I open spawner-4*.log file to check:

[rosout][INFO] 2017-06-05 23:02:20,171: Loading model xml from ros parameter
 14 [rosout][INFO] 2017-06-05 23:02:20,177: Waiting for service /gazebo/            spawn_urdf_model
 15 [rospy.internal][INFO] 2017-06-05 23:02:20,373: topic[/rosout] adding           connection to [/rosout], count 0
     16 [rospy.internal][INFO] 2017-06-05 23:02:20,675: topic[/clock] adding            connection to [http://evashawn:35881/], count 0
     17 [rosout][INFO] 2017-06-05 23:02:20,783: Calling service /gazebo/                spawn_urdf_model
     18 [rospy.core][INFO] 2017-06-05 23:02:21,011: signal_shutdown [atexit]

 19 [rospy.internal][WARNING] 2017-06-05 23:02:21,012: Unknown error initiating     TCP/IP socket to evashawn:33521 

    (http://evashawn:35881/): Traceback (most       recent call last):
     20   File "/opt/ros/indigo/lib/python2.7/dist-packages/rospy/impl/tcpros_base.     py", line 555, in connect
     21     self.socket.connect((dest_addr, dest_port))
     22   File "/usr/lib/python2.7/socket.py", line 224, in meth
 23     return getattr(self._sock,name)(*args)
 24 error: [Errno 111] Connection refused
 25 
 26 [rospy.internal][INFO] 2017-06-05 23:02:21,012: topic[/clock] removing          connection to http://evashawn:35881/
 27 [rospy.internal][INFO] 2017-06-05 23:02:21,013: topic[/rosout] removing         connection to /rosout
 28 [rospy.impl.masterslave][INFO] 2017-06-05 23:02:21,013: atexit

What's going on? Thanks!

Asked by shawnysh on 2017-06-05 10:24:35 UTC

Comments

Answers

I look through this code of PR2 and found the solution.

gazebo_ros_f3d plugin must be put directly in gazebo tag rather than under sensor tag. The link which plugin is attached to is specified by child element of plugin, which is bodyName

Asked by shawnysh on 2017-06-11 19:27:42 UTC

Comments