下面这两个图就能够理解map,odom,base_link这三个坐标系的关系了,我算是大概明白怎么回事了。似乎有点感觉了。
https://blog.csdn.net/sinat_16643223/article/details/113917214
https://blog.csdn.net/sinat_16643223/article/details/113915745
再看这个也可以明白了
https://blog.csdn.net/sinat_16643223/article/details/113901802
https://blog.csdn.net/sinat_16643223/article/details/113919965
因为位置信息你得是相对于什么坐标下的位置信息,所以用/tf表示位置信息是有道理的,你单纯就给个X Y Z,不说明坐标系,也不太合适,虽然以前没那么想,现在严谨地看看确实不行,那是你坐标系少的时候,不这么考虑无所谓,坐标系多了,那就不行了。
我们发送期望位置,也是要声明坐标系的对吧,所以位置信息离不开坐标系。
所以位置种类的msg里面是不是必须有一项是frame什么的,就是坐标系?frame_id 就应该是代表坐标系。
上面打印的/tf
下面打印的/mavros/vision_pose/pose
https://blog.csdn.net/ahelloyou/article/details/105945979
当初自己跑激光雷达,rviz显示数据有问题,也是坐标系没有选对!!!!!现在才明白这个,当时li bo跟我说让我看下TF,我现在明白为什么了!!!!!!!!!!!!!!!!!现在也明白为什么要这么改了。原来的坐标系是camera_odom_frame,现在要改为激光雷达的坐标系。所以显示位置数据的时候也需要注意要有坐标系!!!!!!!!!!!!!
这么一点点弄懂的感觉真的太棒了!!!!!
《ROS机器人开发实践》里面有写这方面
https://blog.csdn.net/sinat_16643223/article/details/113925139