About TF Transformations between /odom and /base_footprint
Hello, Since I m really trying to undertand the principles of ROS in order to write programs on my own, I find somehow some concepts really hard to digest. It could be for you maybe easy at first, but I have some sublte questions regarding ROS and some functions even if I did the tutorials more than one time.
Ok, as far as I understood the tf package is used to transform position and orientation in one system in another system. Let s say I have a frame
/world = {Xw, Yw, Zw}
, which is absolut and fixed with the world as in the following figure:
It is supposed to be fixed and cannot move.
and let's take another frame, for istance
/base_frame = {Xf, Yf, Zf}
, which is attached to our robot and moves with its frame:
Now: as far as I understood from my mecatronics' lessons is that, due to cumulative errors of the internal sensor, lack of precision etc... then the odometry position of the robot will drift during time of a little bit from the true position. So the position our robot could not anymore considered absolut and precise but there is small offset which will be bigger and bigger (in the following figure);
/odom = {Xo, Yo, Zo}
Am I right till now? Ok, perfect.. I was reading with attention the tutorial of the pr2_controller here and I was a little bit surprised to read the following line of code:
//record the starting transform from the odometry to the base frame
listener_.lookupTransform("base_footprint", "odom_combined",
ros::Time(0), start_transform);
What kind of transformation is going to be calculated? To me (maybe I am wrong) there is no sense to calculated of a transformation between a frame which is unknow (/base_footprint) and the frame /odom . To me should be the only /odom information available to calculate the estimated position of the robot, since theoretically I going to calculate the position whit the measured speed and acceleration. So I find the "base_footprint" in the lookupTransform a litlle bit misleading.
I hope my question is clear :) Thanks in advance