ROS(Robot Operating System)是一个广泛使用的机器人操作系统,它的起源可以追溯到斯坦福人工智能实验室(Stanford AI Lab)的一个项目。该项目于2007年开始,由Morgan Quigley、Brian Gerkey和Willow Garage公司的其他员工共同开发。
最初,ROS的目的是为了帮助Willow Garage公司开发其PR2机器人,但随着时间的推移,ROS逐渐成为了一种用于构建和测试各种类型机器人软件的标准平台。ROS的发展历程可以分为三个主要阶段:Willow Garage时期、OSRF时期和Open Robotics时期。
(1)在Willow Garage时期,ROS主要用于开发PR2机器人的软件,并在机器人研究社区中获得了广泛的支持。ROS的第一个稳定版本(ROS 1.0)于2010年发布。
(2)2013年,OSRF(Open Source Robotics Foundation)成立,接管了ROS项目的开发和维护工作。在OSRF时期,ROS的重点是将其扩展到更广泛的机器人和其他机器人相关应用程序中。
(3)在2019年,OSRF和另一家机器人公司合并,成立了Open Robotics公司。ROS现在是Open Robotics的主要产品之一。ROS在全球范围内被广泛使用,并且拥有活跃的开发者社区和生态系统。
ROS的设计灵感来源于操作系统(OS)的思想,它提供了一些基本的功能,如硬件抽象层、设备驱动程序、消息传递、包管理等,使得开发者可以更容易地编写、测试和部署机器人软件。
ROS是一个开源项目,目前由ROS开发组维护。自2007年首次发布以来,ROS已经成为了机器人领域中广泛使用的系统框架之一。
ROS的核心——分布式网络,使用了基于TCP/IP的通信方式,实现了模块间点对点的松耦合连接,可以执行若干种类型的通信,包括基于话题(Topic)的异步数据流通信,基于服务(Service)的同步数据流通信,还有参数服务器上的数据存储等。总的来说,ROS主要有以下几个特点
ROS的架构可以将其分为三个层次:OS层、中间层和应用层。
OS层:ROS并不是一个传统意义上的操作系统,无法像Windows、Linux一样直接运行在计算机硬件上,而是需要依托于Linux系统。所以在OS层,我们可以直接使用ROS官方支持度最好的Ubuntu操作系统,也可以使用macOS、Arch、Debian等操作系统。
中间层:Linux是一个通用系统,并没有针对机器人开发提供特殊的中间件,所以ROS在中间层做了大量的工作,其中最为重要的就是基于TCPROS/UDPROS的通信系统。ROS的通信系统基于TCP/UDP网络,在此之上进行了再次封装,也就是TCPROS/UDPROS。通信系统使用发布/订阅、客户端/服务器等模型,实现多种通信机制的数据传输。
除了TCPROS/UDPROS的通信机制外,ROS还提供一种进程内的通信方法——Nodelet,可以为多进程通信提供一种更优化的数据传输方式,适合对数据传输实时性方面有较高要求的应用。
在通信机制上,ROS提供了大量机器人开发相关的库,如数据类型定义、坐标变换、运动控制等,可以提供给应用层使用。
应用层:在应用层,ROS需要运行一个管理者——Master,负责管理整个系统的正常运行。ROS社区内共享了大量的机器人应用功能包,这些功能包内的模块以节点为单位运行,以ROS标准的输入输出作为接口,开发者不需要关注模块内部实现的机制,只需要了解接口规则即可实现复用,极大地提高了开发效率。
从系统实现的角度来看,ROS也可分为三个层次:文件系统(程序文件是如何组织和构建的)、计算图(描述程序是如何运行的)和开源社区(ROS资源是如何分布式管理的)。
机器人这个词的诞生最早可以追溯到20世纪初。1920年捷克斯洛伐克作家卡雷尔·恰佩克在他的科幻小说《罗萨姆的机器人万能公司》中,根据Robota(捷克文,原意是“劳役、苦工”和Robotnik(波兰文,原意是“工人”)创造出“机器人”这个词。
百度百科关于机器人的解释是:"机器人( Robot )是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作,如生产业、建筑业,或是危险的工作。
"美国机器人协会( RIA )关于机器人的定义是:"机器人是用以搬运材料、零件、工具的可编程序的多功能操作器或是通过可改变程序动作来完成各种作业的特殊机械装置。"我国科学家对机器人的定义是:"机器人是一种自动化的机器,所不同的是这种机器具备一些与人或生物相似的智能能力,如感知能力、规划能力、动作能力和协同能力,是一种具有高级灵活性的自动化机器。
"国际标准化组织( ISO )对机器人的描述如下。
1)机器人的动作机构具有类似于人或其他生物体的某些器官(肢体、感受等)的功能。
2)机器人具有通用性,工作种类多样,动作程序灵活易变。
3)机器人具有不同程度的智能性,如记忆、感知、推理、决策、学习等。
4)机器人具有独立性,完整的机器人系统在工作中可以不依赖于人的干预。
随着数字化的进展、云计算等网络平台的充实,以及人工智能技术的进步,很多机器人仅仅通过智能控制系统就能够应用于社会的各个场景之中。如此一来,机器人的定义将有可能发生改变,下一代机器人将会涵盖更广泛的概念。以往并未定义成机器人的物体也将机器人化,如无人驾驶汽车、智能家电、智能手机、智能住宅等。
机器人是一个机电一体化的设备,从控制的角度来看,机器人系统可以分成四大部分:执行机构、驱动系统、传感系统和控制系统。
执行机构是直接面向工作对象的机械装置,相当于人体的手和脚。根据不同的工作对象,适用的执行机构也各不相同。例如:常用的室内移动机器人一般采用直流电机作为移动的执行机构;而机械臂一般采用位置或力矩控制,需要使用伺服作为执行机构。
驱动系统负责驱动执行机构,将控制系统下达的命令转换成执行机构需要的信号,相当于人体的肌肉和筋络。不同的执行机构所使用的驱动系统也不相同,如直流电机采用较为简的 PWM 驱动板,而伺服则需要专业的伺服驱动器,工业上也常用气压、液压驱动执行机构。
传感系统主要完成信号的输入和反馈,包括内部传感系统和外部传感系统,相当于人体的感官和神经。内部传感系统包括常用的里程计、陀螺仪等,可以通过自身信号反馈检测位姿状态;外部传感系统包括摄像头、红外、声呐等,可以检测机器人所处的外部环境信息。
控制系统实现任务及信息的处理,输出控制命令信号,类似于人的大脑。机器人的控制系统需要基于处理器实现,一般常用的有 ARM 、x86等架构的处理器,其性能不同,可以根据机器人的应用选择。在处理器之上,控制系统需要完成机器人的算法处理、关节控制、人机交互等丰富的功能。