主要内容

连接到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网络中删除。

在Default域创建ROS 2节点

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

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

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

清晰的defaultNode

在不同域上创建ROS 2节点

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

newDomainNode = ros2node (“/ new_domain_node”, 25)
newdomain_node = 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”
envdomain_node = ros2node,属性:Name: '/env_domain_node' ID: 25

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

ros2节点列表
/ env_domain_node new_domain_node

重置ROS_DOMAIN_ID违约。

setenv (“ROS_DOMAIN_ID”""

ros2网络中的通信

若要连接到现有的ROS 2网络,需要在该域中创建一个节点。ROS 2网络通过一种机制自动检测在同一域中创建的任何新节点发现

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

发现是一个不断进行的过程,它允许新节点在创建时加入网络。每个节点都在监视ROS 2网络,其行为类似于ROS网络中的ROS主节点。当节点离线时,它们也会向其他节点通告自己的缺席。

新的ROS 2节点向现有节点发送其广告。现有的节点响应广告,然后建立持续的传播。

子网外ROS通信

子网是将一个IP网络逻辑划分成多个更小的网段。ros2节点可以与同一子网内的其他节点通信。要检测子网外的节点,创建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

ros2将信息发布给系统中存在的节点,这些节点的IP地址列在DEFAULT_FASTRTPS_PROFILES.xml。在以下情况下,将不接收来自子网外另一台机器上的节点的信息DEFAULT_FASTRTPS_PROFILES.xml不存在或不包含正确的IP地址。

下一个步骤