定位、地图建立及管理合集
系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理
文章目录
- 系列文章目录
- 前言
- 机器人中常见的定位技术介绍
- 一、直方图定位原理
- 二、gnss、rtk定位原理
- 三、【依赖二维激光雷达与全局地图的定位算法】amcl(蒙特卡洛)粒子滤波定位算法
- 四、【依赖高精度点云地图和三维激光雷达的定位方案】正态分布变换(NDT)定位及建图
- 五、ICP(迭代最近点)定位算法
- 六、robot_pose_ekf扩展卡尔曼位姿估计算法
- 七、【autoware定位模块】
- 八、一些入门的定位开源工程
- 机器人地图建立及管理导读
- 一、地图的理解及地图的类型介绍
- 二、地图SLAM构建基础理解
- 三、构建地图准备
- 点云数据处理
- 直通滤波器
- 半径滤波器
- 体素滤波器
- 均匀采样滤波
- 统计滤波器
- 条件滤波器
- 双边滤波器
- 四、构建特征点云地图--2D激光雷达地图构建介绍
- 二维全局地图的开源方案及对比--gmapping、hector、karto、cartographer
- 五、构建特征点云地图--3D激光雷达地图构建介绍
- 【依赖高精度点云地图和三维激光雷达的定位方案】正态分布变换(NDT)定位及建图
- 三维全局地图的开源方案及对比--NDT、LOAM、LIO-SAM、ALOAM、FLOAM、Lego_loam、SC-Lego-LOAM
- 六、构建特征点云地图--视觉SLAM介绍
- 视觉SLAM全局地图的开源方案及对比--rgbdslam、ORB_SLAM、RTAB SLAM
- 七、代价栅格地图costmap的介绍
- 第一章:costmap_2d代价地图生成原理
- 第二章:二维占据栅格地图costmap生成方法及源码解析
- 八、vector_map矢量化地图的生成
- 九、通过栅格地图,目标路径(目标点)建立距离场地图
- 十、autoware高精度地图模块demo
- 十一、【规控+slam】探索建图方案及代码分享
- 其他知识
- 【地图mapping】视觉SLAM--李群与李代数理论
- 【局部地图建立mapping】PCL点云处理建立局部占据及代价地图的方法
前言
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对定位、地图合集做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章
提示:以下是本篇文章正文内容
机器人中常见的定位技术介绍
在现代导航与定位技术中,我们通常采用多种理论和方法来实现精确的位置估计。这些方法大体上可以归纳为基于地图的定位、基于滤波器融合的定位以及基于图优化的定位。
https://blog.csdn.net/qq_35635374/article/details/131841432
https://blog.csdn.net/qq_35635374/article/details/120958108
一、直方图定位原理
直方图定位是一种基于概率的方法,它通过对状态空间进行离散化处理来实现定位。
https://blog.csdn.net/qq_35635374/article/details/138793299
二、gnss、rtk定位原理
GNSS(全球导航卫星系统)定位基于从多颗卫星接收的信号,而RTK(实时动态差分技术)则是一种提高GNSS定位精度的方法
https://blog.csdn.net/qq_35635374/article/details/124555256
三、【依赖二维激光雷达与全局地图的定位算法】amcl(蒙特卡洛)粒子滤波定位算法
AMCL(自适应蒙特卡洛定位)是一种基于粒子滤波器的概率定位系统,广泛应用于机器人在二维环境中的定位。介绍amcl(蒙特卡洛)粒子滤波定位算法,包括蒙特卡罗方法原理、amcl定位节点的订阅与发布、amcl定位功能包用法、amcl定位程序源码、处理amcl全局定位失败的工程经验等等
https://blog.csdn.net/qq_35635374/article/details/120960257
四、【依赖高精度点云地图和三维激光雷达的定位方案】正态分布变换(NDT)定位及建图
正态分布变换(Normal Distributions Transform,简称NDT)定位及建图算法是一种广泛应用于机器人定位和地图构建领域的算法。本文将对NDT定位解决的主要问题、核心思想以及算法流程进行详细介绍。
https://blog.csdn.net/qq_35635374/article/details/121786885
五、ICP(迭代最近点)定位算法
ICP(Iterative Closest Point)定位算法是一种广泛应用于计算机视觉和机器人领域的算法,主要用于求解两个点集之间的空间变换问题。ICP算法的核心思想是通过迭代的方式,寻找两个点集之间的最近点对应关系,从而计算它们之间的最优刚体变换。
本文介绍ICP(迭代最近点)定位算法,包括ICP算法原理、ICP算法代码实现、ICP算法优缺点分析
https://blog.csdn.net/qq_35635374/article/details/138506177
六、robot_pose_ekf扩展卡尔曼位姿估计算法
介绍robot_pose_ekf扩展卡尔曼位姿融合估计算法,包括EKF工作原理、配置robot_pose_ekf的ROS功能包launch及robot_pose_ekf的效果。
https://blog.csdn.net/qq_35635374/article/details/120960189
扩展卡尔曼的相关知识看看传感器融合的专栏
七、【autoware定位模块】
介绍autoware定位模块,包括先介绍一个较通用的定位流程、再详细介绍三个定位相关的功能包(gnss_localizer的GPS定位解析功能包、Ndt_cpu的NDT算法原理功能包、NDT_matching定位集成功能包),最后介绍在高精度地图中实现组合定位。
https://blog.csdn.net/qq_35635374/article/details/124540935
八、一些入门的定位开源工程
介绍一些入门的定位开源工程,包括在ROSgazebo仿真系统的物理引擎提供的定位、ROS中robot_localization工程方案、autoware的三种定位方式
https://blog.csdn.net/qq_35635374/article/details/139009741
机器人地图建立及管理导读
一、地图的理解及地图的类型介绍
在一个导航系统中,地图的主要作用是给决策规划提供先验的环境数据,在一个复杂的导航系统中,地图分为多个层级,包括高精度点云图层、语义图层、可视化图层、其他形式图层等。
不同层级的地图存储并更新不同类型的数据,因此不同层级的地图往往使用不同的地图格式,包括特征点云地图、矢量地图、语义地图、二维占据地图、二维代价地图、三维八叉树地图、ESDF Map欧氏距离场地图等等。
总的来说,我们可以认为地图就是一个巨大的数据结构,不同的地图格式本质就是使用不同数据结构存储和更新环境信息。本文先介绍常用的地图格式,了解不同地图格式的特性和功能。针对不同的地图格式,地图的建立和更新方法在下面章节进行介绍。
https://blog.csdn.net/qq_35635374/article/details/120960481
二、地图SLAM构建基础理解
介绍地图构建的相关知识,包括地图模块与感知模块、地图模块与定位模块、地图模块与决策模块、地图模块与路径规划模块的关系和交互,不同模块的交互方式决定了一个导航架构的基本构型,进而影响技术方案和业务效果,所以从地图模块出发理解导航是一个很不错的出发点。
作为引入,可从构建地图的过程比喻、SLAM的实现要解决的问题、SLAM的传感器选型等等方面进行介绍。
https://blog.csdn.net/qq_35635374/article/details/120978752
三、构建地图准备
构建地图需要感知与传感器的支持,简述激光传感器的选型与地图构建的选型问题、与点云数据的后处理问题
https://blog.csdn.net/qq_35635374/article/details/120979417
点云数据处理
1、点云数据密度不规则需要平滑处理
2、去除因为遮挡等问题造成离群点
3、数据量较大,需要进行下采样( Downsample)
4、去除噪声数据。
直通滤波器
作用是在指定的维度方向上保留特定值域内的点,同时过滤掉不在这个范围内的点。这种方法特别适用于消除背景噪声或初步裁剪点云数据集,以限定在特定的感兴趣区域(ROI)内。
https://blog.csdn.net/qq_35635374/article/details/141361362
半径滤波器
用于识别并移除点云数据中离群点的一种有效方法
https://blog.csdn.net/qq_35635374/article/details/141363856
体素滤波器
体素滤波器是一种下采样的滤波器,它的作用是使用体素化方法减少点云数量,采用**体素格中接近中心点的点替代体素内的所有点云,是会移动点的位置。**这种方式即减少点云数据,并同时保存点云的形状特征,在提高配准,曲面重建,形状识别等算法速度中非常实用。
https://blog.csdn.net/qq_35635374/article/details/141333547
均匀采样滤波
相较于体素滤波,均匀采样滤波计算出的最终结果点云,不改变点云点的位置,保持其原始形态。均匀采样滤波因为有质心点复原到体素块这一步,因此速度会比体素滤波更慢些。
https://blog.csdn.net/qq_35635374/article/details/141362926
统计滤波器
统计滤波器用于去除点云数据中离群点的一种滤波方法。它通过统计分析技术来识别并移除那些与周围点距离较远的离群点,这些离群点可能是由于测量误差或其他原因产生的噪声点。
https://blog.csdn.net/qq_35635374/article/details/141363316
条件滤波器
用于根据特定条件筛选点云数据的一种方法。它通过设定一个或多个条件,对点云中的每个点进行评估,仅保留满足这些条件的点。
https://blog.csdn.net/qq_35635374/article/details/141364222
双边滤波器
双边滤波器的工作原理是基于空间邻近度和值相似度的加权平均。它对每个点的邻域内的点进行加权平均处理
https://blog.csdn.net/qq_35635374/article/details/141364500
四、构建特征点云地图–2D激光雷达地图构建介绍
介绍2D激光雷达的构建特征点云地图的相关知识
首先,介绍2D激光SLAM建图算法的发展,依次经历了使用基于滤波器的方法建图、使用基于图优化的方法建图、使用基于已知位姿的方法建图、使用基于激光融合视觉的建图方法等等。
再介绍了SLAM的关键技术,如SLAM建图的输入数据与输出数据、SLAM的后端回环检测方法等等。
https://blog.csdn.net/qq_35635374/article/details/120979524
二维全局地图的开源方案及对比–gmapping、hector、karto、cartographer
依次介绍构建二维全局地图的开源算法方案,包括gmapping算法、hector算法、karto算法、cartographer算法。
分别从算法原理、算法流程、工程框架解析机部署三个方面对上述算法进行详细介绍,最后对2D的SLAM方案进行对比。
https://blog.csdn.net/qq_35635374/article/details/121000952
五、构建特征点云地图–3D激光雷达地图构建介绍
介绍3D激光雷达的构建特征点云地图的相关知识
首先,介绍3D激光SLAM建图算法的发展,依次经历了使用LOAM-纯激光,匀速运动假设,无回环(Lidar Odometry And Mapping(LOAM))的方法建图、使用V-LOAM-视觉激光融合、漂移匀速假设,无回环的方法建图、使用VELO-视觉激光融合,无运动畸变假设,有回环的方法建图方法等等。
再介绍了SLAM的关键技术,如SLAM建图的输入数据与输出数据、3D激光里程计(作为一个3d建图前端存在的)、3D激光SLAM的前端帧间匹配Tracking方法、3D激光SLAM的后端回环检测方法等等。
https://blog.csdn.net/qq_35635374/article/details/120981832
【依赖高精度点云地图和三维激光雷达的定位方案】正态分布变换(NDT)定位及建图
介绍正态分布变换(NDT)定位及建图的方法,包括正态分布变换(NDT)定位解决的主要问题、正态分布变换(NDT)定位的核心思想、NDT算法流程、NDT配准的C++源码实现。
https://blog.csdn.net/qq_35635374/article/details/121786885
三维全局地图的开源方案及对比–NDT、LOAM、LIO-SAM、ALOAM、FLOAM、Lego_loam、SC-Lego-LOAM
依次介绍构建三维全局地图的开源算法方案,包括NDT算法、LOAM算法、LIO-SAM算法、ALOAM算法、FLOAM算法、Lego_loam算法、SC-Lego-LOAM算法、V-LOAM算法等等,最后对2D的SLAM方案进行对比。
https://blog.csdn.net/qq_35635374/article/details/121002668
六、构建特征点云地图–视觉SLAM介绍
介绍的视觉SLAM构建特征点云地图的相关知识
首先,介绍了视觉SLAM的数学理论,如点与坐标系的位置关系表达的运动学基础、李群与李代数、相机观测模型与非线性优化等等
然后,介绍了视觉SLAM的关键技术,如前端里程计(Visual Odometry)、后端优化(Optimization)、回环检测(Loop Closing)、建图(Mapping)等等。
最后,列举SLAM众多的开源方案类型
https://blog.csdn.net/qq_35635374/article/details/121000052
视觉SLAM全局地图的开源方案及对比–rgbdslam、ORB_SLAM、RTAB SLAM
依次介绍常用的视觉SLAM的开源算法方案,包括rgbdslam算法、ORB_SLAM算法、RTAB SLAM算法
https://blog.csdn.net/qq_35635374/article/details/121003037
七、代价栅格地图costmap的介绍
代价栅格地图costmap是机器人常用与路径规划的地图,本文介绍costmap_2d代价地图生成理论及costmap_2d功能包源码工程解读
第一章:costmap_2d代价地图生成原理
https://blog.csdn.net/qq_35635374/article/details/120874817
第二章:二维占据栅格地图costmap生成方法及源码解析
https://blog.csdn.net/qq_35635374/article/details/120918847
八、vector_map矢量化地图的生成
vector_map矢量化地图常用于车道级的自动驾驶中,本文介绍vector_map矢量化地图的生成方法及步骤,包括传感器采集、vector_map地图构建及服务、地图信息的传递、地图数据包获取等等
https://blog.csdn.net/qq_35635374/article/details/120920983
九、通过栅格地图,目标路径(目标点)建立距离场地图
介绍一种地图转换的案例,把代价栅格地图转化成距离场地图,详细介绍了实现原理及源码实现
https://blog.csdn.net/qq_35635374/article/details/134653666
十、autoware高精度地图模块demo
autoware高精度地图模块为例,介绍导航中式如何构建和使用一个地图模块的。
地图就是一种数据结构,地图格式就是用不同的数据类型和数据结构把地图信息存储起来,所以解析地图必须由标准的地图格式(如把csv转换成ros_topic)
介绍构建高精度地图步骤,包括先通过上文介绍的SLAM方法建立特征点云地图(一般式稠密点云),再通过特征点云地图,标注制作语义信息,构建vector_map语义地图、通过点云地图建立栅格代价costmap地图、最后把特征点云地图、栅格代价costmap地图与vector_map语义地图作为不同层级生成高精度地图等等。
作为扩展,再介绍一些规划用到的地图格式、vector_map语义地图制作工具、栅格地图处理等等拓展
https://blog.csdn.net/qq_35635374/article/details/124539162
十一、【规控+slam】探索建图方案及代码分享
https://blog.csdn.net/qq_35635374/article/details/142532077
其他知识
【地图mapping】视觉SLAM–李群与李代数理论
介绍李群与李代数理论,包括群(集合+运算)、李群与李代数定义、指数映射与对数映射、李代数求导与扰动模型(SLAM的定位即位姿估计)、李群和李代数Sophus库的使用等等
https://blog.csdn.net/qq_35635374/article/details/121181552
【局部地图建立mapping】PCL点云处理建立局部占据及代价地图的方法
介绍通过点云数据建立栅格代价costmap地图的方法、ROS的map_server与自定义工具进行costmap地图的保存与加载。
https://blog.csdn.net/qq_35635374/article/details/122126236