*T265定点中的/tf消息是谁发布的,为什么是/tf(后来发现激光雷达的cartographer也是发布/tf),位姿和坐标系变换都是用位置+四元数(欧拉角/旋转)表示的!!!

2023-05-16

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(使用前将#替换为@)

*T265定点中的/tf消息是谁发布的,为什么是/tf(后来发现激光雷达的cartographer也是发布/tf),位姿和坐标系变换都是用位置+四元数(欧拉角/旋转)表示的!!! 的相关文章

随机推荐