ROS

ROS(Robot Operating System)是一个开源的、基于计算机视觉和机器人学的操作系统,并提供了一系列的工具和库,用于帮助机器人开发者快速开发机器人软件。本文档将介绍 ROS 的主要概念、架构和常见工具。

ROS 概述

ROS 是一个分布式框架,旨在为机器人软件编程提供支持。它由一个节点网络组成,每个节点都可以运行不同的进程或线程。节点之间通过消息传递进行通信,使得机器人软件可以模块化设计,易于扩展和维护。

ROS 提供了许多常用的功能模块和库,包括机器人控制、导航、感知、仿真等。此外,ROS 还提供了可视化工具,例如 RViz 和 rqt,用于显示机器人状态和调试。

ROS 架构

ROS 的核心架构包括节点(Node)、话题(Topic)、服务(Service)和参数服务器(Parameter Server)。

节点

节点是 ROS 上的一个独立进程,它可以执行特定的任务,例如接收传感器数据、控制机器人运动等。每个节点都有一个唯一的名称,以便其他节点可以与其通信。

话题

话题是节点之间进行异步通信的一种方式,它是一种发布者-订阅者(Publisher-Subscriber)模式。一个节点可以发布一个话题,而其他节点可以订阅这个话题,并接收发布者发送的消息。例如,一个传感器节点可以发布一个包含传感器数据的话题,而控制节点可以订阅该话题并根据传感器数据做出相应的动作。

服务

服务是节点之间进行同步通信的一种方式,它是一种请求-响应(Request-Response)模式。一个节点可以提供一个服务,而其他节点可以请求该服务并等待响应。例如,一个控制节点可以提供一个服务,用于查询机器人当前位置,而其他节点可以请求该服务并获得机器人当前位置的响应。

参数服务器

参数服务器是一个全局键值存储系统,它允许节点在运行时共享参数和配置信息。每个参数都由一个唯一的名称标识,并可以在任何时间点被修改。例如,参数服务器可以用于存储机器人的初始位置、传感器的校准参数等。

ROS 工具

ROS 提供了许多有用的工具和库,用于快速开发机器人软件。以下是一些常用的 ROS 工具:

roscore

roscore 是 ROS 的核心组件,它启动 ROS 节点网络并提供其他 ROS 工具所需的基本功能,例如启动参数服务器和设置环境变量等。

roslaunch

roslaunch 是一个启动文件管理器,可以用于启动和关闭 ROS 节点、加载参数和配置文件等。它可以在一个命令中同时启动多个节点,并根据需要重新启动某个节点。

rviz

rviz 是 ROS 的可视化工具之一,用于显示机器人模型、传感器数据、地图等。它支持插件扩展,允许用户自定义 RViz 显示的内容。

rqt

rqt 是一个 ROS 图形界面工具集,提供了多种实用工具,例如控制台、图像查看器、消息监视器等。它还支持插件扩展,用户可以编写自己的插件以满足特定的需求。

rospy 和 roscpp

rospy 和 roscpp 是 ROS 的 Python 和 C++ 客户
ROS(机器人操作系统)是一个用于构建机器人应用程序的开源软件框架。它提供了一系列的工具、库和约定,旨在简化复杂机器人系统的开发。ROS最初由机器人研究实验室Willow Garage开发,现在由Open Robotics组织维护。

ROS提供了一个模块化的架构,允许开发人员构建和集成机器人系统的不同组件,如传感器、执行器和算法。它还提供了一组通信机制,使节点能够彼此交换数据和命令。

ROS支持各种编程语言,包括C++、Python和Java,并提供了丰富的机器人开发库和工具,如可视化、仿真和调试工具。

ROS已成为机器人研究和开发的流行平台,被用于各个领域,如工业自动化、服务机器人和自主车辆。

roscore

"roscore"是ROS(机器人操作系统)中的一个重要命令,用于启动ROS系统的核心节点。在运行ROS节点之前,必须先启动roscore。roscore节点负责维护ROS系统中的参数服务器、消息传输、节点发现和时间同步等功能。

当运行roscore命令时 会启动如下几个重要程序

  1. ros master 主节点 它是ROS系统的主节点,负责管理所有节点之间的通信和连接。
  2. ros parammeter 参数服务器
  3. ros logging 它将输出ROS节点的调试信息和错误消息

在启动roscore之后,可以运行其他ROS节点,这些节点可以通过ROS消息传递机制进行通信和数据交换。在ROS系统中,节点可以发布和订阅消息,也可以提供和调用服务,以实现机器人系统的各种功能。总之,roscore是ROS系统的核心命令,它为ROS节点之间的通信和数据交换提供了基础设施。
请添加图片描述

rosnode

请添加图片描述
两个node之间建立数据通讯需要经过上图所示的7步骤:

  1. talker注册:通过1234端口想master注册信息,其中包括话题名。
  2. listener注册
  3. ros master信息匹配:通过listener的订阅信息,在注册列表中查找,没有找到发布者,就等待发布者的加入;找到的话,就通过RPC向listener发布talker的RPC地址信息。
  4. listener发送连接请求:根据master给的地址,通过RPC向talker发送连接请求、话题名、消息类型、通讯协议
  5. talker确认连接请求:通过RPC向listener确认连接信息,其中包含TCP地址
  6. listener尝试与talker建立网络连接
  7. talker向listener发布数据

两点需要注意:

  1. 前五个步骤都是RPC通信协议,最后才用到TCP
  2. master在节点建立连接的过程中起到关键作用,但是不参与节点间最终的数据传输

ROS提供了多种通讯方式,包括点对点通讯和发布-订阅通讯。以下是常用的ROS通讯方式:

  1. 发布-订阅通讯(Publish-Subscribe)
    发布-订阅通讯是ROS中最常用的通讯方式之一。它基于主题(Topic)的概念,发布者(Publisher)将数据发布到指定主题中,订阅者(Subscriber)则从该主题中接收数据。发布者和订阅者之间的通讯是异步的,它们可以在不同的节点中运行,也可以在同一个节点中。
  2. 服务-调用通讯(Service-Call)
    服务-调用通讯是一种点对点的通讯方式。它基于服务(Service)的概念,服务提供者(Service Provider)向ROS Master注册一个服务,服务请求者(Service Caller)可以通过该服务向服务提供者发送请求,并等待服务提供者返回响应。
  3. 参数服务器(Parameter Server)
    参数服务器是ROS中用于存储和共享参数的工具。它允许节点在运行时动态地修改和查询参数。参数服务器可以在ROS Master节点上运行,也可以在其他节点中运行。
  4. 动作(Action)
    动作是ROS中一种高级通讯机制,它允许节点执行长时间运行的任务,并提供反馈和取消功能。动作由三个部分组成:目标(Goal)、反馈(Feedback)和结果(Result)。节点可以向一个动作服务器发送目标请求,动作服务器会执行任务,并向节点发送反馈和结果。
    这些通讯方式可以组合使用,以满足不同的应用需求。

1.goal:发布任务目标
2.cancel:请求取消任务
3.status:通知client当前的状态
4.feedback:周期反馈任务运行的监控数据
5.result:向client发送任务的执行结果,只发布一次

.action
#定义目标信息

#定义结果信息

#定义周期反馈信息

rostopic

请添加图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值