AMR& SLAM& ROS入门——前言

一、移动机器人介绍
目前,根据移动机器人在不同领域的应用场景,可以分为:
工业机器人:搬运机器人(AGV)
商用机器人:无人车(AMR)、无人机、送餐机器人(AGV或AMR)、导览机器人(AGV或AMR)
消费类机器人:扫地机器人(AMR)

进一步地,如果一个机器人能自己回答“我在哪?”,“我去哪”,“怎么去”这三个问题,它便可以被称为自主移动机器人。本文主要讨论自主移动机器人(AMR,Autonomous Mobile Robots)
自主移动机器人能够回答以上三个问题,就必须做到:
(1)有环境信息(人为给定或自主获取)
(2)感知并分析环境信息
(3)确定自己在环境中的位置
(4)规划并执行运动

总结一下,自主移动机器人需要具备四项基本功能:感知,定位,规划,运动。其中,感知用于获取周围环境中客体的信息;定位移动机器人自身在环境中的位置;规划即决策并规划路线;运动一般为电机的转速控制。
区别于工业用途的AGV(AutomaticGuided Vehicle,自动导引车)等自动化运输车,自主移动机器人(AMR)是集环境感知,动态决策与规划于一体的多功能综合系统。是集中了传感器技术、信息处理、电子工程、计算机工程、自动化技术于一体的人工智能学科,是目前科学技术发展最活跃的领域之一。

参考书籍:
[1]《自主移动机器人导论》第2版,[美] R.西格沃特 著,李人厚 译,西安交通大学出版社
[2]《移动机器人原理与设计》,[法]吕克·若兰 著,王世伟,谢广明 译


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
二、移动机器人硬件组成
移动机器人所谓的智能移动,是指机器人能根据周围的环境变化,自主地规划路线、避障,到达目标地。
机器人是模拟人的各种行为,想象一下,人走动需要哪些器官的配合?首先用眼睛观察周围环境,然后用脑去分析如何走才能到达目标地,接着用腿走过去,周而复始,直到到达目标地址为至。机器人如果要实现智能移动,也需要眼、脑和腿这三部分的紧密配合。

1.腿
“腿”是机器人移动的基础。机器人的“腿”不局限于类人或类动物的腿,也可以是轮子、履带等,能让机器人移动起来的部件,都可以笼统地称为“腿”。类人的腿式优点是:既可以在复杂路况(比如爬楼梯)下移动、也可以更形象地模仿人的动作(比如跳舞),缺点是:结构和控制单元比较复杂、造价高、移动慢等。比如波士顿机器人,这里我们不讨论双足及多足机器人。
大部分移动的机器人都是轮式机器人,其优势在于轮子设计简单、成本低、移动快。而轮式的也分为多种: 两轮平衡车、三轮、四轮和多轮等等。目前最经济实用的是两个主动轮+一个万向轮。简而言之,通过调节两个直流减速电机的转速差速实现转向,控制算法一般为传统的PID算法。
对于二维空间,使用线速度+角速度可以实现轮式机器的随意移动。线速度:描述机器人前后移动的速度大小角速度:描述机器人转动的角速度大小。
所以控制机器人移动主要是要把线速度角速度转换为左右轮的速度大小,然后,通过轮子直径和轮间距,可以把线速度和角速度转化为左轮和右轮的速度大小。
这里有一个关键问题就是编码器的选择和PID的调速。编码器的选择:一般编码器和轮子是在一个轴上,目前来说,速度在0.7m/s以下的话,编码器选600键到1200键之间都ok。不过需要注意的是,编码器最好用双线的,A、B两线输出,A向和B向输出相差90度,这样可以防抖动。防抖动就是可以在之后里程计算时可以更准确。左轮和右轮的速度大小的控制,通过轮子编码器反馈,通过PID实时调整电机的PMW来实现。实时计算出小车的里程计(odom),得到小车移动位置的变化。计算车的位置变化是通过编码器来计算的,如果轮子打滑等情况,那么计算的变化和实际的变化可能不同。要解决这个问题,其实是看那个问题更严重。要走5米只走了4.9米重要,还是要走180度只走了179度重要。其实角度的不精确对小车的影响更大。一般来说,小车的直线距离精确度可以控制在厘米范围内,在角度方面可以控制精准度在1%~2%。因为角度是比较重要的参数,所以很多人就用陀螺仪来进行矫正。
2.眼睛
机器人的眼睛其实就是一个传感器。它的作用是观察周围的环境,适合做机器人眼睛的有激光雷达、视觉(深度相机、单双相机)、辅助(超声波测距、红外测距)等。具体内容见第三部分的环境感知传感器。
3.脑
机器人的大脑就负责接收“眼睛”传输的数据,实时计算出路线,指挥腿去移动。其实就是要把看到的东西转换为数据语言。针对如何描述数据,如何实现处理逻辑等一系列问题。具体内容见第四部分的SLAM和第五部分的机器人操作系统ROS。


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
三、环境感知传感器
1.激光雷达
从制造工艺可以分为固态激光雷达(不旋转)和机械式激光雷达(旋转)。从激光测距原理可以分为三角测距,脉冲TOF和相位TOF的激光雷达。也可分为2D和3D激光雷达,区别在于单线和多线。
扫地机器人是目前单线激光雷达应用最广泛的领域,多线激光雷达被应用于无人驾驶和安防监控。

