使用cartographer的问题记录
问题1
修改目录src/下的相关cartographer的launch和lua文件,不会立即生效,
如:~/carto_ws/src/cartographer_ros/cartographer_ros/launch/demo_backpack_2d.launch 、
~/carto_ws/src/cartographer_ros/cartographer_ros/
configuration_files/backpack_2d.lua
原因分析:
这是由于cartographer的编译采用了catkin_make_isolated --install --use-ninja,与普通的catkin_make编译不同。在安装cartographer时,有重复的文件名,这就导致了使用catkin_make编译会出错。
实际使用的launch文件是install_isolated/shared/cartographer_ros/ configuration_files/.lua文件和install_isolated/shared/cartographer_ros/ launch/.launch文件。
解决方案:
为了避免每次修改launch、lua文件都重新编译,可以直接修改目录install_isolated/shared/cartographer_ros/下的相关的launch和lua文件。
同时,由于编译方式的不同,最好将cartographer的工作空间和普通功能包的工作空间分开。
问题2
在终端播放bag数据集,再另起终端cartographer进行建图,且launch中没添加rosbag节点。现象cartographer无报错,但是没有出现地图。
原因分析:
在终端播放bag命令不正确,没有加上--clock,其中clock的意思是指整个ros里的时间使用bag里的时间保持一致,一旦使用bag里的时间就意味着现在的时间是假的,使用的是模拟的时间,所以在launch中可以看到 <param name="/use_sim_time" value="true" />
解决方案:
在终端播放bag一定要加上--clock,统一时间。
rosbag play --clock bag_name.bag
问题3
不使用数据集,使3D雷达、IMU进行实时建图,相关话题名、TF参数都配置好了,终端没有报错,但是依旧不出图。
原因分析:
参数没有调好
解决方案:TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 1,该值太高了,改为1。
问题4
速腾聚创的激光雷达ros驱动ros_rslidar的编译报错
原因分析,其中有.cfg文件需要给到权限。
ros_rslidar/rslidar_drvier
chmod 777 cfg/*
ros_rslidar/rslidar_pointcloud
chmod 777 cfg/*
问题5
机器人开启cartographer定位和movebase导航,发现机器人走起来一顿一顿的,经过检查发现是手柄节点发布了速度0,关闭手柄节点就好了。
问题6
使用imu时,且激光雷达为单线雷达,错误使用了参数TRAJECTORY_BUILDER_2D.min_z = 0.2,
造成cartographer无法匹配定位,终端提示:
local_trajectory_builder_2d.cc:300] Dropped empty horizontal range data.
解决办法:单线激光雷达不使用参数TRAJECTORY_BUILDER_2D.min_z
更新中...