如果您觉得文章还不错,期待您的打赏,点击上述链接即可,感谢~感激~感恩~
捷径常误人,欲速则不达
The longest way round is the nearest way home.
图 1:今天的 Atlas
我们会惊艳于图 1 中机器人的敏捷身姿。
图 2:5 年前的 Atlas
今天的 Atlas 身轻如燕,跑跳自如;5 年前的它依靠吊绳,步履蹒跚,这是不断进化成长的必然结果。
循序渐进,厚积薄发,是学习 ROS 和机器人技术的必由之路。
机器人被誉为制造业皇冠上的明珠,历经 500 年的不断发展(16 世纪西班牙自动祈祷的机械僧侣),目前已经全面进入“机器人+”时代,涌现出各种新奇智能的黑科技,如机械狗、无人机、自动驾驶汽车以及各种服务机器人……在这些机器人的大脑之中,都用到一个共同的软件工具,将视觉、听觉、触觉、四肢等连接协调,完成复杂多变的任务,它就是机器人操作系统(Robot Operating System,ROS)。同时,它也是近百所高校机器人方向的专业核心课程。
图 3a:2018年 ROS 维基访问排名 (国内排名第二)
图 3b:2019年 ROS 维基访问排名(国内排名第一)
自 2007 年 11 月由斯坦福大学提交,已经发展了 11 年,成为机器人领域使用最广泛的软件平台,超过 450 万行核心代码,支持天上飞、地上跑、水中游等各类机器人。然而使用 ROS 进行机器人软件开发与设计并非易事,为什么要学习研究 ROS,有哪些主流的方式路径,这正是 Chat 的主题所在,当然也包括跨系统平台对比和双语资料汇总。内容纲要如下:
- 学习研究 ROS 的理由 Reasons for learning and studying ROS
- ROS 案例简述 Brief description of ROS robot
- ROS 特色优势 Characteristics and advantages of ROS
- ROS 与机器人理论 ROS and robotic theory
- ROS 主流学习与开发路径 Efficient learning guides and typical development paths of ROS
1. 学习研究 ROS 的理由
简言之,“利”。
对于机器人专业方向的学生而言,学习 ROS 能将理论应用于实际系统,学以致用:
从学士到硕士再到博士,ROS 都是必不可少的工具。
推荐阅读:机器人工程师学习计划
对于机器人工程师和科研人员,掌握 ROS 可以跟踪研究最新的算法和架构,知行合一:
晋升路径分别为:
初级工程师 - 助理工程师 - 工程师 - 主任工程师 - 高级工程师 - 副总工程师 - 总工程师 - 技术总监 (企业)
助教 - 讲师 - 副教授 - 教授(高校)或助理研究员 - 副研究员 - 研究员(研究所等)
对于机器人爱好者,应用 ROS 可以愉快把玩各种机器人并设计属于自己的机器人,个性订制;
对于宝爸宝妈,嗯,ROS 可以让您和孩子一起动手制作高大上的机器人玩具,借助 ROS 可以从 Scratch 到 Python 然后过渡到 C++ 语言,一步步在您陪伴孩子共同成长的过程中不断深入探索机器人编程的无穷奥妙。
利于学业,利于晋升,利于应用,利于研究,利于定制,利于玩耍。
只有“利”这么一个理由,如果还要第二个理由,那就是简单易学。
只要识字,就可以学会编程;若会编程,就能够掌握ROS。
If you know how to read you can learn how to code, if you know how to code you can learn how to use ROS.
2. ROS 案例简述
ROS 机器人主要分为两个主流的研究领域:服务机器人和工业机器人,核心功能包分别对应 Navigation 和 MoveIt!。
支持 ROS 的机器人列表:ROS 机器人链接,总有一款你喜欢的~
图 4:支持 ROS 的机器人列表
这里,以扫地机器人这类典型的服务机器人为例:
图 5:扫地机器人案例示意
这里案例,融合了机器人运动学原理到代码编写实现,SLAM 理论到仿真应用,传感器和执行器消息传递的方式,基于区域覆盖的路径规划算法等。用 ROS 学习并掌握这套理论,不仅形象便于理解,而且借助开源社区的力量,只需一周就可以做出一个“不太聪明”的扫地机器人。通过仿真可以零成本的搭建各式各样的环境用于算法验证。
图 6:典型室内仿真环境与寓教于乐的实践环节
ROS 的应用领域也非常广泛,从物流小车,到无人驾驶;无论是小到可以进入千家万户的教育机器人,还是大到矿山机械星辰大海,都可以让开发人员迅速上手,开发出期望的产品原型,并不断更新改进完善。
嗯,这些行业大佬都非常看好 ROS 呢!
3. ROS 特色优势
ROS 1 主要特点如图 7 所示:
图 7:ROS 的主要特点
ROS 2 在此基础之上增强了数据分发服务(Data Distribution Service,DDS)和实时性(Real-time)等,如图 8 所示:
图 8:ROS 的发展改进
上面的 rqt_graph 图中,有节点(可用 Python 或 C++ 实现),箭头代表数据信息流向,可以多台计算机分别运行不同的程序,通过网络进行通信,只需要在原有程序基础上,依据 ROS 做少许修改即可,例如,语音识别控制机器人运动程序,就是通过代码移植实现的,非常方便。
4. ROS 与机器人理论
ROS 是快速实现机器人理论的一种途径,可以通过仿真或实际机器人测试学习过的或者新开发的算法。
图 9:ROS 与机器人学的关系
ROS 是一座桥梁,将枯燥的理论变为鲜活的应用,使两者有机结合,发生奇妙的变化。
例如,Google 开源的 SLAM 算法 cartographer,通过 ROS,可应用于任何一款定制的机器人。
Cartographer 是一个适用于二维和三维环境的提供实时同步定位和地图构建(SLAM)的系统,支持多平台和传感器配置。
Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.
参考链接:ROS Wiki,Github。
5. ROS 主流学习与开发路径
本节分为两部分,5.1-5.4 讲述四种修炼之路,5.5 简单说一下开发的问题。
5.1 武林正宗
如果您是程序员老司机,那么 ROS 和 GitHub 官网能够找到您想要了解的几乎全部资料,免费详细的文档,唯一需要的就是您宝贵的时间。
5.2 另辟蹊径
- 如果您是刚刚了解 ROS 的新手,这里推荐一本 ROS 入门最佳书:ROS 机器人编程。下载中英文版本,并尽可能同步阅读。
- 在完成后,推荐苏黎世联邦理工学院 ETH 的 ROS 课程,同样推荐中英文同步学习,并完成课后习题。
- 再然后呢,恭喜您,已经完全入门 ROS 了,选择自己感兴趣的方向或项目需求深入研究就好。
5.3 云端遨游
三个在线学习 ROS 的课程:
- 中文慕课:机器人操作系统入门;
- 实验楼:ROS 机器人操作系统的安装、配置与初级教程;
- Construct:Learn to Develop for Robots with ROS。
掌握 ROS 技巧,变身机器人开发者
Master ROS Skills and Become a Robotics Developer
5.4 随心所欲
如果您没有目标,也可以报个 ROS 培训班,听大神吹吹牛,找本书随便翻翻,或者在网上东看看西耍耍,然后,嗯,您什么也学不会。“从古至今,虽然学习的手段有所改变,但是人内在的动力依然是学有所成的关键。” 引自吴军老师的书。
消极学习和主动实践差异是巨大的,明确目标,选好方向,非常,非常,非常重要!
5.5 开发路径
算法和应用是不分平台的,但是不同的操作系统,编译环境会有差异,例如,system("PAUSE")
只能在 Windows/DOS 成功编译,而cin.ignore()
则适用于 Windows、Linux 和 MacOS。因此,要了解 Windows 上的 ROS 与 Linux 上的 ROS 之间的差异。针对项目要求或需求分析,基于开源代码开发的应用,请阅读每一行源码,否则出现 bug,茫然无措。
如果大家对 ROS 课程感兴趣,欢迎多多留言讨论,非常感谢。(第三版)
6. ROS 2.0时代
- 第二代机器人操作系统课程资料汇总 Course Learning Materials for ROS2 2019.10.23
Fin