当前的激光雷达市场,机械旋转式方案占据着绝对的统治地位。在移动机器人领域,目前所涉及的企业包括国外的Sick 、Ibeo、Hokuyo、Trimble以及国内的思岚科技、镭神智能、速腾聚创、禾赛科技、北醒光子、玩智商。
扫地机器人是目前单线激光雷达应用最广泛的领域,多线激光雷达被应用于无人驾驶技术和安防监控。在机器人领域,我国从事激光雷达的企业有思岚科技、速腾聚创、禾赛科技等多家知名企业,基本以研发固态激光雷达为主,

国外激光雷达
Velodyne:美国老牌3D激光雷达生产商,知名度很高,产品也很稳定,谷歌的自动驾驶就是用他家的,其主要产品有16线,32线,64线;16线早期价格较高,现在已经批量生产,市场价格在3.5w-4.5w,32线价格在40w左右,64线在80w左右,线束每增加一倍,价格也差不多翻一番,主要是制造难度成几何倍数增加,并且高线束客户群体较少没有实现量产
SICK:德国西克,主要生产2D单线激光雷达,工业上应用很多,AGV小车基本用他家的,应用较多有:Sick LMS111,Sick TIM561,Sick TIM571等价格在几万元
Hokuyo:日本北阳激光雷达以2D单线为主,在工业应用上也较多,主要型号有:UST-10LX,UTM-30LX-EW等,价格大多在5W以下
国内激光雷达
速腾聚创:产品在国内应用较多,跟很多公司和高校都有合作,他们官网有很多案例,主要有RS-LiDAR-16、RS-LiDAR-32两种多线激光雷达,价格分别在3w、13w左右
禾赛:禾赛出了一款40线激光雷达,说是对标Velodyne64线雷达,最大区别是通过不均匀分布线束的方法,使其最小角分辨率更小,达到0.33°
镭神智能:镭神智能为无人驾驶及汽车辅助驾驶、服务机器人、物流、安防、测绘、港口和工业的智能化发展,提供各种性能出色、稳定、价格厚道的激光雷达(包括TOF200/160/128/32/16线及单线、MEMS固态激光雷达、远距离激光雷达、激光三维成像激光雷达、3D FLASH、相控阵、三角法、相位法激光雷达)、三维激光扫描仪、激光位移传感器、激光灭蚊炮、激光灭蚊机器人和特种光纤激光器,以及基于激光雷达、视觉等多传感器融合的服务机器人、AGV、无人叉车SLAM自主导航及激光雷达反光板导航的系统解决方案,基于激光雷达、视觉等无人驾驶多传感器融合系统解决方案,以及基于激光雷达的工业自动化、智能安防、测绘等系统解决方案。


