cartographer坐标系_cartographer参数调整

本文介绍了在Ubuntu 16.04和ROS Kinetic环境下,针对Cartographer坐标系的安装测试及遇到的延迟问题。通过对比硬件配置和论文,提出了两种解决方案:硬件升级和参数调整。重点讨论了参数调整,如MAP_BUILDER.num_background_threads、POSE_GRAPH.constraint_builder.sampling_ratio、POSE_GRAPH.min_score等,以提高实时性。同时,提到了cartographer_ros的配置适应性,例如激光雷达和惯导的配置选项,以满足不同应用场景的需求。
摘要由CSDN通过智能技术生成

一、cartographer安装测试

基本配置:ubuntu 16.04 (x64),ROS Kinetic

1、按顺序安装ceres-solver 1.14.0、protobuf 3.5.0、cartographer 1.0.0、cartographer_ros 1.0.0;

1)ceres-solver在ubuntu 16.04下有预编译包,可以通过apt-get安装;

2)protobuf在ubuntu 16.04下有预编译包,但版本不匹配,需要从源码安装;

4)安装依赖时可以通过dpkg –l | grep 查看依赖是否已经安装;

5)cartographer_ros可以通过catkin_make直接编译;

1)此处仅测试了2D Demo;

二、cartographer测试问题

测试问题:在上述测试过程中,cartographer出现了极大的延迟(rosbag play约30min,而在rosbag play结束后,建图仍然需要大约1h),如何解决?

1、首先检查硬件配置(i7-4500U(1.8GHz,双核四线程),8G RAM),满足cartographer的硬件需求(官方文档所述16G RAM在上述测试中限制不大,通过top命令可知上述测试的RAM使用最大30%左右);

2、对比cartographer论文(Real-Time Loop Closure in 2D LIDAR SLAM)中的硬件配置(Intel Xeon E5-1650(3.2GHz,六核十二线程));

(╯‵□′)╯︵┻━┻

3、所以解决方法分为两种:

1)分离法:将cartographer运行在高性能机器上,运动终端将传感器信息通过无线网络上传,从技术上来说,ROS作为分布式控制系统可以轻松实现这种功能分离,但是存在两个问题:稳定的无线网络和成本;

2)妥协法:通过调整参数,降低建图质量和鲁棒性,提高实时性,适合计算资源不足的小型工控机以及中小范围建图应用;

三、cartographer参数调整

cartographer的配置文件在/usr/local/share/cartographer/configuration_files/目录下

以下参数调整根据上述测试过程中使用的硬件配置进行

1、MAP_BUILDER.num_background_threads=2(=核数(双核四线程=2));

2、POSE_GRAPH.constraint_builder.sampling_ratio=0.10,对应于约束的数量上限;

3、POSE_GRAPH.min_score=0.60,成为约束的最低分数,这个值越大,计算速度相对越快,约束数量相对越少,在sampling_ratio较小的情况下,很可能会造成约束过少而导致建图失败,这个值越小,则效果相反,因此这个值可能需要多次调整;

4、POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.linear_search_window=5.

POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.angular_search_window=math.rad(20.),对应于闭环检测(约束检测)时的搜索范围;

备注:上述各参数调整核心是闭环检测(约束检测),闭环检测是图优化过程中最为重要的部分,也是最为耗时的部分,因此减少约束总数和搜索范围可以有效提高实时性。

四、cartographer_ros

cartographer_ros配置文件在cartographer_ros/configuration_files/目录下

cartographer_ros实际应用时需要进行一些参数调整以适配实际情况,以2D建图为例,其配置文件为backpack_2d.lua

1、一个惯导,发布惯导数据/imu (Imu),惯导坐标系为base_link;

2、一个普通2D激光雷达,发布雷达数据/scan (LaserScan),tf: base_link->base_laser,

修改options.num_laser_scans=1,options.num_multi_echo_laser_scans=0;

3、roslaunch cartographer_ros demo_backpack_2d.launch;

如果需要使用odom

4、一个轮速计,发布/odom (Odometry),tf: odom->base_link,

修改options.published_frame=”odom”,options.use_odometry=true;

如果没有惯导或不相信其他传感器,而只使用激光雷达数据:

5、修改cartographer配置文件:

TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching=true;

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值