主要内容

连接到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节点

利用ROS2NODE在默认域中创建一个节点,该域使用0。节点与同一域中的其他节点进行通信,并且不知道其他域中的节点。

defaultnode = ros2node(“/default_node”
defaultnode = ros2node with属性:名称:'/default_node'id:0

利用清除要删除对节点的引用,请从ROS 2网络中删除它。

清除DefaultNode

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

要在非默认域中创建一个节点,请将域ID明确指定为第二个输入参数ROS2NODE。以下newDomainNode是在ID指定的域中创建的25

newDomainNode = ros2node(“/new_domain_node”,25)
newDomainNode = ros2node with属性:名称:'/new_domain_node'id:25

要查看有关特定域的网络信息,请将ID作为参数ROS2功能。以下命令显示所有带有域ID的节点25

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

更改默认域ID

如果未明确向节点提供域ID或ROS2命令,他们使用的值ros_domain_id默认情况下,环境变量。利用Getenv查看当前值。如果该环境变量未设置,或者未设置为有效值,则默认域ID0将会被使用。

getenv(“ ros_domain_id”
ans = 0x0空char数组

您可以设置ros_domain_id使用setenv命令。

setenv(“ ros_domain_id”,,,,“ 25”)envdomainNode = ros2node(“/env_domain_node”
envdomainNode = ros2node with属性:名称:'/env_domain_node'id:25

ROS2函数提供有关该环境变量指定的网络的信息。利用ROS2节点列表使用域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中的服务质量政策

Discovery是一个正在进行的过程,它使新节点能够在创建网络时加入网络。每个节点正在监视ROS 2网络,并与ROS网络中的ROS Master相似。节点在离线时还会向其他节点做广告。

新的ROS 2节点将其广告发送到现有节点。现有节点对广告做出响应,然后进行持续的沟通。

子网外的ROS通信

子网是IP网络分为多个较小的网络段的逻辑分区。ROS 2节点可以与同一子网中的其他节点进行通信。要检测子网外部的节点,请创建一个default_fastrtps_profile.xml文件以配置特定的DDS实现MATLAB使用。添加子网之外的系统的IP地址列表地址元素。请注意,要使两个系统进行通信,它们每个人都必须在各自的default_fastrtps_profile.xml文件。设置用于通信的网络的适当值的元素。

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

<?xml版本=“ 1.0” encoding =“ utf-8”?>  <参与者profile_name =“ dasteant_win” is_default_profile =“ true”>       0   < -inking> udpv4  <地址> 192.34.17.36     < -nock> udpv4   <地址> 182.30.45.45.12      udpv4  <地址> 194.158.78.29          > 

ROS 2将信息广告给系统中的节点,其中列出了IP地址default_fastrtps_profiles.xml。如果将收到子网外其他计算机中的节点的信息,如果default_fastrtps_profiles.xml是不存在或不包含正确的IP地址。

下一步