ROS 中 TF的方向性

文章指出TF变换中frame_id和child_frame_id的定向关系是重要的,发布T和inv(T)作为相反方向的变换并不等效,且可能导致TF异常。尽管tf2_toolview_frame可能无法显示问题,但在某些情况下会影响TF变换的获取,提示读者在遇到问题时检查层级结构的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接

在发布tf的时候下面的消息是等效的吗, 假设T是一个变换, inv(T)是T的逆变换

frame_id: map
child_frame_id: odom
transform: T
frame_id: odom
child_frame_id: map
transform: inv(T)

实际上并不是,下面的这种写法是无效的。因为TF是具有方向性的,而且一个frame可以有多个child_frame,但是一个child_frame只能有一个frame。而下面的写法违背了这个原则。对于odom,它的下一级frame正常应该是base_footprint,如果发布第二种TF变换,那么base_footprint和map的上一级frame就都是odom了,这是不允许的。

但是如果发布了第二种TF变换,通过tf2_tool view_frame 是看不出任何异常的。虽然没有异常,但是在具体使用的时候有些情况下能正常获取到TF变换,有些时候就获取不到,非常难定位到这个问题。希望各位遇到TF异常的时候可以检查一下上下层级是否正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值