机器人操作系统 ROS
机器人操作系统 ROS
ROS(Robot Operating System)是一个灵活且可扩展的开源机器人操作系统。它提供了一系列的工具、库和软件包,用于帮助开发者构建和管理机器人应用程序。ROS的设计目标是提供一个通用的软件平台,可以简化机器人软件开发的复杂性,并促进机器人技术的共享和合作。简单来说,ROS就是一个分布式的通信框架,帮助程序进程之间更加方便地通信。
ROS的特性有:元操作系统、分布式通信机制、松耦合软降框架、丰富的开源功能库等。
ROS是一个机器人领域的元操作系统。也就是说,它不是真正意义上的操作系统,其底层的任务调度、编译、设备驱动等还是由它的原生操作系统Ubuntu Linux完成。
ROS实际上是运行在Ubuntu Linux上的亚操作系统,或者说软件框架,但提供硬件抽象、函数调用、进程管理这些类似操作系统的功能,也提供用于获取、编译、跨平台的函数和工具。
ROS的核心思想就是将机器人的软件功能做成一个个节点,节点之间通过互相发送消息进行沟通。这些节点可以部署在同一台主机上,也可以部署在不同主机上,甚至还可以部署在互联网上。ROS网络通信机制中的主节点(master)负责对网络中各个节点之间的通信过程进行管理调度,同时提供一个用于配置网络中全局参数的服务。
ROS是松耦合软件框架,利用分布式通信机制实现节点间的进程通信。ROS的软件代码以松耦合方式组织,开发过程灵活,管理维护方便。
ROS具有丰富的开源功能库。ROS是基于BSD(Berkeley Software Distribution,伯克利软件发行)协议的开源软件,允许任何人修改、重用、重发布以及在商业和闭源产品中使用,使用ROS能够快捷地搭建自己的机器人原型。ROS框架被设计的尽可能精简,便于其编写的代码可以与其他机器人软件框架一起使用。ROS设计为会议中语言弱相关的框架结构,使用简洁,中立的定义语言描述模块间的消息接口,在编译中再产生所使用语言的目标文件,为消息交互提供支持,同时允许消息接口的嵌套使用。ROS具有称为rostest的内置单元/集成测试框架,可轻松安装和拆卸测试工具。ROS适用于大型运行时系统和大型开发流程,其组件化工具包丰富。
ROS是一个由来已久、贡献者众多的大型软件项目。在ROS诞生之前,很多学者认为,机器人研究需要一个开放式的协作框架,并且已经有不少类似的项目致力于实现这样的框架。在这些工作中,斯坦福大学在2000年年中开展了一系列相关研究项目,如斯坦福人工智能机器人(STandford AI Robot, STAIR)项目、个人机器人(Personal Robots, PR)项目等,在上述项目中,在研究具有代表性、集成式人工智能系统的过程中,创立了用于室内场景的高灵活性、动态软件系统,其可以用于机器人学研究。按照英文字母顺序命名,ROS目前已经发布了ROS1的终极版本:noetic,并建议后期过渡至ROS2版本。noetic版本之前默认使用的是 Python2,noetic 支持 Python3。建议版本:noetic 或 melodic 或 kinetic。
我们使用的是ROS版本是Noetic,那么可以在ubuntu20.04、Mac或 windows10系统上安装,虽然一般用户平时使用的操作系统以windows居多,但是ROS之前的版本基本都不支持windows,所以当前我们选用的操作系统是 ubuntu,以方便向历史版本过渡。ubuntu安装常用方式有两种:
实体机安装ubuntu(较为常用的是使用双系统,windows 与 ubuntu 并存)。这种安装方式可以保证性能,且不需要考虑硬件兼容性问题,但是和windows系统交互不便。
虚拟机安装ubuntu。可以方便的实现windows与ubuntu交互,不过性能稍差,且与硬件交互不便。
ROS中,一些仿真操作是比较耗费系统资源的,且经常需要和一些硬件(雷达、摄像头、arduino....)交互,因此,原则上建议采用方案1,不过如果只是出于学习目的,那么方案2也基本受用。
如果采用虚拟机安装ubuntu,再安装ROS的话,大致流程如下:
1.安装虚拟机软件(比如:virtualbox 或 VMware)。
2.使用虚拟机软件虚拟一台主机。
3.在虚拟主机上安装ubuntu 20.04。
4.在ubuntu上安装ROS。
5.测试ROS环境是否可以正常运行。
要想学好以及用好ROS,需要进行大量的实践操作。因此在快速了解ROS的核心概念和编程范式后,就要结合大量的实际项目来深入理解ROS。学会用正确的方式解决问题,能帮你更快地提高能力。ROS的学习资源主要有以下几个。
官网:www.ros.org
源码:github.com
Wiki:wiki.ros.org
问答:answers.ros.org
官网:www.ros.org
源码:github.com
Wiki:wiki.ros.org
问答:answers.ros.org
官网:www.ros.org
源码:github.com
Wiki:wiki.ros.org
问答:answers.ros.org
以上内容简单介绍了机器人操作系统ROS的概念,特色,设计目标,学习方法等。ROS的大门已经敞开,接下来就要步入新的征程了。