2.视觉传感器
视觉传感器就是我们常说的相机,按工作方式可以分为:单目相机(Monocular)、双目相机(Stereo)、深度相机(RGB-D)。一般以一定速率拍摄周围的环境,形成一个连续的视频流。普通相机能以每秒钟30秒张图片的速度采集图像,高速相机则更快一些。深度相机(RGB-D)原理较复杂,除了能够采集彩色图像之外,还能读出每个像素离相机的距离。(还有全景相机、Event相机等。)

单目相机的优点:结构简单,成本低,便于标定和识别;缺点:在单张图片里,无法确定一个物体的真实大小。它可能是一个很大但很远的物体,也可能是一个很近很小的物体。通过相机的运动形成视差,可以测量物体相对深度。但是单目SLAM估计的轨迹和地图将与真实的轨迹和地图相差一个因子,也就是尺度(scale),单凭图像无法确定这个真实尺度,所以称尺度不确定性。

双目相机由两个单目相机组成,但这两个相机之间的距离(称为基线)是已知的。我们通过这个基线来估计每个像素的空间位置,基线距离越大,能够测量到的就越远。优点:基线距离越大,能够测量的距离就越远;并且可以运用到室内和室外。
缺点:配置与标定较为复杂,深度量程和精度受到双目基线与分辨率限制,视差计算非常消耗计算资源,需要GPU/FPGA设备加速。

深度相机又称RGB-D相机,通过结构光或ToF(time of fly)的物理方法测量物体深度信息。典型代表Kinect/Xtion pro/RealSense。目前常用的RGB-D相机还存在测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质等诸多问题,主要用在室内,室外很难应用。


3.IMU
IMU全称Inertial Measurement Unit,即惯性测量单元,它由三个单轴的加速度计和三个单轴的陀螺仪组成,加速度计检测物体在载体坐标系统独立三轴的加速度信号,而陀螺仪检测载体相对于导航坐标系的角速度信号,对这些信号进行处理之后,便可解算出物体的姿态。
值得注意的是,IMU 提供的是一个相对的定位信息,它的作用是测量相对于起点物体所运动的路线,所以它并不能提供你所在的具体位置的信息,因此,它常常和 GPS 一起使用,当在某些 GPS 信号微弱的地方时,IMU 就可以发挥它的作用,可以让汽车继续获得绝对位置的信息,不至于“迷路”。IMU通常与激光雷达/相机结合使用。


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
四、环境感知技术——SLAM
SLAM(Simultaneous Localization and Mapping),译作“同时定位与地图构建” 。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。

SLAM研究自1988年提出以来,已经过了三十多年。早期SLAM研究侧重于使用滤波器理论,最小化运动体位姿和地图的路标点的噪声。21世纪之后,学者们开始借鉴SfM(Structure from Motion)中的方式,以优化理论为基础求解SLAM问题。这种方式取得了一定的成就,并且在视觉SLAM领域中取得了主导地位。在过去的三年里,随着VR、AR、机器人、无人驾驶等领域资本市场和消费者市场热度的不断升级,SLAM技术迎来了春天。

目前根据传感器的不同,SLAM主要分为两大类,一种是基于激光雷达的激光SLAM(Lidar SLAM)和基于视觉的VSLAM(Visual SLAM)。

