一、前言

很多正在学习ROS的小伙伴都有这样的困惑:学了ROS可以做什么?我该从哪一步开始?什么姿势入门最适合自己?迷茫混乱的时候若是有人指明方向就更好了。

这不就来了:古月居针对部分对该职业方向有意向/正在学习的小伙伴,分析了北京、上海、江苏等多地公司的岗位招聘要求,为各位规划出一条清晰、全面、系统的ROS开发工程师养成之路,希望看完能让小伙伴们对该职业的学习路径有更加清晰的认知,用最容易的姿势走上ROS开发工程师的道路。

二、线路总览

首先一起来看看整个学习路线的总览(如图1),针对不同公司产品的应用场景提出的对应招聘需求,我们将整个学习路径采取先通识课后专业课的方式。通识课部分为编程能力→软件开发→机器人通用理论与技术,主要为了提高大家的基本认知和技术基础,至此你已经入门ROS开发,具备了基本任职资格。当然,为了更好地匹配心仪公司的岗位,提升个人竞争力,你还需要选择相关专业课(工业机器人、移动机器人、无人机三大类)学习。

                                                                                                      图1 线路总览

三、通识课程

“工欲善其事,必先利其器。”,下面按照学习顺序展开通识课程,帮助你一步步入门ROS开发。

3.1 编程能力

C++与Python进行ROS开发的常用语言,古月居为大家筛选了普适的的视频课程资源,小白可以从头进行系统的学习,有一定基础的同学可以针对薄弱点进行巩固。链接如下:

C++

https://www.bilibili.com/video/BV1et411b73Z?from=search&seid=7599566888210019373

Python

https://www.bilibili.com/video/BV1c4411e77t?from=search&seid=11983732368546479265

3.2 软件开发

ROS开发工程师负责基于ROS系统的产品(如AGV小车)软件系统开发、集成和代码测试。这就需要熟悉嵌入式Linux操作系统,对数据结构算法,网络编程、进程通信、多线程编程有一定理解。针对软件开发能力的培养,我们给出如下学习路线和相关学习资源:

数据结构算法

https://www.bilibili.com/video/BV1nJ411V7bd?from=search&seid=18196752642549138919

软件工程

https://www.bilibili.com/video/BV1Vt411V72G?from=search&seid=3752582165111199615

Linux下的网络编程、进程通信、多线程编程与QT前端开发

这部分知识丰富,需要系统学习且同步进行实战演练,这里推荐《Linux与QT程序设计》。书中从四个方面介绍Linux系统与Qt程序设计的知识:

第一方面介绍Linux基础知识,包括发展历史、常用的命令、文件系统等;

第二方面主要介绍Qt的基础知识,包括如何编写第一个Qt程序、信号与槽、Qt事件机制及MVC模式等;

第三部分着重介绍Qt界面设计的核心内容,包括常用控件、布局管理、对话框及主窗体等;

第四部分通过完整的实例介绍Qt的典型应用。 《Linux与Qt程序设计》适用于具有一定C/C++程序基础的开发人员阅读,也可以作为Qt开发过程中的工具参考书。

                                                                                                                                                                          

                                                                                 图2 《Linux与QT程序设计》                          

3.3 机器人通用理论与技术

通过前两步的学习你已经具备Linux环境中进行软件开发的能力,但开发的软件系统只是一个框架,接下来需要在框架中填充与应用相关的内容,逐步完善其功能。这就需要我们掌握机器人的通用理论与技术,了解ROS开发的基本应用。

常用传感器原理

ROS开发工程师需要完成ROS系统下的多种传感器、执行器的驱动编写,数据采集和处理,这就需要掌握激光传感器、惯性传感器、以及里程计、视觉、超声波、GPS等多种传感器数据融合处理与调优方法。

ROS入门21讲

掌握常用传感器原理后可以正式开始最关键的内容—机器人操作系统ROS的学习。这里推荐《ROS入门21讲》,该教程以经典的小乌龟案例深入浅出的讲解ROS的原理与案例,让ROS入门不再困难。

课程链接:ROS入门21讲 · 古月(含考试证书及新增彩蛋2讲)

相关应用

通用的应用主要分为两大块:感知定位与路径规划。

主流的定位技术有超声波导航定位、视觉导航定位、GPS定位、SLAM等,目前主流的机器人定位技术是SLAM技术(即时定位与地图构建)。关于SLAM的学习我们建议:首先熟悉ROS中常用的SLAM功能包,然后即可在ROS中对机器人建图导航中最常用的VSLAM与Lidar SLAM技术进行理论学习与实战操作。

课程链接:ROS常用SLAM功能包使用指南 · 古月

路径规划模块性能的高低直接关系机器人路径选择的优劣和运动的流畅度,而路径规划算法的性能优劣很大程度上取决于规划算法的优劣,如何在各种场景下迅速、准确的规划出一条高效路径且使其具备应对场景动态变化的能力是路径规划算法应当解决的问题。我们给出一个基于栅格地图的机器人路径规划算法指南,帮助大家掌握常用路径规划算法的原理。

课程链接:基于栅格地图的机器人路径规划算法指南 • 黎万洪

四、专业课程

下面按照专业课程的不同分支展开对应的专业课程的理论与实战学习,你可以结合理想公司的招聘需求任选某一个或几个方向进行学习,让你在竞争者中脱颖而出。

