一起做激光反光板(四)-框架搭建
我们已经推导了基本的反光板建图和定位的基本公式,接下来,开始搭建一个框架,尝试进行反光板的建图定位的代码加进去。
首先,搭建一个ROS框架,在我的个人github的reflector_ekf_slam上上传一个基于激光反光板的EKF建图定位方案。
基本框架:
ROS接收topic:
scan: sensor_msgs::LaserScan
odom: nav_msgs::Odometry
需要注意的是:
(1)轮速计数据必须有线速度和角速度,轮速计的方差写死了:
Qu_ << 0.02 * 0.02, 0.f, 0.f, 0.034 * 0.034;
(2)只接受单线激光雷达的数据。
发出的topic:
ekf_slam/landmark:visualization_msgs::MarkerArray
ekf_slam/pose: geometry_msgs::PoseWithCovarianceStamped
ekf_slam/path: nav_msgs::Path
发布的消息:
(1)反光板地图
(2)实时位姿
(3)历史轨迹
反光板检测与匹配
(1)反光板检测:
其实代码中所写的检测方案是最容易想到的,但是在实际使用的时候,在工程上无法满足需求。有提升的方法,但是在博客中不太好介绍,故当前的检测要求是环境中布置的都是30cm长的反光板,且只能支持这一种反光板。检测的要求是长度不超过3cm的偏差。
另外,代码中没有进行运动畸变校正操作,这是非常危险的,因为在高速运动的过程中,运动畸变会很大,容易造成检测失败和关联错误。
(2)反光板匹配
反光板的匹配是通过马氏距离计算的,马氏距离的阈值设置为0.05。
(3)外参转换问题
外参在代码中写死了:
lidar_to_base_link_ << 0.41589, 0.25639, 0.0;
需要标定的呀。之所以写在类内,是因为之后打算做在线外参估计。当然,这个程序也可以作为单线激光雷达外参标定程序来用。
(4)观测残差
在类内写死了:
Qt_ << 0.03 * 0.03, 0.f, 0.f, 0.03 * 0.03;
建图和定位EKF
建图和定位用的是一个框架,具体实现需要看代码。
地图的保存和读取
通过txt保存,后续可以改进为xml、json、proto等。保存的内容:
反光板的坐标(x,y)(x,y)(x,y)和协方差Σ\SigmaΣ
问题
(1)反光板检测和匹配(不再优化)
(2)激光帧未进行运动畸变校正
(3)激光帧的信息只用了反射强度,点云没用,有点可惜
(4)激光雷达的外参需要在线估计
后续待更新部分
(1)激光帧未进行运动畸变校正
(2)激光雷达的外参在线估计
(3)基于滑窗的EKF公式推导
(4)扩充观测:激光线特征、直角特征
(5)扩充观测:帧间ICP
(6)FEJ
(7)利用EKF位姿构建栅格地图
一起做激光反光板(四)-框架搭建相关推荐
- 一起做激光反光板(六)-基于滑窗的EKF-SLAM及外参自动标定公式推导
在第四篇中已经提到,如果场景中反光板不够多,容易造成EKF系统效果不好的问题,且我们还想用上其他的点云信息,保证在反光板不够的情况下仍能够正确的收敛. 我们考虑扩充观测信息: (1)角点和线段特征,加 ...
- python做项目日程表_Flask框架搭建一个日程表
前言 用Flask框架,SQLalchemy,SQlite 和Vertabelo 搭建一个日程表. 这个并不是最终产品,目的是展示python web开发的流程,欢迎不吝赐教! github下载源码 ...
- 一起做激光反光板(一)-EKF定位公式推导
前提:本文只考虑平面运动. EKF的公式及原理不再细述:EKF原理 观测:观测数据为反光板.反光板的检测暂时也不考虑.(一般来说,反光板的检测都是基于反射强度来做的,需要自己手写,如果有疑问留言). ...
- 一起做激光反光板(三)-EKF建图公式推导
继续EKF建图公式推导. 构建反光板地图和定位篇有很大部分的重复.因为上一篇其实也包含了建图. 如果已经有初始的反光板地图,且初始的反光板地图不允许优化,且允许添加新的反光板,则该公式和上一篇反光板定 ...
- 一起做激光反光板(二)-EKF定位公式推导-扩展状态空间
继续公式推导. 扩展状态空间的原因在上一篇EKF公式推导中已经提过,假如在实际操作中,很有可能会临时在某些场合增加反光板来增强定位系统的稳定性.因此,需要在定位过程中,将该状态空间扩展. 定位EKF公 ...
- Android 天气APP(四)搭建MVP框架与使用
上一篇:Android 天气APP(三)访问天气API与数据请求 MVP/MVVM框架搭建与使用 新版------------------- 一.创建依赖模块 二.模块初始化 三.搭建网络框架 四.基 ...
- nodejs php做平台,用nodejs做一套康养管理系统(1)--基础框架搭建
用nodejs做一套康养管理系统(1)--基础框架搭建 这两天准备开始一个康养项目管理系统的开发,闲来无事想将整个流程写下来,并将本项目开发代码开源.首先本次先梳理下结构,画一个拓扑结构图,再根据结构 ...
- Unity 游戏框架搭建 2018 (四) 我所理解的框架
前言 架构和框架这些概念听起来很遥远,让很多初学者不明觉厉.会产生"等自己技术牛逼了再去做架构或者搭建框架"这样的想法.在这里笔者可以很肯定地告诉大家,初学者是完全可以去做这些事情 ...
- Silverlight游戏设计(Game Design):(四)从零开始搭建游戏主体框架
思路已俨然清晰,接下来要做的是从零开始搭建游戏的主体框架.Silverlight作为RIA界的新宠儿,不仅在游戏开发方面性能优越,在企业开发领域的优异表现同样日益显著.像我们这些长期从事.NET开发的 ...
最新文章
- 深度洞见|从起源到应用,一文详解营销界爆火的 CDP
- python如何实现人工智能应用锁_如何清除应用锁的数据库
- python pychart三维_详解python模块pychartdir安装及导入问题
- DHCP的安装到简单测试(tar方式)
- 拓端tecdat|R、Python、Open Refine采集pdf数据,清理数据和格式化数据
- mc服务器小地图不显示玩家,为啥小地图莫名消失了 玩家:或许是它喝完随机饮料后 自己隐身了...
- python词频统计三国演义_python实例:三国演义TXT文本词频分析
- 读笔:《重来也不会好过现在》
- matlab rand函数解释,matlab rand()函数五种用法
- [资源]C++ 程序员必收藏
- bat遍历所有子文件和文件夹,修改后缀名,亲测有效果(原创)
- ――关于几个著名小说的胡思乱想
- 难上加难?女性在技术领域可以这样做……
- 黑苹果html5,黑苹果配置必备神器 Clover Configurator v5.10.0.0 官方中文原版
- 通过 磁带机 备份 恢复数据 --201308
- 把json中的全部key转化为驼峰式(首字母大写形式)
- PowerShell 运行ps1文件
- bilibili视频av号的查找
- 解决报错“Ignoring ffi-1.12.2 because its extensions are not built. Try: gem pristine ffi --version 1.12”
- 电信冲锋在前 高速宽带打造智慧生活