主要内容

连接到ROS 2网络

ROS 2网络由一个倍数组成ROS 2节点.与ROS不同的是,ROS master通过跟踪所有活动的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网络中移除。

在默认域中创建一个ROS 2节点

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

defaultNode = ros2node(“/ default_node”
defaultNode = ros2node属性:Name: '/default_node' ID: 0

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

清晰的defaultNode

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

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

newDomainNode = ros2node(“/ new_domain_node”, 25)
newDomainNode = ros2node,属性:Name: '/new_domain_node' ID: 25

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

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

更改默认域ID

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

采用“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文件来配置特定的DDS实现MATLAB使用。添加子网内需要通信的子网外系统的IP地址列表地址元素。注意,要使两个系统进行通信,它们必须在各自的系统中指定另一个系统的地址DEFAULT_FASTRTPS_PROFILE.xml文件。设置domainId元素设置为用于通信的网络的适当值。

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

<?>     0   UDPv4 
192.34.17.36
UDPv4
182.30.45.12
UDPv4
194.158.78.29

ROS 2将信息发布给系统中存在的节点,其IP地址列在DEFAULT_FASTRTPS_PROFILES.xml.子网外的其他机器上的节点将不会收到任何信息DEFAULT_FASTRTPS_PROFILES.xml不存在或不包含正确的IP地址。

下一个步骤