1.激光SLAM
(1)激光SLAM脱胎于早期的基于测距的定位方法(如超声和红外单点测距)。
(2)目前,激光SLAM采用2D或3D激光雷达(也叫单线或多线激光雷达),2D激光雷达一般用于室内机器人上(如扫地机器人),而3D激光雷达一般使用于无人驾驶领域。
(3)激光雷达(Light Detection And Ranging,LiDAR)的出现和普及使得测量更快更准,信息更丰富。激光雷达采集到的物体信息呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云(Point Cloud)。通常,激光SLAM系统通过对不同时刻两片点云的匹配与比对,计算激光雷达相对运动的距离和姿态的改变,也就完成了对机器人自身的定位。
(4)激光雷达测距比较准确,误差模型简单,在强光直射以外的环境中运行稳定,点云的处理也比较容易。
(5)同时,点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。
(6)激光SLAM研究较早,理论研究和工程相对比较成熟,落地产品更丰富。

2.视觉SLAM
(1)视觉是人类获取外界信息的主要来源。视觉SLAM也具有类似特点,它可以从环境中获取海量的、富于冗余的纹理信息,拥有超强的场景辨识能力。
(2)早期的视觉SLAM基于滤波理论,其非线性的误差模型和巨大的计算量成为了它实用落地的障碍。
(3)近年来,随着具有稀疏性的非线性优化理论(Bundle Adjustment)以及相机技术、计算性能的进步,实时运行的视觉SLAM已经不再是梦想。
(4)视觉SLAM的优点是它所利用的丰富纹理信息。例如两块尺寸相同内容却不同的广告牌,基于点云的激光SLAM算法无法区别他们,而视觉则可以轻易分辨。这带来了重定位、场景分类上无可比拟的巨大优势。同时,视觉信息可以较为容易的被用来(5)跟踪和预测场景中的动态目标,如行人、车辆等,对于在复杂动态场景中的应用这是至关重要的。
(6)视觉方案目前尚处于实验室研究阶段,由于稳定性较差,实际产品应用较少。

如果传感器采用视觉传感器(单目相机/双目相机/深度相机),那就称为“视觉 SLAM”。当用相机作为传感器时,我们要做的,就是根据一张张连续运动的图像(它们形成一段视频),从中推断相机的运动,以及周围环境的情况。
视觉SLAM一般分为五个模块,包括传感器数据、视觉里程计、后端、建图及回环检测。
1.传感器数据:主要用于采集实际环境中的各类型原始数据。包括激光扫描数据、视频图像数据、点云数据等;
2.视觉里程计:主要用于不同时刻间移动目标相对位置的估算。包括特征匹配、直接配准等算法的应用;
3.后端:主要用于优化视觉里程计带来的累计误差。包括滤波器、图优化等算法应用;
4.建图:用于三维地图构建;
5.回环检测:主要用于空间累积误差消除;
其工作流程大致为:传感器读取数据后,视觉里程计估计两个时刻的相对运动(Ego-motion),后端处理视觉里程计估计结果的累积误差,建图则根据前端与后端得到的运动轨迹来建立地图,回环检测考虑了同一场景不同时刻的图像,提供了空间上约束来消除累积误差。

通过对比发现,激光SLAM和视觉SLAM各有优缺点,单独使用都有其局限性,而融合使用则可能具有巨大的取长补短的潜力。例如,视觉在纹理丰富的动态环境中稳定工作,并能为激光SLAM提供非常准确的点云匹配,而激光雷达提供的精确方向和距离信息在正确匹配的点云上会发挥更大的威力。而在光照严重不足或纹理缺失的环境中,激光SLAM的定位工作使得视觉可以借助不多的信息进行场景记录。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
SLAM技术入门前需要具备哪些知识?首先学习SLAM需要会C和C++,第二要学会用Linux,第三要会cmake,vim/emacs及一些编程工具,第四要会用openCV, PCL, Eigen等第三方库。只有学会了这些东西,才能真正上手编一个SLAM系统。如果要跑实际机器人,还要会ROS(第五部分)。下面是一些推荐SLAM入门的学习书籍、SLAM公开课、SLAM学习网站、SLAM开源代码等资料。

