i have a generated map from gmapping and the map is up and running but the problem is that the robot always spawn at the corner of the map and the ERROR shows " no transform from [map] to [base_footprint]. How do i fix this ?

Launch File:


    <arg name="robot_namespace" default="/"/>

    <!-- Load URDF model -->
    <param name="robot_description" command="$(find xacro)/xacro '$(find limo_description)/urdf/limo_ackerman.xacro'
        robot_namespace:=$(arg robot_namespace)" />

    <!-- Load joint controller configurations from YAML file to parameter server -->
    <rosparam file="$(find limo_gazebo_sim)/config/limo_ackerman_control.yaml" command="load"/>

    <!-- Load controllers -->
    <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen"
          args="limo_state_controller limo_fl_steering_hinge_controller limo_fr_steering_hinge_controller"/>

    <!-- Robot state publisher for URDF visualization -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

    <!-- Joint State Publisher for the wheels -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
        <param name="use_gui" value="false"/> <!-- Set to true if you want to use the GUI -->

    <!-- Use robot pose ekf to provide odometry -->
    <node pkg="robot_pose_ekf" name="robot_pose_ekf" type="robot_pose_ekf">
        <param name="output_frame" value="odom" />
        <param name="base_footprint_frame" value="base_link" />
        <remap from="imu_data" to="imu" />

    <!-- Launch AMCL for localization -->
    <node pkg="amcl" type="amcl" name="amcl" output="screen">
        <rosparam file="$(find limo_bringup)/param/amcl_params_omni.yaml" command="load" />
    <param name="initial_pose_x" value="0" />
    <param name="initial_pose_y" value="0" />
    <param name="initial_pose_a" value="0" />
    <param name="global_frame_id" value="map" />
    <param name="map_file" value="$(find limo_bringup)/maps/mylimomap.yaml" />

    <!-- Launch RViz with the amcl.rviz configuration -->
    <node name="rviz_amcl" pkg="rviz" type="rviz" args="-d $(find limo_bringup)/rviz/amcl.rviz" />

amcl_params_diff.yaml file: link

Picture of terminal when launching file: link

Image of Rviz : link

Link of TF tree : link


1 Answer 1


The EKF node is responsible for broadcasting the transformation between the map and the robot. Here, you've set it to "base_link" instead of "base_footprint".

For debugging, try running: rosrun tf view_frames. Then, open frames.pdf to check out how the TF tree links up.

  • $\begingroup$ oh thankyou for your help , appreciate it again , i have put in the link for the TF tree. So do i change the EKF to base_footprint? Its still the same after i changed $\endgroup$
    – johnson
    Nov 2, 2023 at 8:30
  • $\begingroup$ hm, could you provide the amcl_params_omni.yaml file for the ekf node? Also add a picture of the terminal respond when you launch the launch file. $\endgroup$
    – Ravi Kumar
    Nov 2, 2023 at 8:53
  • $\begingroup$ Thankyou and really appreciate your time and effort , i have added the files in links because the formatting of the .yaml is very messy, sorry for the trouble and thankyou for your help again, please let me know if you need anything else $\endgroup$
    – johnson
    Nov 2, 2023 at 9:13
  • $\begingroup$ Change from base_link to base_footprint in the yaml file. Also run ros node list to see if the ekf node is being launched propperly. There is some missmatch in the launch file and the yaml file when you want to add the base_frame id in the lunch file argument. In the yaml file it says "base_frame_id", you have added "base_footprint_frame" in the launch file argument. $\endgroup$
    – Ravi Kumar
    Nov 2, 2023 at 9:20
  • $\begingroup$ okay so I have to standardize and change to have both as "base_frame_id" and "base_footprint" right, I'll try it again , thank you so much for your help $\endgroup$
    – johnson
    Nov 3, 2023 at 0:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.