主要内容

连接到ROS 2网络

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

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

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

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

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

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

在默认域中创建ROS 2节点

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

defaultNode = ros2node(“/ default_node”
defaultNode = ros2node with properties: Name: '/default_node' ID: 0

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

清晰的defaultNode

在不同域上创建ROS 2节点

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

newDomainNode = ros2node(“/ new_domain_node”, 25)
newDomainNode = ros2node with properties: Name: '/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”
envDomainNode = ros2node with properties: Name: '/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主节点。当节点脱机时,它们也会向其他节点通告自己的缺席。

新的ros2节点将其通告发送到现有节点。现有节点响应广告,然后为正在进行的通信进行设置。

子网外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    
192.34.17.36
UDPv4
182.30.45.12
194.158.78.29

中列出的IP地址向系统中存在的节点发布信息DEFAULT_FASTRTPS_PROFILES.xml.如果子网外的另一台机器上的节点没有接收到任何信息DEFAULT_FASTRTPS_PROFILES.xml不存在或不包含正确的IP地址。

下一个步骤