SLAM学习书籍:
(1) 必读经典书籍
Thrun S, Burgard W, Fox D.《Probabilistic robotics》[M]. Cambridge, USA: MIT Press, 2005.下载链接:https://www.jianshu.com/p/99877619b666
Howie C.《Principles of Robot Motion Theory,Algorithms and Implementation》下载链接:https://ebookee.org/PDF-Principles-of-Robot-Motion-Theory-Algorithms-and-Implementations_3540062.html
高翔.《视觉 SLAM 十四讲——从理论到实践》,及其博客半闲居士https://www.cnblogs.com/gaoxiang12/

(2) 入门基础书籍
SLAM入门书籍,简单实现及代码:《SLAM for Dummies》
SLAM入门教材,对深入理解SLAM实质非常有帮助:《STATE ESTIMATION FOR ROBOTICS》
关于Graph-SLAM的教程:《Course on SLAM》
加州伯克利的2D LIDAR SLAM:《Loop Closure Transformation Estimation and Verification Using 2D LiDAR Scanners》

SLAM公开课:
1.大量SLAM公开课相关资料(PPT、音视频文件)
http://ais.informatik.uni-freiburg.de/teaching/ws15/mapping/
2.YouTube的Cyrill Stachniss主页(课堂讲授SLAM的视频集)
https://www.youtube.com/channel/UCi1TC2fLRvgBQNe-T4dp8Eg
3.Andrew Davison的VSLAM公开课资料(VSLAM集大成者)
http://www.doc.ic.ac.uk/~ajd/Robotics/index.html
4.深蓝学院——视觉SLAM概论与基础知识(免费公开课),主讲人高翔
http://www.shenlanxueyuan.com/course/101?source=1
5.深蓝学院——激光SLAM发展和应用趋势(免费公开课),主讲人曾书格,越凡创新科技有限公司技术负责人,电子科技大学硕士
http://www.shenlanxueyuan.com/course/98?source=1
6.深蓝学院——视觉SLAM技术及其应用(免费公开课),主讲人章国锋,浙江大学CAD&CG国家重点实验室副教授,博士生导师
http://www.shenlanxueyuan.com/my/course/71
7.泡泡机器人公开课程(百度网盘下载链接)强烈推荐!
https://mp.weixin.qq.com/s/zxr00q7wDbwqdsdT6R7MOQ
8.浙江大学第二届SLAM暑期学校视频(2019年)
https://space.bilibili.com/36728694?from=search&seid=16985682645173669705
9.第一届全国SLAM技术论坛视频
https://space.bilibili.com/95104646/video

SLAM学习网站:
1.深蓝学院
http://www.shenlanxueyuan.com/courselist
2.泡泡机器人
http://paopaorobot.org/
3.大量优秀代码和框架,权威资料
http://www.openslam.org/
https://github.com/Ewenwan/MVision
4.MRPT库官方网站,有MRPT相关文档和最新下载
http://www.mrpt.org/
5.中文SLAM技术交流网站,将最新进展和相关解决方案链接在里边,还有知名博客、公众号、实验室、数据集等资料,强烈推荐的一个网站
http://www.slamcn.org/index.php/
6.维基百科的SLAM介绍,里边有SLAM的发展综述和大量参考文献
https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping#External_links

会议论文集
《Robotics: Science and Systems》. Cambridge, USA: MIT Press
会议进展网站http://www.roboticsproceedings.org/

期刊:
IEEE Robotics and Automation Magazine
IEEE Transactions on Robotics
International Journal of Robotics Research
Robotics and Autonomous Systems
Journal of Field Robotics

