ROS学习笔记2-基本概念
本笔记来源于:http://wiki.ros.org/ROS/Concepts
- ROS文件系统级别
文件系统级别主要包含了你能在ROS的磁盘上遇到的资源,包括:- 包(Packages):
包是ROS中资源组织的主要单元,一个包可以包含ROS运行时进程(Nodes),可以是一个ROS依赖库,数据库,配置文件等任何有用的组织单元。
包是ROS中可以编译和发布的元单元。 - 元包(Metapackages)
元包是一种特殊的包,他仅用来表示其它一组包的组织方式。最常见的元包是rosbuild栈的后向兼容转换器。 - 包信息(Package Manifests)
包信息文件(package.xml)包含包的名称、版本、描述、许可证信息、依赖项以及其它元信息,例如导出包。包信息文件package.xml在REP-0127中进行了定义。 - 仓库(Repositories)
仓库是一个包集合,该集合中的包共享一个版本控制系统(VCS),这些包有相同版本并且可以通过catkin自动发布工具bloom进行发布。一个仓库可以映射为一个rosbuild栈,一个代码仓库也可以只包含一个包。 - 消息(msg)类型
消息描述,存储在my_package/msg/MyMessageType.msg,用于表示发送到ROS中的消息的数据结构。 - 服务(srv)类型
服务类型,存储在my_package/srv/MyServiceType.srv, 用于定义在ROS中使用的服务(services)请求或响应的数据。
- 包(Packages):
- ROS计算图级别
计算图是ROS用于进程间传递数据的P2P网络,最基础的计算图概念包括如下,在ros_comm的仓库中进行实现:- 节点(Nodes:)
节点是ROS中进行计算的进程,个人理解一个Node实现一个功能模块,比如机器人控制系统中,一个Node用于测距,一个用于定位,一个用于控制电机等。
一个节点用client library进行编写,例如用roscpp或rospy。(看文档,ros支持很多开发语言,详情可以参见client library)。 - 主机(Master)
主机用于提供其它计算图的命名注册和查询等功能,没有主机的话,每个节点将找不到其他节点,不能进行通信,也不能调用服务。 - 参数服务器(Parameter Server)
参数服务器用于提供将数据通过键来存储在中心位置(类似整个系统中的全局变量?),参数服务器现在是主机中的一个部分。 - 消息(Messages)
节点中通过消息传递进行通信,消息是一个带有数据类型成员的简易数据结构,该数据结构支持标准的基本数据结构(整型、浮点型和逻辑型变量等)及其数组。类似与C语言中的结构体。 - 主题(Topics)
消息通过发布者/订阅者机制进行传递,节点通过将消息发布给一个特定主题进行消息发送。主题是和消息内容相关的命名。一个进程可以发布或者订阅多个主题,多个进程也可以发布和订阅一个主题。
主题的发布者和订阅者不知道彼此的存在,这样做可以使两者解耦。 - 服务(Services)
发布/订阅机制使用主题进行实现,而这种不适合于请求/响应机制,请求/响应机制用服务进行实现。服务通过两种数据结构实现,一个用于请求,一个 用于发送,提供节点通过一个命名(name)来提供服务,
客户节点通过发送请求,来等待响应,实现数据交换。服务常用于远程过程调用。 - 数据包(Bags)
数据包用于是一种用于ROS消息数据存储和回放的数据格式,数据包是一种重要的存储数据的机制,不好进行数据收集但是对算法的开发和测试十分必要。
主机节点用于计算图中各个节点的命名服务,用于存储ROS节点的注册信息,以及主题和服务信息,当注册信息发生变化时,可以调用回调函数来动态创建连接(节点启动时自动进行主题的发布和订阅?)。命名在ROS中很重要,节点、主题、消息和参数都有他们的命名。每个ROS客户端库都提供了进行命名重映射的命令行工具。
- 节点(Nodes:)
- ROS社区级别
该部分无笔记,若要参考请直接点击英文wiki。 - 命名
- 计算图资源命名
图资源命名具有层次命名结构,可以为所有计算图资源命名,包括:节点(Nodes)、主题(Topics)、参数(Parameters)和服务(Services)。- 命名规则
- 命名开头必须为大小写字母([a-z|A-Z]), 波浪号 (~) 或者斜杠 (/,作为路径层次划分符号)。
- 后续可以为大小写字母及数字([0-9|a-z|A-Z]),下划线(_)。
- 命名解析
base(基命名)
relative/name(相对命名)
/global/name(全局命名)
~private/name(私有命名,当前下一级的)
- 命名规则
- 包资源命名
除了不能有~之外,其它和图资源命名一样。
总结来说就是,斜杠(/)表示路径层次,波浪(~)表示图中的私有路径,然后命名标识符需要以字母开头,后续可以用字母、数字或者下划线。 - 命名重映射。
从命令行启动一个ROS节点的时候,该节点内的任何命名可以通过重映射参数(Remapping Arguments)进行重映射。
- 计算图资源命名
- 代码接口
命名有关的代码接口见ros_cpp中的接口:roscpp::names API reference
ROS学习笔记2-基本概念的更多相关文章
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
- ROS学习笔记七:在ROS中使用USB摄像头
下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...
- ROS学习笔记二:ROS系统架构及概念
本文主要是了解ROS的系统架构.文件夹结构以及工作所需的核心文件. ROS系统架构主要被设计和划分为三部分,每一部分代表一个层级的概念:文件系统级(The filesystem level).计算图级 ...
- es6学习笔记-class之一概念
前段时间复习了面向对象这一部分,其中提到在es6之前,Javasript是没有类的概念的,只从es6之后出现了类的概念和继承.于是乎,花时间学习一下class. 简介 JavaScript 语言中,生 ...
- ROS学习笔记八:基于Qt搭建ROS开发环境
1 前言 本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Q ...
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
- ROS学习笔记1-引言
该学习笔记参考ROS官方wiki的内容,见:http://wiki.ros.org/ROS/Introduction 什么是ROSROS的全称是Robot Operating System,即机器人操 ...
- OpenFlow Switch学习笔记(一)——基础概念
OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...
- ROS学习笔记(一) : 入门之基本概念
目录 基本概念 1. Package 2. Repositories 3. Computation Graph 4. Node 5. Master 6. Message 7. Topic 8. Ser ...
随机推荐
- 使用maven搭建web项目
在pom.xml中添加java ee相关的三个依赖包:<scope> jar的有效范围 provided 表示编译期生效,不会打包发布到 tomcat 中 <properties&g ...
- Oracle忘记密码怎么办?
1.打开cmd,输入sqlplus /nolog,回车:输入“conn / as sysdba”;输入“alter user sys identified by 新密码”,注意:新密码最好以字母开头, ...
- 了解 C++
C++的历史 C++由C语言发展演变而来,最初被称为"带类的C" 1983年正式取名为C++ 1998年11月被国籍标准化组织(ISO)批准为国际标准 2003年10月15日发布了 ...
- Matlab的简单数据保存读取
1.使用load进行文件读取 例如读入文件名为'filename.txt'中的数据,那么可以使用以下代码: load('filename.txt') 注意:filename.txt中的数据应符合矩阵形 ...
- day1-1JavaScript概念
Js概念: 产生于低速网时代,是进行表单验证 与html和css结合后产生动态效果(能用css实现的动画效果就不要用js实现,因为js效率比css低) js = ECMAScript + dom ...
- Linux命令:yum命令
YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具 一.yum命令用法 yum repolist ...
- Linux centosVMware iptables规则备份和恢复、firewalld的9个zone、firewalld关于zone的操作、firewalld关于service的操作
一.iptables规则备份和恢复 保存和备份iptables规则 service iptables save //会把规则保存到 /etc/sysconfig/iptables 把iptables规 ...
- Linux--常用的linux基本命令学习大全01(适合所有人群)
常用 Linux 命令的基本使用 序号 命令 对应英文 作用 01 ls list 查看当前文件夹下的内容 02 pwd print wrok directory 查看当前所在文件夹 03 cd [目 ...
- git提交代码报:fatal: Unable to create 'E:/testGit/test/.git/index.lock': File exists.
git提交代码报错,提示:fatal: Unable to create 'E:/testGit/test/.git/index.lock': File exists. 具体截图如下: 在.git目录 ...
- (2)LoraWAN:Lora LMIC library 编程模型及API
二.LMIC library 编程模型及API LMiC库可以通过一组API函数(API functions),运行时函数(run-time functions),回调函数(callback func ...