[Unitree Go1] Tf tree problem when running ekf_localization.launch in go1_control

Hello everyone,
I’m currently working with the Unitree Go1 ROS wrapper and I’m running into some unique problems that I’d like to get some insight into.
When I run ekf_localization.launch, odom and base are not aligned. The navigation stack requires a connection to Map - Odom - Base, but the tf tree is not published properly.
I am attaching my tf tree.


I’m currently using the noetic-robotis branch of qre_go1.
Any suggestions, advice, or guidance would be greatly appreciated. Thanks in advance for your help!

Dear @Hayden,

It seems that two items are publishing to odom, there should be only 1 publisher to odom active at a time. By default the go1_control publishes odom. In your case the node lcm is publishing the states which is incompatible and somehow it publishing from base to odom which is incorrect. Also there is a third publisher ros2udp_motion_advance that is publishing its own custom odom.

You are using several packages that are doing the same job. You must disable 2 of the 3 to get the nav stack working. By default the noetic-robotis-branch should work provided that there is no interference from other nodes to our ros package.

Hope this helps!

Cheers,
S. O. Sohail

Dear Sohail,

Thank you very much for your prompt response.

Could I kindly ask for your advice on the next steps? Should I proceed with stopping the Unitree/autostart and then utilize the go1 ROS wrapper? Your guidance on this matter would be greatly appreciated.

Warm regards,
Hayden.

Dear @Hayden,

I would personally recommend stopping the Unitree Ros drivers (and any other Ros driver) and using the ones we provided. After which you can test and see if things are working and then slowly start integrating your other Ros packages and/or if you require parts of the Unitree Ros driver.

Dear Sohail,

I hope this message finds you well.

Thank you very much for your response. To provide you with an overview of the steps I’ve undertaken, I initially executed the rosnode kill -a command on the go1 pi, followed by the launch of bringup.launch, which successfully established a standard tf tree.

Subsequently, I attempted to run map_navi.launch.
Unfortunately, the ‘map’ was initially not visible within the tf tree. To address this, I added the following node to map_navi.launch: <node pkg="tf" type="static_transform_publisher" name="map_to_odom_broadcaster" args="0 0 0 0 0 0 /map /odom 100"/>. After making this addition, I was pleased to find that the ‘map’ became visible in the tf tree.

Additionally, I integrated a lidar into the robot.xacro utilizing an RpLidar.

Upon running map_navi.launch, I encountered a couple of issues. The first issue involved an error message stating:

[ERROR]: Missing velocity limit parameter(s)
[ERROR]: Velocity Smoother: nodelet initialization failed [velocity_smoother]

The second issue pertained to the inability to receive the /scan topic. Although executing rostopic echo /scan confirms the presence of scan data, a discrepancy arises depending on the fixed frame set in rviz. Specifically, setting the fixed frame to the base displays the scan topic in red, yet switching the fixed frame to odom or map results in the scan topic becoming invisible.

Could you kindly advise on what checks or adjustments should be made to ensure proper reception of the /scan topic? Your guidance on resolving these matters would be immensely appreciated.

Warm regards.


Dear @Hayden,

This is wrong, when you start map navigation. The AMCL should be publishing the map. I would recommend that we set a short meeting. Please email support@mybotshop.de for setting the meeting!

Dear Sohail,

I hope this message finds you well.
I will investigate the issue further concerning the map to odom connection and get back to you.

While attempting to run map_navi.launch, I stumbled upon an error that has left me a bit puzzled. The error message reads as follows:

[ERROR]: Missing velocity limit parameter(s)
[ERROR]: Velocity Smoother: nodelet initialization failed [velocity_smoother]
It appears the system is indicating a missing parameter for the velocity smoother, located at third_party/champ/yocs_velocity_smoother. I’m keen to understand the best course of action to address this issue effectively.

Could you kindly advise on how to resolve this error?
Thank you very much for your time and assistance. I look forward to your valuable insights.

Dear @Hayden,

It should work directly, if not you could recopy the parameter and launch files from the repository. Alternatively, for simplicity, you can bypass the velocity smoother and in move_base directly pass in cmd_vel instead of movebase_quadruped/cmd_vel.