8

ROS1(二):ROS1基础概念

 2 years ago
source link: https://wangxin1248.github.io/linux/2022/08/ros-02.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ROS1(二):ROS1基础概念

2 August, 2022. It was a Tuesday.

view: 2

ROS1基础概念

ROS简介

ROS = 通信机制+开发工具+应用功能+生态系统

根据ROS系统代码的维护者和分布来标示,主要有两大部分:

  • main:核心部分,主要由 Willow Garage 公司和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具,以及整个 ROS 的核心部分的程序编写。
  • universe:全球范围的代码,有不同国家的ROS社区组织开发和维护。一种是库的代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,他们调用下层的库;最上层的代码是应用级的代码,让机器人完成某一确定的功能。

一般是从另一个角度对ROS分级的,主要分为三个级别:计算图级、文件系统级、社区级

  • 计算图级:描述程序是如何运行的;
  • 文件系统级:程序文件是如何组织和构建的;
  • 社区级:程序的分布式管理;

ROS通讯

计算图是ROS处理数据的一种点对点的网络形式。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来。这一级主要包括几个重要概念:节点(node)、消息(message)、主题(topic)、服务(service)

节点(Node)- ROS中的执行单元:

  • 执行具体任务的进程、独立运行的可执行文件;
  • 不同节点可使用不同的编程语言,可分布式运行在不同的主机;
  • 节点在系统中的名称必须是唯一的;

节点管理器(Master)- 控制中心:

  • 为节点提供命名和注册服务;
  • 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;
  • 提供参数服务器,节点使用此服务器存储和检索运行时参数;

话题(Topic)- 单向异步通信机制:

  • 节点间用来传输数据的重要总线;
  • 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者和发布者可以不唯一;

消息(Message)- 话题传输的数据:

  • 具有一定的类型和数据结构,包括 ROS 提供的标准类型和用户自定义类型;
  • 使用编程语言无关的 .msg 文件定义,编译过程中生成对应的代码文件;

服务(Service)- 双向同步通信机制:

  • 使用客户端/服务器模型,客户端发送请求数据,服务器完成处理后返回应答数据;
  • ROS Master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。没有控制器,节点将无法找到其他节点,交换消息或调用服务。
  • 使用编程语言无关的 .srv 文件定义请求和应答数据结构,编译过程中生成对应的代码文件;

参数(parameter)- 全局共享字典:

  • 可通过网络访问的共享、多变量字典;
  • 节点使用此服务器来存储和检索运行时的参数;
  • 适合存储静态、非二进制的配置参数,不适合存储动态配置的数据;

ROS文件系统

ROS的文件系统分为:元功能包 -》 功能包 -》 功能包清单/消息类型/服务类型/代码/其他:

  • 功能包(Package):ROS软件中的基本单元,包含节点源码、配置文件、数据定义等;
  • 功能包清单(Package manifest):记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等;
  • 元功能包(Meta Packages):组织多个用于同一目的功能包;

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK