0
$\begingroup$

Rosanswers logo

Hi all, I have successfully written a python robot controller to control my lidar-bearing robot. t is based on a Raspberry Pi 3 and can be commanded through an RC remote (with a receiver) or via the cmd_vel topic, whichever I choose. It also works quite nice when visualized in Rviz, odometry drifts are relatively low but will remain always due to many reasons on which I have little control of. So I want to use AMCL to localize. It had worked great when I created the simulation in Gazebo, but it was ideal, and now in the real world it isnt so. To my question: on the AMCL documentation here, at the bottom of the page, it says that AMCL estimates the transformation between /map and /base_link. But my Raspi node is the one publishing the Tf between /odom and /base_link... and it would not be wise to double-publish that. Would it be safe to say that the AMCL publishes the Tf between /map and /odom in order to compensate for the odometry drift?

Thanks in advance, Steve


Originally posted by StevenCoral on ROS Answers with karma: 167 on 2017-07-21

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Yes, AMCL is the responsible for publishing the map->odom tf. That said, the statement "AMCL estimates the transformation between /map and /base_link" is also correct.

According to the link you provided ( http://wiki.ros.org/amcl#Transforms):

"During operation amcl estimates the transformation of the base frame (~base_frame_id) in respect to the global frame (~global_frame_id) but it only publishes the transform between the global frame and the odometry frame (~odom_frame_id)."

What all this means is that it is computing where your base_link is with respect to the map, but in order to maintain a smooth and continuous odometry (provided by your driver), it corrects the pose of base_link by adjusting the map->odom transofrm.


Originally posted by Procópio with karma: 4402 on 2017-07-27

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by StevenCoral on 2017-07-30:
Thank you, this clarified things up

$\endgroup$

Your Answer

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