主要内容

连接到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通过发布者和订阅者将数据与其他ROS 2节点交换数据。

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

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

ros2node.在默认域中创建一个节点,它使用ID0..节点与同一域中的其他节点通信,并且不知道其他域中的节点。

defaultnode = ros2node(“/ default_node”
defaultnode = ros2node with属性:name:'/ default_node'ID:0

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

清晰的defaultnode.

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

要在非默认域中创建节点,显式将域ID指定为第二个输入参数ros2node..以下newdomainnode.是在由ID指定的域中创建的25.

newDomainNode = ros2node (“/ new_domain_node”,25)
NewDomainNode = ROS2Node具有属性:名称:'/ new_domain_node'ID:25

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

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

修改默认域ID

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

getEnv(“ROS_DOMAIN_ID”
Ans = 0x0空字符数组

你可以设置ros_domain_id.使用setenv命令。

setenv(“ROS_DOMAIN_ID”“25”)envdomainnode = ros2node(“/ env_domain_node”
envdomain_node = ro2node with properties: Name: '/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的服务质量

发现是一个持续进行的过程,它允许新节点在创建时加入网络。每个节点都监视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文件。

<?xml版本=“1.0”编码=“UTF-8”?>  <参与者profile_name =“accentant_win”is_default_profile =“true”>>   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地址。

下一步