HectorSLAM论文解析?代码重写(2)

这篇文章为HectorSLAM系列的以下部分

    • HectorSLAM的整体逻辑

      • 激光匹配
      • 地图构造
      • 地图更新
    • 500行代码重写一个LidarSLAM
      • 测试数据的准备,和测试数据读取模块的编写
      • GUI编写
      • 地图模块的编写
      • 核心模块的编写
        • 主循环
        • 匹配算法

首先绘制一张以扫描匹配为核心的SLAM(例如Hector,Karto_slam,Cartographer..)大概的流程图:

基本上以这一类SLAM流程分以下几个部分:

  1. motion prediction(运动预测)
  2. scan matching(扫描匹配)
  3. map update(地图更新)
  4. pose update(姿态更新)

因为原版的Hector并没有使用车轮odometry。所以运动预测部分,仅为根据前一个状态的位置和速度的预测。所以我们直接从跳过motion prediction,下面从2.scan matching(扫描匹配)开始谈起。

1.scan matching(扫描匹配)

所谓匹配就是把从传感器得到的数据和已经知道的地图进行匹配。我们首先假定周围环境是静态的,在静态的环境中,传感器数据应该和已知的地图情报应该高度一致才对。所以在没有噪音的情况下以下方程应该成立:

$\sum _{i=0}^{n}\left[ 1-M\left( S_{i}\left( \xi \right) \right) \right] = 0$

其中$\xi=\left(p_x,p_y,\psi\right)$代表机器人的姿态(x坐标,y坐标,角度)

Si代表,i号激光束,在姿态下ξ的照射到的障碍物坐标。

M代表某坐标为障碍物的概率。1为100%为障碍物,0为100%空闲区域

在传感器没有噪音,地图情已知且没有误差的的情况下,可以求解以上方程,得到未知量ξ(姿态)。直观上来说就是调整姿态使得所有的激光都正确的测量到障碍物。但现实的情况却没有怎么完美,传感器有噪音,地图有误差,且部分未知。所以我们转而求解以下最小二乘法:

$argmin_{\xi}\sum _{i=0}^{n}\left[ 1-M\left( S_{i}\left( \xi \right) \right) \right]^2$

这个公式的就求解方法,在论文的公式(9)~(13)有推导过程。这里虽然不推导(论文已经足够详细),但是仍然建议自己推导一次加深理解。

根据下面的方程我们似乎已经可以通过扫描匹配解出机器人姿态了。

2.地图构造

我们似乎可以解出机器人姿态了。。。其实我们还不行的。。。因为求解以上(12)(13)是需要求M的偏导的,我们知道求解偏导的是需要连续空间的,但Hector使用的格子地图(grid map)存在于离散的空间中。

所以,首先我们需要一些方法把我们的离散的格子地图,转换为可以求导的连续地图。

时间: 2024-10-27 10:25:19

HectorSLAM论文解析?代码重写(2)的相关文章

HectorSLAM论文解析?代码重写(3)

这篇文章为HectorSLAM系列的以下部分 HectorSLAM的整体逻辑 激光匹配 地图构造 地图更新 500行代码重写一个LidarSLAM 测试数据的准备,和测试数据读取模块的编写 GUI编写 地图模块的编写 核心模块的编写 主循环 匹配算法 本文中的代码和数据放在:https://github.com/scomup/lslam 在[HectorSLAM论文解析?代码重写(2)]中,我们已经理清楚理论,从这一篇文章开始,我们就用python,手把手把上面的内容用代码实现. 当然在代码之前

深度学习用于文本分类的论文及代码集锦

深度学习用于文本分类的论文及代码集锦 原创: FrankLearningMachine 机器学习blog 4天前 [1] Convolutional Neural Networks for Sentence Classification Yoon Kim New York University EMNLP 2014 http://www.aclweb.org/anthology/D14-1181 这篇文章主要利用CNN基于预训练好的词向量中对句子进行分类.作者发现利用微调来学习任务相关的词向量可

(转) AI突破性论文及代码实现汇总

本文转自:https://zhuanlan.zhihu.com/p/25191377 AI突破性论文及代码实现汇总 极视角 · 2 天前 What Can AI Do For You? "The business plans of the next 10,000 startups are easy to forecast: Take X and add AI." - Kevin Kelly "A hundred years ago electricity transforme

[转]计算机视觉、机器学习相关领域论文和源代码大集合

计算机视觉.机器学习相关领域论文和源代码大集合--持续更新…… [email protected] http://blog.csdn.net/zouxy09 注:下面有project网站的大部分都有paper和相应的code.Code一般是C/C++或者Matlab代码. 最近一次更新:2013-3-17 一.特征提取Feature Extraction: ·         SIFT [1] [Demo program][SIFT Library] [VLFeat] ·         PCA

Node.js的Connect框架的代码重写与改进

Node.js的Connect框架的代码重写与改进 Connect框架简介 Connect框架是建立在Node.js的基本http.server功能之上,帮助实现结构化的web服务器逻辑的框架.Connect框架建立在两个重要的设计模式之上. 1) 责任链模式 在处理web请求时常需要作分派处理.例如,ASP.NET MVC支持按照请求参数将处理分派至某个Controller类的某个Action方法,以及根据Action方法的返回结果类型分派不同的结果操作(如ViewResult.JsonRes

计算机视觉、机器学习相关领域论文和源代码大集合[转]

注:下面有project网站的大部分都有paper和相应的code.Code一般是C/C++或者Matlab代码. 最近一次更新:2013-3-17 一.特征提取Feature Extraction: ·         SIFT [1] [Demo program][SIFT Library] [VLFeat] ·         PCA-SIFT [2] [Project] ·         Affine-SIFT [3] [Project] ·         SURF [4] [Ope

iOS开发之XML解析代码

iOS开发之XML解析代码 //1.加载和解析XML文件 NSString *path = [[NSBundle mainBundle] pathForResource:@"xml.txt" ofType:nil]; NSData *data = [[NSData alloc] initWithContentsOfFile:path]; // GDataXMLDocument 表示XML文档对象 // initWithData 使用NSData初始化, 就是解析 GDataXMLDoc

[转载][资料].计算机视觉、机器学习相关领域论文和源代码大集合

注:下面有project网站的大部分都有paper和相应的code.Code一般是C/C++或者Matlab代码. 最近一次更新:2013-3-17 目录(注:未添加索引,仅用于方便浏览) 一.特征提取Feature Extraction 二.图像分割Image Segmentation 三.目标检测Object Detection 四.显著性检测Saliency Detection 五.图像分类.聚类Image Classification, Clustering 六.抠图Image Matt

CVPR2020论文解析:视频分类Video Classification

CVPR2020论文解析:视频分类Video Classification Rethinking Zero-shot Video Classification: End-to-end Training for Realistic Applications 论文链接:https://arxiv.org/pdf/2003.01455.pdf 摘要 深度学习(deep learning,DL)是在大型数据集上进行训练的,它可以将视频准确地分为数百个不同的类.然而,视频数据的注释是昂贵的.Zero-sh