[Unitree Go1] map node missing


I’m currently working on a project using ROS and have encountered an issue with the tf tree and some warnings in the terminal

I replaced the map file with a custom file and started amcl, but a map frame does not appear in the tf tree and the map → odom conversion does not work.

In the tf tree, odom → base → trunk → laser & other joints are connected, and when you odom a fixed frame on rviz, you can check the scan topic, but it is not visible when you use it as a map.
(It seems to be a natural phenomenon because there is no map frame and there is no connection.)

Should I use static_transform_publisher to convert map->odom?

The error message is as follows:
[ WARN] [1714043627.072286182]: Timed out waiting for transform from base to map to become available before running costmap, tf error: canTransform: target_frame map does not exist… canTransform returned after 0.100264 timeout was 0.1.
[ WARN] [1714043631.952119372]: No laser scan received (and thus no pose updates have been published) for 1714043631.952039 seconds. Verify that data is being published on the /scan topic.
I’ve used the office.yaml map file generated by Hector SLAM.

Could you advise what might be causing these issues and how to resolve them? Any insights or suggestions would be greatly appreciated!

Thank you very much for your help.

Best regards,
mybot team.

Dear @Hayden,

Could you please list the ros packages that you are running as well as the commands, as it is difficult to distinguish what is going on.

On a glance I think there are two issues you are facing. The first is that the parameter for AMCL of scan topic is incorrect. Please check the launch file and correct the configuration of the laserscan topic.

To find out the topic name do rostopic list and find out the topic name. It might be something like /go1/scan. Copy this into the AMCL launch file and/or where its configuration file is.

The second thing is that the map frame usually either comes from a custom node from GPS, SLAM, or a localization module such as AMCL.

I am assuming you running the default AMCL. When you run the AMCL, ensure that in its configuration file it has all the correct parameters especially the link names such as odom and base_link as well as the laserscan topic.

The next step to remember is that with algorithms such as AMCL you have to give the initial position via the 2D pose estimate in RVIZ. Without this there will be no transformations. To do this ensure AMCL, the robot driver, laserscan, and RVIZ is running.

  1. Ensure the global frame is map (very important)
  2. Select the 2D pose estimate arrow on the middle top of the screen
  3. Add map topic to RVIZ
  4. Click and drag the arrow on the estimated position of the robot on the map
  5. The robot should teleport in RVIZ to that point and it should now be localizaed.

Thank you for the prompt response.

The package that was executed is
roslaunch rplidar_ros rplidar_a1.launch
roslaunch go1_bringup bringup.launch
roslaunch go1_navigation map_navi.launch

bringup.launch and map_navi.launch were modified as follows.

<include file="$(find go1_base)/launch/base.launch" />
<include file="$(find go1_description)/launch/description.launch"/>
<include file="$(find go1_control)/launch/ekf_localization.launch"/>

<param name="use_sim_time" value="false" />
<include file="$(find go1_navigation)/launch/include/custom_map_server.launch.xml" />
<include file="$(find go1_navigation)/launch/include/amcl.launch.xml" />
<include file="$(find go1_navigation)/launch/include/map_move_base_teb.launch.xml" />
<node pkg="tf" type="static_transform_publisher" name="lidar_to_robot" args="0.05 0 0.08 0 0 0 /base /laser 100" />

The rostopic list is as follows.

Since the map frame is not created, only the map topic is displayed in rviz.