自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (6)
  • 收藏
  • 关注

原创 相机内参标定理论篇------相机模型选择

广角相机最好选择等距相机模型,OpenCV中使用的模型是由Kannala提出的一种鱼眼相机的一般近似模型。当拿到一款需要标定的相机,第一个问题就是选择合适的相机模型来标定相机。广角相机和鱼眼相机其实都属于鱼眼相机的范畴,只是标定时选择的相机模型不一样。作者个人经验,小于180度的相机可以使用OpenCV中相机模型来标定相机,但是如果相机度数大于180度时OpenCV标定出来的效果并不是十分好。鱼眼相机四种投影模型其中最常用的是等距相机模型,所以主要对等距相机模型进行讨论,其它模型感兴趣自己上网搜索。

2023-12-27 23:22:10 2941 1

原创 相机内参标定理论篇------张正友标定法

1.张正友标定法最重要的地方是计算出了相机内参和外参的数值解,然后作为初始值代入的优化函数,解决了局部最优化的问题,是手工标定相机内参成为可能。2.由于相机标定数据是手工采集,因此相机内参标定的精度取决于数据质量。涉及标定板选取和采集图像的注意事项,后续文章会介绍如何采集图像。3.由于相机内外参在投影过程具有耦合关系,所以在优化时外参结果不准确也会影响内参结果,导致重投影误差很小但是得到的相机内参误差较大。

2023-12-24 00:26:25 2356 1

原创 GMapping代码解析

前言:      最近正好 用到GMapping,需要改代码, 但看过也总是在忘,那干脆写篇博客记录 下来同时也可以帮助想要了解GMapping代码的同学。      代码的入口依然是main函数,但GMapping代码中由很多是没有用的,所以并 不需要挨个看,可以说代码的作者代码能力挺强但代码风格却是不敢恭维。这里就 不带大家挨个文件度代码,只是对几个主要的 函数进行介绍。     ...

2018-09-27 11:17:45 6384 3

原创 LOAM SLAM代码解析之一:scanRegistration.cpp 点云及IMU数据处理节点

前言       LOAM的源码有好几个版本,对应于不同的硬件设备。由于大多数三维激光使用velodyne,所以我主要看的是Velodyne16线程激光的这个版本。并且KITTI里也有Velodyne16线程的激光数据,可以用来对程序进行测试。代码的结构和论文讲的一致,主要分为四个.cpp 文件分别对应下图中的四个部分。今天先看一下Point Cloud Regisration这部分的源码,也...

2018-09-17 15:29:24 13089 17

原创 LOAM 论文及原理分析

前言: 由于对三维激光SLAM比较感兴趣,并且最近也在找无人驾驶激光SLAM算法的岗位,所以花了一个多月把LOAM的论文和源码好好看了一遍。发现论文还是比较容易明白,但一看代码全是坑。看论文懂了,看代码似懂非懂。为了尽快把这坑填上,所以诚邀读者一起探讨。作者始终认为填坑最好的方法是拉别人和你一起填坑。由于三千多行的源码不是一篇博客能够讲明白的,所以这篇博客主要讲一下我对LOAM论文...

2018-09-15 22:18:40 56976 8

原创 GMapping原理分析

概念:      1、Gmapping是基于滤波SLAM框架的常用开源SLAM算法。      2、Gmapping基于RBpf粒子滤波算法,即将定位和建图过程分离,先进行定位再进行建图。      3、Gmapping在RBpf算法上做了两个主要的改进:改进提议分布和选择性重采样。优缺点:     优点:Gmapping可以实时构建室内地图,在构建小场景地图所需的计算量较小且...

2018-08-22 17:55:32 87974 53

原创 贝叶斯滤波

前言: 首先声明一点:贝叶斯滤波并不是一个具体算法无法在实际中运用,它只是一个框架。后来的参数滤波(如:卡尔曼滤波、扩展卡尔曼)和非参数滤波(如:直方图滤波和粒子滤波)都是基于这个框架出来的。 具体来说滤波就是结合不同传感器获得的数据来确定状态变量的置信度。通过滤波将错误数据滤除掉,在参数滤波中的表现就是减小变量状态的方差,在粒子滤波中就是排除错误的粒子。 ...

2018-08-19 16:09:21 5099 3

原创 激光SLAM之一:为什么要用贝叶斯来做滤波

前言:      我们知道目前的激光SLAM算法主要分为两种:基于滤波的SLAM和基于图优化的SLAM。而基于滤波的SLAM问题又是基于贝叶斯滤波的框架。因此我们不仅要问为什么需要使用贝叶斯来做滤波?概念:什么是滤波?      滤波,即滤除噪声。我们知道在估计状态的过程中,控制引入运动噪声和观测引入传感器测量噪声。而滤波的实现是通过控制和观测获得的对同一状态不同的冗余信息(控制的预测...

2018-07-13 15:24:31 4213

蔡自兴机器人学一到十章PPT

蔡自兴,男,福建莆田人,汉族。1962年7月毕业于西安交通大学机电工程系工业电气自动化专业。已从事自动控制、计算机科学技术等教学和科研工作50年。联合国专家、国际导航与运动控制科学院院士、纽约科学院院士、首届全国高校国家级教学名师。2009年荣获徐特立教育奖。2014年荣获吴文俊人工智能科学技术奖成就奖。 [1] 2016年获得IEEE fellow。 [2-3] 我国智能系统、人工智能、智能控制、智能机器人专家,被誉为“中国智能控制学科的奠基者”和“中国人工智能教育第一人”。

2018-05-29

机器人学导论

《机器人学导论》是2006年由机械工业出版社出版的图书,作者是(美)John J. Craig等,贠超等译。

2018-05-29

cartographer、graphslam论文

Cartographer主要理论是通过闭环检测来消除构图过程中产生的累积误差[1]。用于闭环检测的基本单元是submap。一个submap是由一定数量的laser scan构成。将一个laser scan插入其对应的submap时,会基于submap已有的laser scan及其它传感器数据估计其在该submap中的最佳位置。submap的创建在短时间内的误差累积被认为是足够小的。然而随着时间推移,越来越多的submap被创建后,submap间的误差累积则会越来越大。因此需要通过闭环检测适当的优化这些submap的位姿进而消除这些累积误差,这就将问题转化成一个位姿优化问题。当一个submap的构建完成时,也就是不会再有新的laser scan插入到该submap时,该submap就会加入到闭环检测中。闭环检测会考虑所有的已完成创建的submap。当一个新的laser scan加入到地图中时,如果该laser scan的估计位姿与地图中某个submap的某个laser scan的位姿比较接近的话,那么通过某种 scan match策略就会找到该闭环。Cartographer中的scan match策略通过在新加入地图的laser scan的估计位姿附近取一个窗口,进而在该窗口内寻找该laser scan的一个可能的匹配,如果找到了一个足够好的匹配,则会将该匹配的闭环约束加入到位姿优化问题中。Cartographer的重点内容就是融合多传感器数据的局部submap创建以及用于闭环检测的scan match策略的实现。

2018-05-28

C++高质量编程-林锐

除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以 前捏造的 C++/C 程序怎么会有那么多的毛病?”

2018-05-23

gmapping论文

gmapping是目前应用最广的2D slam 方法,利用RBPF方法,故需要了解粒子滤波算法。scan-match方法在于估计机器人位置(pose),利用梯度下降的方法,在当前构建的地图,与当前的激光点,和机器人位置(pose)为初始估计值。

2018-05-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除