主要内容

连接到ROS 2网络

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

要连接到ROS 1网络,请参阅连接到ROS网络.

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

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

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

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

在默认域中创建ROS 2节点

使用罗斯诺德在默认域中创建节点,该域使用0。节点与同一域中的其他节点通信,并且不知道其他域中的节点。

defaultNode=ros2node(“/default\u节点”)
defaultNode=ros2node,属性为:名称:'/default\u节点ID:0

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

清楚的默认节点

在其他域上创建ROS 2节点

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

newDomainNode=ros2node(“/新建\u域\u节点”,25)
newDomainNode=ros2node,属性:名称:'/new_domain_node'ID:25

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

罗斯2(“节点”,“列表”,“域名”,25)
/新的\u域\u节点

更改默认域ID

如果域ID未显式提供给节点或罗斯2命令,则使用ROS\u域\u ID默认情况下为环境变量。请使用getenv查看当前值。如果该环境变量未设置或未设置为有效值,则默认域ID为0将使用。

getenv(“ROS\u域\u ID”)
ans=0x0空字符数组

你可以设置ROS\u域\u ID使用环境变量命令

塞滕夫(“ROS\u域\u ID”,"25")envDomainNode=ros2node(“/env\u域\u节点”)
envDomainNode=ros2node,属性:Name:“/env_domain_node”ID:25

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

罗斯2节点列表
/环境域节点/新域节点

重置ROS\u域\u ID违约。

塞滕夫(“ROS\u域\u ID”,"")

ros2网络中的通信

要连接到现有的ROS 2网络,请在所需域中创建一个节点。ROS 2网络会通过一种称为发现.

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

发现是一个持续的过程,它使新节点能够在创建时加入网络。每个节点都在监视ROS 2网络,其行为与ROS网络中的ROS主机类似。节点在脱机时也会向其他节点通告其缺席情况。

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

子网外ROS通信

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

将此文件保存在MATLAB中当前工作目录.MATLAB之外使用ROS 2的系统应将此文件放在运行ROS 2应用程序的同一目录中。下面是一个示例默认\u FASTRTPS\u PROFILES.xml文件

<?xml version=“1.0”encoding=“UTF-8”?>0UDPv4
192.34.17.36
UDPv4
182.30.45.12
UDPv4194.158.78.29
/rtps><

ROS 2向系统中的节点播发信息,IP地址列在默认\u FASTRTPS\u PROFILES.xml。如果发生以下情况,则不会收到来自子网外另一台计算机中的节点的信息:默认\u FASTRTPS\u PROFILES.xml不存在或不包含正确的IP地址。

下一步