4.1 移动机器人

移动机器人是目前ROS开发最广的一个应用对象,经过第三节的常用机器人技术的理论学习,我们给出如下实战课的学习路线:

掌握控制算法开发过程——MATLAB+ROS快速开发控制算法

掌握高效的算法开发过程是成为优秀工程师的必备素养,《MATLAB+ROS快速开发控制算法》通过一个轨迹跟踪控制算法的开发实例,展示MATLAB与ROS联合快速开发控制算法的流程——V字开发流程。这种技术路线可以快速验证自己的想法并能准确且快速地生成ROS C++代码完成控制系统的开发。

课程链接:MATLAB+ROS快速开发控制算法 ·董昊天

轨迹跟踪实战——MATLAB+ROS开发MPC轨迹跟踪算法

掌握了一般的算法开发流程之后需要一定的开发实战巩固经验。基于V字开发流程路线开发移动机器人和无人车常用的MPC(模型预测控制)轨迹跟踪算法。最终以树莓派为主控制器控制RC遥控车。该技术路线还有一大优势就是可以充分利用MATLAB的各种接口完成高性能的联合仿真实验。

课程链接:MATLAB+ROS开发MPC轨迹跟踪算法 • 董昊天

自主导航实战——如何实现ROS机器人自主导航·古月

自主导航是移动机器人普遍需要具备的功能。开发自主导航功能需要了解ROS Navigation框架及其核心功能包,在仿真环境中配置并实现移动机器人的自主导航功能,并结合SLAM实现同时建图与自主导航,让你的机器人更加智能化。

课程链接:如何实现ROS机器人自主导航 · 古月

4.2 工业机器人

多关节操作臂机器人是工业的重要组成部分,它们能够精准的执行各种各样的任务和操作。多关节操作臂已广泛应用在工业和社会生活中,如多关节操作臂有机器加载、取放操作、焊接、喷漆、检测、装配、机械制造、医疗应用等方面用途。许多公司也面向基于ROS的机械臂开发进行人才招聘,但是机械臂开发相对门槛较高,理论部分入门难度较高,建议的学习路线如下:

机器人学——运动学、动力学建模以及仿真分析

机器人正运动学正是在控制器中主要的运动学算法。通过机器人正运动学让机器人精准到目标点实现各种各样的任务和操作。此处推荐一个课程带领大家学习机器人正运动学、掌握正运动学推导方法,学习正运动学仿真和得到正运动学结果后的验证方法,及其涉及的机器人学基础:位置、姿态与坐标系描述、映射、变换。

课程链接:机器人正运动学 • 展翅飞翔

机械臂控制——机械臂控制理论入门与实例

学习机器人的学的目的是更好的控制机器人实现目标功能,鉴于机械臂控制理论深奥,需要良好的数学基础,古月居更推荐与实战相结合进行机械臂控制的入门。在《软硬结合带你玩转ROS机械臂》课程中,同学们不仅可以了解到该设计项目的各方面分析、如何去搭建这个机械臂、如何使用立创EDA来绘制原理图和PCB、如何在ROS下开发一个功能包。

课程链接:软硬结合带你玩转ROS机械臂 • 李江浩

4.3 无人机

无人机为许多机器人公司的主流研发产品。为了保证无人机工作过程安全,仿真在ROS开发无人机的过程中至关重要。飞控开发涉及的知识面广,门槛较高。有意向从事相关岗位的同学需要熟悉:

无人机仿真与开发——基于ROS的无人机仿真与开发

无人机路径规划/视觉算法开发如何入门也是许多初学者的一道难关。通过《ROS的无人机仿真与开发》课程提供的完整代码框架,在没有真实的无人机条件下,你将学到PX4无人机三维仿真开发,包含智能无人机开发仿真环境搭建,无人机自主飞行初步,无人机激光雷达避障自主飞行,方便大家做进一步的智能开发,涉及路径规划,自主决策等。在这个基础上实现强化学习,视觉追踪引导,激光/视觉SLAM等研发工作,本课程还提供一些例程DEMO提供完整的接口。

课程链接:无人机仿真开发

飞控开发——飞控原理与开发实战

飞控开发的系统学习推荐高校普遍使用的经典教材——《多旋翼无人飞行器嵌入式飞控开发指南》,这本书主要围绕多旋翼无人机的飞控系统设计,从嵌入式的基础知识开始,深入浅出地介绍了无人机的基本知识和硬件构成,重点介绍了无人机的飞控系统原理、基础和开发流程,针对飞行器系统的状态解算介绍了几种不同的解算方法,并给出相应的实际代码例程。这本书从各方面对无人机系统的设计进行阐述,并提供了最前沿的知识和信息,既有初学者希望了解的基础知识,也有行业研究者所希望深入了解的算法分析,以及室内定位SLAM原理等。

                                                                                                                               

                                                         图3 《多旋翼无人飞行器嵌入式飞控开发指南》

五、总结

本文给出了ROS开发工程师养成之路的文档导读,大家可以结合个人基础按需在古月学院进行相关方面的学习,文中待上线的课程已在紧锣密鼓的筹备中,欢迎大家持续关注。最后,祝愿大家都能找到最适合自己的方向,学有所成,求职顺利!