【cartographer ros】十: 延时和误差分析
上一节介绍了在cartographer进行建图和定位(在线和离线)。
本节将分析cartographer运行时的误差与延迟,主要是在线定位时的,并尝试优化解决。
目录
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】十: 延时和误差分析的更多相关文章
- implement Cartographer ROS for TurtleBots
github source: https://github.com/googlecartographer/cartographer_turtlebot 1. Building & Instal ...
- 3.在自己的bag上运行Cartographer ROS
1.验证自己的bag cartographer ROS提供了一个工具cartographer_rosbag_validate来自动分析包中的数据.在尝试调试cartographer之前运行这个工具. ...
- 1.编译cartographer ROS
1.系统要求 cartographer ROS与Cartographer要求一样,即 64-bit, modern CPU (e.g. 3rd generation i7) 16 GB RAM Ubu ...
- 2.在demo bag上运行cartographer ROS
注意在运行bag包,之前需要去执行source install_isolated/setup.bash 1.Deutsches Museum 下载并启动2D的backpack demo: wget - ...
- implement Google's Open Source Slam "Cartographer" demos in ROS/rviz
Cartographer is a backpack equipped with Simultaneous Localization and Mapping (SLAM) technology. 1. ...
- Google's Open Source SLAM Library ---- Cartographer
What is Cartographer? Google announce the open source release of Cartographer, a real-time simultane ...
- Cartographer资料分享
中文资料稍后补充 Introducing Cartographer By Tully Foote on October 5, 2016 10:11 AM From Damon Kohler, Wolf ...
- 我用MATLAB撸了一个2D LiDAR SLAM
0 引言 刚刚入门学了近一个月的SLAM,但对理论推导一知半解,因此在matlab上捣鼓了个简单的2D LiDAR SLAM的demo来体会体会SLAM的完整流程. (1)数据来源:德意志博物馆Deu ...
- 第十五章节 BJROBOT cartographer 算法构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】
建地图前说明:请确保你的小车已经校正好 IMU.角速度.线速度,虚拟机配置好 ROS 网络的前提进行,否则会造成构建地图无边界.虚拟机端无法正常收到小车主控端发布的话题数据等异常情况!! 1.把小车平 ...
随机推荐
- 有关状压DP
[以下内容仅为本人在学习中的所感所想,本人水平有限目前尚处学习阶段,如有错误及不妥之处还请各位大佬指正,请谅解,谢谢!] 引言 动态规划虽然已经是对暴力算法的优化,但在某些比较特别的情况下,可以通过一 ...
- 实战派 | Java项目中玩转Redis6.0客户端缓存!
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. 在前面的文章中,我们介绍了Redis6.0中的新特性客户端缓存client-side caching,通过tel ...
- OpenStack 安装 Keystone
OpenStack 安装 Keystone 本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件 openstack 版本 我选的是queens 版本 1.Op ...
- 从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者、单消费者工作原理解析
1.lmax-Disruptor队列介绍 disruptor是英国著名的金融交易所lmax旗下技术团队开发的一款java实现的高性能内存队列框架 其发明disruptor的主要目的是为了改进传统的内存 ...
- Java随谈(六)## 我们真的理解 Java 里的整型吗?
我们真的理解 Java 里的整型吗 整型是我们日常生活中最常用到的基础数据类型,看这篇文章之前,我想问: 我们真的像自己认为的那么理解 Java 内的整型吗? 也许看完本篇文章你就有自己的答案. C ...
- Redis之Lua的应用(四)
一.什么是Lua脚本 Lua是一个高效的轻量级脚本语言(和JavaScript类似),用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.Lu ...
- 运行时应用自我保护(RASP):应用安全的自我修养
应用程序已经成为网络黑客想要渗透到企业内部的绝佳目标. 因为他们知道如果能发现并利用应用程序的漏洞,他们就有超过三分之一的机会成功入侵. 更重要的是,发现应用程序漏洞的可能性也很大. Contrast ...
- SimpleMarkDown编辑器离线版以及桌面应用版上线
之前,我们开发了Web版本SimpleMarkDown编辑器.今天,我们又推出了离线版和桌面应用版. 主要功能: 页面简约: 实时保存: 一键清空内容: 支持微信公众号.知乎.稀土掘金.CSDN等多个 ...
- 《Java编程思想》学习笔记_多态
多态 多态指一个行为产生多种状态,针对父类类型可接收其子类类型,最终执行的状态由具体子类确定,其不同子类可呈现出不同状态.例如人[父类]都会跑步[行为],但小孩[子类]跑步.成年人[子类]跑步.运动员 ...
- python小题目练习(八)
题目:电视剧的收视率排行榜 需求:实现如下图所示需求 代码展示: """Author:mllContent:电视剧的收视率排行榜Date:2020-11-16" ...