问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ROS机器人操作系统入门教程

创作时间:
作者:
@小白创作中心

ROS机器人操作系统入门教程

引用
CSDN
1.
https://m.blog.csdn.net/ericharrison/article/details/126724592

ROS(Robot Operating System)是一个适用于机器人的开源操作系统,提供了硬件抽象、底层设备控制、常用函数实现、进程间消息传递和包管理等服务。它通过统一的开发标准和丰富的功能库,帮助开发者避免重复造轮子,提高开发效率。本文将详细介绍ROS的基本概念、架构和使用方法。

1 基本介绍

Robot operating System(ROS)是一个适用于机器人的开源操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。

价值在于:

  • 在不同项目中避免重复造轮子。
  • 统一开发标准

上机器人驱动的老师说过,机器人的研发可以用一句话来简单概括:“强健其体魄,文明其精神。” 机器人硬件比如驱动器和机构学,主要解决的是机器人身体上的东西。而软件开发控制,则是解决机器人精神的问题。在机器人的具体应用上,软件开发的比重越来越大。使用软件开发有不同的软件框架可供我们选择,不同软件框架决定了我们开发的便捷程度和维护以及优化的难易程度。

现有的软件框架有很多种,比如ROS,PLayer, YARP等等,还拥有微软的Microsoft Robotics Studio。都有各自的优势,不过ROS的优势最为明显,可以简要的概括如下:

  • 最丰富的机器人功能库
  • 最便捷的仿真数据分析调试工具
  • 学术和产业学习和转化的标准
  • 轻松耦合的机器人软件框架构建

但同样有不足之处:

  • 基于Ubuntu系统,虽然在Mac OS 和win系统都有尝试,但是效果不好
  • 没有实时性的设计
  • 使用体积较大
  • 系统整体运行效率较低
  • 也是因为以上的缺陷,ROS不擅长开发对实时性及成本要求严苛的产品。

2 整体架构

2.1 设计思想

ROS的架构是一种多服务器分布式计算的架构,允许多个服务器通讯,并组成一个系统的整体。服务器中,不同模块被称作一个节点,他们之间的通信是通过Topics渠道来进行沟通的。服务器之间也是一样的,所以有的时候我们可以把不同服务器称作不同的节点。

2.2 基本概念

设计思想中提到的节点(Nodes)和渠道(Topics)就是ROS的基本也是核心概念。

  • Nodes(节点)
  • Message and Topics(消息于话题)
  • Services(服务)
  • ROS Master(ROS管理器)
  • Parameters(参数)
  • Stacks and packages(功能包集与功能包)

2.2.1 Nodes

节点是各自独立的可执行文件,能够通过话题、 服务或参数服务器与其他进程(节点)通信。节点的优势在于解耦代码和功能,提高系统的容错能力和可维护性。并且布置在任意多的机器上进行运行。

节点在系统中必须有唯一的名称。

节点可以使用不同的库进行编写,如roscpprospy

2.2.2 Topics

话题是节点之间用来传输的数据的总线。我更喜欢称为频道或者渠道。因为他是1-to-N Publish/Subscribe模式,即同一个话题渠道下,可以有很多的订阅者。订阅者的状态对于发布者无关紧要。

Topics使用 TCP/IP传输,称为TCPROS,ROS默认。使用UDP传输,称为UDPROS,适合于
远程操控任务。(低延迟高效率的传输方式,但可能产生数据丢失)

2.2.3 Messages

节点通过向特定的话题发布消息(Messages)。消息具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型。消息的类型标准命名方式进行约定:功能包名称/.msg文件名。

2.2.4 Services

1-to-1 Service/Client模型:1对1模式,当你需要直接与节点通信并获得应答时,将无法通过话题实现,这时需要使用服务。服务由使用者开发,节点本身并不提供标准服务。我们使用的工具是rossrv(查看有关服务数据机构的信息),还有rosservice列出服务的清单和查询某一个服务。

2.2.5 ROS Master

向ROS中其他节点提供命名和注册的服务。我们需要强调一下,ROS系统是由多个独立节点-nodes组成,每个节点都通过publish/subscribe消息模型与其他节点通信。每个节点会在ROS Master下登记,然后分配节点之间的话题, 允许不同节点之间通过ROS的设置的Topics进行通信。

比如下图中的Talker和Listener可以当作不同的节点,Talker通过函数advertise() 来发布信息内容,而Listener通过subscribe()来订阅信息,两者的Topics一致。

2.2.6 Parameter Server

ROS Master同时为系统提供参数服务器。参数服务器本质上是可以通过网络访问的多变量字典。节点用其来存储和检索运行时的参数。也就是从ROS Master来获得。

2.2.7 ROS Package

功能包(Package) ROS中软件组织的基本形式,用于创建ROS程序。它可以包含ROS运行的进程(节点)、配置文件等。

功能包清单(Manifest) 功能包列表提供关于功能包、许可信息、依赖关系、编译标志等的信息。功能包列表是一个manifests.xml文件,通过这个文件能够实现对功能包的管理

3 配置思路

由于初学ROS,加上双系统缺点非常多。所以选择使用VMware Pro创建按Ubuntu18.04的虚拟机。初期使用还没有遇到问题。

注意:本文写作时使用的Ubuntu版本为18.04,目前最新版本为22.04,建议使用最新版本进行开发。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号