不邀自来~~
题主从未有过机器人方面的学习,因此,我邀请了从其他部门转岗过来的RD小哥过来回答这个问题,小哥在来无人配送之前是美团基础研发的同学,以前没有学过ROS,也没有做过机器人,应该和题主的情况比较相似,以下为RD小哥写的学习教程,希望对题主有所帮助。
万字长文警告!本文包含了详细的学习模块、资料和介绍,先收藏食用更佳
目录
1. 前言
2. 待学习的模块
2.1 操作系统
2.2 编程语言
2.3 ROS概述
2.4 ROS模块
3. 总结
以下为正文:
1. 前言
ROS(Robot Operating System)是应用在机器人领域里的一套开源软件框架和工具,旨在帮助研究、开发人员能够聚焦在具体的算法研究和应用开发中,而无需过多关注和算法应用不太相关的系统层次,帮助研究人员快速实现具体功能。ROS是一套开源的构建在操作系统之上的中间件系统,提供完整的系统功能库、调试工具。
2. 待学习的模块
2.1 操作系统
ROS默认建议使用Ubuntu和Centos操作系统,当然也支持Mac OS、OpenEmbedded、Arch Linux等。在学习ROS之前,需要选择一个可用的操作系统并熟悉掌握它。建议使用Ubuntu操作系统,这是ROS大部分使用者选择的,对于后期遇到的问题和一些公用库能够更好地支持。
对于操作系统,需要做到下面几个掌握程度:掌握安装过程:
这是基本能力,在开发和研究过程中,很大程度会出现将电脑弄崩溃的情况,这时候掌握安装知识就显得很必要了;
掌握基本操作指令:
不管使用哪个操作系统,基本的操作指令都必须掌握。以Ubuntu为例,需要掌握基本的命令行操作(包括文件目录操作、软件库管理、文件编辑、配置管理等),建议参Ubuntu桌面操作指南;
掌握基本的编程工具使用:
掌握基本的编程工具使用,强制要求掌握python和C/C++这两类语言的编程工具,包括gcc、cmake等;
掌握依赖库管理:
掌握对应操作系统依赖库的管理,包括安装、升级、卸载等,掌握从源码安装依赖库的方法,掌握编程需要的环境变量配置方式。
对于操作系统,了解掌握得越深,对于后面的学习越有帮助,建议详细并深入地学习操作系统方面的知识,当然简单掌握上面的知识点也可以进行下面的学习。
2.2 编程语言
ROS框架的主要编程语言为C/C++和python,可能在应用开发中需要用到类似shell等语言知识,但是主要的开发语言是C/C++和python,所以C/C++和python语言的掌握程度决定了ROS的掌握程度。
C++的学习和掌握建议看《C++ Primer》,python的学习建议直接通W3C来学习。
2.3 ROS概述
▍2.3.1 起源
ROS的产生验证了一句话:需求推动进度。在10年前,要想开发机器人类的应用,基本上研发人员需要将前人的工作全部做一遍:驱动、通信、交互、算法和应用。2007年,Morgan Quigley在自己的STAIR项目中发现对于机器人应用,各个模块其实很大程度并不相关,可以同步进行,如机械臂操作、激光处理等,于是他在这个项目中采用这种分布式处理的方法,并在项目结束后发表了这一理念:《STAIR: Hardware and Software Architecture》,这一理念的名称是Switchyard,也就是我们ROS的前身。后来在2009年,在Switchyard基础上开发完善了ROS系统,并正式对外发布,这就是ROS的起源。
ROS的产生极大的减少了重复工作量,也让研发人员更多地关注在自身的应用上。
▍2.3.2 特点
ROS的设计目标就是分布式系统,它的特点包含了下面几种:
1. 支持多计算节点部署
由于ROS通过TCP/UDP来实现数据之间的交互,所以可以将整个系统切分到多个计算节点上,不同计算节点负责不同的应用功能模块。
2. 丰富的工具
ROS官方提供了丰富的开发、编译、调试工具,极大地方便了开发和调试过程。如统一编译工具catkin、算法综合调试工具rviz、rqt等。
3. 丰富的开源库
提供了开源的软件库管理,全世界的开发者都可以共享各类驱动、算法、应用上的成果。
4. 多语言支持
当前ROS应用开发可以使用C/C++、Python、Lisp等。
▍2.3.3 现状
由于ROS是在2007年确定技术框架,当时选择了主流的框架、通信机制等,但是在技术演进快速的年代,新技术、新需求、新场景会很快让原先的框架实现陷入瓶颈或遇到技术障碍。鉴于机器人实时性、安全性、交互性、高数据量传输要求,ROS自身已经很难满足一些场景的要求,尽管有很多大厂和开源贡献者做了相应的改造,但是针对ROS自身改造的呼声也愈来愈高,最终ROS官方在2017年12月8号发布了ROS 2.0的第一个正式版本。在这个新版本中,众多的新技术和新概念被应用进来,可以说是完全颠覆了原先的框架设计,带来了更高更强的处理性能。
ROS2.0作为一个全新的框架,和原先的ROS基本完

本文详述了从未接触过ROS的开发者如何从零开始学习ROS,包括学习操作系统、编程语言(尤其是Python和C++)、ROS概述、模块和工具。ROS是一套开源的机器人操作系统,旨在简化机器人开发。学习过程中,建议先掌握Ubuntu操作系统,然后学习C++和Python编程,接着理解ROS的基本概念、工具和模块。文章还介绍了ROS的起源、特点、现状,以及经典应用——小乌龟模拟器。最后,通过创建ROS工作空间、软件包和节点,以及数据交互的topic和message机制,展示了如何进行实际的ROS开发。
最低0.47元/天 解锁文章
229

被折叠的 条评论
为什么被折叠?



