Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9084709
  • 博文数量: 1732
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19830
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1732)

文章存档

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: 其他平台

2019-01-04 16:24:20

ROS:
    中间件平台, ROS提供开发机器人应用程序时所需的硬件抽象、子设备控制,以及机器人工程中广泛使用的传感、识别、绘图、运动规划等功能。此外ROS还提供进程之间的消息解析、功能包管理、库和丰富的开发及调试工具

主节点
    主节点(master) 负责节点到节点的连接和消息通信,类似于名称服务器(NameServer)。roscore是它的运行命令,当您运行主节点时,可以注册每个节点的名字,并根据需要获取信息。没有主节点,就不能在节点之间建立访问和消息交流(如话题和服务) 
    主节点使用XML远程过程调用(XMLRPC,XML-Remote Procedure Call) 与节点进行通信。XMLRPC是一种基于HTTP的协议,主节点不与连接到主节点的节点保持连接。换句话说,节点只有在需要注册自己的信息或向其他节点发送请求信息时才能访问主节点并获取信息。通常情况下,不检查彼此的连接状态。由于这些特点,ROS可用于非常大而复杂的环境。XMLRPC也非常轻便,支持多种编程语言,使其非常适合支持各种硬件和语言的ROS.
    当启动ROS时,主节点将获取用户设置的ROS_MASTER_URI变量中列出的URI地址和端口。除非另外设置,默认情况下,URI地址使用当前的本地IP,端口使用11311
节点(node)
    是指在ROS中运行的最小处理器单元。可以把它看作一个可执行程序。在ROS中,建议为一个目的创建一个节点,建议设计时注重可重用性。例如,在移动机器人的情况下,为了驱动机器人,将每个程序细分化。也就是说,使用传感器驱动、传感器数据转换、障碍物判断、电机驱动、编码器输入和导航等多个细分节点。
    节点在运行的同时,向主节点注册节点的名称,并且还注册发布者(publisher)、订阅者(subscriber)、服务服务器(service server)、服务客户端(service client)的名称,且注册消息形式、URI地址和端口。基于这些信息,每个节点可以使用话题和服务与其他节点交换消息。
    节点使用XMLRPC与主站进行通信,并使用TCP/IP通信系列的XMLRPC或TCPROS 进行节点之间的通信节点之间的连接请求和响应使用XMLRPC,而消息通信使用
TCPROS因为它是节点和节点之间的直接通信,与主节点无关。URI地址和端口则使用
存储于运行当前节点的计算机上的名为ROS_HOSTNAME的环境变量作为URI地址,并
将端口设置为任意的固有值。

功能包
    是构成ROS的基本单元。ROS应用程序是以功能包为单位开发的。功能包包括至少一个以上的节点或拥有用于运行其他功能包的节点的配置文件。它还包含功能包所需的所有文件,如用于运行各种进程的ROS依赖库、数据集和配置文件等
元功能包
     是一个具有共同目的的功能包的集合。例如,导航元功能包包含AMCL、DWA、EKF和map_server等10余个功能包
消息
    节点之间通过消息(message) 来发送和接收数据。消息是诸如integer、floating
point和boolean等类型的变量。用户还可以使用诸如消息里包括消息的简单数据结构
或列举消息的消息数组的结构。使用消息的通信方法包括TCPROS,UDPROS等,根
据情况使用单向消息发送/接收方式的话题(topic)双向消息请求(request)/响应
(response)方式的服务(service)

话题
    在发布者(publisher)节点关于故事向主节点注册之后,它以消息形式发布关于该故事的广告。希望接收该故事的订阅者(subscriber)节点获得在主节点中以这个话题注册的那个发布者节点的信息。基于这个信息,订阅者节点直接连接到发布者节点,用话题发送和接收消息

发布与发布者
    发布(publish)是指以与话题的内容对应的消息的形式发送数据。为了执行发布,发布者(publisher)节点在主节点上注册自己的话题等多种信息,并向希望订阅的订阅者节点发送消息。发布者在节点中声明自己是执行发布的个体。单个节点可以成为多个发布者。
订阅与订阅者
    订阅是指以与话题内容对应的消息的形式接收数据。为了执行订阅,订阅者节点在主节点上注册自己的话题等多种信息,并从主节点接收那些发布此节点要订阅的话题的发布者节点的信息。基于这个信息,订阅者节点直接联系发布者节点来接收消息。订阅者在节点中声明自己执行订阅的个体。单个节点可以成为多个订阅者
    
    发布和订阅概念中的话题是异步的,这是一种根据需要发送和接收数据的好方法。另外,由于它通过一次的连接,发送和接收连续的消息,所以话题经常被用于必须连续发送的传感器数据。然而,在某些情况下,需要一种共同使用请求和响应的同步消息交换方案。因此,ROS提供叫做服务(service)的消息同步方法。服务分为响应请求的服务服务器和请求后接收响应的服务客户端。与话题不同,服务是一次性的消息通信。当服务的请求和响应完成时,两个节点的连接被断开。

