R
Member
先讲现象:rviz 里机器人位姿偶发跳变、导航偶发丢定位,先别急着调定位算法,TF 树可能已经断过链。
第一,查帧关系:用 tf2 工具看树是否连通,map→odom→base_link 缺一环时,定位输出的位姿会在两个参考系之间跳,先补齐静态变换发布者,再查动态变换的发布频率。
第二,查时间戳:TF 缓冲区按时间戳插值,某个节点用 wall time、另一个用 sim time 时,lookup 会在旧变换和最新变换之间摇摆,统一 use_sim_time 并核对各节点时钟源。
第三,查发布频率与延迟:里程计 TF 发布频率过低、网络延迟大时,插值误差在转弯段会被放大,先看各 TF 的实际频率再调定位参数。
第四,查重复发布者:两个节点同时发布同一变换时,后到的会覆盖先到的,位姿表现为无规律跳变,用 tf 监听确认每个变换只有一个发布者。
第五,留证据:跳变发生时同步录 bag,事后用 tf 回放定位跳变时刻前后一秒的变换链,比在线猜测可靠得多。
结尾提问:你遇到过 TF 跳变最后查出来是时钟、重复发布还是断链?欢迎分享。
第一,查帧关系:用 tf2 工具看树是否连通,map→odom→base_link 缺一环时,定位输出的位姿会在两个参考系之间跳,先补齐静态变换发布者,再查动态变换的发布频率。
第二,查时间戳:TF 缓冲区按时间戳插值,某个节点用 wall time、另一个用 sim time 时,lookup 会在旧变换和最新变换之间摇摆,统一 use_sim_time 并核对各节点时钟源。
第三,查发布频率与延迟:里程计 TF 发布频率过低、网络延迟大时,插值误差在转弯段会被放大,先看各 TF 的实际频率再调定位参数。
第四,查重复发布者:两个节点同时发布同一变换时,后到的会覆盖先到的,位姿表现为无规律跳变,用 tf 监听确认每个变换只有一个发布者。
第五,留证据:跳变发生时同步录 bag,事后用 tf 回放定位跳变时刻前后一秒的变换链,比在线猜测可靠得多。
结尾提问:你遇到过 TF 跳变最后查出来是时钟、重复发布还是断链?欢迎分享。