T265定点中的/tf消息是谁发布的,为什么是/tf
可能也是因为讲课,倒逼着我把这些真正弄清楚。而不是马马虎虎差不多就行了。
首先我看节点图,可以确认tf消息就是摄像头节点发出的
我再去realsense-ros的github里面看,找到了一些关于tf的
publish TF from odom_frame to pose_frame.
tf的坐标变换似乎是指from odom_frame to pose_frame. T265发布的最原始的位置数据是 /camera/odom/sample 这个我之前是知道的。
frame是坐标系的意思。,这样就好理解上面那句话:publish TF from odom_frame to pose_frame.
还有我发现 px4_pos_estimator.cpp 里订阅激光雷达的位置数据也是订阅的/tf,我觉得不是巧合
你看我做出APMT265树莓派无人机快六个月半年了,现在还有些东西没有完全弄清楚,所以很多东西急不得,慢慢来,慢慢积淀。写论文我觉得,也是,不要总是想着一下子突击完成,一两个月搞完,你想着怎么六个月弄完,这样才差不多。
这是以前弄APMT265树莓派无人机的时候打印的/tf消息,当时还以为是位置信息
这里面可以看到frame_id:"camera_odom_frame" child_frame_id:"camera_pose_frame" 所以上面说的publish TF from odom_frame to pose_frame.应该就是这个。
和这说的是一样的!!!!!
https://www.cnblogs.com/sxy370921/p/11726691.html
当然应该是下面这种,因为最开头有个transforms,所以是TF树的消息类型,但是上面的解释是可以参考的。
右下打印的/tf 左上打印的mavros/vision_pose/pose
我不明白 odom坐标系和pose坐标系的区别是什么。
.
我搜了下确实是有odom也就是里程计坐标系的
https://www.jianshu.com/p/1dc8dea89413
这篇文章很值得看看
https://blog.csdn.net/w383117613/article/details/46006991
这里给我解答了一些疑惑,也怪不得上面有个截图里说 SLAM中的定位就是为了计算tf: map->odom
。
到这里就会有疑惑,odom和map两个坐标系不应该就重合了吗?
答:在机器人刚启动的时候,这两个坐标系的确是重合的,但是跑远了之后,由于里程计的误差,会使得odom坐标系与global map坐标系的原点不重合,(个人理解是,按照里程计给出的机器人当前位姿,然后根据这个数据返回,最后机器人返回的地方并非一开始启动时的原点)
https://blog.csdn.net/sinat_16643223/article/details/113901802
我感觉那个pose坐标系可能就是他们说的base_link坐标系
https://blog.csdn.net/dddxxxx/article/details/93472584
我看了下这个似乎SLAM模块都会发布/tf ????????
https://xiaohu.blog.csdn.net/article/details/100165692
这篇似乎说出了点感觉。
https://blog.csdn.net/sinat_16643223/article/details/113915745
我发现vision_to_mavros那里其实已经有了详细的解释。
https://github.com/thien94/vision_to_mavros
https://blog.csdn.net/flyinsilence/article/details/51854123
我的这篇博文看一下,后来的很多总结写到这里面去了。
https://blog.csdn.net/sinat_16643223/article/details/113919496
还有我发现普罗米修斯里面px4_pos_eatimate阅激光雷达的也是订阅的/tf,这里面应该有一定道理。可能都是用/tf来表示的
https://gitee.com/maxibooksiyi/Prometheus/blob/master/Modules/control/src/px4_pos_estimator.cpp
https://blog.csdn.net/qq_38649880/article/details/88372390
https://blog.csdn.net/xiekaikaibing/article/details/80118134
下面是不是可以理解为,依赖于传感器进行行动的地方都需要坐标变换,最基本的可能就是传感器自身的坐标系和世界坐标系。这里面有一句说得很好,传感器数据,例如来自相机或激光雷达,是根据传感器自己的坐标系来获取的,而这些数据必须要在另一个坐标系(例如世界坐标系或机器人坐标系)中进行解释。
仔细想想也是,每个传感器都有自己的坐标系。主要是我们目前用到的传感器,相机也好,激光雷达也好,其实是和无人机固定在一起的,也就是相机的坐标系就可以看作无人机的坐标系,并不像机械臂那么复杂。所以下面camera/imu/body_link是放在一起说的。
下面拍自《ROS机器人编程原理与应用》
这篇文章也说清楚了,和我理解的应该是一个意思,和上面资料解释的应该也是一个意思!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
这里面很好地说明了一点,就是一个位姿信息是包含了位置和角度(四元数/旋转)的,而两个坐标间的变换也是乘一个位置+角度(四元素)【这才是最妙的地方,真正从根本上说明了这两者是一个东西】,这也是可以解释为什么T265发布的位置信息和/tf信息的内容是一模一样的,一个geometry_msgs/PoseStamped类型的话题也就是包含位置和四元素(https://blog.csdn.net/sinat_16643223/article/details/114542703)
所以local_position/pose既可以以geometry_msgs/PoseStamped类型类型发出去也可以以/TF话题消息发出去
https://www.jianshu.com/p/bedf90699551
所以这打印的三种话题消息的内容都是一模一样的
https://blog.csdn.net/sinat_16643223/article/details/114572760
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)