服务
    消息通信是服务客户端(service client)与服务服务器(serviceserver)之间的同步双向消息通信。其中服务客户端请求对应于特定目的任务的服务,而服务服务器则负责服务响应

    服务服务器(service server)是以请求作为输入,以响应作为输出的服务消息通信
的服务器。请求和响应都是消息,服务器收到服务请求后,执行指定的服务,并将结果下
发给服务客户端。服务服务器用于执行指定命令的节点。

    服务客户端(service client)是以请求作为输出并以响应作为输入的服务消息通信的
客户端。请求和响应都是消息,并发送服务请求到服务服务器后接收其结果。服务客户端
用于传达给定命令并接收结果值的节点

动作
    是在需要像服务那样的双向请求的情况下使用的消息通信方式,同点是在处理请求之后需要很长的响应,并且需要中途反馈值。动作文件也非常类似于服务,目标(goal)和结果(result)对应于请求和响应。此外,还添加了对应于中途的反馈(feedback)。它由一个设置动作目标(goal)的动作客户端(action client)和一个动作服务器(action server),动作服务器根据目标执行动作,并发送反馈和结果。动作客户端和动作服务器之间进行异步双向消息通信

参数
    是指节点中使用的参数。可以把它想象成一个Windows程序中的*.ini配置文件。这些参数是默认(default)设置的,可以根据需要从外部读取或写入。尤其是,它可以通过使用外部的写入功能实时更改设置值,因此非常有用。例如,您可以指定与外部设备连接的PC的USB端口、相机校准值、电机速度或命令的最大值和最小值等设置值。
    参数服务器是指在功能包中使用参数时,注册各参数的服务器。参数服务器也是主节点的一个功能

catkin, 以前用的是 rosbuild
    是指ROS的构建系统。ROS的构建系统基本上使用CMake(Cross PlatformMake),并在功能包目录中的CMakeLists.txt文件中描述构建环境。在ROS中,我们将CMake修改成专为ROS定制的catkin构建系统。catkin 构建系统让用户方便使用与ROS相关的构建、功能包管理以及功能包之间的依赖关系等

roscore
    是运行ROS主节点的命令。也可以在另一台位于同一个网络内的计算机上运行它。但是,除了支持多roscore的某些特殊情况,roscore在一个网络中只能运行一个。运行ROS时,将使用您在ROS_MASTER_URI变量中列出的URI地址和端口。如果用户没有设置,会使用当前本地IP作为URI地址并使用端口11311
rosrun
    是ROS的基本运行命令。它用于在功能包中运行一个节点。节点使用的URI地址将存储在当前运行节点的计算机上的ROS_HOSTNAME环境变量作为URI地址,端口被设置为任意的固有值

roslaunch
    如果rosrun是执行一个节点的命令,那么roslaunch 是运行多个节点的概念。该命令允许运行多个确定的节点。其他功能还包括一些专为执行具有诸多选项的节点的ROS命令,比如包括更改功能包参数或节点名称、配置节点命名空间、设置ROS_ROOT和ROS_PACKAGE_PATH以及更改环境变量 . roslaunch使用*.launch文件来设置可执行节点,它基于可扩展标记语言(XML),并提供XML标记形式的多种选项

bag
    用户可以保存ROS中发送和接收的消息的数据,这时用于保存的文件格式称为bag  ,是以*.bag作为扩展名。在ROS中,这个功能包可以用来存储信息并在需要时可以回放以前的情况。例如,当使用传感器执行机器人实验时,使用bag将传感器值以消息形式保存。有了这些保存的信息,即使不重复执行之前的实验,也能通过回放保存的bag文件来反复利用当时的传感器值。特别的,如果利用rosbag的记录和回放功能,在开发那些需要反复修改程序的算法的时候会非常有用

状态图 rqt_graph
    节点、话题、发布者和订阅者之间关系可以通过状态图(graph)直观地表示。它是当前正在运行的消息通信的图形表示。但不能为一次性服务创建状态图。执行它是通过运行rqt_graph功能包的rqt_graph节点完成的。有两种执行命令:rqt_graph和rosrun rqt_graph rqt_graph
XMLRPC
    XML-Remote Procedure Call(XMLRPC)是一种RPC协议,其编码形式采用XML编码格式,而传输方式采用既不保持连接状态、也不检查连接状态的请求和响应方式的HTTP协议。XMLRPC是一个非常简单的约定,仅用于定义小数据类型或命令。所以它比较简单。有了这个特点,XMLRPC非常轻便,支持多种编程语言,因此非常适合支持各种硬件和语言的ROS

TCPROS / UDPROS
    TCPROS消息和服务中使用的基于TCP/IP的消息方式称为TCPROS,
    UDPROS消息及服务中使用的基于UDP的消息方式称为UDPROS。
    在ROS中,常用的是TCPROS
CMakeLists.txt
    ROS 构建系统的catkin基本上使用了CMake,因此在功能包目录的CMakeLists.txt 文件描述着构建环境
package.xml
    包含功能包信息的XML文件 , 描述功能包名称、作者、许可证和依赖包


阅读(2548) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~