State publisher doesn't see all links

Hi

Trying to get the tf for world base_link joint and link but I’m getting only world and base_link.

this is the urdf

<?xml version="1.0"?>

<robot name="mira_new">

    
	<!-- * * * Link Definitions * * * -->
    <link name="world"/>
    
 	<link name="base_link">
        <collision>
            <origin xyz="0 0 0.0425" rpy="0 0 0"/>
            <geometry>
                <box size="0.32 0.26 0.085"/>
            </geometry>
        </collision>
		<visual>
		    <origin xyz="0 0 0.0425" rpy="0 0 0"/>
			<geometry>
				<box size="0.32 0.26 0.085"/>
			</geometry>
		</visual>	
	</link>
     <gazebo reference="base_link">
        <kp>100000.0</kp>
        <kd>100000.0</kd>
        <mu1>10.0</mu1>
        <mu2>10.0</mu2>
        <material>Gazebo/Grey</material>
    </gazebo>

	
 	<link name="upper_base_link">
  	    <inertial>
            <origin xyz="0 0 0.05" rpy="0 0 0"/>
            <mass value="10.0" />
            <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
        </inertial>
        <collision>
            <origin xyz="0 0 0.05" rpy="0 0 0"/>
            <geometry>
                <cylinder radius="0.085" length="0.40"/>
            </geometry>
        </collision>
		<visual>
			<origin xyz="0 0 0.05" rpy="0 0 0"/>
			<geometry>
				<cylinder radius="0.085" length="0.4"/>
			</geometry>
	   </visual>
	</link>
     <gazebo reference="upper_base_link">
        <kp>100000.0</kp>
        <kd>100000.0</kd>
        <mu1>10.0</mu1>
        <mu2>10.0</mu2>
        <material>Gazebo/Grey</material>
    </gazebo>

 <gazebo>
        <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
            <robotNamespace>/mira_new</robotNamespace>
            <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
        </plugin>
    </gazebo>


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

   
    
	<joint name="upper_base_joint" type="revolute">
    	<parent link="base_link"/>
    	<child link="upper_base_link"/>
     <origin xyz="0.0 0 0.05" rpy="0 0 0"/>
        <limit lower="-0.2" upper="0.2" effort="0.1" velocity="0.005"/>
        <axis xyz="1 0 0"/>
	</joint>

    <transmission name="tran1">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="upper_base_joint">
            <hardwareInterface>EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="motor1">
            <hardwareInterface>EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>

      
 <!-- <gazebo reference="base_link">
        <material>Gazebo/Blue</material>
    </gazebo>
     <gazebo reference="upper_base_link">
        <mu1>0.2</mu1>
        <mu2>0.2</mu2>
        <material>Gazebo/SkyBlue</material>
    </gazebo> -->

</robot>

the error is

No transform from [upper_base_link] to [base_link]

what is bad in the urdf?

thanks

Hi,

It could be that you didnt set inertia in the base_link. This can cause issues.
To check you should do a tf view_frames command to see exactly what frames are bing published and how they are conected. You can also open rviz and add the tf element to see the TFs published. There you will see if there is missing some frame.