SLAM开源代码:
ORB-SLAM :https://github.com/raulmur/ORB_SLAM
LSD-SLAM:https://github.com/tum-vision/lsd_slam
ORB-SLAM2:https://github.com/raulmur/ORB_SLAM2
DVO(稠密视觉里程计):https://github.com/tum-vision/dvo_slam
SVO(半直接单目视觉里程计):https://github.com/uzh-rpg/rpg_svo
G2O(一般图优化):https://github.com/RainerKuemmerle/g2o
RGBD-SLAM:(https://github.com/felixendres/rgbdslam_v2)

主流开源SLAM方案
PTAM(单目) :http://www.robots.ox.ac.uk/~gk/PTAM/
MonoSLAM(单目):https://github.com/hanmekim/SceneLib2
Elastic Fusion(RGBD): Open source code:https://github.com/mp3guy/ElasticFusion
Kintinous(RGBD):Open source code:https://github.com/mp3guy/Kintinuous
RGBD-SLAM-V2: Open source code:https://github.com/felixendres/rgbdslam_v2
RTAB-MAP: Code:https://github.com/introlab/rtabmap

国外SLAM界的大拿:
[1]Sebastian Thrun(Thrun S,斯坦福大学)
[2]Andrew Davison(牛津大学)
[3]Tim Beily 及所在的悉尼大学一些研究者
[4]Giorgio Grisetti、Cyrill Stachniss、Wolfram Burgard (GridMapping 算法及概率机器人一书作者)
[5]M. Montemerlo、Dirk Haehnel、Sebastian Thrun (FastSLAM创始者,理论水平和实际应用能力非常强),参加过DARPA的智能车挑战赛,取得最好成绩
[6]Austin Eliazar、Ronald Parr (DP-SLAM创始者,从文章到数据,程序都公开的牛人)
[7]以Jose Neira和Jose luis Blanco为代表的一批西班牙学者
[8]Andrew Davison 视觉SLAM领域的权威
[9]John Leonard 侧重于应用,目前主要在做水下SLAM的项目,参加过DARPA的智能车挑战赛

国内SLAM研究者越来越多,比较知名的一线青年老师有:
1.章国锋,浙江大学CAD&CG国家重点实验室(商汤)
2.沈劭劼,香港科技大学(大疆)
3.李明,武汉大学(环宇智行)
4.高翔,慕尼黑工业大学博士后,清华大学自动化博士
5.曾书格,深蓝学院激光SLAM讲师,电子科技大学硕士


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
五、机器人操作系统
ROS(Robot Operating System)是Willow Garage公司于2007年发布的一个开源机器人操作系统。
ROS包括一个类似于操作系统的硬件抽象,但它不是一个传统的操作系统,它具有可用于异构硬件的特性。此外,它是一个机器人软件平台,提供了专门为机器人开发应用程序的各种开发环境。
ROS是起源于2007年斯坦福大学人工智能实验室的项目与机器人技术公司Willow Garage的个人机器人项目(Personal RobotsProgram)之间的合作,2008年之后就由Willow Garage来进行推动。

(1)ROS是开源的,是用于机器人的一种后操作系统,或者说次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建立、编写和运行多机整合的程序。

(2)它为软件开发人员开发机器人应用程序提供了许多优秀的工具和库。同时,还有优秀的开发者不断地为它贡献代码。从本质上讲, ROS 并不是一个真正意义上的操作系统,而更像是一个基于操作系统之上的一个软件包。它提供了众多在实际机器人中可能遇到的算法:导航、通讯、路径规划等等。

(3)ROS的版本号是按照字母顺序来排列的,并随着Ubuntu系统发布更新。通常一个ROS版本会支持两到三个Ubuntu系统版本。ROS从Box Turtle开始,截止至本书写作时间(2016年)为止,已经更新到了Kinetic Kame。同时, ROS 也已经彻底重构,推出了实时性更强的2.0版本。

(4)ROS支持很多操作系统,支持的最完善的为Ubuntu及其衍生版本(Kubuntu,Linux, Mint, Ubuntu GNOME 等),对其他 Linux、 Windows等支持虽有但没有那么完善。推荐使用Ubuntu操作系统来进行开发和研究。ROS 支持目前被广泛使用的面向对象的编程语言C++,以及脚本语言Python。你可以选择自己喜欢的语言进行开发。

ROS主要特点:
1.点对点设计,一个使用ROS的系统,程序可以存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系。
2.多语言支持,ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现。
3.精简于集成,ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。
4.工具包丰富, 为了管理复杂的ROS软件框架,我们利用了大量的小工具去编译和运行多种多样的ROS组建,从而设计成了内核,而不是构建一个庞大的开发和运行环境。
5.免费开源, ROS以分布式的关系遵循这BSD许可,也就是说允许各种商业和非商业的工程进行开发。

参考书籍与博客
[1] 胡春旭《ROS机器人开发实践》以及古月居(胡春旭)的个人主页http://www.guyuehome.com/
[2] YoonSeok Pyo、HanCheol Cho、RyuWoon Jung、TaeHoon Lim.《ROS机器人编程》,下载链接:https://share.weiyun.com/970694619c000c4fef50344d3b3defd8
[3] 摩根·奎格利(Morgan Quigley)《ROS机器人编程实践》,摩根·奎格利博士是现在负责开发和管理ROS的Open Robotics的创办人,也是软件开发负责人。
[4] ROS机器人中文社区,http://www.roswiki.com/

公开课
[1] 机器人操作系统之认识ROS http://www.shenlanxueyuan.com/my/course/86 主讲人胡春旭(古月),知名机器人博客“古月居”博主,武汉精锋微控科技有限公司联合创始人,华中科技大学自动化学院硕士。


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
六、ROS机器人开发套件
国外
Turtlebot是一款低成本的个人机器人套件,带有开源软件,它是ROS官方打造的基于ROS的软硬件学习平台,由Melonee Wise和Tully Foote于2010年11月在Willow Garage创建,Turtlebot作为移动机器人入门级产品,几乎每个研究移动机器人的都是从他开始的,同时学习资料也是最丰富的;Turtlebot提供基础的硬件架构和移动平台,以及基于ROS的开源操作系统,编程开发者只需要依据平台提供的各种接口就可以实现需要的功能(机器人定位、SLAM建图、导航、跟随等功能)。Turtlebot2代平台标配有微软Kinect相机,安装激光雷达后,可以实现基于ROS的视觉SLAM、激光SLAM;同时可以自由选配充电桩。Turtlebot3代最大不同是所有零件都需要自己组装,并且标配2D激光雷达和单片机。

国内
1.北京六部工坊的启智ROS机器人http://www.6-robot.com/
2.上海思岚科技公司将SLAM算法集成到了一个模块化的自主定位导航计算卡,基于思岚开发的基于window的SDK,避开了ROS做二次开发,http://www.slamtec.com/


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
延伸阅读
自主移动机器人(AMR)技术给AGV市场的挑战 http://www.elecfans.com/iot/654012.html
AGV、IGV、AMR,移动机器人新名词迭出,是技术升级还是概念先行? https://www.gkzhan.com/news/detail/116876.html
国内常见移动机器人产品 https://zhuanlan.zhihu.com/p/39298458
为什么我选择并且推崇用ROS开发机器人? https://www.leiphone.com/news/201701/zBHXGJcsRTioj4gH.html
国内外知名激光雷达公司盘点 https://www.cnblogs.com/slamtec/p/9921555.html
机器人自主移动的秘密,从SLAM技术说起(一) https://www.leiphone.com/news/201609/c35bn1M9kgVaCCef.html
机器人自主移动的秘密:实际应用中,SLAM究竟是如何实现的?(二) https://www.leiphone.com/news/201612/FRzmoEI8Iud6CmT2.html
机器人自主移动的秘密:SLAM与路径规划有什么关系?(三) https://www.leiphone.com/news/201612/lvDXqY82OGNqEiyl.html
激光SLAM与视觉SLAM的现状与趋势 https://blog.csdn.net/khflash/article/details/78922967
激光SLAM Vs视觉SLAM  https://www.leiphone.com/news/201707/ETupJVkOYdNkuLpz.html
激光SLAM与视觉SLAM对比 两者融合为主流方向 http://blog.itpub.net/31559640/viewspace-2285991/

 

你可能感兴趣的:(AMR& SLAM& ROS入门——前言)