主要内容

连接到ROS 2网络

ROS 2网络由一个倍数组成ROS 2个节点.与ROS不同的是,ROS主通过跟踪所有活性ROS实体来促进通信,ROS 2是基于数据分布标准(DDS)这是一个端到端中间件,提供了发现、序列化和传输等功能。这些特性与ROS 2的设计原则一致,例如分布式的发现控制不同的“服务质量”选择交通工具。

若要连接到ROS 1网络,请参见连接ROS网络

当你使用ROS 2时,你通常遵循以下步骤:

  • 连接到ROS 2网络。要连接到ROS 2网络,必须在MATLAB中创建一个指定网络域ID的ROS 2节点。

  • 交换数据.一旦连接,MATLAB通过发布者和订阅者与相同域ID的其他ROS 2节点交换数据。

  • 断开与ROS 2网络的连接.清除对节点、发布者和订阅者的所有引用将MATLAB从ROS 2网络中删除。

在Default域中创建一个ROS 2节点

使用ros2node在默认域中创建一个节点,该节点的ID为0.节点与同一域中的其他节点通信,不知道其他域中的节点。

defaultNode = ros2node (“/ default_node”
名称:“/default_node”ID: 0

使用清晰的删除对该节点的引用,以便从ROS 2网络中删除该节点。

清晰的defaultNode

在不同的域上创建一个ROS 2节点

若要在非默认域中创建节点,请显式指定域ID作为的第二个输入参数ros2node.下面newDomainNode是在ID指定的域中创建的25

newDomainNode = ros2node (“/ new_domain_node”, 25)
名称:'/new_domain_node' ID: 25

要查看特定域上的网络信息,请将ID作为参数提供给ros2函数。下面的命令显示所有具有domain ID的节点25

ros2 (“节点”“列表”“DomainID”, 25)
/ new_domain_node

更改默认域ID

如果没有显式地向节点提供域ID或ros2命令,它们使用的值ROS_DOMAIN_ID默认为环境变量。使用采用查看当前值。如果该环境变量未设置,或未设置为有效值,则默认的域ID0就会被使用。

采用“ROS_DOMAIN_ID”
Ans = 0x0空字符数组

你可以设置ROS_DOMAIN_ID使用setenv命令。

setenv (“ROS_DOMAIN_ID”“25”) envDomainNode = ros2node(“/ env_domain_node”
名称:'/env_domain_node' ID: 25

ros2函数提供由该环境变量指定的有关网络的信息。使用ros2节点列表查看具有domain ID的节点25

ros2节点列表
/ env_domain_node new_domain_node

重置ROS_DOMAIN_ID违约。

setenv (“ROS_DOMAIN_ID”""

ROS 2网络中的通信

要连接到现有的ROS 2网络,请在所需的域中创建一个节点。ROS 2网络自动检测在同一域中创建的任何新节点,其机制称为发现

在启动时,ROS 2中的每个节点向同一域中的其他节点发布其存在。其他节点通过向新节点提供信息来响应此通告。具有通信对象(如发布者和订阅者)的节点与其他节点建立连接,前提是它们具有具有兼容的服务质量(QoS)设置的对应对象。有关QoS设置的更多信息,请参见管理ROS 2中的服务质量政策

发现是一个持续的过程,它允许新节点在创建时加入网络。每个节点都在监视ROS 2网络,其作用类似于ROS网络中的ROS主机。当节点脱机时,它们还会向其他节点通告它们的缺席。

新的ROS 2节点将其通告发送到现有节点。现有的节点响应广告,然后设置进行中的通信。

ROS子网外通信

子网是将IP网络逻辑划分为多个更小的网段。ROS 2节点可以与同一子网内的其他节点通信。若要检测子网外的节点,请创建DEFAULT_FASTRTPS_PROFILE.xml文件来配置MATLAB使用的具体DDS实现。添加子网外部系统的IP地址列表,以便子网内部与之通信地址元素。注意,要使两个系统进行通信,它们必须在各自的系统中指定另一个系统的地址DEFAULT_FASTRTPS_PROFILE.xml文件。设置domainId元素设置为用于通信的网络的适当值。

把这个文件保存在MATLAB中当前工作目录.在MATLAB之外使用ROS 2的系统应该将该文件放在运行ROS 2应用程序的同一目录中。下面是一个例子DEFAULT_FASTRTPS_PROFILES.xml文件。

<?xml version="1.0" encoding="UTF-8" ?>     0   UDPv4 192.34.17.36 
192.34.17.36
182.30.45.12
UDPv4
194.158.78.29

ROS 2向系统中存在的节点发布信息,这些节点的IP地址列在DEFAULT_FASTRTPS_PROFILES.xml.将不会接收来自子网外的另一台机器上的节点的信息DEFAULT_FASTRTPS_PROFILES.xml不存在或不包含正确的IP地址。

下一个步骤

Baidu
map