Robotics StackExchange | Archived questions

How to define the inertial parameters of tool0?

I followed the tutorial of creating URDF to build a industrial robot model. I defined link "tool0" as default so that it has no parameters at all and then attached it with a "fixed" joint to the robot. But when I attached another tool to the "tool0" frame and the tool had force interaction with the environment, it failed like thisimage description

I pegged a long and thin gun into a tube and tried to lift it up. The gun and tube both had mass and inertia. The tool seemed to be detached from the flange but they were not actually seperated. I tried to modify the inertia matrix with a bigger value like 1e-1, it behaved as expected. So is this the key to my problem and how to properly define the inertial parameters including mass and inertia matrix of virtual link "tool0"?

EDIT1

My robot URDF is as follow:

<link name="link_1">...</link>
...
<link name="link_6">...</link>
<link name="tool0"/>                                               <---where I modified later
<joint name="joint_1" type="revolute">...</joint>
....
<joint name="joint_6" type="revolute">...</joint>
<joint name="link_6-tool0" type="fixed">
    <parent link="link_6"/>
    <child link="tool0"/>
    <origin xyz="0.037 0 0" rpy="0 0 0"/>
</joint>

In another URDF I define the sensor-related parts:

<link name="sensor_link">...</link>
<joint name="sensor_joint" type="fixed">
    <parent link="tool0"/>
    <child link="sensor_link"/>
    <origin xyz="0 0 0" rpy="0 0 0"/>
</joint>

<gazebo reference="sensor_joint">
    <provideFeedback>true</provideFeedback>
    <disableFixedJointLumping>true</disableFixedJointLumping>
</gazebo>
<gazebo>
 <plugin name="FTsensor_controller" filename="libgazebo_ros_ft_sensor.so">
    <updateRate>100.0</updateRate>
    <topicName>/usr/sensor_topic</topicName>
    <jointName>sensor_joint</jointName>
</plugin>   
</gazebo>

Then I include two URDF(actually XACRO) in a new one to put them together.

Asked by mizu_lily on 2016-06-11 20:59:08 UTC

Comments

So, if tool0 doesn't have a body and is fixed to link6, what's the point in having it? Why not just attach your sensor link directly to link6?

Asked by Peter Mitrano on 2016-06-21 10:53:18 UTC

Answers

this tutorial and this wikipedia entry should be very helpful in determining the inertia. Mass is pretty much your decision. Of course, remember it's all in kilograms here.

It's also useful to right click and select view > intertia. This will draw a purple bounding box. If the box looks completely different from your shape, you probably did something wrong.

Asked by Peter Mitrano on 2016-06-14 10:50:39 UTC

Comments

I am confused because tool0 supposed to be a virtual joint or a frame. It doesn't have a real body. So how to define its inertia? Or should I attach tool directly to link_6 to get a proper measurement?

Asked by mizu_lily on 2016-06-17 01:15:34 UTC

the word "virtual" does not have a technical meaning in SDF or URDF. Can you explain what you mean? Also, please update your questions with the full SDF of your model so others can help

Asked by Peter Mitrano on 2016-06-17 21:32:39 UTC