我们已经推导了基本的反光板建图和定位的基本公式,接下来,开始搭建一个框架,尝试进行反光板的建图定位的代码加进去。

首先,搭建一个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位姿构建栅格地图

一起做激光反光板(四)-框架搭建相关推荐

  1. 一起做激光反光板(六)-基于滑窗的EKF-SLAM及外参自动标定公式推导

    在第四篇中已经提到,如果场景中反光板不够多,容易造成EKF系统效果不好的问题,且我们还想用上其他的点云信息,保证在反光板不够的情况下仍能够正确的收敛. 我们考虑扩充观测信息: (1)角点和线段特征,加 ...

  2. python做项目日程表_Flask框架搭建一个日程表

    前言 用Flask框架,SQLalchemy,SQlite 和Vertabelo 搭建一个日程表. 这个并不是最终产品,目的是展示python web开发的流程,欢迎不吝赐教! github下载源码 ...

  3. 一起做激光反光板(一)-EKF定位公式推导

    前提:本文只考虑平面运动. EKF的公式及原理不再细述:EKF原理 观测:观测数据为反光板.反光板的检测暂时也不考虑.(一般来说,反光板的检测都是基于反射强度来做的,需要自己手写,如果有疑问留言). ...

  4. 一起做激光反光板(三)-EKF建图公式推导

    继续EKF建图公式推导. 构建反光板地图和定位篇有很大部分的重复.因为上一篇其实也包含了建图. 如果已经有初始的反光板地图,且初始的反光板地图不允许优化,且允许添加新的反光板,则该公式和上一篇反光板定 ...

  5. 一起做激光反光板(二)-EKF定位公式推导-扩展状态空间

    继续公式推导. 扩展状态空间的原因在上一篇EKF公式推导中已经提过,假如在实际操作中,很有可能会临时在某些场合增加反光板来增强定位系统的稳定性.因此,需要在定位过程中,将该状态空间扩展. 定位EKF公 ...

  6. Android 天气APP(四)搭建MVP框架与使用

    上一篇:Android 天气APP(三)访问天气API与数据请求 MVP/MVVM框架搭建与使用 新版------------------- 一.创建依赖模块 二.模块初始化 三.搭建网络框架 四.基 ...

  7. nodejs php做平台,用nodejs做一套康养管理系统(1)--基础框架搭建

    用nodejs做一套康养管理系统(1)--基础框架搭建 这两天准备开始一个康养项目管理系统的开发,闲来无事想将整个流程写下来,并将本项目开发代码开源.首先本次先梳理下结构,画一个拓扑结构图,再根据结构 ...

  8. Unity 游戏框架搭建 2018 (四) 我所理解的框架

    前言 架构和框架这些概念听起来很遥远,让很多初学者不明觉厉.会产生"等自己技术牛逼了再去做架构或者搭建框架"这样的想法.在这里笔者可以很肯定地告诉大家,初学者是完全可以去做这些事情 ...

  9. Silverlight游戏设计(Game Design):(四)从零开始搭建游戏主体框架

    思路已俨然清晰,接下来要做的是从零开始搭建游戏的主体框架.Silverlight作为RIA界的新宠儿,不仅在游戏开发方面性能优越,在企业开发领域的优异表现同样日益显著.像我们这些长期从事.NET开发的 ...

最新文章

  1. 深度洞见|从起源到应用,一文详解营销界爆火的 CDP
  2. python如何实现人工智能应用锁_如何清除应用锁的数据库
  3. python pychart三维_详解python模块pychartdir安装及导入问题
  4. DHCP的安装到简单测试(tar方式)
  5. 拓端tecdat|R、Python、Open Refine采集pdf数据,清理数据和格式化数据
  6. mc服务器小地图不显示玩家,为啥小地图莫名消失了 玩家:或许是它喝完随机饮料后 自己隐身了...
  7. python词频统计三国演义_python实例:三国演义TXT文本词频分析
  8. 读笔:《重来也不会好过现在》
  9. matlab rand函数解释,matlab rand()函数五种用法
  10. [资源]C++ 程序员必收藏
  11. bat遍历所有子文件和文件夹,修改后缀名,亲测有效果(原创)
  12. ――关于几个著名小说的胡思乱想
  13. 难上加难?女性在技术领域可以这样做……
  14. 黑苹果html5,黑苹果配置必备神器 Clover Configurator v5.10.0.0 官方中文原版
  15. 通过 磁带机 备份 恢复数据 --201308
  16. 把json中的全部key转化为驼峰式(首字母大写形式)
  17. PowerShell 运行ps1文件
  18. bilibili视频av号的查找
  19. 解决报错“Ignoring ffi-1.12.2 because its extensions are not built. Try: gem pristine ffi --version 1.12”
  20. 电信冲锋在前 高速宽带打造智慧生活

热门文章

  1. 工业相机千兆网线和USB优劣对比
  2. 软件测试2020年终总结
  3. android3D摄像机
  4. TPM零知识学习四 —— tpm2-tss源码安装
  5. Google 重叠实验框架:更多,更好,更快地实验(Google A/B实验论文)
  6. 南京邮电大学实验报告5
  7. 劳动合同到期,公司提出不续签怎么办?
  8. 色值的透明度与十六进制代码转换
  9. 你的善良,需要带有点锋芒
  10. Day437438439.秒杀服务 -谷粒商城