ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
2

What is the correct way to introduce a dummy link in URDF?

asked 2018-04-18 10:17:49 -0500

heethesh gravatar image

updated 2018-04-19 11:09:17 -0500

I am trying to simulate my mobile robot with a 5DOF arm. I came across the IKFast tutorial which mentions that I need a dummy link in my URDF. However, I am confused as to how to introduce this dummy link in my URDF. Some examples use a fixed joint between the world link and the robot chassis. If I create a dummy link and and a fixed joint to my robot chassis, will it be mobile? Should I use a planar joint? Here, base_link is my chassis (gray colored in the image below).

Here is IKFast tutorial which I am referring to. Also I get a similar error while using KDL as mentioned in this unsolved post.

Image for reference

Is this the right way to do it? Are my dummy joint parameters right? My current URDF file without dummy links here.

<link name="world">

<link
    name="base_link">
    <inertial>
        <origin
        ...
        <mass
        ...
        <inertia
        ...
    </inertial>
    <visual>
    ...
    </visual>
    <collision>
    ...
    </collision>
</link>

<joint
    name="dummy_joint"
    type="fixed">
    <origin
        xyz="0 0 0"
        rpy="0 0 0" />
    <parent
        link="world" />
    <child
        link="base_link" />
    ...
</joint>

<link
    name="wheel_front_left_link">
    <inertial>
    ...
    </inertial>
    <visual>
    ...
    </visual>
    <collision>
    ...
    </collision>
</link>

<joint
    name="wheel_front_left_joint"
    type="continuous">
    ...
</joint>
edit retag flag offensive close merge delete

Comments

Can you post a link to the tutorial telling you to add a dummy link? Knowing the reason why will help us provide better advice.

Geoff gravatar image Geoff  ( 2018-04-18 19:51:42 -0500 )edit

Updated the post with links.

heethesh gravatar image heethesh  ( 2018-04-19 10:55:36 -0500 )edit

Also I get a similar error while using KDL as mentioned in this unsolved post.

note: that is not an error, but a warning.

gvdhoorn gravatar image gvdhoorn  ( 2018-04-19 13:34:05 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
4

answered 2018-04-19 11:13:24 -0500

updated 2018-04-19 11:29:23 -0500

Typically, I'll name my dummy link "base_link",
and add a fixed joint between "base_link" and the robot's chassis/mount, etc.

In this case, "base_link" does not map to any physical robot structure (chassis, arm mount, etc.) but simply represents the robot's base coordinate frame.

For a fixed robot (relative world_frame for RViz/Gazebo),
I'll add an additional "world_link" and a fixed joint from "world_link" to "base_link"


In your case, I'd suggest renaming your current "base_link" to something more descriptive (e.g. "square_base", "chassis") and then adding an "empty" "base_link" as shown in the examples below.


Example (mobile robot):

<?xml version="1.0" ?>
<robot name="Mobile_Robot"> 

  <link name="base_link" />

  <joint name="base_link_to_chassis" type="fixed">
    <parent link="base_link"/>
    <child link="chassis"/>
  </joint>

  <link name="chassis">
    <inertial>
    ...
    </inertial>
    <visual>
    ...
    </visual>
    <collision>
    ...
    </collision>
   </link>

   ...
</robot>

Example (fixed robot):

<?xml version="1.0" ?>
<robot name="Fixed_Robot"> 

  <link name="world" />

  <joint name="world_to_base_link=" type="fixed">
    <parent link="world"/>
    <child link="base_link"/>
  </joint>

  <link name="base_link" />

  <joint name="base_link_to_chassis" type="fixed">
    <parent link="base_link"/>
    <child link="chassis"/>
  </joint>

  <link name="chassis">
    <inertial>
    ...
    </inertial>
    <visual>
    ...
    </visual>
    <collision>
    ...
    </collision>
   </link>

   ...
</robot>
edit flag offensive delete link more

Comments

Thanks a lot. This is very helpful.

heethesh gravatar image heethesh  ( 2018-04-20 12:37:25 -0500 )edit

Hi, to constrain the robot motion I am adding joint between the base of the robot and world. But as I need 3 such joints for 3 Dof robot, I am trying to add dummy_link. world>dummy_link(revolute joint)>base_link(prismatic joint) But then I get no error in terminal but model doesn't appears in gazebo

sapan gravatar image sapan  ( 2018-07-20 17:03:49 -0500 )edit

it doesn't work!!!

LR gravatar image LR  ( 2020-10-21 08:37:22 -0500 )edit

Question Tools

3 followers

Stats

Asked: 2018-04-18 10:17:49 -0500

Seen: 6,991 times

Last updated: Apr 19 '18