连接到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地址。