ROS 主要有七大元素构成:

ROS Nodes: ROS 节点是用于执行处理的进程,每个节点都是使用例如roscpp和rospyROS库函数API来实现的,在一个机器人应用中往往有许多节点来执行不同的任务,使用ROS 交互的方法可以在节点之间进行交互和交换数据,

ROS Master: ROS Master 提供了名字注册和查询其他的服务的功能,没有Master,节点之间将不能找到彼此,不能交换信息或者数据,或者触发服务。在分布式系统中一般将节点运行在单独的电脑上,远程的节点可以通过这个Master找到彼此。

Parameter Server: 参数服务器是ROS Master 的一部分,它允许将系统的数据存储在一个中心位置,所有的节点可以访问和修改这些值。

Messages: 消息是节点之间进行交互的一种方式,它使用一个简单的数据结构进行消息传递。这是一种比较轻量级的交互方式,我们可以使用系统提供的类型外还可以使用自定义的消息类型。

Topics: 每个ROS消息是通过称为topics的总线来传输的,当一个消息通过topic发送出去的时候可以称为这个节点正在发布消息。反之,如果一个节点正在通过一个topic接收消息的时候称为,这个节点正在订阅消息。发布消息的节点和接收消息的节点可以不必知道对方,简而言之,发布节点和接收节点是彼此解偶的,每个topic有一个单独的名字,任何的节点都可以通过它来发送和接收消息,但是前提条件是这个类型要对。

Services: 在有些机器人应用中上述的发布订阅交互方式并不适用,发布订阅是一种单向的传输系统,而服务是一种双向的请求/答复的交互方式,我们可以定义一个包含两个部分的服务,一个用于请求另一个用于回复,当一个客户端节点发送一个请求消息到服务的时候,服务将会发送响应结果给客户端,客户端需要等待直到服务给出答复。

Bags:包是用于保存和回放ROS数据的格式,它适用于存储那些难以收集并且对开发和测试算法十分重要的数据。

Contents