1 ROS简介
ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。
通信机制:ROS的核心,数据交互,例如导航,需要获得激光雷达、摄像头数据等。
工具:可以利用仿真等工具,仿真是非常重要的。
功能:自主导航、避障、识别。复用别人的功能,结合自己的进行调参。
生态:武林盟主式的存在,掌握话语权。
机器人开发的分工思想,实现了不同研发团队间的共享和协作,提升了机器人的研发效率,为了服务“ 分工”,ROS主要设计了如下目标:
-
代码复用:ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码重用。
-
分布式:ROS是进程(也称为Nodes)的分布式框架,ROS中的进程可分布于不同主机,不同主机协同工作,从而分散计算压力
-
松耦合:ROS中功能模块封装于独立的功能包或元功能包,便于分享,功能包内的模块以节点为单位运行,以ROS标准的IO作为接口,开发者不需要关注模块内部实现,只要了解接口规则就能实现复用,实现了模块间点对点的松耦合连接
-
精简:ROS被设计为尽可能精简,以便为ROS编写的代码可以与其他机器人软件框架一起使用。ROS易于与其他机器人软件框架集成:ROS已与OpenRAVE,Orocos和Player集成。
-
语言独立性:包括Java,C++,Python等。为了支持更多应用开发和移植,ROS设计为一种语言弱相关的框架结构,使用简洁,中立的定义语言描述模块间的消息接口,在编译中再产生所使用语言的目标文件,为消息交互提供支持,同时允许消息接口的嵌套使用
-
易于测试:ROS具有称为rostest的内置单元/集成测试框架,可轻松安装和拆卸测试工具。
-
大型应用:ROS适用于大型运行时系统和大型开发流程。
-
丰富的组件化工具包:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用,如RVIZ(3D可视化工具),开发者根据ROS定义的接口在其中显示机器人模型等,组件还包括仿真环境和消息查看工具等
-
免费且开源:开发者众多,功能包多
按照英文字母顺序命名,ROS 目前已经发布了ROS1 的终极版本: noetic,并建议后期过渡至 ROS2 版本。noetic 版本之前默认使用的是 Python2,noetic 支持 Python3。
关于ros为啥吉祥物是个小海龟?可见下文了解一下:ROS史话36篇 | 9. ROS乌龟的起源
2 ROS的安装与测试
采用的在虚拟机中安装ROS,具体的可以看下面的博客:
第二弹 VMWare Tools 与 Linux极简基础操作
第四弹 Ubuntu18.04下ROS安装的若干问题及解决办法
番外篇 Ubuntu18.04安装输入法及遇到的问题解决办法
要是嫌麻烦,可以直接看下面这个,根本不会遇到各种报错:被安装劝退?学习ROS的看过来,输入法都安装好了的系统,等你白嫖!