问题描述
turtlebot3仿真运行cartographer报错,具体如下:
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
然后运行
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer
错误如下:
sensor_bridge.cc:126] Check failed: sensor_to_tracking->translation().norm() < 1e-5 The IMU frame must be colocated with the tracking frame. Transforming linear acceleration into the tracking frame will otherwise be imprecise.
错误原因
这是gazebo_ros_imu的一个bug
解决方法1
运行slam时候,添加参数指定仿真用配置文件
configuration_basename:=turtlebot3_lds_2d_gazebo.lua
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer configuration_basename:=turtlebot3_lds_2d_gazebo.lua
解决方法2
修改默认的配置文件,tracking_frame的值从imu_link修改为base_footprint。
--tracking_frame = "imu_link", -- imu_link, If you are using gazebo, use 'base_footprint' (libgazebo_ros_imu's bug)
tracking_frame = "base_footprint",