定位、地图建立及管理合集

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444757.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统信服务安装mysql8.4版本,二进制文件

一:建立MySQL用户和用户组 sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql 二:下载MySQL安装包 MySQL :: Download MySQL Community Server (Archived Versions) 找对应的版本 三:解压二进制安装包,从命…

【Linux复习】指令

文章目录 1.>2. cat3.系统命令bash和shell和kernel权限只被认证一次粘滞位引入前提知识场景解释为什么普通用户(无w权限)可以删除文件?为什么普通用户通过sudo设置文件权限为000后仍能删除文件? 结论 粘滞位是干什么的&#xf…

8款宝藏手机app,适配安卓和苹果手机

好用的手机APP太多,差点挑花了眼!今天来分享4款苹果手机和4款安卓手机上的宝藏软件,看看你喜欢哪一款~ IOS系统APP 1.搜图神器 一款拥有海量图片资源的图片搜索神器,它聚合海内外知名搜索引擎,想要图片直接搜索就行…

Vue3 响应式数据

ref 基本数据类型响应式 语法:let xxx ref(初始值)。**返回值:**一个RefImpl的实例对象,简称ref对象或ref,ref对象的value属性是响应式的。注意点: TS中操作数据需要:xxx.value,但模板中不需要…

第三届“讯方杯”大赛常见问题解答

9月20日,第三届“讯方杯”全国大学生信息技术应用及创新大赛正式拉开帷幕。自大赛报名启动以来,全国各大高校热烈响应、广泛参与。为了更好地服务于各参赛团队,大赛组委会针对收集到的各类常见问题,整理了热点问答集锦&#xff0c…

大型公共建筑用电管理集中监测平台功能介绍

在当国家对能源管理和环境保护日益重视的背景下,相关政策不断出台,推动企业用能向智能化管理、数字化管理方向转型。电能因为方便传输、易于转换、便于控制等特性,成为广大企事业单位生产、办公主要的能量来源。双碳背景下,由于电…

动态内存管理练习题的反汇编代码分析(底层)

目录 1.练习题回顾 2.反汇编代码 3.分析 lea指令的作用 1.给普通指针赋值 反汇编显示 2.给结构体指针赋值 反汇编显示 mov 指令的作用 1.取普通指针指向地址的值(等价为C语言的*) 反汇编显示 2.取结构体指针指向地址里的值 反汇编显示 3.总结->的作用 4.回到…

回归预测 | Matlab基于SABO-SVR减法平均算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SABO-SVR减法平均算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SABO-SVR减法平均算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SABO-SVR减法平均算法优化…

Robust多模态模型的开发

本文所涉及所有资源均在 传知代码平台 可获取。 目录 Robust 多模态模型:寻找遗失的模态! 一、研究背景 二、模型结构和代码 三、数据集介绍 六、性能展示 六、实现过程 七、运行过程 Robust 多模态模型:寻找遗失的模态! 近年来&a…

最新项目全功能知识付费小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 知识付费小程序源码系统是一款基于先进技术架构设计的综合性平台。它旨在为用户提供一站式的知识付费解决方案,涵盖了从内容创作到用户管理的各个环节。 该系统采用了现代化的开发理念和技术手段,确保了系统的稳定性、安全性和高效性。它具有…

ClickHouse 24.9 版本发布说明

本文字数:7295;估计阅读时间:19 分钟 作者:ClickHouse Team 本文在公众号【ClickHouseInc】首发 又到新版本发布的时间了! 发布概要 本次ClickHouse 24.9 版本包含了23个新功能🎁、14项性能优化&#x1f6f…

Golang反射解说

在Go语言中,反射(Reflection)是一种强大的机制,允许程序在运行时检查、修改和操作变量的类型信息。 反射主要用于处理那些在编译时无法确定类型的情况,比如处理接口类型的值、实现通用的函数等。 Go语言中反射的基本…

邮件系统国产化改造: 保障信息安全、提升效率的最佳选择

在当前数字化转型的大背景下,我国政府提出了构建网络强国和数字强国的宏伟蓝图。这一战略的实施,不仅为数字政府的建设提供了坚实的基础,也为政府和企业的数字化升级指明了方向。在这一进程中,邮件系统的国产化改造就显得尤为重要…

Chromium 关闭 Google Chrome 后继续运行后台应用功能分析c++

此功能允许关闭 Google Chrome 后继续运行后台,控制此功能的开关是 // Set to true if background mode is enabled on this browser. //更改此值可以修改默认开启关闭 inline constexpr char kBackgroundModeEnabled[] "background_mode.enabled"; …

前端的全栈混合之路Meteor篇:分布式数据协议DDP深度剖析

本文属于进阶篇,并不是太适合新人阅读,但纯粹的学习还是可以的,因为后续会实现很多个ddp的版本用于web端、nodejs端、安卓端和ios端,提前预习和复习下。ddp协议是一个C/S架构的协议,但是客户端也同时可以是服务端。 什…

STM32F407寄存器操作(DMA+SPI)

1.前言 前面看B站中有些小伙伴吐槽F4的SPIDMA没有硬件可控的CS引脚,那么今天我就来攻破这个问题 我这边暂时没有SPI的从机芯片,并且接收的过程与发送的过程类似,所以这里我就以发送的过程为例了。 2.理论 手册上给出了如下的描述 我们关注…

Spring Boot 学习之路 -- Thymeleaf 模板引擎

前言 最近因为业务需要,被拉去研究后端的项目,代码框架基于 Spring Boot,后端对我来说完全小白,需要重新学习研究…出于个人习惯,会以 Blog 文章的方式做一些记录,文章内容基本来源于「 Spring Boot 从入门…

微信小程序-分包加载

一.分包的意义 小程序是由多个页面构成,为了因为代码量多,体积大导致用户打开速度变慢,小程序提供了分包加载数据。 分包加载数据,只有在主包调用分包某一个页面时候才会调用加载分包。即就是按需加载。 整个小程序不能超过20M&a…

golang grpc进阶

protobuf 官方文档 基本数据类型 .proto TypeNotesGo Typedoublefloat64floatfloat32int32使用变长编码,对于负值的效率很低,如果你的域有可能有负值,请使用sint64替代int32uint32使用变长编码uint32uint64使用变长编码uint64sint32使用变长…

滚柱导轨适配技巧与注意事项!

滚柱导轨是一种重要的传动元件,它由滚柱作为滚动体。用于连接机床的运动部件和床身基座,其设计旨在提供高承载能力和高刚度,适用于重型机床和精密仪器,而滚柱导轨的适配方法对于确保机械设备的高精度运行至关重要。 滚柱导轨的适配…