# What is the purpose of an empty link without any child elements?

I was looking at a model xacro [urdf] file in a ROS tutorial when I saw:

<link name="robot_footprint"></link>


right at the top. There were no child tags for: <collision>, <visual> or <inertial>. There was however a joint right after but no further references to the robot_footprint link.

  <joint name="robot_footprint_joint" type="fixed">
<origin xyz="0 0 0" rpy="0 0 0" />
</joint>


What does the empty link serve?

In this particular case, it's probably used as a projection of the robot's root link on the floor. This is often useful for motion planning or SLAM, where the robot's pose is read (or set) as the projection from that frame to the global frame. Going back to that other case involving coordinate frames, robot_footprint would serve the same purpose as shifting link_01 vertically relative to its frame.
• In the first case, what do you mean by "a projection" of the robot's link? If the robot is moving, is the location just traced based on this reference position, robot_footprint? Apr 17 '20 at 1:04
• There is a sensor and motion planning/ SLAM will be dealt with next. I also observed that only the chassis has the <pose> tag, i.e., <link name='chassis'> <pose>0 0 0.1 0 0 0</pose> . Why is that? Apr 17 '20 at 1:32
• By "projection on the floor" I mean that if the chassis link is at position $(x, y, z)$, then robot_footprint is at position $(x, y, 0)$. Apr 17 '20 at 11:48