You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Steps to reproduce: Copy the example PR2 URDF and associated meshes to a new project's XML folder. Modify the pr2.urdf to comment out the contents of the "base_link" link, (e.g. see below code). Import this URDF into Unreal (this should work fine). Now try dragging the imported URDF into the scene.
Observed behaviour: The editor crashes. The error is a null pointer exception on line 393 of RRobot.cpp - upon reaching the "base_bellow_link" (3 calls deep into the ARRobot::CreateActorsFromNode() function), the code tries to access *ParentComp->GetName(), but ParentComp is Null. See the below image.
Expected behaviour: My understanding is that a URDF can be valid, even if the base link has no collision or visual geometry - e.g. see the spec at this link or the fact that I can run check_urdf pr2.urdf on the modified URDF file and it parses correctly. As such, this URDF should import no worries.
My actual use case is another robot URDF we have, but I was able to reproduce this error with the PR2 URDF, which I figured would be easier for you to reproduce at your end.
I'm happy to try and put together a PR to fix this, but it seems to be a logic error in the parsing of <link /> nodes in URDF files. As such, I'm not sure how to fix this. Any guidance you could offer would be great.
Thank you for this great plugin.
<?xml version="1.0" ?>
<!-- =================================================================================== --><!-- | This document was autogenerated by xacro from pr2.urdf.xacro | --><!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | --><!-- =================================================================================== -->
<robotname="pr2"xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller"xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"xmlns:joint="http://playerstage.sourceforge.net/gazebo/xmlschema/#slider"xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor"xmlns:xacro="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface">
<!--TODO Define and give source--><!-- ============================ Shoulder ============================ --><!-- ============================ Upper Arm ============================ --><!-- ============================ Forearm ============================ --><!-- DATA SOURCES --><!-- all link offsets, CG, limits are obtained from Function Engineering spreadsheet 090224_link_data.xls unless stated otherwise --><!-- all link geometry sizes are obtained from Function provided CAD model unless stated otherwise --><!-- all simplified collision geometry are hand approximated from CAD model, sometimes from respective bounding boxes --><!-- This is the 'effective' wheel radius. Wheel radius for uncompressed wheel is 0.079. mp 20080801 -->
<gazebo>
<pluginfilename="libgazebo_ros_controller_manager.so"name="gazebo_ros_controller_manager">
<alwaysOn>true</alwaysOn>
<updateRate>1000.0</updateRate>
</plugin>
<pluginfilename="libgazebo_ros_power_monitor.so"name="gazebo_ros_power_monitor_controller">
<alwaysOn>true</alwaysOn>
<updateRate>1.0</updateRate>
<timeout>5</timeout>
<powerStateTopic>power_state</powerStateTopic>
<powerStateRate>10.0</powerStateRate>
<fullChargeCapacity>87.78</fullChargeCapacity>
<dischargeRate>-474</dischargeRate>
<chargeRate>525</chargeRate>
<dischargeVoltage>15.52</dischargeVoltage>
<chargeVoltage>16.41</chargeVoltage>
</plugin>
</gazebo>
<materialname="Blue">
<colorrgba="0.0 0.0 0.8 1.0"/>
</material>
<materialname="Green">
<colorrgba="0.0 0.8 0.0 1.0"/>
</material>
<materialname="Grey">
<colorrgba="0.7 0.7 0.7 1.0"/>
</material>
<materialname="Grey2">
<colorrgba="0.9 0.9 0.9 1.0"/>
</material>
<materialname="Red">
<colorrgba="0.8 0.0 0.0 1.0"/>
</material>
<materialname="White">
<colorrgba="1.0 1.0 1.0 1.0"/>
</material>
<materialname="Black">
<colorrgba="0.1 0.1 0.1 1.0"/>
</material>
<materialname="LightGrey">
<colorrgba="0.6 0.6 0.6 1.0"/>
</material>
<materialname="Caster">
<texturefilename="package://pr2_description/materials/textures/pr2_caster_texture.png"/>
</material>
<materialname="Wheel_l">
<texturefilename="package://pr2_description/materials/textures/pr2_wheel_left.png"/>
</material>
<materialname="Wheel_r">
<texturefilename="package://pr2_description/materials/textures/pr2_wheel_right.png"/>
</material>
<materialname="RollLinks">
<texturefilename="package://pr2_description/materials/textures/pr2_wheel_left.png"/>
</material>
<!-- Now we can start using the macros included above to define the actual PR2 -->
<linkname="base_link">
<!-- <inertial> <mass value="116.0"/> <origin xyz="-0.061 0.0 0.1465"/> <inertia ixx="5.652232699207" ixy="-0.009719934438" ixz="1.293988226423" iyy="5.669473158652" iyz="-0.007379583694" izz="3.683196351726"/> </inertial> <visual> <origin rpy="0 0 0" xyz="0 0 0"/> <geometry> <mesh filename="package://pr2_description/meshes/base_v0/base.dae"/> </geometry> <material name="White"/> </visual> <collision> <origin rpy="0 0 0" xyz="0 0 0"/> <geometry> <mesh filename="package://pr2_description/meshes/base_v0/base_L.stl"/> </geometry> </collision>-->
</link>
<!-- base_footprint is a fictitious link(frame) that is on the ground right below base_link origin, navigation stack dedpends on this frame -->
<linkname="base_footprint">
<inertial>
<massvalue="1.0"/>
<originxyz="0 0 0"/>
<inertiaixx="0.01"ixy="0.0"ixz="0.0"iyy="0.01"iyz="0.0"izz="0.01"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.01 0.01 0.01"/>
</geometry>
<materialname="White"/>
</visual>
<collision>
<!-- represent base collision with a simple rectangular model, positioned by base_size_z s.t. top surface of the collision box matches the top surface of the PR2 base -->
<originrpy="0 0 0"xyz="0 0 0.071"/>
<geometry>
<boxsize="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<jointname="base_footprint_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0.051"/>
<childlink="base_link"/>
<parentlink="base_footprint"/>
</joint>
<!-- visualize bellow -->
<linkname="base_bellow_link">
<inertial>
<massvalue="1.0"/>
<originxyz="0 0 0"/>
<inertiaixx="0.01"ixy="0.0"ixz="0.0"iyy="0.01"iyz="0.0"izz="0.01"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.05 0.37 0.3"/>
</geometry>
<materialname="Black"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.05 0.37 0.3"/>
</geometry>
</collision>
</link>
<jointname="base_bellow_joint"type="fixed">
<originrpy="0 0 0"xyz="-0.29 0 0.8"/>
<parentlink="base_link"/>
<childlink="base_bellow_link"/>
</joint>
<jointname="base_laser_joint"type="fixed">
<axisxyz="0 1 0"/>
<originrpy="0 0 0"xyz="0.275 0.0 0.252"/>
<parentlink="base_link"/>
<childlink="base_laser_link"/>
</joint>
<linkname="base_laser_link"type="laser">
<inertial>
<massvalue="0.001"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.0001"ixy="0"ixz="0"iyy="0.000001"iyz="0"izz="0.0001"/>
</inertial>
</link>
<gazeboreference="base_laser_link">
<sensorname="base_laser"type="ray">
<always_on>true</always_on>
<update_rate>20</update_rate>
<pose>0 0 0 0 0 0</pose>
<visualize>false</visualize>
<ray>
<scan>
<horizontal>
<samples>640</samples>
<resolution>1</resolution>
<min_angle>-2.2689</min_angle>
<max_angle>2.2689</max_angle>
</horizontal>
</scan>
<range>
<min>0.08</min>
<max>10.0</max>
<resolution>0.01</resolution>
</range>
</ray>
<pluginfilename="libgazebo_ros_laser.so"name="gazebo_ros_base_laser_controller">
<gaussianNoise>0.005</gaussianNoise>
<alwaysOn>true</alwaysOn>
<updateRate>20</updateRate>
<topicName>base_scan</topicName>
<frameName>base_laser_link</frameName>
<hokuyoMinIntensity>101</hokuyoMinIntensity>
</plugin>
</sensor>
</gazebo>
<jointname="fl_caster_rotation_joint"type="continuous">
<axisxyz="0 0 1"/>
<limiteffort="6.5"velocity="10"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="10"/>
<calibrationrising="-0.785398163397"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0.2246 0.2246 0.0282"/>
<parentlink="base_link"/>
<childlink="fl_caster_rotation_link"/>
</joint>
<linkname="fl_caster_rotation_link">
<inertial>
<massvalue="3.473082"/>
<originxyz="0 0 0.07"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster.stl"/>
</geometry>
<materialname="Caster"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster_L.stl"/>
</geometry>
</collision>
</link>
<transmissionname="fl_caster_rotation_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="fl_caster_rotation_motor"/>
<jointname="fl_caster_rotation_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<jointname="fl_caster_l_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 0.049 0"/>
<parentlink="fl_caster_rotation_link"/>
<childlink="fl_caster_l_wheel_link"/>
</joint>
<linkname="fl_caster_l_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_l"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="fl_caster_l_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="fl_caster_l_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="fl_caster_l_wheel_motor"/>
<jointname="fl_caster_l_wheel_joint"/>
<mechanicalReduction>79.2380952381</mechanicalReduction>
</transmission>
<jointname="fl_caster_r_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 -0.049 0"/>
<parentlink="fl_caster_rotation_link"/>
<childlink="fl_caster_r_wheel_link"/>
</joint>
<linkname="fl_caster_r_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_r"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="fl_caster_r_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="fl_caster_r_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="fl_caster_r_wheel_motor"/>
<jointname="fl_caster_r_wheel_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<gazeboreference="fl_caster_rotation_link">
<materialvalue="PR2/caster_texture"/>
</gazebo>
<jointname="fr_caster_rotation_joint"type="continuous">
<axisxyz="0 0 1"/>
<limiteffort="6.5"velocity="10"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="10"/>
<calibrationrising="-0.785398163397"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0.2246 -0.2246 0.0282"/>
<parentlink="base_link"/>
<childlink="fr_caster_rotation_link"/>
</joint>
<linkname="fr_caster_rotation_link">
<inertial>
<massvalue="3.473082"/>
<originxyz="0 0 0.07"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster.stl"/>
</geometry>
<materialname="Caster"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster_L.stl"/>
</geometry>
</collision>
</link>
<transmissionname="fr_caster_rotation_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="fr_caster_rotation_motor"/>
<jointname="fr_caster_rotation_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<jointname="fr_caster_l_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 0.049 0"/>
<parentlink="fr_caster_rotation_link"/>
<childlink="fr_caster_l_wheel_link"/>
</joint>
<linkname="fr_caster_l_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_l"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="fr_caster_l_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="fr_caster_l_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="fr_caster_l_wheel_motor"/>
<jointname="fr_caster_l_wheel_joint"/>
<mechanicalReduction>79.2380952381</mechanicalReduction>
</transmission>
<jointname="fr_caster_r_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 -0.049 0"/>
<parentlink="fr_caster_rotation_link"/>
<childlink="fr_caster_r_wheel_link"/>
</joint>
<linkname="fr_caster_r_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_r"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="fr_caster_r_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="fr_caster_r_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="fr_caster_r_wheel_motor"/>
<jointname="fr_caster_r_wheel_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<gazeboreference="fr_caster_rotation_link">
<materialvalue="PR2/caster_texture"/>
</gazebo>
<jointname="bl_caster_rotation_joint"type="continuous">
<axisxyz="0 0 1"/>
<limiteffort="6.5"velocity="10"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="10"/>
<calibrationrising="2.35619449019"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="-0.2246 0.2246 0.0282"/>
<parentlink="base_link"/>
<childlink="bl_caster_rotation_link"/>
</joint>
<linkname="bl_caster_rotation_link">
<inertial>
<massvalue="3.473082"/>
<originxyz="0 0 0.07"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster.stl"/>
</geometry>
<materialname="Caster"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster_L.stl"/>
</geometry>
</collision>
</link>
<transmissionname="bl_caster_rotation_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="bl_caster_rotation_motor"/>
<jointname="bl_caster_rotation_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<jointname="bl_caster_l_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 0.049 0"/>
<parentlink="bl_caster_rotation_link"/>
<childlink="bl_caster_l_wheel_link"/>
</joint>
<linkname="bl_caster_l_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_l"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="bl_caster_l_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="bl_caster_l_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="bl_caster_l_wheel_motor"/>
<jointname="bl_caster_l_wheel_joint"/>
<mechanicalReduction>79.2380952381</mechanicalReduction>
</transmission>
<jointname="bl_caster_r_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 -0.049 0"/>
<parentlink="bl_caster_rotation_link"/>
<childlink="bl_caster_r_wheel_link"/>
</joint>
<linkname="bl_caster_r_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_r"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="bl_caster_r_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="bl_caster_r_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="bl_caster_r_wheel_motor"/>
<jointname="bl_caster_r_wheel_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<gazeboreference="bl_caster_rotation_link">
<materialvalue="PR2/caster_texture"/>
</gazebo>
<jointname="br_caster_rotation_joint"type="continuous">
<axisxyz="0 0 1"/>
<limiteffort="6.5"velocity="10"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="10"/>
<calibrationrising="2.35619449019"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="-0.2246 -0.2246 0.0282"/>
<parentlink="base_link"/>
<childlink="br_caster_rotation_link"/>
</joint>
<linkname="br_caster_rotation_link">
<inertial>
<massvalue="3.473082"/>
<originxyz="0 0 0.07"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster.stl"/>
</geometry>
<materialname="Caster"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/caster_L.stl"/>
</geometry>
</collision>
</link>
<transmissionname="br_caster_rotation_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="br_caster_rotation_motor"/>
<jointname="br_caster_rotation_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<jointname="br_caster_l_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 0.049 0"/>
<parentlink="br_caster_rotation_link"/>
<childlink="br_caster_l_wheel_link"/>
</joint>
<linkname="br_caster_l_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_l"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="br_caster_l_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="br_caster_l_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="br_caster_l_wheel_motor"/>
<jointname="br_caster_l_wheel_joint"/>
<mechanicalReduction>79.2380952381</mechanicalReduction>
</transmission>
<jointname="br_caster_r_wheel_joint"type="continuous">
<axisxyz="0 1 0"/>
<limiteffort="7"velocity="15"/>
<!-- alpha tested effort and velocity limits -->
<safety_controllerk_velocity="10"/>
<dynamicsdamping="1.0"friction="0.0"/>
<originrpy="0 0 0"xyz="0 -0.049 0"/>
<parentlink="br_caster_rotation_link"/>
<childlink="br_caster_r_wheel_link"/>
</joint>
<linkname="br_caster_r_wheel_link">
<inertial>
<massvalue="0.44036"/>
<originxyz="0 0 0"/>
<inertiaixx="0.012411765597"ixy="-0.000711733678"ixz="0.00050272983"iyy="0.015218160428"iyz="-0.000004273467"izz="0.011763977943"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/base_v0/wheel.dae"/>
</geometry>
<materialname="Wheel_r"/>
</visual>
<collision>
<originrpy="1.57079632679 0 0"xyz="0 0 0"/>
<!-- rotation because cyl. geom primitive has symmetry axis in +x direction -->
<geometry>
<cylinderlength="0.034"radius="0.074792"/>
</geometry>
</collision>
</link>
<gazeboreference="br_caster_r_wheel_link">
<mu1value="100.0"/>
<mu2value="100.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<maxVelvalue="100.0"/>
<minDepthvalue="0.0"/>
</gazebo>
<transmissionname="br_caster_r_wheel_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="br_caster_r_wheel_motor"/>
<jointname="br_caster_r_wheel_joint"/>
<mechanicalReduction>-79.2380952381</mechanicalReduction>
</transmission>
<gazeboreference="br_caster_rotation_link">
<materialvalue="PR2/caster_texture"/>
</gazebo>
<gazeboreference="base_link">
<selfCollide>false</selfCollide>
<sensorname="base_contact_sensor"type="contact">
<always_on>true</always_on>
<update_rate>100.0</update_rate>
<contact>
<collision>base_link_collision</collision>
</contact>
<pluginfilename="libgazebo_ros_bumper.so"name="base_gazebo_ros_bumper_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bumperTopicName>base_bumper</bumperTopicName>
<frameName>world</frameName>
</plugin>
</sensor>
</gazebo>
<gazeboreference="base_bellow_link">
<materialvalue="PR2/Black"/>
</gazebo>
<gazebo>
<pluginfilename="libgazebo_ros_p3d.so"name="p3d_base_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>base_link</bodyName>
<topicName>base_pose_ground_truth</topicName>
<gaussianNoise>0.01</gaussianNoise>
<frameName>map</frameName>
<xyzOffsets>0 0 0</xyzOffsets>
<rpyOffsets>0 0 0</rpyOffsets>
</plugin>
</gazebo>
<jointname="torso_lift_joint"type="prismatic">
<axisxyz="0 0 1"/>
<limiteffort="10000"lower="0.0"upper="0.33"velocity="0.013"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="2000000"soft_lower_limit="0.0115"soft_upper_limit="0.325"/>
<calibrationfalling="0.00475"/>
<dynamicsdamping="20000.0"/>
<originrpy="0 0 0"xyz="-0.05 0 0.739675"/>
<parentlink="base_link"/>
<childlink="torso_lift_link"/>
</joint>
<linkname="torso_lift_link">
<inertial>
<massvalue="36.248046"/>
<originxyz="-0.1 0 -0.0885"/>
<inertiaixx="2.771653750257"ixy="0.004284522609"ixz="-0.160418504506"iyy="2.510019507959"iyz="0.029664468704"izz="0.526432355569"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/torso_v0/torso_lift.dae"/>
</geometry>
<materialname="Grey2"/>
</visual>
<collisionname="torso_lift_collision">
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/torso_v0/torso_lift_L.stl"/>
</geometry>
</collision>
</link>
<jointname="l_torso_lift_side_plate_joint"type="fixed">
<originxyz="0.0535 0.209285 0.176625"/>
<!-- location of bottom front bolt hole location -->
<parentlink="torso_lift_link"/>
<childlink="l_torso_lift_side_plate_link"/>
</joint>
<linkname="l_torso_lift_side_plate_link">
<inertial>
<massvalue="0.1"/>
<originxyz="-0.0625 0.0 0.05"/>
<!-- center of the 12.5cm by 10cm bolt hole pattern -->
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="r_torso_lift_side_plate_joint"type="fixed">
<originxyz="0.0535 -0.209285 0.176625"/>
<!-- location of bottom front bolt hole location -->
<parentlink="torso_lift_link"/>
<childlink="r_torso_lift_side_plate_link"/>
</joint>
<linkname="r_torso_lift_side_plate_link">
<inertial>
<massvalue="0.1"/>
<originxyz="-0.0625 0.0 0.05"/>
<!-- center of the 12.5cm by 10cm bolt hole pattern -->
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<!-- actuated motor screw joint -->
<linkname="torso_lift_motor_screw_link">
<inertial>
<massvalue="1.0"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
<!-- for debugging only <visual> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <box size="0.5 0.7 0.01" /> </geometry> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <box size="0.5 0.7 0.01" /> </geometry> </collision>-->
</link>
<jointname="torso_lift_motor_screw_joint"type="continuous">
<originxyz="-0.15 0.0 0.7"/>
<axisxyz="0 0 1"/>
<parentlink="base_link"/>
<childlink="torso_lift_motor_screw_link"/>
<dynamicsdamping="0.0001"/>
</joint>
<gazeboreference="torso_lift_link">
<sensorname="torso_lift_contact_sensor"type="contact">
<contact>
<collision>torso_lift_link_collision</collision>
</contact>
<update_rate>100.0</update_rate>
<pluginfilename="libgazebo_ros_bumper.so"name="torso_lift_gazebo_ros_bumper_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bumperTopicName>torso_lift_bumper</bumperTopicName>
<frameName>world</frameName>
</plugin>
</sensor>
</gazebo>
<gazebo>
<jointname="torso_lift_screw_torso_lift_joint"type="screw">
<parent>torso_lift_link</parent>
<child>torso_lift_motor_screw_link</child>
<axis>
<xyz>0 0 1</xyz>
</axis>
<thread_pitch>3141.6</thread_pitch>
</joint>
</gazebo>
<transmissionname="torso_lift_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="torso_lift_motor"/>
<jointname="torso_lift_joint"/>
<mechanicalReduction>-47641.53</mechanicalReduction>
<simulated_actuated_jointname="torso_lift_motor_screw_joint"simulated_reduction="3141.6"/>
</transmission>
<jointname="imu_joint"type="fixed">
<axisxyz="0 1 0"/>
<originrpy="0 3.14159265359 0"xyz="-0.02977 -0.1497 0.164"/>
<parentlink="torso_lift_link"/>
<childlink="imu_link"/>
</joint>
<linkname="imu_link">
<inertial>
<massvalue="0.001"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.0001"ixy="0"ixz="0"iyy="0.000001"iyz="0"izz="0.0001"/>
</inertial>
</link>
<gazebo>
<pluginfilename="libgazebo_ros_imu.so"name="imu_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>imu_link</bodyName>
<topicName>torso_lift_imu/data</topicName>
<gaussianNoise>2.89e-08</gaussianNoise>
<xyzOffset>0 0 0</xyzOffset>
<rpyOffset>0 -180.0 0</rpyOffset>
<serviceName>/default_imu</serviceName>
</plugin>
</gazebo>
<jointname="head_pan_joint"type="revolute">
<axisxyz="0 0 1"/>
<limiteffort="2.645"lower="-3.007"upper="3.007"velocity="6"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="1.5"soft_lower_limit="-2.857"soft_upper_limit="2.857"/>
<calibrationrising="0.0"/>
<dynamicsdamping="0.5"/>
<originrpy="0.0 0.0 0.0"xyz="-0.01707 0.0 0.38145"/>
<parentlink="torso_lift_link"/>
<childlink="head_pan_link"/>
</joint>
<linkname="head_pan_link">
<inertial>
<massvalue="6.339"/>
<!-- mass/cog/moi updated per 100505_link_data.xls -->
<originrpy="0 0 0"xyz="0.010907 0.031693 0.090507"/>
<inertiaixx="0.032497592"ixy="0.00063604088"ixz="0.0025851534"iyy="0.046545627"iyz="-0.0024534295"izz="0.057652724"/>
</inertial>
<visual>
<originrpy="0 0 0 "xyz="0 0 0.0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/head_v0/head_pan.dae"/>
</geometry>
<materialname="Blue"/>
</visual>
<collision>
<geometry>
<meshfilename="package://pr2_description/meshes/head_v0/head_pan_L.stl"/>
</geometry>
</collision>
</link>
<transmissionname="head_pan_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="head_pan_motor"/>
<jointname="head_pan_joint"/>
<mechanicalReduction>6.0</mechanicalReduction>
</transmission>
<jointname="head_tilt_joint"type="revolute">
<axisxyz="0 1 0"/>
<limiteffort="18"lower="-0.471238"upper="1.39626"velocity="5"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="3.0"soft_lower_limit="-0.3712"soft_upper_limit="1.29626"/>
<calibrationfalling="0.0"/>
<dynamicsdamping="10.0"/>
<originrpy="0 0 0"xyz="0.068 0 0"/>
<parentlink="head_pan_link"/>
<childlink="head_tilt_link"/>
</joint>
<linkname="head_tilt_link">
<inertial>
<massvalue="4.479"/>
<!-- mass/cog/moi updated per 100505_link_data.xls -->
<originrpy="0 0 0"xyz="0.001716 -0.019556 0.055002"/>
<inertiaixx="0.024223222"ixy="0.00062063507"ixz="-0.000096909696"iyy="0.054723086"iyz="0.00279702400"izz="0.067306377"/>
</inertial>
<visual>
<originrpy="0.0 0.0 0.0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/head_v0/head_tilt.dae"/>
</geometry>
<materialname="Green"/>
</visual>
<collision>
<originrpy="0.0 0.0 0.0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/head_v0/head_tilt_L.stl"/>
</geometry>
</collision>
</link>
<transmissionname="head_tilt_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="head_tilt_motor"/>
<jointname="head_tilt_joint"/>
<mechanicalReduction>6.0</mechanicalReduction>
</transmission>
<!-- Head plate frame -->
<jointname="head_plate_frame_joint"type="fixed">
<originrpy="0 0 0"xyz="0.0232 0 0.0645"/>
<parentlink="head_tilt_link"/>
<childlink="head_plate_frame"/>
</joint>
<linkname="head_plate_frame">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.01 0.01 0.01"/>
</geometry>
<materialname="Blue"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.01 0.01 0.01"/>
</geometry>
</collision>
</link>
<gazeboreference="head_plate_frame">
<materialvalue="Gazebo/Grey"/>
</gazebo>
<jointname="sensor_mount_frame_joint"type="fixed">
<originrpy="0 0 0"xyz="0.0 0.0 0.0"/>
<parentlink="head_plate_frame"/>
<childlink="sensor_mount_link"/>
</joint>
<linkname="sensor_mount_link">
<inertial>
<!-- Needs verification with CAD -->
<massvalue="0.05"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.01"/>
</inertial>
<!-- Should probably get real visuals here at some point -->
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.01 0.01 0.01"/>
</geometry>
<materialname="Blue"/>
</visual>
</link>
<jointname="high_def_frame_joint"type="fixed">
<originrpy="0 0 0"xyz="0.046457 -0.110 0.054600"/>
<parentlink="sensor_mount_link"/>
<childlink="high_def_frame"/>
</joint>
<linkname="high_def_frame">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="high_def_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0.0 0.0 0.0"/>
<parentlink="high_def_frame"/>
<childlink="high_def_optical_frame"/>
</joint>
<linkname="high_def_optical_frame">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<gazeboreference="high_def_frame">
<sensorname="high_def_sensor"type="camera">
<always_on>true</always_on>
<update_rate>20.0</update_rate>
<camera>
<horizontal_fov>0.785398163397</horizontal_fov>
<image>
<format>R8G8B8</format>
<width>2448</width>
<height>2050</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<pluginfilename="libgazebo_ros_prosilica.so"name="high_def_controller">
<updateRate>20.0</updateRate>
<cameraName>prosilica</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<pollServiceName>request_image</pollServiceName>
<frameName>high_def_optical_frame</frameName>
<CxPrime>1224.5</CxPrime>
<Cx>1224.5</Cx>
<Cy>1025.5</Cy>
<focalLength>2954.998083</focalLength>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
<materialvalue="Gazebo/Black"/>
</gazebo>
<!-- Define link to stereo cameras, set origin relative to that -->
<jointname="double_stereo_frame_joint"type="fixed">
<originrpy="0 0 0"xyz="0.0 0.0 0.0"/>
<parentlink="sensor_mount_link"/>
<childlink="double_stereo_link"/>
</joint>
<linkname="double_stereo_link">
<inertial>
<!-- Needs verification with CAD -->
<massvalue="0.1"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.01"/>
</inertial>
<!-- Should probably get real visuals here at some point -->
<visual>
<originrpy="0 0 0"xyz="-0.01 0 0.025"/>
<geometry>
<boxsize="0.02 0.12 0.05"/>
</geometry>
<materialname="Blue"/>
</visual>
</link>
<jointname="wide_stereo_frame_joint"type="fixed">
<originrpy="0.0 0.0 0.0"xyz="0.045 0.03 0.0501"/>
<parentlink="double_stereo_link"/>
<childlink="wide_stereo_link"/>
</joint>
<!-- camera link is at center of the optical frame, but in x-forward notation -->
<linkname="wide_stereo_link">
<inertial>
<massvalue="0.1"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.01"ixy="0"ixz="0"iyy="0.01"iyz="0"izz="0.01"/>
<!-- this inertia is made up for now. -->
</inertial>
</link>
<!-- attach optical frame to the camera link -->
<jointname="wide_stereo_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<!-- rotate frame from x-forward to z-forward camera coords -->
<parentlink="wide_stereo_link"/>
<childlink="wide_stereo_optical_frame"/>
</joint>
<!-- optical frame for the stereo camera, with z-forward notation, this is the frame stereo camera images users should refer to -->
<linkname="wide_stereo_optical_frame"type="camera"/>
<jointname="wide_stereo_l_stereo_camera_frame_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="wide_stereo_link"/>
<childlink="wide_stereo_l_stereo_camera_frame"/>
</joint>
<linkname="wide_stereo_l_stereo_camera_frame">
<inertial>
<massvalue="0.01"/>
<originxyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="wide_stereo_l_stereo_camera_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<parentlink="wide_stereo_l_stereo_camera_frame"/>
<childlink="wide_stereo_l_stereo_camera_optical_frame"/>
</joint>
<linkname="wide_stereo_l_stereo_camera_optical_frame"/>
<gazeboreference="wide_stereo_l_stereo_camera_frame">
<sensorname="wide_stereo_l_stereo_camera_sensor"type="camera">
<always_on>true</always_on>
<update_rate>25.0</update_rate>
<camera>
<horizontal_fov>1.57079632679</horizontal_fov>
<image>
<format>BAYER_BGGR8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<pluginfilename="libgazebo_ros_camera.so"name="wide_stereo_l_stereo_camera_controller">
<alwaysOn>true</alwaysOn>
<updateRate>25.0</updateRate>
<cameraName>wide_stereo/left</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>wide_stereo_optical_frame</frameName>
<hackBaseline>0</hackBaseline>
<CxPrime>320.5</CxPrime>
<Cx>320.5</Cx>
<Cy>240.5</Cy>
<!-- image_width / (2*tan(hfov_radian /2)) --><!-- 320 for wide and 772.55 for narrow stereo camera -->
<focalLength>320.000105</focalLength>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
<turnGravityOff>true</turnGravityOff>
<material>PR2/Blue</material>
</gazebo>
<jointname="wide_stereo_r_stereo_camera_frame_joint"type="fixed">
<originrpy="0.0 0.0 0.0"xyz="0.0 -0.09 0.0"/>
<parentlink="wide_stereo_l_stereo_camera_frame"/>
<childlink="wide_stereo_r_stereo_camera_frame"/>
</joint>
<linkname="wide_stereo_r_stereo_camera_frame">
<inertial>
<massvalue="0.01"/>
<originxyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="wide_stereo_r_stereo_camera_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<parentlink="wide_stereo_r_stereo_camera_frame"/>
<childlink="wide_stereo_r_stereo_camera_optical_frame"/>
</joint>
<linkname="wide_stereo_r_stereo_camera_optical_frame"/>
<gazeboreference="wide_stereo_r_stereo_camera_frame">
<sensorname="wide_stereo_r_stereo_camera_sensor"type="camera">
<always_on>true</always_on>
<update_rate>25.0</update_rate>
<camera>
<horizontal_fov>1.57079632679</horizontal_fov>
<image>
<format>BAYER_BGGR8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<pluginfilename="libgazebo_ros_camera.so"name="wide_stereo_r_stereo_camera_controller">
<alwaysOn>true</alwaysOn>
<updateRate>25.0</updateRate>
<cameraName>wide_stereo/right</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>wide_stereo_optical_frame</frameName>
<hackBaseline>0.09</hackBaseline>
<CxPrime>320.5</CxPrime>
<Cx>320.5</Cx>
<Cy>240.5</Cy>
<!-- image_width / (2*tan(hfov_radian /2)) --><!-- 320 for wide and 772.55 for narrow stereo camera -->
<focalLength>320.000105</focalLength>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
<turnGravityOff>true</turnGravityOff>
<material>PR2/Blue</material>
</gazebo>
<gazeboreference="wide_stereo_link">
<materialvalue="PR2/Blue"/>
<turnGravityOffvalue="true"/>
</gazebo>
<gazeboreference="wide_stereo_optical_frame">
<materialvalue="Gazebo/White"/>
<turnGravityOffvalue="true"/>
</gazebo>
<jointname="narrow_stereo_frame_joint"type="fixed">
<originrpy="0.0 0.0 0.0"xyz="0.045 0.06 0.0501"/>
<parentlink="double_stereo_link"/>
<childlink="narrow_stereo_link"/>
</joint>
<!-- camera link is at center of the optical frame, but in x-forward notation -->
<linkname="narrow_stereo_link">
<inertial>
<massvalue="0.1"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.01"ixy="0"ixz="0"iyy="0.01"iyz="0"izz="0.01"/>
<!-- this inertia is made up for now. -->
</inertial>
</link>
<!-- attach optical frame to the camera link -->
<jointname="narrow_stereo_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<!-- rotate frame from x-forward to z-forward camera coords -->
<parentlink="narrow_stereo_link"/>
<childlink="narrow_stereo_optical_frame"/>
</joint>
<!-- optical frame for the stereo camera, with z-forward notation, this is the frame stereo camera images users should refer to -->
<linkname="narrow_stereo_optical_frame"type="camera"/>
<jointname="narrow_stereo_l_stereo_camera_frame_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="narrow_stereo_link"/>
<childlink="narrow_stereo_l_stereo_camera_frame"/>
</joint>
<linkname="narrow_stereo_l_stereo_camera_frame">
<inertial>
<massvalue="0.01"/>
<originxyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="narrow_stereo_l_stereo_camera_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<parentlink="narrow_stereo_l_stereo_camera_frame"/>
<childlink="narrow_stereo_l_stereo_camera_optical_frame"/>
</joint>
<linkname="narrow_stereo_l_stereo_camera_optical_frame"/>
<gazeboreference="narrow_stereo_l_stereo_camera_frame">
<sensorname="narrow_stereo_l_stereo_camera_sensor"type="camera">
<always_on>true</always_on>
<update_rate>25.0</update_rate>
<camera>
<horizontal_fov>0.785398163397</horizontal_fov>
<image>
<format>L8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<pluginfilename="libgazebo_ros_camera.so"name="narrow_stereo_l_stereo_camera_controller">
<alwaysOn>true</alwaysOn>
<updateRate>25.0</updateRate>
<cameraName>narrow_stereo/left</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>narrow_stereo_optical_frame</frameName>
<hackBaseline>0</hackBaseline>
<CxPrime>320.5</CxPrime>
<Cx>320.5</Cx>
<Cy>240.5</Cy>
<!-- image_width / (2*tan(hfov_radian /2)) --><!-- 320 for wide and 772.55 for narrow stereo camera -->
<focalLength>772.548518</focalLength>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
<turnGravityOff>true</turnGravityOff>
<material>PR2/Blue</material>
</gazebo>
<jointname="narrow_stereo_r_stereo_camera_frame_joint"type="fixed">
<originrpy="0.0 0.0 0.0"xyz="0.0 -0.09 0.0"/>
<parentlink="narrow_stereo_l_stereo_camera_frame"/>
<childlink="narrow_stereo_r_stereo_camera_frame"/>
</joint>
<linkname="narrow_stereo_r_stereo_camera_frame">
<inertial>
<massvalue="0.01"/>
<originxyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="narrow_stereo_r_stereo_camera_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<parentlink="narrow_stereo_r_stereo_camera_frame"/>
<childlink="narrow_stereo_r_stereo_camera_optical_frame"/>
</joint>
<linkname="narrow_stereo_r_stereo_camera_optical_frame"/>
<gazeboreference="narrow_stereo_r_stereo_camera_frame">
<sensorname="narrow_stereo_r_stereo_camera_sensor"type="camera">
<always_on>true</always_on>
<update_rate>25.0</update_rate>
<camera>
<horizontal_fov>0.785398163397</horizontal_fov>
<image>
<format>L8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<pluginfilename="libgazebo_ros_camera.so"name="narrow_stereo_r_stereo_camera_controller">
<alwaysOn>true</alwaysOn>
<updateRate>25.0</updateRate>
<cameraName>narrow_stereo/right</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>narrow_stereo_optical_frame</frameName>
<hackBaseline>0.09</hackBaseline>
<CxPrime>320.5</CxPrime>
<Cx>320.5</Cx>
<Cy>240.5</Cy>
<!-- image_width / (2*tan(hfov_radian /2)) --><!-- 320 for wide and 772.55 for narrow stereo camera -->
<focalLength>772.548518</focalLength>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
<turnGravityOff>true</turnGravityOff>
<material>PR2/Blue</material>
</gazebo>
<gazeboreference="narrow_stereo_link">
<materialvalue="PR2/Blue"/>
<turnGravityOffvalue="true"/>
</gazebo>
<gazeboreference="narrow_stereo_optical_frame">
<materialvalue="Gazebo/White"/>
<turnGravityOffvalue="true"/>
</gazebo>
<!-- Define link to stereo cameras, set origin relative to that -->
<gazeboreference="double_stereo_double_stereo_link">
<materialvalue="PR2/Blue"/>
</gazebo>
<gazeboreference="sensor_mount_sensor_link">
<materialvalue="PR2/Blue"/>
</gazebo>
<jointname="projector_wg6802418_frame_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0.110 0.0546"/>
<parentlink="head_plate_frame"/>
<childlink="projector_wg6802418_frame"/>
</joint>
<linkname="projector_wg6802418_frame">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="projector_wg6802418_child_frame_joint"type="fixed">
<originrpy="0 -1.57079632679 0"xyz="0 0 0"/>
<parentlink="projector_wg6802418_frame"/>
<childlink="projector_wg6802418_child_frame"/>
</joint>
<linkname="projector_wg6802418_child_frame">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<gazeboreference="projector_wg6802418_child_frame">
<projectorname="projector_wg6802418_projector_wg6802418">
<pose>0 0 0 0 -1.5707 0</pose>
<texture>stereo_projection_pattern_high_res_red.png</texture>
<fov>0.959931088597</fov>
<near_clip>0.1</near_clip>
<far_clip>10</far_clip>
</projector>
</gazebo>
<gazebo>
<pluginfilename="libgazebo_ros_projector.so"name="projector_wg6802418_controller">
<projector>projector_wg6802418_child_frame/projector_wg6802418_projector_wg6802418</projector>
<alwaysOn>true</alwaysOn>
<updateRate>15.0</updateRate>
<textureName>stereo_projection_pattern_high_res_red.png</textureName>
<filterTextureName>stereo_projection_pattern_filter.png</filterTextureName>
<textureTopicName>projector_wg6802418_controller/image</textureTopicName>
<projectorTopicName>projector_wg6802418_controller/projector</projectorTopicName>
</plugin>
</gazebo>
<jointname="laser_tilt_mount_joint"type="revolute">
<axisxyz="0 1 0"/>
<limiteffort="0.65"lower="-0.7854"upper="1.48353"velocity="10.0"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="0.05"soft_lower_limit="-0.7354"soft_upper_limit="1.43353"/>
<calibrationfalling="0.0"/>
<dynamicsdamping="0.008"/>
<originrpy="0 0 0"xyz="0.09893 0 0.227"/>
<parentlink="torso_lift_link"/>
<childlink="laser_tilt_mount_link"/>
</joint>
<linkname="laser_tilt_mount_link">
<inertial>
<massvalue="0.591"/>
<originrpy="0 0 0"xyz="-0.001136 0.00167 -0.00713"/>
<inertiaixx="0.001195273"ixy="0.000023087"ixz="0.000037467"iyy="0.001083956"iyz="0.000034906"izz="0.000795014"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/tilting_laser_v0/tilting_hokuyo.dae"/>
</geometry>
<materialname="Red"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/tilting_laser_v0/tilting_hokuyo_L.stl"/>
</geometry>
</collision>
</link>
<jointname="laser_tilt_joint"type="fixed">
<axisxyz="0 1 0"/>
<originrpy="0 0 0"xyz="0 0 0.03"/>
<parentlink="laser_tilt_mount_link"/>
<childlink="laser_tilt_link"/>
</joint>
<linkname="laser_tilt_link"type="laser">
<inertial>
<massvalue="0.001"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.0001"ixy="0"ixz="0"iyy="0.000001"iyz="0"izz="0.0001"/>
</inertial>
</link>
<gazeboreference="laser_tilt_link">
<sensorname="laser_tilt"type="ray">
<always_on>true</always_on>
<update_rate>40</update_rate>
<pose>0 0 0 0 0 0</pose>
<visualize>false</visualize>
<ray>
<scan>
<horizontal>
<samples>640</samples>
<resolution>1</resolution>
<min_angle>-1.3962634</min_angle>
<max_angle>1.3962634</max_angle>
</horizontal>
</scan>
<range>
<min>0.08</min>
<max>10.0</max>
<resolution>0.01</resolution>
</range>
</ray>
<pluginfilename="libgazebo_ros_laser.so"name="gazebo_ros_laser_tilt_controller">
<gaussianNoise>0.005</gaussianNoise>
<alwaysOn>true</alwaysOn>
<updateRate>40</updateRate>
<topicName>tilt_scan</topicName>
<frameName>laser_tilt_link</frameName>
<hokuyoMinIntensity>101</hokuyoMinIntensity>
</plugin>
</sensor>
</gazebo>
<gazeboreference="laser_tilt_mount_link">
</gazebo>
<transmissionname="laser_tilt_mount_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="laser_tilt_mount_motor"/>
<jointname="laser_tilt_mount_joint"/>
<mechanicalReduction>-6.05</mechanicalReduction>
</transmission>
<!-- Shoulder pan -->
<jointname="r_shoulder_pan_joint"type="revolute">
<axisxyz="0 0 1"/>
<originrpy="0 0 0"xyz="0.0 -0.188 0.0"/>
<!-- transform from parent link to this joint frame -->
<parentlink="torso_lift_link"/>
<childlink="r_shoulder_pan_link"/>
<limiteffort="30"lower="-2.2853981634"upper="0.714601836603"velocity="2.088"/>
<!-- alpha tested velocity and effort limits -->
<dynamicsdamping="10.0"/>
<safety_controllerk_position="100"k_velocity="10"soft_lower_limit="-2.1353981634"soft_upper_limit="0.564601836603"/>
<!-- joint angle when the rising or the falling flag is activated on PR2 -->
<calibrationrising="-0.785398163397"/>
</joint>
<linkname="r_shoulder_pan_link">
<inertial>
<massvalue="25.799322"/>
<originrpy="0 0 0"xyz="-0.001201 0.024513 -0.098231"/>
<inertiaixx="0.866179142480"ixy="-0.06086507933"ixz="-0.12118061183"iyy="0.87421714893"iyz="-0.05886609911"izz="0.27353821674"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_pan.dae"/>
</geometry>
<materialname="Blue"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0.0 0 0.0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_pan.stl"/>
</geometry>
</collision>
</link>
<!-- Shoulder lift -->
<jointname="r_shoulder_lift_joint"type="revolute">
<axisxyz="0 1 0"/>
<!-- Limits updated from Function's CAD values as of 2009_02_24 (link_data.xls) -->
<limiteffort="30"lower="-0.5236"upper="1.3963"velocity="2.082"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="10"soft_lower_limit="-0.3536"soft_upper_limit="1.2963"/>
<calibrationfalling="0.0"/>
<dynamicsdamping="10.0"/>
<originrpy="0 0 0"xyz="0.1 0 0"/>
<parentlink="r_shoulder_pan_link"/>
<childlink="r_shoulder_lift_link"/>
</joint>
<linkname="r_shoulder_lift_link">
<inertial>
<massvalue="2.74988"/>
<originrpy="0 0 0"xyz="0.02195 -0.02664 -0.03127"/>
<inertiaixx="0.02105584615"ixy="0.00496704022"ixz="-0.00194808955"iyy="0.02127223737"iyz="0.00110425490"izz="0.01975753814"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_lift.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_lift.stl"/>
</geometry>
</collision>
</link>
<jointname="r_upper_arm_roll_joint"type="revolute">
<axisxyz="1 0 0"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="r_shoulder_lift_link"/>
<childlink="r_upper_arm_roll_link"/>
<limiteffort="30"lower="-3.9"upper="0.8"velocity="3.27"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="2"soft_lower_limit="-3.75"soft_upper_limit="0.65"/>
<calibrationrising="-1.57079632679"/>
<dynamicsdamping="0.1"/>
</joint>
<linkname="r_upper_arm_roll_link">
<inertial>
<!-- dummy mass, to be removed -->
<massvalue="0.1"/>
<originrpy="0 0 0"xyz="0.0 0 0"/>
<inertiaixx="0.01"ixy="0.00"ixz="0.00"iyy="0.01"iyz="0.00"izz="0.01"/>
</inertial>
<visual>
<!-- TODO: This component doesn't actually have a mesh -->
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/upper_arm_roll.stl"/>
</geometry>
<materialname="RollLinks"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/upper_arm_roll_L.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="r_upper_arm_roll_link">
<materialvalue="PR2/RollLinks"/>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="r_upper_arm_roll_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
<fudgeFactorvalue="0.5"/>
</gazebo>
<!-- Upperarm roll: internal fixed attchment point for upper arm -->
<transmissionname="r_upper_arm_roll_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="r_upper_arm_roll_motor"/>
<jointname="r_upper_arm_roll_joint"/>
<mechanicalReduction>32.6525111499</mechanicalReduction>
</transmission>
<!-- Shoulder pan -->
<gazeboreference="r_shoulder_pan_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="r_shoulder_pan_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Shoulder lift -->
<gazeboreference="r_shoulder_lift_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="r_shoulder_lift_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Shoulder pan -->
<transmissionname="r_shoulder_pan_trans"type="pr2_mechanism_model/SimpleTransmission">
<jointname="r_shoulder_pan_joint"/>
<actuatorname="r_shoulder_pan_motor"/>
<mechanicalReduction>63.1552452977</mechanicalReduction>
<compensatork_belt="4000.0"kd_motor="15.0"lambda_combined="0.0"lambda_joint="40.0"lambda_motor="40.0"mass_motor="0.05"/>
</transmission>
<!-- Shoulder lift -->
<transmissionname="r_shoulder_lift_trans"type="pr2_mechanism_model/SimpleTransmission">
<jointname="r_shoulder_lift_joint"/>
<actuatorname="r_shoulder_lift_motor"/>
<mechanicalReduction>61.8948225713</mechanicalReduction>
<compensatork_belt="4000.0"kd_motor="10.0"lambda_combined="0.0"lambda_joint="60.0"lambda_motor="60.0"mass_motor="0.05"/>
</transmission>
<jointname="r_upper_arm_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="r_upper_arm_roll_link"/>
<childlink="r_upper_arm_link"/>
</joint>
<linkname="r_upper_arm_link">
<inertial>
<!-- NOTE:reflect==-1 for right side, reflect==1 for the left side -->
<massvalue="6.01769"/>
<originxyz="0.21398 -0.01621 -0.0002"/>
<inertiaixx="0.01537748957"ixy="0.00375711247"ixz="-0.00070852914"iyy="0.0747367044"iyz="-0.0001793645"izz="0.07608763307"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/upper_arm.dae"/>
</geometry>
<materialname="Green"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/upper_arm.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="r_upper_arm_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<!-- Has upperarm link --><!-- No transmission, since this a fixed joint w/o actuator --><!-- forearm_roll_link is a fictitious link internal to elbow_flex_link, provides an attachment point for the actual forearm -->
<jointname="r_forearm_roll_joint"type="continuous">
<axisxyz="1 0 0"/>
<limiteffort="30"velocity="3.6"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="1"/>
<calibrationrising="0.0"/>
<dynamicsdamping="0.1"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="r_elbow_flex_link"/>
<childlink="r_forearm_roll_link"/>
</joint>
<!-- TODO: inertial tag should be optional -->
<linkname="r_forearm_roll_link">
<inertial>
<!-- dummy masses, to be removed -->
<massvalue="0.1"/>
<originxyz="0 0 0"/>
<inertiaixx="0.01"ixy="0.00"ixz="0.00"iyy="0.01"iyz="0.00"izz="0.01"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/forearm_roll.stl"/>
</geometry>
<materialname="RollLinks"/>
</visual>
<!-- TODO: collision tag should be optional -->
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/forearm_roll_L.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="r_forearm_roll_link">
<materialvalue="PR2/RollLinks"/>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="r_forearm_roll_joint">
<fudgeFactorvalue="0.5"/>
</gazebo>
<transmissionname="r_forearm_roll_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="r_forearm_roll_motor"/>
<jointname="r_forearm_roll_joint"/>
<mechanicalReduction>-90.5142857143</mechanicalReduction>
</transmission>
<!-- Elbow flex -->
<jointname="r_elbow_flex_joint"type="revolute">
<axisxyz="0 1 0"/>
<!-- Note: Overtravel limits are 140, -7 degrees instead of 133, 0 -->
<limiteffort="30"lower="-2.3213"upper="0.00"velocity="3.3"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="3"soft_lower_limit="-2.1213"soft_upper_limit="-0.15"/>
<calibrationfalling="-1.1606"/>
<dynamicsdamping="1.0"/>
<originrpy="0 0 0"xyz="0.4 0 0"/>
<parentlink="r_upper_arm_link"/>
<childlink="r_elbow_flex_link"/>
</joint>
<linkname="r_elbow_flex_link">
<inertial>
<massvalue="1.90327"/>
<originxyz="0.01014 0.00032 -0.01211"/>
<inertiaixx="0.00346541989"ixy="0.00004066825"ixz="0.00043171614"iyy="0.00441606455"iyz="-0.00003968914"izz="0.00359156824"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/elbow_flex.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/elbow_flex.stl"/>
</geometry>
</collision>
</link>
<!-- testing initial joint position, to be parsed at urdf2gazebo parse time -> <gazebo reference="${side}_elbow_flex_joint"> <initial_joint_position>-1.0</initial_joint_position> </gazebo>-->
<gazeboreference="r_elbow_flex_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="r_elbow_flex_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Elbow flex -->
<transmissionname="r_elbow_flex_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="r_elbow_flex_motor"/>
<jointname="r_elbow_flex_joint"/>
<mechanicalReduction>-36.167452007</mechanicalReduction>
</transmission>
<jointname="r_forearm_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<!-- transform from parent link to this joint frame -->
<parentlink="r_forearm_roll_link"/>
<childlink="r_forearm_link"/>
</joint>
<linkname="r_forearm_link">
<inertial>
<massvalue="2.57968"/>
<originxyz="0.18791 -0.00017 -0.00912"/>
<inertiaixx="0.00364857222"ixy="0.00005215877"ixz="0.00071534842"iyy="0.01507736897"iyz="-0.00001310770"izz="0.01659310749"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/forearm.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/forearm.stl"/>
</geometry>
</collision>
</link>
<!-- Wrist flex -->
<jointname="r_wrist_flex_joint"type="revolute">
<axisxyz="0 1 0"/>
<limiteffort="10"lower="-2.18"upper="0.0"velocity="3.078"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="20"k_velocity="4"soft_lower_limit="-2.0"soft_upper_limit="-0.1"/>
<dynamicsdamping="0.1"/>
<calibrationfalling="-0.5410521"/>
<originrpy="0 0 0"xyz="0.321 0 0"/>
<parentlink="r_forearm_link"/>
<childlink="r_wrist_flex_link"/>
</joint>
<linkname="r_wrist_flex_link">
<inertial>
<massvalue="0.61402"/>
<originxyz="-0.00157 0.0 -0.00075"/>
<inertiaixx="0.00065165722"ixy="0.00000028864"ixz="0.00000303477"iyy="0.00019824443"iyz="-0.00000022645"izz="0.00064450498"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_flex.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_flex.stl"/>
</geometry>
</collision>
</link>
<!-- Wrist roll -->
<jointname="r_wrist_roll_joint"type="continuous">
<axisxyz="1 0 0"/>
<limiteffort="10"velocity="3.6"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="2"/>
<dynamicsdamping="0.1"/>
<calibrationrising="-1.57079632679"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="r_wrist_flex_link"/>
<childlink="r_wrist_roll_link"/>
</joint>
<linkname="r_wrist_roll_link">
<inertial>
<!-- dummy masses, to be removed. wrist roll masses are on "gripper_palm" -->
<massvalue="0.1"/>
<originxyz="0 0 0"/>
<inertiaixx="0.01"ixy="0"ixz="0"iyy="0.01"iyz="0"izz="0.01"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_roll.stl"/>
</geometry>
<materialname="RollLinks"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_roll_L.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="r_forearm_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<!-- Wrist flex -->
<gazeboreference="r_wrist_flex_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="r_wrist_flex_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Wrist roll -->
<gazeboreference="r_wrist_roll_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/RollLinks"/>
</gazebo>
<gazeboreference="r_wrist_roll_joint">
<fudgeFactorvalue="0.5"/>
</gazebo>
<!-- Wrist flex , Wrist roll -->
<transmissionname="r_wrist_trans"type="pr2_mechanism_model/WristTransmission">
<rightActuatormechanicalReduction="60.1714285714"name="r_wrist_r_motor"/>
<leftActuatormechanicalReduction="60.1714285714"name="r_wrist_l_motor"/>
<flexJointmechanicalReduction="-1.0"name="r_wrist_flex_joint"/>
<rollJointmechanicalReduction="1.0"name="r_wrist_roll_joint"/>
</transmission>
<jointname="r_gripper_palm_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="r_wrist_roll_link"/>
<childlink="r_gripper_palm_link"/>
</joint>
<linkname="r_gripper_palm_link">
<inertial>
<massvalue="0.58007"/>
<originrpy="0 0 0"xyz="0.06623 0.00053 -0.00119"/>
<inertiaixx="0.00035223921"ixy="-0.00001580476"ixz="-0.00000091750"iyy="0.00067741312"iyz="-0.00000059554"izz="0.00086563316"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/gripper_palm.dae"/>
</geometry>
<materialname="Red"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/gripper_palm.stl"/>
</geometry>
</collision>
</link>
<jointname="r_gripper_led_joint"type="fixed">
<!-- Need to check if we need a positive or negative Z term -->
<originxyz="0.0513 0.0 .0244"/>
<parentlink="r_gripper_palm_link"/>
<childlink="r_gripper_led_frame"/>
</joint>
<linkname="r_gripper_led_frame"/>
<jointname="r_gripper_motor_accelerometer_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="r_gripper_palm_link"/>
<childlink="r_gripper_motor_accelerometer_link"/>
</joint>
<linkname="r_gripper_motor_accelerometer_link">
<inertial>
<massvalue="0.001"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<jointname="r_gripper_tool_joint"type="fixed">
<originrpy="0 0 0"xyz="0.18 0 0"/>
<parentlink="r_gripper_palm_link"/>
<childlink="r_gripper_tool_frame"/>
</joint>
<linkname="r_gripper_tool_frame"/>
<!-- actuated motor screw joint -->
<linkname="r_gripper_motor_slider_link">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
<!-- for debugging only <visual> <origin xyz="0 0 0" rpy="1.5708 0 0" /> <geometry> <cylinder length="0.002" radius="0.025"/> </geometry> </visual> <collision> <origin xyz="0 0 0" rpy="1.5708 0 0" /> <geometry> <cylinder length="0.002" radius="0.025"/> </geometry> </collision>-->
</link>
<jointname="r_gripper_motor_slider_joint"type="prismatic">
<originrpy="0 0 0"xyz="0.16828 0 0"/>
<axisxyz="1 0 0"/>
<parentlink="r_gripper_palm_link"/>
<childlink="r_gripper_motor_slider_link"/>
<limiteffort="1000.0"lower="-0.1"upper="0.1"velocity="0.2"/>
</joint>
<linkname="r_gripper_motor_screw_link">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.0001"ixy="0.0"ixz="0.0"iyy="0.0001"iyz="0.0"izz="0.0001"/>
</inertial>
<!-- for debugging only <visual> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <box size="0.05 0.001 0.05" /> </geometry> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <box size="0.05 0.001 0.05" /> </geometry> </collision>-->
</link>
<jointname="r_gripper_motor_screw_joint"type="continuous">
<originrpy="0 0 0"xyz="0.0 0 0"/>
<axisxyz="0 1 0"/>
<parentlink="r_gripper_motor_slider_link"/>
<childlink="r_gripper_motor_screw_link"/>
<dynamicsdamping="0.0001"/>
</joint>
<!-- Finger proximal digit -->
<jointname="r_gripper_l_finger_joint"type="revolute">
<axisxyz="0 0 1"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.02"/>
<originrpy="0 0 0"xyz="0.07691 0.01 0"/>
<parentlink="r_gripper_palm_link"/>
<childlink="r_gripper_l_finger_link"/>
</joint>
<linkname="r_gripper_l_finger_link">
<inertial>
<massvalue="0.17126"/>
<originrpy="0 0 0"xyz="0.03598 0.01730 -0.00164"/>
<inertiaixx="0.00007756198"ixy="0.00000149095"ixz="-0.00000983385"iyy="0.00019708305"iyz="-0.00000306125"izz="0.00018105446"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.stl"/>
</geometry>
</collision>
</link>
<!-- Finger proximal digit -->
<jointname="r_gripper_r_finger_joint"type="revolute">
<axisxyz="0 0 -1"/>
<originrpy="0 0 0"xyz="0.07691 -0.01 0"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.02"/>
<mimicjoint="r_gripper_l_finger_joint"multiplier="1"offset="0"/>
<parentlink="r_gripper_palm_link"/>
<childlink="r_gripper_r_finger_link"/>
</joint>
<linkname="r_gripper_r_finger_link">
<inertial>
<massvalue="0.17389"/>
<originrpy="0 0 0"xyz="0.03576 -0.01736 -0.00095"/>
<inertiaixx="0.00007738410"ixy="-0.00000209309"ixz="-0.00000836228"iyy="0.00019847383"iyz="0.00000246110"izz="0.00018106988"/>
</inertial>
<visual>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.stl"/>
</geometry>
</collision>
</link>
<!-- Finger tip -->
<jointname="r_gripper_l_finger_tip_joint"type="revolute">
<axisxyz="0 0 -1"/>
<originrpy="0 0 0"xyz="0.09137 0.00495 0"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.001"/>
<mimicjoint="r_gripper_l_finger_joint"multiplier="1"offset="0"/>
<parentlink="r_gripper_l_finger_link"/>
<childlink="r_gripper_l_finger_tip_link"/>
</joint>
<linkname="r_gripper_l_finger_tip_link">
<inertial>
<massvalue="0.04419"/>
<originrpy="0 0 0"xyz="0.00423 0.00284 0.0"/>
<inertiaixx="0.00000837047"ixy="0.00000583632"ixz="0.0"iyy="0.00000987067"iyz="0.0"izz="0.00001541768"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.dae"/>
</geometry>
<materialname="Green"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.stl"/>
</geometry>
</collision>
</link>
<!-- Finger tip -->
<jointname="r_gripper_r_finger_tip_joint"type="revolute">
<axisxyz="0 0 1"/>
<originrpy="0 0 0"xyz="0.09137 -0.00495 0"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.001"/>
<mimicjoint="r_gripper_l_finger_joint"multiplier="1"offset="0"/>
<parentlink="r_gripper_r_finger_link"/>
<childlink="r_gripper_r_finger_tip_link"/>
</joint>
<linkname="r_gripper_r_finger_tip_link">
<inertial>
<massvalue="0.04419"/>
<originrpy="0 0 0"xyz="0.00423 -0.00284 0.0"/>
<inertiaixx="0.00000837047"ixy="-0.00000583632"ixz="0.0"iyy="0.00000987067"iyz="0.0"izz="0.00001541768"/>
</inertial>
<visual>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.dae"/>
</geometry>
<materialname="Green"/>
</visual>
<collision>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.stl"/>
</geometry>
</collision>
</link>
<!-- Finger proximal digit -->
<gazeboreference="r_gripper_l_finger_link">
<turnGravityOff>true</turnGravityOff>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<!-- for "${prefix}_l_finger_joint"-->
</gazebo>
<gazeboreference="r_gripper_l_finger_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- Finger proximal digit -->
<gazeboreference="r_gripper_r_finger_link">
<turnGravityOff>true</turnGravityOff>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
</gazebo>
<gazeboreference="r_gripper_r_finger_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- Finger tip -->
<gazeboreference="r_gripper_l_finger_tip_link">
<turnGravityOff>true</turnGravityOff>
<selfCollide>false</selfCollide>
<sensorname="r_gripper_l_finger_tip_contact_sensor"type="contact">
<update_rate>100.0</update_rate>
<contact>
<collision>r_gripper_l_finger_tip_link_collision</collision>
</contact>
<pluginfilename="libgazebo_ros_bumper.so"name="r_gripper_l_finger_tip_gazebo_ros_bumper_controller">
<alwaysOn>true</alwaysOn>
<frameName>r_gripper_l_finger_tip_link</frameName>
<updateRate>100.0</updateRate>
<bumperTopicName>r_gripper_l_finger_tip_bumper</bumperTopicName>
</plugin>
</sensor>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="10000000.0"/>
<kdvalue="1.0"/>
</gazebo>
<gazeboreference="r_gripper_l_finger_tip_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- Finger tip -->
<gazeboreference="r_gripper_r_finger_tip_link">
<turnGravityOff>true</turnGravityOff>
<selfCollide>false</selfCollide>
<sensorname="r_gripper_r_finger_tip_contact_sensor"type="contact">
<update_rate>100.0</update_rate>
<contact>
<collision>r_gripper_r_finger_tip_link_collision</collision>
</contact>
<pluginfilename="libgazebo_ros_bumper.so"name="r_gripper_r_finger_tip_gazebo_ros_bumper_controller">
<alwaysOn>true</alwaysOn>
<frameName>r_gripper_r_finger_tip_link</frameName>
<updateRate>100.0</updateRate>
<bumperTopicName>r_gripper_r_finger_tip_bumper</bumperTopicName>
</plugin>
</sensor>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="10000000.0"/>
<kdvalue="1.0"/>
</gazebo>
<gazebo>
<pluginfilename="libgazebo_ros_p3d.so"name="p3d_r_gripper_l_finger_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>r_gripper_l_finger_link</bodyName>
<topicName>r_gripper_l_finger_pose_ground_truth</topicName>
<gaussianNoise>0.0</gaussianNoise>
<frameName>base_link</frameName>
</plugin>
<pluginfilename="libgazebo_ros_f3d.so"name="f3d_r_gripper_l_finger_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>r_gripper_l_finger_link</bodyName>
<topicName>r_gripper_l_finger_force_ground_truth</topicName>
</plugin>
</gazebo>
<gazeboreference="r_gripper_r_finger_tip_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- parallel link for simulating gripper constraints -->
<gazebo>
<linkname="r_gripper_l_parallel_link">
<inertial>
<mass>0.17126</mass>
<inertia>
<ixx>7.7562e-05</ixx>
<ixy>1.49095e-06</ixy>
<ixz>-9.83385e-06</ixz>
<iyy>0.000197083</iyy>
<iyz>-3.06125e-06</iyz>
<izz>0.000181054</izz>
</inertia>
<pose>0.03598 0.0173 -0.00164 0 0 0</pose>
</inertial>
<pose>0.82991 -0.157 0.790675 0 -0 0</pose>
<gravity>false</gravity>
</link>
<linkname="r_gripper_r_parallel_link">
<inertial>
<mass>0.17389</mass>
<inertia>
<ixx>7.73841e-05</ixx>
<ixy>-2.09309e-06</ixy>
<ixz>-8.36228e-06</ixz>
<iyy>0.000198474</iyy>
<iyz>2.4611e-06</iyz>
<izz>0.00018107</izz>
</inertia>
<pose>0.03576 -0.01736 -0.00095 0 0 0</pose>
</inertial>
<pose>0.82991 -0.219 0.790675 0 0 0</pose>
<gravity>false</gravity>
</link>
</gazebo>
<gazebo>
<jointname="r_gripper_r_screw_screw_joint"type="screw">
<child>r_gripper_motor_screw_link</child>
<parent>r_gripper_r_finger_tip_link</parent>
<thread_pitch>-3141.6</thread_pitch>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
<jointname="r_gripper_l_screw_screw_joint"type="screw">
<parent>r_gripper_l_finger_tip_link</parent>
<child>r_gripper_motor_screw_link</child>
<thread_pitch>3141.6</thread_pitch>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
</gazebo>
<gazebo>
<jointname="r_gripper_r_parallel_root_joint"type="revolute">
<parent>r_gripper_r_parallel_link</parent>
<child>r_gripper_palm_link</child>
<axis>
<xyz>0 0 -1</xyz>
<dynamics>
<damping>0.2</damping>
</dynamics>
</axis>
<pose>0.05891 -0.031 0 0 0 0</pose>
</joint>
<jointname="r_gripper_l_parallel_root_joint"type="revolute">
<parent>r_gripper_l_parallel_link</parent>
<child>r_gripper_palm_link</child>
<axis>
<xyz>0 0 1</xyz>
<dynamics>
<damping>0.2</damping>
</dynamics>
</axis>
<pose>0.05891 0.031 0 0 0 0</pose>
</joint>
<jointname="r_gripper_r_parallel_tip_joint"type="revolute">
<parent>r_gripper_r_parallel_link</parent>
<child>r_gripper_r_finger_tip_link</child>
<axis>
<xyz>0 0 1</xyz>
</axis>
<pose>-0.018 -0.021 0 0 0 0</pose>
</joint>
<jointname="r_gripper_l_parallel_tip_joint"type="revolute">
<parent>r_gripper_l_parallel_link</parent>
<child>r_gripper_l_finger_tip_link</child>
<axis>
<xyz>0 0 1</xyz>
</axis>
<pose>-0.018 0.021 0 0 0 0</pose>
</joint>
<jointname="r_gripper_joint"type="prismatic">
<parent>r_gripper_r_finger_tip_link</parent>
<child>r_gripper_l_finger_tip_link</child>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
</gazebo>
<gazeboreference="r_gripper_motor_slider_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<gazeboreference="r_gripper_motor_screw_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<gazeboreference="r_gripper_l_parallel_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<gazeboreference="r_gripper_r_parallel_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<!-- fictitous joint that represents the gripper gap --><!-- effort is the linear force at the gripper gap velocity limit is the linear velocity limit at the gripper gap try and introduce a very stiff spring The velocity limits are alpha tested. The effort limits are somewhat inflated. k_velocity was recently raised from 500.0 to 5000.0. Tested on beta-->
<jointname="r_gripper_joint"type="prismatic">
<parentlink="r_gripper_r_finger_tip_link"/>
<childlink="r_gripper_l_finger_tip_frame"/>
<axisxyz="0 1 0"/>
<dynamicsdamping="10.0"/>
<limiteffort="1000.0"lower="0.0"upper="0.09"velocity="0.2"/>
<safety_controllerk_position="20.0"k_velocity="5000.0"soft_lower_limit="-0.01"soft_upper_limit="0.088"/>
</joint>
<!-- This link is the same as the l_finger_tip_link, but because the urdf does not support graph structures, this link exists twice -->
<linkname="r_gripper_l_finger_tip_frame"/>
<gazeboreference="r_gripper_palm_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo>
<pluginfilename="libgazebo_ros_p3d.so"name="p3d_r_gripper_palm_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>r_gripper_palm_link</bodyName>
<topicName>r_gripper_palm_pose_ground_truth</topicName>
<xyzOffsets>0 0 0</xyzOffsets>
<rpyOffsets>0 0 0</rpyOffsets>
<gaussianNoise>0.0</gaussianNoise>
<frameName>map</frameName>
</plugin>
<!-- a formal implementation of grasp hack in gazebo with fixed joint -->
<grippername="r_grasp_hack">
<grasp_check>
<attach_steps>20</attach_steps>
<detach_steps>40</detach_steps>
<min_contact_count>2</min_contact_count>
</grasp_check>
<gripper_link>r_gripper_r_finger_tip_link</gripper_link>
<gripper_link>r_gripper_l_finger_tip_link</gripper_link>
<palm_link>r_gripper_palm_link</palm_link>
</gripper>
</gazebo>
<!-- [lr]_gripper_joint is a fictitious joint, used by transmission for controller gap --><!-- [lr]_gripper_joint is not attached to any link --><!-- [lr]_gripper_joint position is the gap_size --><!-- [lr]_gripper_joint velocity is the gap linear velocity --><!-- [lr]_gripper_joint effort is the gap linear force --><!-- Please refer to function engineering spreadsheet 090224_link_data.xls for --><!-- the transmission function. --><!-- Please refer to mechanism_model/src/pr2_gripper_transmission.cpp for implementation.--><!-- gazebo_mimic_pid is for sim only. -->
<transmissionname="r_gripper_trans"type="pr2_mechanism_model/PR2GripperTransmission">
<actuatorname="r_gripper_motor"/>
<gap_jointL0="0.0375528"a="0.0683698"b="0.0433849"gear_ratio="40.095"h="0.0"mechanical_reduction="1.0"name="r_gripper_joint"phi0="0.518518122146"r="0.0915"screw_reduction="0.004"t0="-0.0001914"theta0="0.0628824676201"/>
<!-- if a gazebo joint exists as [l|r]_gripper_joint, use this tag to have gripper transmission apply torque directly to prismatic joint this should be the default behavior in diamondback, deprecating this flag -->
<use_simulated_gripper_joint/>
<!-- set passive joint angles so things look nice in rviz -->
<passive_jointname="r_gripper_l_finger_joint"/>
<passive_jointname="r_gripper_r_finger_joint"/>
<passive_jointname="r_gripper_r_finger_tip_joint"/>
<passive_jointname="r_gripper_l_finger_tip_joint"/>
<!-- screw joint to capture gripper "dynamics" -->
<simulated_actuated_jointname="r_gripper_motor_screw_joint"passive_actuated_joint="r_gripper_motor_slider_joint"simulated_reduction="3141.6"/>
</transmission>
<!-- Shoulder pan -->
<jointname="l_shoulder_pan_joint"type="revolute">
<axisxyz="0 0 1"/>
<originrpy="0 0 0"xyz="0.0 0.188 0.0"/>
<!-- transform from parent link to this joint frame -->
<parentlink="torso_lift_link"/>
<childlink="l_shoulder_pan_link"/>
<limiteffort="30"lower="-0.714601836603"upper="2.2853981634"velocity="2.088"/>
<!-- alpha tested velocity and effort limits -->
<dynamicsdamping="10.0"/>
<safety_controllerk_position="100"k_velocity="10"soft_lower_limit="-0.564601836603"soft_upper_limit="2.1353981634"/>
<!-- joint angle when the rising or the falling flag is activated on PR2 -->
<calibrationrising="0.785398163397"/>
</joint>
<linkname="l_shoulder_pan_link">
<inertial>
<massvalue="25.799322"/>
<originrpy="0 0 0"xyz="-0.001201 0.024513 -0.098231"/>
<inertiaixx="0.866179142480"ixy="-0.06086507933"ixz="-0.12118061183"iyy="0.87421714893"iyz="-0.05886609911"izz="0.27353821674"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_pan.dae"/>
</geometry>
<materialname="Blue"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0.0 0 0.0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_pan.stl"/>
</geometry>
</collision>
</link>
<!-- Shoulder lift -->
<jointname="l_shoulder_lift_joint"type="revolute">
<axisxyz="0 1 0"/>
<!-- Limits updated from Function's CAD values as of 2009_02_24 (link_data.xls) -->
<limiteffort="30"lower="-0.5236"upper="1.3963"velocity="2.082"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="10"soft_lower_limit="-0.3536"soft_upper_limit="1.2963"/>
<calibrationfalling="0.0"/>
<dynamicsdamping="10.0"/>
<originrpy="0 0 0"xyz="0.1 0 0"/>
<parentlink="l_shoulder_pan_link"/>
<childlink="l_shoulder_lift_link"/>
</joint>
<linkname="l_shoulder_lift_link">
<inertial>
<massvalue="2.74988"/>
<originrpy="0 0 0"xyz="0.02195 -0.02664 -0.03127"/>
<inertiaixx="0.02105584615"ixy="0.00496704022"ixz="-0.00194808955"iyy="0.02127223737"iyz="0.00110425490"izz="0.01975753814"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_lift.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/shoulder_lift.stl"/>
</geometry>
</collision>
</link>
<jointname="l_upper_arm_roll_joint"type="revolute">
<axisxyz="1 0 0"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="l_shoulder_lift_link"/>
<childlink="l_upper_arm_roll_link"/>
<limiteffort="30"lower="-0.8"upper="3.9"velocity="3.27"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="2"soft_lower_limit="-0.65"soft_upper_limit="3.75"/>
<calibrationrising="1.57079632679"/>
<dynamicsdamping="0.1"/>
</joint>
<linkname="l_upper_arm_roll_link">
<inertial>
<!-- dummy mass, to be removed -->
<massvalue="0.1"/>
<originrpy="0 0 0"xyz="0.0 0 0"/>
<inertiaixx="0.01"ixy="0.00"ixz="0.00"iyy="0.01"iyz="0.00"izz="0.01"/>
</inertial>
<visual>
<!-- TODO: This component doesn't actually have a mesh -->
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/upper_arm_roll.stl"/>
</geometry>
<materialname="RollLinks"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/shoulder_v0/upper_arm_roll_L.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="l_upper_arm_roll_link">
<materialvalue="PR2/RollLinks"/>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="l_upper_arm_roll_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
<fudgeFactorvalue="0.5"/>
</gazebo>
<!-- Upperarm roll: internal fixed attchment point for upper arm -->
<transmissionname="l_upper_arm_roll_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="l_upper_arm_roll_motor"/>
<jointname="l_upper_arm_roll_joint"/>
<mechanicalReduction>32.6525111499</mechanicalReduction>
</transmission>
<!-- Shoulder pan -->
<gazeboreference="l_shoulder_pan_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="l_shoulder_pan_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Shoulder lift -->
<gazeboreference="l_shoulder_lift_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="l_shoulder_lift_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Shoulder pan -->
<transmissionname="l_shoulder_pan_trans"type="pr2_mechanism_model/SimpleTransmission">
<jointname="l_shoulder_pan_joint"/>
<actuatorname="l_shoulder_pan_motor"/>
<mechanicalReduction>63.1552452977</mechanicalReduction>
<compensatork_belt="4000.0"kd_motor="15.0"lambda_combined="0.0"lambda_joint="40.0"lambda_motor="40.0"mass_motor="0.05"/>
</transmission>
<!-- Shoulder lift -->
<transmissionname="l_shoulder_lift_trans"type="pr2_mechanism_model/SimpleTransmission">
<jointname="l_shoulder_lift_joint"/>
<actuatorname="l_shoulder_lift_motor"/>
<mechanicalReduction>61.8948225713</mechanicalReduction>
<compensatork_belt="4000.0"kd_motor="10.0"lambda_combined="0.0"lambda_joint="60.0"lambda_motor="60.0"mass_motor="0.05"/>
</transmission>
<jointname="l_upper_arm_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="l_upper_arm_roll_link"/>
<childlink="l_upper_arm_link"/>
</joint>
<linkname="l_upper_arm_link">
<inertial>
<!-- NOTE:reflect==-1 for right side, reflect==1 for the left side -->
<massvalue="6.01769"/>
<originxyz="0.21405 0.01658 -0.00057"/>
<inertiaixx="0.01530603856"ixy="-0.00339324862"ixz="0.00060765455"iyy="0.07473694455"iyz="-0.00019953729"izz="0.07601594191"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/upper_arm.dae"/>
</geometry>
<materialname="Green"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/upper_arm.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="l_upper_arm_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<!-- Has upperarm link --><!-- No transmission, since this a fixed joint w/o actuator --><!-- forearm_roll_link is a fictitious link internal to elbow_flex_link, provides an attachment point for the actual forearm -->
<jointname="l_forearm_roll_joint"type="continuous">
<axisxyz="1 0 0"/>
<limiteffort="30"velocity="3.6"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="1"/>
<calibrationrising="0.0"/>
<dynamicsdamping="0.1"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="l_elbow_flex_link"/>
<childlink="l_forearm_roll_link"/>
</joint>
<!-- TODO: inertial tag should be optional -->
<linkname="l_forearm_roll_link">
<inertial>
<!-- dummy masses, to be removed -->
<massvalue="0.1"/>
<originxyz="0 0 0"/>
<inertiaixx="0.01"ixy="0.00"ixz="0.00"iyy="0.01"iyz="0.00"izz="0.01"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/forearm_roll.stl"/>
</geometry>
<materialname="RollLinks"/>
</visual>
<!-- TODO: collision tag should be optional -->
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/forearm_roll_L.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="l_forearm_roll_link">
<materialvalue="PR2/RollLinks"/>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="l_forearm_roll_joint">
<fudgeFactorvalue="0.5"/>
</gazebo>
<transmissionname="l_forearm_roll_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="l_forearm_roll_motor"/>
<jointname="l_forearm_roll_joint"/>
<mechanicalReduction>-90.5142857143</mechanicalReduction>
</transmission>
<!-- Elbow flex -->
<jointname="l_elbow_flex_joint"type="revolute">
<axisxyz="0 1 0"/>
<!-- Note: Overtravel limits are 140, -7 degrees instead of 133, 0 -->
<limiteffort="30"lower="-2.3213"upper="0.00"velocity="3.3"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="100"k_velocity="3"soft_lower_limit="-2.1213"soft_upper_limit="-0.15"/>
<calibrationfalling="-1.1606"/>
<dynamicsdamping="1.0"/>
<originrpy="0 0 0"xyz="0.4 0 0"/>
<parentlink="l_upper_arm_link"/>
<childlink="l_elbow_flex_link"/>
</joint>
<linkname="l_elbow_flex_link">
<inertial>
<massvalue="1.90327"/>
<originxyz="0.01014 0.00032 -0.01211"/>
<inertiaixx="0.00346541989"ixy="0.00004066825"ixz="0.00043171614"iyy="0.00441606455"iyz="-0.00003968914"izz="0.00359156824"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/elbow_flex.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/upper_arm_v0/elbow_flex.stl"/>
</geometry>
</collision>
</link>
<!-- testing initial joint position, to be parsed at urdf2gazebo parse time -> <gazebo reference="${side}_elbow_flex_joint"> <initial_joint_position>-1.0</initial_joint_position> </gazebo>-->
<gazeboreference="l_elbow_flex_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="l_elbow_flex_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Elbow flex -->
<transmissionname="l_elbow_flex_trans"type="pr2_mechanism_model/SimpleTransmission">
<actuatorname="l_elbow_flex_motor"/>
<jointname="l_elbow_flex_joint"/>
<mechanicalReduction>-36.167452007</mechanicalReduction>
</transmission>
<jointname="l_forearm_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<!-- transform from parent link to this joint frame -->
<parentlink="l_forearm_roll_link"/>
<childlink="l_forearm_link"/>
</joint>
<linkname="l_forearm_link">
<inertial>
<massvalue="2.57968"/>
<originxyz="0.18791 -0.00017 -0.00912"/>
<inertiaixx="0.00364857222"ixy="0.00005215877"ixz="0.00071534842"iyy="0.01507736897"iyz="-0.00001310770"izz="0.01659310749"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/forearm.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/forearm.stl"/>
</geometry>
</collision>
</link>
<!-- Wrist flex -->
<jointname="l_wrist_flex_joint"type="revolute">
<axisxyz="0 1 0"/>
<limiteffort="10"lower="-2.18"upper="0.0"velocity="3.078"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_position="20"k_velocity="4"soft_lower_limit="-2.0"soft_upper_limit="-0.1"/>
<dynamicsdamping="0.1"/>
<calibrationfalling="-0.5410521"/>
<originrpy="0 0 0"xyz="0.321 0 0"/>
<parentlink="l_forearm_link"/>
<childlink="l_wrist_flex_link"/>
</joint>
<linkname="l_wrist_flex_link">
<inertial>
<massvalue="0.61402"/>
<originxyz="-0.00157 0.0 -0.00075"/>
<inertiaixx="0.00065165722"ixy="0.00000028864"ixz="0.00000303477"iyy="0.00019824443"iyz="-0.00000022645"izz="0.00064450498"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_flex.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_flex.stl"/>
</geometry>
</collision>
</link>
<!-- Wrist roll -->
<jointname="l_wrist_roll_joint"type="continuous">
<axisxyz="1 0 0"/>
<limiteffort="10"velocity="3.6"/>
<!-- alpha tested velocity and effort limits -->
<safety_controllerk_velocity="2"/>
<dynamicsdamping="0.1"/>
<calibrationrising="-1.57079632679"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="l_wrist_flex_link"/>
<childlink="l_wrist_roll_link"/>
</joint>
<linkname="l_wrist_roll_link">
<inertial>
<!-- dummy masses, to be removed. wrist roll masses are on "gripper_palm" -->
<massvalue="0.1"/>
<originxyz="0 0 0"/>
<inertiaixx="0.01"ixy="0"ixz="0"iyy="0.01"iyz="0"izz="0.01"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_roll.stl"/>
</geometry>
<materialname="RollLinks"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/forearm_v0/wrist_roll_L.stl"/>
</geometry>
</collision>
</link>
<gazeboreference="l_forearm_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<!-- Wrist flex -->
<gazeboreference="l_wrist_flex_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazeboreference="l_wrist_flex_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="1000000.0"/>
</gazebo>
<!-- Wrist roll -->
<gazeboreference="l_wrist_roll_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/RollLinks"/>
</gazebo>
<gazeboreference="l_wrist_roll_joint">
<fudgeFactorvalue="0.5"/>
</gazebo>
<!-- Wrist flex , Wrist roll -->
<transmissionname="l_wrist_trans"type="pr2_mechanism_model/WristTransmission">
<rightActuatormechanicalReduction="60.1714285714"name="l_wrist_r_motor"/>
<leftActuatormechanicalReduction="60.1714285714"name="l_wrist_l_motor"/>
<flexJointmechanicalReduction="-1.0"name="l_wrist_flex_joint"/>
<rollJointmechanicalReduction="1.0"name="l_wrist_roll_joint"/>
</transmission>
<jointname="l_gripper_palm_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="l_wrist_roll_link"/>
<childlink="l_gripper_palm_link"/>
</joint>
<linkname="l_gripper_palm_link">
<inertial>
<massvalue="0.58007"/>
<originrpy="0 0 0"xyz="0.06623 0.00053 -0.00119"/>
<inertiaixx="0.00035223921"ixy="-0.00001580476"ixz="-0.00000091750"iyy="0.00067741312"iyz="-0.00000059554"izz="0.00086563316"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/gripper_palm.dae"/>
</geometry>
<materialname="Red"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/gripper_palm.stl"/>
</geometry>
</collision>
</link>
<jointname="l_gripper_led_joint"type="fixed">
<!-- Need to check if we need a positive or negative Z term -->
<originxyz="0.0513 0.0 .0244"/>
<parentlink="l_gripper_palm_link"/>
<childlink="l_gripper_led_frame"/>
</joint>
<linkname="l_gripper_led_frame"/>
<jointname="l_gripper_motor_accelerometer_joint"type="fixed">
<originrpy="0 0 0"xyz="0 0 0"/>
<parentlink="l_gripper_palm_link"/>
<childlink="l_gripper_motor_accelerometer_link"/>
</joint>
<linkname="l_gripper_motor_accelerometer_link">
<inertial>
<massvalue="0.001"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<boxsize="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<jointname="l_gripper_tool_joint"type="fixed">
<originrpy="0 0 0"xyz="0.18 0 0"/>
<parentlink="l_gripper_palm_link"/>
<childlink="l_gripper_tool_frame"/>
</joint>
<linkname="l_gripper_tool_frame"/>
<!-- actuated motor screw joint -->
<linkname="l_gripper_motor_slider_link">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
<!-- for debugging only <visual> <origin xyz="0 0 0" rpy="1.5708 0 0" /> <geometry> <cylinder length="0.002" radius="0.025"/> </geometry> </visual> <collision> <origin xyz="0 0 0" rpy="1.5708 0 0" /> <geometry> <cylinder length="0.002" radius="0.025"/> </geometry> </collision>-->
</link>
<jointname="l_gripper_motor_slider_joint"type="prismatic">
<originrpy="0 0 0"xyz="0.16828 0 0"/>
<axisxyz="1 0 0"/>
<parentlink="l_gripper_palm_link"/>
<childlink="l_gripper_motor_slider_link"/>
<limiteffort="1000.0"lower="-0.1"upper="0.1"velocity="0.2"/>
</joint>
<linkname="l_gripper_motor_screw_link">
<inertial>
<massvalue="0.01"/>
<originrpy="0 0 0"xyz="0 0 0"/>
<inertiaixx="0.0001"ixy="0.0"ixz="0.0"iyy="0.0001"iyz="0.0"izz="0.0001"/>
</inertial>
<!-- for debugging only <visual> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <box size="0.05 0.001 0.05" /> </geometry> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <box size="0.05 0.001 0.05" /> </geometry> </collision>-->
</link>
<jointname="l_gripper_motor_screw_joint"type="continuous">
<originrpy="0 0 0"xyz="0.0 0 0"/>
<axisxyz="0 1 0"/>
<parentlink="l_gripper_motor_slider_link"/>
<childlink="l_gripper_motor_screw_link"/>
<dynamicsdamping="0.0001"/>
</joint>
<!-- Finger proximal digit -->
<jointname="l_gripper_l_finger_joint"type="revolute">
<axisxyz="0 0 1"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.02"/>
<originrpy="0 0 0"xyz="0.07691 0.01 0"/>
<parentlink="l_gripper_palm_link"/>
<childlink="l_gripper_l_finger_link"/>
</joint>
<linkname="l_gripper_l_finger_link">
<inertial>
<massvalue="0.17126"/>
<originrpy="0 0 0"xyz="0.03598 0.01730 -0.00164"/>
<inertiaixx="0.00007756198"ixy="0.00000149095"ixz="-0.00000983385"iyy="0.00019708305"iyz="-0.00000306125"izz="0.00018105446"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.stl"/>
</geometry>
</collision>
</link>
<!-- Finger proximal digit -->
<jointname="l_gripper_r_finger_joint"type="revolute">
<axisxyz="0 0 -1"/>
<originrpy="0 0 0"xyz="0.07691 -0.01 0"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.02"/>
<mimicjoint="l_gripper_l_finger_joint"multiplier="1"offset="0"/>
<parentlink="l_gripper_palm_link"/>
<childlink="l_gripper_r_finger_link"/>
</joint>
<linkname="l_gripper_r_finger_link">
<inertial>
<massvalue="0.17389"/>
<originrpy="0 0 0"xyz="0.03576 -0.01736 -0.00095"/>
<inertiaixx="0.00007738410"ixy="-0.00000209309"ixz="-0.00000836228"iyy="0.00019847383"iyz="0.00000246110"izz="0.00018106988"/>
</inertial>
<visual>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.dae"/>
</geometry>
<materialname="Grey"/>
</visual>
<collision>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger.stl"/>
</geometry>
</collision>
</link>
<!-- Finger tip -->
<jointname="l_gripper_l_finger_tip_joint"type="revolute">
<axisxyz="0 0 -1"/>
<originrpy="0 0 0"xyz="0.09137 0.00495 0"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.001"/>
<mimicjoint="l_gripper_l_finger_joint"multiplier="1"offset="0"/>
<parentlink="l_gripper_l_finger_link"/>
<childlink="l_gripper_l_finger_tip_link"/>
</joint>
<linkname="l_gripper_l_finger_tip_link">
<inertial>
<massvalue="0.04419"/>
<originrpy="0 0 0"xyz="0.00423 0.00284 0.0"/>
<inertiaixx="0.00000837047"ixy="0.00000583632"ixz="0.0"iyy="0.00000987067"iyz="0.0"izz="0.00001541768"/>
</inertial>
<visual>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.dae"/>
</geometry>
<materialname="Green"/>
</visual>
<collision>
<originrpy="0 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.stl"/>
</geometry>
</collision>
</link>
<!-- Finger tip -->
<jointname="l_gripper_r_finger_tip_joint"type="revolute">
<axisxyz="0 0 1"/>
<originrpy="0 0 0"xyz="0.09137 -0.00495 0"/>
<!-- limits on passive finger and finger top joints without transmission are not enforced by safety controllers. The lower/upper limits and are enforced in PR2 simulation and effort and velocity limits are ignored. This is also needed because these joints are declared revolute rather than continuous.-->
<limiteffort="1000.0"lower="0.0"upper="0.548"velocity="0.5"/>
<dynamicsdamping="0.001"/>
<mimicjoint="l_gripper_l_finger_joint"multiplier="1"offset="0"/>
<parentlink="l_gripper_r_finger_link"/>
<childlink="l_gripper_r_finger_tip_link"/>
</joint>
<linkname="l_gripper_r_finger_tip_link">
<inertial>
<massvalue="0.04419"/>
<originrpy="0 0 0"xyz="0.00423 -0.00284 0.0"/>
<inertiaixx="0.00000837047"ixy="-0.00000583632"ixz="0.0"iyy="0.00000987067"iyz="0.0"izz="0.00001541768"/>
</inertial>
<visual>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.dae"/>
</geometry>
<materialname="Green"/>
</visual>
<collision>
<originrpy="3.14159265359 0 0"xyz="0 0 0"/>
<geometry>
<meshfilename="package://pr2_description/meshes/gripper_v0/l_finger_tip.stl"/>
</geometry>
</collision>
</link>
<!-- Finger proximal digit -->
<gazeboreference="l_gripper_l_finger_link">
<turnGravityOff>true</turnGravityOff>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
<!-- for "${prefix}_l_finger_joint"-->
</gazebo>
<gazeboreference="l_gripper_l_finger_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- Finger proximal digit -->
<gazeboreference="l_gripper_r_finger_link">
<turnGravityOff>true</turnGravityOff>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="1000000.0"/>
<kdvalue="1.0"/>
</gazebo>
<gazeboreference="l_gripper_r_finger_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- Finger tip -->
<gazeboreference="l_gripper_l_finger_tip_link">
<turnGravityOff>true</turnGravityOff>
<selfCollide>false</selfCollide>
<sensorname="l_gripper_l_finger_tip_contact_sensor"type="contact">
<update_rate>100.0</update_rate>
<contact>
<collision>l_gripper_l_finger_tip_link_collision</collision>
</contact>
<pluginfilename="libgazebo_ros_bumper.so"name="l_gripper_l_finger_tip_gazebo_ros_bumper_controller">
<alwaysOn>true</alwaysOn>
<frameName>l_gripper_l_finger_tip_link</frameName>
<updateRate>100.0</updateRate>
<bumperTopicName>l_gripper_l_finger_tip_bumper</bumperTopicName>
</plugin>
</sensor>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="10000000.0"/>
<kdvalue="1.0"/>
</gazebo>
<gazeboreference="l_gripper_l_finger_tip_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- Finger tip -->
<gazeboreference="l_gripper_r_finger_tip_link">
<turnGravityOff>true</turnGravityOff>
<selfCollide>false</selfCollide>
<sensorname="l_gripper_r_finger_tip_contact_sensor"type="contact">
<update_rate>100.0</update_rate>
<contact>
<collision>l_gripper_r_finger_tip_link_collision</collision>
</contact>
<pluginfilename="libgazebo_ros_bumper.so"name="l_gripper_r_finger_tip_gazebo_ros_bumper_controller">
<alwaysOn>true</alwaysOn>
<frameName>l_gripper_r_finger_tip_link</frameName>
<updateRate>100.0</updateRate>
<bumperTopicName>l_gripper_r_finger_tip_bumper</bumperTopicName>
</plugin>
</sensor>
<mu1value="500.0"/>
<mu2value="500.0"/>
<kpvalue="10000000.0"/>
<kdvalue="1.0"/>
</gazebo>
<gazebo>
<pluginfilename="libgazebo_ros_p3d.so"name="p3d_l_gripper_l_finger_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>l_gripper_l_finger_link</bodyName>
<topicName>l_gripper_l_finger_pose_ground_truth</topicName>
<gaussianNoise>0.0</gaussianNoise>
<frameName>base_link</frameName>
</plugin>
<pluginfilename="libgazebo_ros_f3d.so"name="f3d_l_gripper_l_finger_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>l_gripper_l_finger_link</bodyName>
<topicName>l_gripper_l_finger_force_ground_truth</topicName>
</plugin>
</gazebo>
<gazeboreference="l_gripper_r_finger_tip_joint">
<stopKdvalue="1.0"/>
<stopKpvalue="10000000.0"/>
<fudgeFactorvalue="1.0"/>
<provideFeedbackvalue="true"/>
</gazebo>
<!-- parallel link for simulating gripper constraints -->
<gazebo>
<linkname="l_gripper_l_parallel_link">
<inertial>
<mass>0.17126</mass>
<inertia>
<ixx>7.7562e-05</ixx>
<ixy>1.49095e-06</ixy>
<ixz>-9.83385e-06</ixz>
<iyy>0.000197083</iyy>
<iyz>-3.06125e-06</iyz>
<izz>0.000181054</izz>
</inertia>
<pose>0.03598 0.0173 -0.00164 0 0 0</pose>
</inertial>
<pose>0.82991 0.219 0.790675 0 -0 0</pose>
<gravity>false</gravity>
</link>
<linkname="l_gripper_r_parallel_link">
<inertial>
<mass>0.17389</mass>
<inertia>
<ixx>7.73841e-05</ixx>
<ixy>-2.09309e-06</ixy>
<ixz>-8.36228e-06</ixz>
<iyy>0.000198474</iyy>
<iyz>2.4611e-06</iyz>
<izz>0.00018107</izz>
</inertia>
<pose>0.03576 -0.01736 -0.00095 0 0 0</pose>
</inertial>
<pose>0.82991 0.157 0.790675 0 0 0</pose>
<gravity>false</gravity>
</link>
</gazebo>
<gazebo>
<jointname="l_gripper_r_screw_screw_joint"type="screw">
<child>l_gripper_motor_screw_link</child>
<parent>l_gripper_r_finger_tip_link</parent>
<thread_pitch>-3141.6</thread_pitch>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
<jointname="l_gripper_l_screw_screw_joint"type="screw">
<parent>l_gripper_l_finger_tip_link</parent>
<child>l_gripper_motor_screw_link</child>
<thread_pitch>3141.6</thread_pitch>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
</gazebo>
<gazebo>
<jointname="l_gripper_r_parallel_root_joint"type="revolute">
<parent>l_gripper_r_parallel_link</parent>
<child>l_gripper_palm_link</child>
<axis>
<xyz>0 0 -1</xyz>
<dynamics>
<damping>0.2</damping>
</dynamics>
</axis>
<pose>0.05891 -0.031 0 0 0 0</pose>
</joint>
<jointname="l_gripper_l_parallel_root_joint"type="revolute">
<parent>l_gripper_l_parallel_link</parent>
<child>l_gripper_palm_link</child>
<axis>
<xyz>0 0 1</xyz>
<dynamics>
<damping>0.2</damping>
</dynamics>
</axis>
<pose>0.05891 0.031 0 0 0 0</pose>
</joint>
<jointname="l_gripper_r_parallel_tip_joint"type="revolute">
<parent>l_gripper_r_parallel_link</parent>
<child>l_gripper_r_finger_tip_link</child>
<axis>
<xyz>0 0 1</xyz>
</axis>
<pose>-0.018 -0.021 0 0 0 0</pose>
</joint>
<jointname="l_gripper_l_parallel_tip_joint"type="revolute">
<parent>l_gripper_l_parallel_link</parent>
<child>l_gripper_l_finger_tip_link</child>
<axis>
<xyz>0 0 1</xyz>
</axis>
<pose>-0.018 0.021 0 0 0 0</pose>
</joint>
<jointname="l_gripper_joint"type="prismatic">
<parent>l_gripper_r_finger_tip_link</parent>
<child>l_gripper_l_finger_tip_link</child>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
</gazebo>
<gazeboreference="l_gripper_motor_slider_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<gazeboreference="l_gripper_motor_screw_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<gazeboreference="l_gripper_l_parallel_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<gazeboreference="l_gripper_r_parallel_link">
<turnGravityOff>true</turnGravityOff>
<materialvalue="PR2/Red"/>
</gazebo>
<!-- fictitous joint that represents the gripper gap --><!-- effort is the linear force at the gripper gap velocity limit is the linear velocity limit at the gripper gap try and introduce a very stiff spring The velocity limits are alpha tested. The effort limits are somewhat inflated. k_velocity was recently raised from 500.0 to 5000.0. Tested on beta-->
<jointname="l_gripper_joint"type="prismatic">
<parentlink="l_gripper_r_finger_tip_link"/>
<childlink="l_gripper_l_finger_tip_frame"/>
<axisxyz="0 1 0"/>
<dynamicsdamping="10.0"/>
<limiteffort="1000.0"lower="0.0"upper="0.09"velocity="0.2"/>
<safety_controllerk_position="20.0"k_velocity="5000.0"soft_lower_limit="-0.01"soft_upper_limit="0.088"/>
</joint>
<!-- This link is the same as the l_finger_tip_link, but because the urdf does not support graph structures, this link exists twice -->
<linkname="l_gripper_l_finger_tip_frame"/>
<gazeboreference="l_gripper_palm_link">
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo>
<pluginfilename="libgazebo_ros_p3d.so"name="p3d_l_gripper_palm_controller">
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<bodyName>l_gripper_palm_link</bodyName>
<topicName>l_gripper_palm_pose_ground_truth</topicName>
<xyzOffsets>0 0 0</xyzOffsets>
<rpyOffsets>0 0 0</rpyOffsets>
<gaussianNoise>0.0</gaussianNoise>
<frameName>map</frameName>
</plugin>
<!-- a formal implementation of grasp hack in gazebo with fixed joint -->
<grippername="l_grasp_hack">
<grasp_check>
<attach_steps>20</attach_steps>
<detach_steps>40</detach_steps>
<min_contact_count>2</min_contact_count>
</grasp_check>
<gripper_link>l_gripper_r_finger_tip_link</gripper_link>
<gripper_link>l_gripper_l_finger_tip_link</gripper_link>
<palm_link>l_gripper_palm_link</palm_link>
</gripper>
</gazebo>
<!-- [lr]_gripper_joint is a fictitious joint, used by transmission for controller gap --><!-- [lr]_gripper_joint is not attached to any link --><!-- [lr]_gripper_joint position is the gap_size --><!-- [lr]_gripper_joint velocity is the gap linear velocity --><!-- [lr]_gripper_joint effort is the gap linear force --><!-- Please refer to function engineering spreadsheet 090224_link_data.xls for --><!-- the transmission function. --><!-- Please refer to mechanism_model/src/pr2_gripper_transmission.cpp for implementation.--><!-- gazebo_mimic_pid is for sim only. -->
<transmissionname="l_gripper_trans"type="pr2_mechanism_model/PR2GripperTransmission">
<actuatorname="l_gripper_motor"/>
<gap_jointL0="0.0375528"a="0.0683698"b="0.0433849"gear_ratio="40.095"h="0.0"mechanical_reduction="1.0"name="l_gripper_joint"phi0="0.518518122146"r="0.0915"screw_reduction="0.004"t0="-0.0001914"theta0="0.0628824676201"/>
<!-- if a gazebo joint exists as [l|r]_gripper_joint, use this tag to have gripper transmission apply torque directly to prismatic joint this should be the default behavior in diamondback, deprecating this flag -->
<use_simulated_gripper_joint/>
<!-- set passive joint angles so things look nice in rviz -->
<passive_jointname="l_gripper_l_finger_joint"/>
<passive_jointname="l_gripper_r_finger_joint"/>
<passive_jointname="l_gripper_r_finger_tip_joint"/>
<passive_jointname="l_gripper_l_finger_tip_joint"/>
<!-- screw joint to capture gripper "dynamics" -->
<simulated_actuated_jointname="l_gripper_motor_screw_joint"passive_actuated_joint="l_gripper_motor_slider_joint"simulated_reduction="3141.6"/>
</transmission>
<jointname="l_forearm_cam_frame_joint"type="fixed">
<originrpy="-1.57079632679 -0.562868683768 0"xyz=".135 0 .044"/>
<parentlink="l_forearm_roll_link"/>
<childlink="l_forearm_cam_frame"/>
</joint>
<linkname="l_forearm_cam_frame">
<inertial>
<massvalue="0.01"/>
<originxyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="l_forearm_cam_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<parentlink="l_forearm_cam_frame"/>
<childlink="l_forearm_cam_optical_frame"/>
</joint>
<linkname="l_forearm_cam_optical_frame"/>
<gazeboreference="l_forearm_cam_frame">
<sensorname="l_forearm_cam_sensor"type="camera">
<always_on>true</always_on>
<update_rate>25.0</update_rate>
<camera>
<horizontal_fov>1.57079632679</horizontal_fov>
<image>
<format>R8G8B8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<pluginfilename="libgazebo_ros_camera.so"name="l_forearm_cam_controller">
<alwaysOn>true</alwaysOn>
<updateRate>25.0</updateRate>
<cameraName>l_forearm_cam</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>l_forearm_cam_optical_frame</frameName>
<hackBaseline>0</hackBaseline>
<CxPrime>320.5</CxPrime>
<Cx>320.5</Cx>
<Cy>240.5</Cy>
<!-- image_width / (2*tan(hfov_radian /2)) --><!-- 320 for wide and 772.55 for narrow stereo camera -->
<focalLength>320.000105</focalLength>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
<turnGravityOff>true</turnGravityOff>
<material>PR2/Blue</material>
</gazebo>
<jointname="r_forearm_cam_frame_joint"type="fixed">
<originrpy="1.57079632679 -0.562868683768 0"xyz=".135 0 .044"/>
<parentlink="r_forearm_roll_link"/>
<childlink="r_forearm_cam_frame"/>
</joint>
<linkname="r_forearm_cam_frame">
<inertial>
<massvalue="0.01"/>
<originxyz="0 0 0"/>
<inertiaixx="0.001"ixy="0.0"ixz="0.0"iyy="0.001"iyz="0.0"izz="0.001"/>
</inertial>
</link>
<jointname="r_forearm_cam_optical_frame_joint"type="fixed">
<originrpy="-1.57079632679 0.0 -1.57079632679"xyz="0 0 0"/>
<parentlink="r_forearm_cam_frame"/>
<childlink="r_forearm_cam_optical_frame"/>
</joint>
<linkname="r_forearm_cam_optical_frame"/>
<gazeboreference="r_forearm_cam_frame">
<sensorname="r_forearm_cam_sensor"type="camera">
<always_on>true</always_on>
<update_rate>25.0</update_rate>
<camera>
<horizontal_fov>1.57079632679</horizontal_fov>
<image>
<format>R8G8B8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<pluginfilename="libgazebo_ros_camera.so"name="r_forearm_cam_controller">
<alwaysOn>true</alwaysOn>
<updateRate>25.0</updateRate>
<cameraName>r_forearm_cam</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>r_forearm_cam_optical_frame</frameName>
<hackBaseline>0</hackBaseline>
<CxPrime>320.5</CxPrime>
<Cx>320.5</Cx>
<Cy>240.5</Cy>
<!-- image_width / (2*tan(hfov_radian /2)) --><!-- 320 for wide and 772.55 for narrow stereo camera -->
<focalLength>320.000105</focalLength>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
<turnGravityOff>true</turnGravityOff>
<material>PR2/Blue</material>
</gazebo>
</robot>
The text was updated successfully, but these errors were encountered:
hi @aaronsnoswell we ar currently not supporting URDF anymore, since they are not suitabe for simulation, we are refactoring the whole project and going to use SDF for the robots description. There is also a urdf to sdf parser maintained from gazebo that can be used to load robots.
It will still be a while though until the project will be usable since we are a bit limited with time to invest on this, plus unreal lack of joints (they abstracted away from the physics engine and use constraints for this) is giving us a bit of conversion issues :)
Can you let me know the current status of your SDF importing project? I ask because I'm having issues importing a valid .urdf with this plugin (see #24), and would like to get my robot into UE4. If SDF is the way forward, then maybe I can get started on updating this plugin to SDF support? I wouldn't want to waste time on something you've already started though.
Steps to reproduce: Copy the example PR2 URDF and associated meshes to a new project's XML folder. Modify the pr2.urdf to comment out the contents of the "base_link" link, (e.g. see below code). Import this URDF into Unreal (this should work fine). Now try dragging the imported URDF into the scene.
Observed behaviour: The editor crashes. The error is a null pointer exception on line 393 of RRobot.cpp - upon reaching the "base_bellow_link" (3 calls deep into the
ARRobot::CreateActorsFromNode()
function), the code tries to access*ParentComp->GetName()
, but ParentComp is Null. See the below image.Expected behaviour: My understanding is that a URDF can be valid, even if the base link has no collision or visual geometry - e.g. see the spec at this link or the fact that I can run
check_urdf pr2.urdf
on the modified URDF file and it parses correctly. As such, this URDF should import no worries.My actual use case is another robot URDF we have, but I was able to reproduce this error with the PR2 URDF, which I figured would be easier for you to reproduce at your end.
I'm happy to try and put together a PR to fix this, but it seems to be a logic error in the parsing of
<link />
nodes in URDF files. As such, I'm not sure how to fix this. Any guidance you could offer would be great.Thank you for this great plugin.
The text was updated successfully, but these errors were encountered: