自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

原创 一起自学SLAM算法:写在前面

试想一下如果人类拥有一个非常聪明的脑瓜子但却被限制在固定的地方不能移动,那么人与人之间的交流将很大程度地被阻断,人类的分工协作、社会生产、认识并改造自然的能力也将不复存在。可以说人类的躯体延展了人类的智能,特别是躯体的可移动性极大地扩展了人类智能的作用范围。而互联网技术的普及是对人类智能的又一次延展,我们可以借助互联网巨大的信息存储以及检索能力来管理我们的知识(以前靠人脑维护这些知识则需要消耗掉我们很大一部分的心智),同时互联网提供的便捷交流渠道加速了人类认识并改造自然的进程。伴随着互联网技术而兴起的人工智

2022-06-11 04:13:15 2703 1

原创 rtabmap更加适合视觉SLAM建图和导航

slam问题目前主要集中在如何建立一个好的地图,至于后续如何使用地图这部分工作研究的不多,不过我个人恰好在做这部分工作所以答一下个人见解。首先,有一张好的地图,是导航或地图语义分析等应用的前提,目前建立一张好的地图还有不少的难度。其次,基于地图的导航等应用多是工程性问题,不好发文章,研究slam问题的多为学校学生和研究机构人员,所以发表成果还是一个很重要的考虑。最后,不同的slam框架建立的地图类型个不相同,要与现在成熟的导航框架ros_navigation和moveIt相结合还有不少的工作要做。

2023-04-20 00:10:36 1947 1

原创 在ROS中使用超声波(sonar)导航避障

实际只需要其中的range_sensor_layer放到工作空间catkin_make。实验时放置于src中,可以考虑放置于navigation文件夹中进行尝试。实际上下载的源码配置已完善,编译通过时range_sensor_layer已插入ros系统,在此只需要source一下cartkin_ws,验证一下即可:rospack plugins --attrib=plugin costmap_2d。ns ( string , default : ”” ) : 命名空间,用作所有topic的前缀;

2023-04-19 21:33:05 1390 1

原创 在ubuntu18.04中安装opencv_contrib-3.2.0闭坑记录

由于最近要在OpenCV3中使用SIFT和SURF特征提取,而自从OpenCV2升级到OpenCV3版本后,SIFT、SURF等这些算法都被移出opencv默认项目库,而被放到叫opencv_contrib的项目库。因此需要手动下载opencv和opencv_contrib的源码,然后将两个源码放在一起手动编译安装。

2023-04-19 21:25:06 754

原创 ROS功能包开机自启动设置

这里使用robot_upstart功能包来设置开机自启动,值得注意的是kinetic与melodic版本的robot_upstart功能包会稍有区别。(1)如果是melodic版本ROS系统,直接用apt install的方法安装就行了,亲测可用。(2)如果是kinetic版本ROS系统,直接用apt install的方法安装会报错缺一些依赖。所以还需要用源码方式安装,并手动安装依赖。(1)由于robot_upstart是ROS节点,启动前需要先开启roscore。roscore。

2023-04-19 21:15:41 1012

原创 研究生SLAM机器人学习入门方法

前言第一章:Linux基础第二章:ROS入门第三章:感知与大脑第四章:差分底盘设计第五章:树莓派3开发环境搭建第六章:SLAM建图与自主避障导航第七章:语音交互与自然语言处理附录A:用于ROS机器人交互的Android手机APP开发附录B:用于ROS机器人管理调度的后台服务器搭建附录C:如何选择ROS机器人平台进行SLAM导航入门

2023-04-19 20:58:06 517

原创 在Ubuntu18.04中安装Anaconda3环境

Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。Conda 是为Python程序创建的,适用于 Linux,OS X 和Windows,也可以打包和分发其他软件。Conda是最流行的Python环境管理工具,Anaconda和Miniconda等发行版中都包含了Conda工具。

2023-04-19 20:00:27 1007

原创 关于SLAM学习方法的一些反思总结

由于SLAM是一个错综复杂的研究领域,涉及到非常多的关键技术。这里先讲讲学习方法论,然后对一些关键性概念(包括SLAM、ROS、SLAM移动机器人)进行分析,最后给出典型应用案例方便大家进行实战。关于SLAM学习方法论,我觉得可以用"螺旋上升"这四个字来概括,大家可以根据自己的喜好和实际基础,选择从理论或者代码开始看。(4)机器人中的运动与测量概率模型。(6)SLAM同时定位与建图。(7)现今主流的SLAM算法。(1)机器人中的不确定性。(2)机器人中的状态估计。(4)底盘驱动方式的解析。

2023-04-19 19:53:14 597 1

原创 在ubuntu上使用chrony进行系统时间同步的配置方法

假设本地客户端计算机叫A,我们的服务器计算机叫B,外网时间同步源计算机叫C,时间同步的过程实际上就是A->B->C->...A向B发起时间同步请求,让A与B的时间保持一致;B为了维护自身的系统时间,以同样的方法要向C发起时间同步请求,让B与C的时间保持一致;C可能还要进一步与其他外网时间同步源保持同步,总之就是时间同步时一层一层进行的。

2023-04-19 19:48:13 1288

原创 在windows系统中使用Ceres非线性优化库:(三)发布应用程序

(一)安装Ceres库(二)调用Ceres库(三)发布应用程序1.集成DLL库到exe应用程序1.2.ILMerge和ILMergeGUI1.3.WinRAR2.制作安装包在C#的项目中,经常会引用一些外部的DLL库。在发布的时候,必需将这些库和可执行程序一起发布,否则会导致程序无法运行。一种是将DLL集成到exe文件后直接发布绿色版软件,另一种是为程序制作安装包后用户在本地进行安装。可以将DLL作为资源直接嵌入到项目中,也可以采用第三方工具来将DLL和exe进行集成。

2023-04-19 02:04:58 614

原创 在windows系统中使用Ceres非线性优化库:(二)调用Ceres库

(一)安装Ceres库(二)调用Ceres库1.编写DLL库WrapCeres1.1.编写要导出的代码1.2.编译链接配置1.3.编译2.用C#调用DLL库WrapCeres2.1.C#与C/C++之间类型的对应关系2.2.Dllimport详解2.3.深入讨论C#调用C++的方法2.4.在WPF中实际调用WrapCeres.dll(三)发布应用程序上面我们其实已经运行过Ceres里面自带的一些例程了,比如helloworld、helloworld_static等。

2023-04-19 01:38:03 699

原创 在windows系统中使用Ceres非线性优化库:(一)安装Ceres库

(一)安装Ceres库1.用vcpkg安装Ceres库1.1.安装vcpkg1.2.安装Ceres1.3.配置Ceres2.用Virtual Studio安装Ceres库2.1.下载ceres-windows2.2.打开或升级解决方案2.3.编译项目libglog_static2.4.编译项目ceres_static和ceres2.5.编译例程2.6.深入理解编译链接过程3.用CMake安装Ceres库(二)调用Ceres库(三)发布应用程序。

2023-04-19 00:26:35 3123 3

原创 一起自学SLAM算法:13.4 基于自主导航的应用

连载文章,长期更新,欢迎关注:其实ros-navigation导航框架只是为我们提供了一个最基本的机器人自动导航接口,即从A点到B点的单点导航。然而在实际的应用中,机器人往往要完成复杂的任务,这些复杂的任务都是由一个个基本的任务组合而成的,这些基本任务一般以状态机的形式组合在一起。如图13-7为一个有限状态机(Finite State Machine,FSM)的例子,任何一个FSM都可以用状态转换图来描述,状态转换图中的节点表示FSM中的一个状态,有向加权边表示在输入条件时状态的转换关系。

2023-01-30 19:39:23 651 1

原创 一起自学SLAM算法:13.3 运行自主导航

连载文章,长期更新,欢迎关注:在“xiihoo机器人”中使用ros-navigation导航系统进行自主导航,关于ros-navigation的安装与运行细节可以参考12.1.3节,这里的不同之处是将默认的amcl全局定位替换成了Cartographer和ORB-SLAM2联合重定位,如13-6所示。图13-6 联合重定位首先启动机器人平台相关的节点,就不多说了。接着载入由Cartographer构建并保存的地图文件*.pgm和*.yaml到ros-navigation。

2023-01-30 19:25:48 542

原创 一起自学SLAM算法:13.2 运行SLAM构建地图

连载文章,长期更新,欢迎关注:在“xiihoo机器人”中推荐使用基于激光的Cartographer和基于视觉的ORB-SLAM2来建图,并且可以利用Cartographer和ORB-SLAM2进行联合建图来提升定位的稳定性。

2023-01-30 19:21:05 2194

原创 一起自学SLAM算法:13.1 运行机器人上的传感器

连载文章,长期更新,欢迎关注:由于xiihoo机器人中已经为电机控制板、激光雷达、IMU和相机安装好了配套的ROS驱动,因此只要在机器人上开启相应传感器的ROS驱动节点就可以使用这些传感器了。关于这几个传感器的工作原理请参考第4章的相关内容,这里就不再赘述了。

2023-01-30 18:57:56 730

原创 一起自学SLAM算法:第13章-机器人SLAM导航综合实战

连载文章,长期更新,欢迎关注:通过第1~12章的学习,不难发现SLAM导航技术是一个跨学科且理论与实战紧密结合的复杂系统工程性学科。从第1~6章能看出SLAM导航技术涉及大量软硬件结合方面的知识,比如Linux与ROS编程、嵌入式软硬件开发、传感器驱动、多传感器数据融合等。

2023-01-30 18:25:09 1347

原创 一起自学SLAM算法:12.4 导航系统面临的一些挑战

连载文章,长期更新,欢迎关注:通过以上3个导航系统的学习,大家对机器人自主导航系统的工作原理一定不陌生了。虽然这些导航系统能很容易就在机器人中运行起来,但目前的这些导航系统还面临不少问题的挑战,下面列举一些比较有代表性的问题。立体障碍物是机器人导航中很头疼的一个问题,因为2D激光雷达只能扫描某个平面内的障碍物,对于高于或低于扫描平面的障碍物是无法探测的。比如一个很矮的扫地机器人能从桌子底下穿过去,而在扫地机器人上安装一个较高的货架后就会导致碰撞。

2023-01-30 01:34:12 609

原创 一起自学SLAM算法:12.3 autoware导航系统

连载文章,长期更新,欢迎关注:上面介绍的ros-navigation和riskrrt导航系统主要都是用于机器人的低速导航,并且大多基于2D地图。而autoware导航系统主要用于无人驾驶汽车的高速导航,并且基于3D地图。除了所导航速度高一点和采用3D地图外,autoware的原理几乎与ros-navigation一样,因此下面主要针对autoware的架构做简单分析,其他内容就不再深入展开了。

2023-01-29 21:06:49 1246

原创 一起自学SLAM算法:12.2 riskrrt导航系统

连载文章,长期更新,欢迎关注:对于大多数ROS学习者,最先接触到的导航系统基本都是ros-navigation。不过机器人领域的导航系统实现并不只有ros-navigation,这里要介绍的riskrrt就是另外一种导航系统实现。riskrrt的系统框架基本与ros-navigation一样,也就是地图供应、全局定位和路径规划这些主要模块。

2023-01-29 20:49:01 751

原创 一起自学SLAM算法:12.1 ros-navigation导航系统

连载文章,长期更新,欢迎关注:可以说ros-navigation是ROS系统中最重要的组件之一,绝大部分自主移动机器人的导航功能都是基于ros-navigation导航系统实现的。下面将从原理分析、源码解读和安装与运行这3个方面展开讲解ros-navigation导航系统。

2023-01-29 20:06:51 4360

原创 一起自学SLAM算法:第12章-典型自主导航系统

连载文章,长期更新,欢迎关注:上一章围绕“我在哪”、“我将到何处去”和“我该如何去”三大核心问题讨论了自主导航中的数学基础,并介绍了其中所涉及的环境感知、路径规划和运动控制这几个核心技术。不过依靠单独的一两个算法很难让机器人的自主导航运行起来,因为自主导航是一个理论性和工程性都很强的课题,往往一个自主导航系统包含多个核心算法实现以及必要的各种工程组件。

2023-01-29 19:00:49 1240

原创 一起自学SLAM算法:11.5 强化学习与自主导航

连载文章,长期更新,欢迎关注:强化学习(Reinforcement Learning,RL)[21]属于机器学习领域的一个分支,其学习目标是获得最大回报。在10.3.1节中已经讨论过,机器学习过程主要涉及四个要素:数据、模型、学习策略和学习算法,有监督学习、无监督学习和强化学习都是指学习策略。有监督学习以最小化误差为学习目标,也就是让预测值尽量逼近于训练样本监督标签,这样预测与样本监督标签之间的误差才会越小。

2023-01-29 18:40:26 1485 3

原创 一起自学SLAM算法:11.4 运动控制

连载文章,长期更新,欢迎关注:机器人自主导航涉及SLAM、路径规划、运动控制、环境感知等核心技术,这些技术的大致关系如图11-24所示。其实自主导航问题的本质就是图11-1所描述的那3个问题,首先要知道机器人在哪,然后要知道机器人需要到达的目标在哪,最后就是寻找路径并利用控制策略开始导航。关于目标点,由人或者特定程序触发(比如人通过点击地图上的某个点来告诉机器人应该去哪里;或者语音交互程序接收到某条语音控制指令,然后语音控制指令被转换成地图中的相应目标点发送给机器人;

2023-01-29 01:29:34 2072 1

原创 一起自学SLAM算法:11.3 路径规划

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

2023-01-29 01:13:58 1981

原创 一起自学SLAM算法:11.2 环境感知

连载文章,长期更新,欢迎关注:环境感知就是机器人利用传感器获取自身及环境状态信息的过程,自主导航机器人的环境感知主要包括实时定位、环境建模、语义理解等,下面具体讨论。

2023-01-29 00:56:10 1038

原创 一起自学SLAM算法:11.1 自主导航发展简史

连载文章,长期更新,欢迎关注:导航其实是一个很古老的问题,古代军队行军打仗时会将战场的地形绘制在布匹上,然后根据当前观测到的地形地貌与地图比对确定位置。在航海途中周围并没有太多可观测的地形,通常借助指南针和天上的星星来确定位置。而如今航天、航海、汽车、日常出行等方方面面都离不开全球导航卫星系统(Global Navigation Satellite System,GNSS),GNSS其实就是美国的GPS、俄罗斯的GLONASS、欧盟的GALILEO、中国的北斗等众多卫星导航系统的统称。

2023-01-29 00:48:40 674

原创 一起自学SLAM算法:第11章-自主导航中的数学基础

连载文章,长期更新,欢迎关注:通过计算机中复杂的决策算法,让机器人实现完全自主化是人类一直以来的梦想。所谓完全自主化,就是在完全没有外界指令的干预下,机器人能通过传感器和执行机构与环境自动发生交互,并完成特定的任务(比如自主语言交流、自主移动或自主导航、搬运物品、洗衣做饭带小孩等)。由于我们生活在一个三维空间环境中,在环境空间中移动是机器人与环境发生交互最基本的形式之一,因此自主导航也被誉为机器人自主化的“圣杯”。从表面上看自主导航就是解决从地点A到地点B的问题,但实现起来非常复杂。

2023-01-29 00:10:02 951

原创 一起自学SLAM算法:10.3 机器学习与SLAM

推理、知识、神经网络、机器学习、决策理论等诸多的概念,本身就是在不同的层面不同的时期来讨论的,这些概念之间有些是互相重叠的、有些是发展递进的、有些是特例、有些是不同角度出发的同一观点等等。图10-33 发展历程既然从理论上暂时无法得知智能的真正面貌,那么广大读者也就不必拘泥于理论层面的各种概念,仅从实践的角度讨论和学习主流的一些技术应用就已经够了。如图10-34所示,为人工智能技术应用的大致流程。从实际问题出发,对问题进行分析并提取出一些重要的先验信息以帮助我们构造更合适的智能系统来解决问题。

2023-01-28 17:25:55 1322

原创 一起自学SLAM算法:10.2 VINS算法

连载文章,长期更新,欢迎关注:不管是激光SLAM还是视觉SLAM,由于传感器采样率、传感器测量精度、主机计算力等因素的限制,在高速运动状态下定位追踪极易丢失。虽然轮式里程计能为激光SLAM系统提供短期运动预测以避免高速运动时丢失的风险,轮式里程计还能在长走廊这样的低特征环境下提供定位辅助。但是轮式里程计也不是万能的,当地面起伏较大或轮子打滑时,轮式里程计将不再可靠;对于在三维空间工作的视觉SLAM来说,提供二维空间定位信息的轮式里程计很难应用其中。

2023-01-28 03:01:30 1615

原创 一起自学SLAM算法:10.1 RTABMAP算法

连载文章,长期更新,欢迎关注:同前面介绍过的大多数算法一样,RTABMAP也采用基于优化的方法来求解SLAM问题,系统框架同样遵循前端里程计、后端优化和闭环检测的三段式范式。这里重点讨论RTABMAP两大亮点,一个亮点是支持视觉和激光融合,另一个亮点是内存管理机制。下面将从原理分析、源码解读和安装与运行这3个方面展开讲解RTABMAP算法。

2023-01-27 20:55:53 3368

原创 一起自学SLAM算法:第10章-其他SLAM系统

连载文章,长期更新,欢迎关注:除了前面讲到的激光SLAM和视觉SLAM这两大主流SLAM系统外,还有其他一些SLAM方案也备受关注。比如将激光与视觉融合的SLAM、视觉和IMU融合的SLAM、基于深度学习的端到端SLAM、基于模式识别的语义SLAM等,下面通过典型案例逐一介绍。10.1 RTABMAP算法10.1.1 RTABMAP原理分析10.1.2 RTABMAP源码解读10.1.3 RTABMAP安装与运行10.2 VINS算法10.2.1 VINS原理分析。

2023-01-27 20:16:16 718

原创 一起自学SLAM算法:9.3 SVO算法

连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解SVO算法。

2023-01-27 17:14:48 1063 1

原创 一起自学SLAM算法:9.2 LSD-SLAM算法

连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解LSD-SLAM算法。

2023-01-27 17:02:38 1216

原创 一起自学SLAM算法:9.1 ORB-SLAM2算法

连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解ORB-SLAM2算法。

2023-01-27 16:11:24 1233

原创 一起自学SLAM算法:第9章-视觉SLAM系统

连载文章,长期更新,欢迎关注:上一章介绍了以激光雷达做为数据输入的激光SLAM系统,激光雷达的优点在于数据稳定性好、测距精度高、扫描范围广,但缺点是价格昂贵、数据信息量低、安装部署位置不能有遮挡、雨天烟雾等环境容易失效。相比于激光雷达,视觉传感器价格便宜许多、所采集到的图像数据信息量更高、室内室外场景都能适用并且雨天烟雾场景影响较小,不过视觉传感器数据稳定性和精度较差、巨大的数据量也消耗更大的计算资源。主流的视觉传感器包括单目、双目和RGB-D这3类相机,其原理见4.3节相关内容。

2023-01-26 23:07:08 2525

原创 一起自学SLAM算法:8.3 LOAM算法

连载文章,长期更新,欢迎关注:不管是Gmapping还是Cartographer,通常都是采用单线激光雷达作为输入并且只能在室内环境运行。虽然Cartographer支持2D建图和3D建图模式,但是Cartographer采用3D建图模式构建出来的地图格式仍然为2D形式的地图。这里介绍一种用在室外环境的激光SLAM算法,即LOAM算法。该算法利用多线激光雷达,能构建出3D点云地图。LOAM算法是一款非常经典的SLAM算法,曾经霸占KITTI数据集效果榜首很长一段时间。

2023-01-26 22:33:35 1526

原创 一起自学SLAM算法:8.2 Cartographer算法

连载文章,长期更新,欢迎关注:Gmapping代码实现相对简洁,非常适合初学者入门学习。但是Gmapping属于基于滤波方法的SLAM系统,明显的缺点是无法构建大规模的地图,这一点已经在第7章中讨论过了。而基于优化的方法则可以构建大规模的地图,基于优化的方法实现的激光SLAM算法也有很多,比如Hector、Karto、Cartographer等。

2023-01-26 21:59:57 9652 1

原创 一起自学SLAM算法:8.1 Gmapping算法

连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解Gmapping 算法。首先要知道,Gmapping是一种基于粒子滤波的算法。在7.7.2节中已经提到过用RBPF(Rao-Blackwellization Particle Filter)这种粒子滤波器来求解SLAM问题,Fast-SLAM算法就是其典型实现之一。其中也有人基于RBPF来研究构建栅格地图(Grid Map)的SLAM算法,它就是ROS中大名鼎鼎的Gmapping算法。不过在Gmapping算法中,对RBP

2023-01-22 21:35:51 6292 1

原创 一起自学SLAM算法:第8章-激光SLAM系统

连载文章,长期更新,欢迎关注:上一章系统地介绍了SLAM的数学理论,从本章开始学习重心将转移到实际项目代码上。这一章将介绍3种流行的激光SLAM算法,即机器人主要通过激光雷达感知环境信息。首先介绍ROS中最经典的基于粒子滤波的Gmapping算法;基于滤波方法的SLAM系统明显的缺点是无法构建大规模的地图,而基于优化的方法可以解决这个问题,这里介绍时下非常流行的基于优化的Cartographer算法;

2023-01-21 20:23:39 3328 1

【自己动手做一台SLAM导航机器人】完整版

【自己动手做一台SLAM导航机器人】 前言 第一章:Linux基础 第二章:ROS入门 第三章:感知与大脑 第四章:差分底盘设计 第五章:树莓派3开发环境搭建 第六章:SLAM建图与自主避障导航 第七章:语音交互与自然语言处理 附录A:用于ROS机器人交互的Android手机APP开发 附录B:用于ROS机器人管理调度的后台服务器搭建 附录C:如何选择ROS机器人平台进行SLAM导航入门

2023-04-18

空空如也

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

TA关注的人

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