仅使用IMU运行robot_localization包时TF断裂如何修复?
修复方案
- 修正坐标系命名格式
把你配置的base_link_frame: /thrbot/base_link中的前导斜杠去掉,修改为base_link_frame: thrbot/base_link。ROS的TF坐标系名称不允许带前导斜杠,带斜杠会导致坐标系匹配失败,ekf节点无法正常发布TF链路。 - 完善传感器融合配置
你launch中设置的odom_used参数对robot_localization包不生效,需要在加载的ekf_template.yaml中调整配置:- 删除/注释掉所有轮速计(odom)相关的传感器配置,避免节点等待不存在的传感器数据
- 新增IMU相关融合配置,示例如下:
# 替换为你实际使用的IMU话题名 imu0: /thrbot/imu/data # 融合维度依次对应:x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az imu0_config: [false, false, false, true, true, true, false, false, false, true, true, true, true, true, true] # 开启重力加速度移除 imu0_remove_gravitational_acceleration: true # 开启TF发布 publish_tf: true - 校验静态变换与IMU配置
确认你设置的静态TF参数符合实际的IMU与base_link的相对位姿,同时检查IMU输出消息的header.frame_id为thrbot/imu_link,和静态TF的子坐标系名称完全一致。
内容的提问来源于stack exchange,提问作者Bob9710
相关产品推荐
相关产品推荐

