上一节介绍了在cartographer进行建图和定位(在线和离线)。

本节将分析cartographer运行时的误差与延迟,主要是在线定位时的,并尝试优化解决。

目录

1,误差分析

a,硬件精度

b,初值敏感

c,计算量大

2,延时优化

本地

全局

减少重复子图

3,简单小结


1,误差分析

建图时的漂移,重影等现象基本可以通过:

确保雷达足够的频率和角度;

建图时移动速度均匀且不要过快;

调整建图参数;足够多的迭代优化;

融合里程计+陀螺仪等方式解决。

这里的误差主要指在实时定位的定位错差。

a,硬件精度

这个很明显,定位的精度和原始数据的精度息息相关。

有条件的可以提高雷达,里程计,陀螺仪等硬件精度,也可以对初始数据优化处理,得到更精准的数据。

b,初值敏感

cartographer的定位过程,十分依赖初始定位坐标,如果初始位置定位就出错,后续很难修正。

可以通过重定位或者在易于识别的地方初始定位解决,且确保初始定位到正确位置之后再继续。

c,计算量大

大量的约束计算,以及全局优化的迭代计算,造成明显的延迟误差。


2,延时优化

因为延时基本上都是因为计算量大引起,所以延时优化得核心就是降低计算。

当然也有是因为硬件传感数据延时或者网络延时引起的,但不涉及算法,在此不予讨论。

在实际使用中可以通过调整下列参数来减低计算量。

本地:

--当IMU和Odom足够信赖时,可以关闭CSM,只使用位姿预估.
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = false 
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians 增大
TRAJECTORY_BUILDER_2D.motion_filter.max_distance_meters 增大

全局:

MAP_BUILDER.pose_graph.constraint_builder.min_score 降低
MAP_BUILDER.pose_graph.constraint_builder.max_constraint_distance 降低
MAP_BUILDER.pose_graph.constraint_builder.sampling_ratio 降低

减少重复子图:

MAP_BUILDER.pose_graph.overlapping_submaps_trimmer_2d = {
     fresh_submaps_count = 1,
     min_covered_area = 2,
     min_added_submaps_count = 5,
   }

3,简单小结

到这里为止,已经介绍了,cartographer在ros系统下的安装,发布数据,参数调整,建图定位以及延时误差分析等,cartographer_ros篇章就告一段落了。

通过这一系列的文章,希望可以帮助大家快速的上手,并在实际应用中使用cartographer。有什么错误或者不足之处,也希望大家不吝赐教。

后续会有深入的代码解读和算法优化,也欢迎有兴趣的,想要继续研究的小伙伴们一起交流讨论。

【cartographer ros】十: 延时和误差分析的更多相关文章

  1. implement Cartographer ROS for TurtleBots

    github source: https://github.com/googlecartographer/cartographer_turtlebot 1. Building & Instal ...

  2. 3.在自己的bag上运行Cartographer ROS

    1.验证自己的bag cartographer ROS提供了一个工具cartographer_rosbag_validate来自动分析包中的数据.在尝试调试cartographer之前运行这个工具. ...

  3. 1.编译cartographer ROS

    1.系统要求 cartographer ROS与Cartographer要求一样,即 64-bit, modern CPU (e.g. 3rd generation i7) 16 GB RAM Ubu ...

  4. 2.在demo bag上运行cartographer ROS

    注意在运行bag包,之前需要去执行source install_isolated/setup.bash 1.Deutsches Museum 下载并启动2D的backpack demo: wget - ...

  5. implement Google's Open Source Slam "Cartographer" demos in ROS/rviz

    Cartographer is a backpack equipped with Simultaneous Localization and Mapping (SLAM) technology. 1. ...

  6. Google's Open Source SLAM Library ---- Cartographer

    What is Cartographer? Google announce the open source release of Cartographer, a real-time simultane ...

  7. Cartographer资料分享

    中文资料稍后补充 Introducing Cartographer By Tully Foote on October 5, 2016 10:11 AM From Damon Kohler, Wolf ...

  8. 我用MATLAB撸了一个2D LiDAR SLAM

    0 引言 刚刚入门学了近一个月的SLAM,但对理论推导一知半解,因此在matlab上捣鼓了个简单的2D LiDAR SLAM的demo来体会体会SLAM的完整流程. (1)数据来源:德意志博物馆Deu ...

  9. 第十五章节 BJROBOT cartographer 算法构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】

    建地图前说明:请确保你的小车已经校正好 IMU.角速度.线速度,虚拟机配置好 ROS 网络的前提进行,否则会造成构建地图无边界.虚拟机端无法正常收到小车主控端发布的话题数据等异常情况!! 1.把小车平 ...

随机推荐

  1. Spring Ioc源码分析系列--Ioc容器注册BeanPostProcessor后置处理器以及事件消息处理

    Spring Ioc源码分析系列--Ioc容器注册BeanPostProcessor后置处理器以及事件消息处理 前言 上一篇分析了BeanFactoryPostProcessor的作用,那么这一篇继续 ...

  2. 每天一个 HTTP 状态码 前言

    前前言 在重新开始写博文(其实大多也就最多算是日常笔记小结)之际,就想着从短小精悍的文章入手,就想到了 HTTP 状态码.另外,记得很久之前,看过一个<每天一个 Linux 命令>系列文章 ...

  3. 10分钟学会 API 测试 !

    本文面向对象主要是后端开发人员   API 开发好之后,我们需要对 API 进行简单的调试,确保 API 可以跑通再提交给前端人员进行对接或者是测试人员对 API 进行测试:   在测试过程中我们关注 ...

  4. JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

    请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...

  5. 物联网无线数传通信模块设备常见的几种Modbus网关

    物联网无线数传通信常见的几种Modbus网关 以下提到Modbus网关均指Modbus RTU转Modbus TCP,并不涉及对Modbus ASCII数据帧的处理,Modbus ASCII仅支持透明 ...

  6. Java JavaMail通过SMPT发送邮件

    概述 本讲讲述如何使用JavaMail工具包,通过SMPT协议,在Java代码中发送邮件. 一.JavaMail简介 JavaMail API提供了一个独立于平台且与协议无关的框架来构建邮件和消息传递 ...

  7. 【转载】k8s入坑之路(2)kubernetes架构详解

    每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平台被 ...

  8. 前端ES6 特性兼容查询

    ES6 http://kangax.github.io/compat-table/es6/ ES5 http://kangax.github.io/compat-table/es5/ ES 2016+ ...

  9. 如何写出同事看不懂的Java代码?

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是没更新就是在家忙着带娃的Hydra. 前几天,正巧赶上组里代码review,一下午下来,感觉整个人都血压拉满了.五花八门的代码 ...

  10. 写了个基于 MacOS + iTerm2 自动打开窗口执行命令的工具

    大家好,我是秋风,今天要给大家带来的这个工具是我最近写的 一个 npm 工具.mmt 是基于 MacOS + iTerm2 ,目的主要是为了提高日常生活中的效率,接下来我带大家看看一些常用的一些场景. ...