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网络中移除。
用ros2node.
在默认域中创建一个节点,它使用ID0.
.节点与同一域中的其他节点通信,并且不知道其他域中的节点。
defaultnode = ros2node(“/ default_node”)
defaultnode = ros2node with属性:name:'/ default_node'ID:0
用清晰的
删除对节点的引用,使其从ROS 2网络中删除。
清晰的defaultnode.
要在非默认域中创建节点,显式将域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或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中的每个节点都会将其存在通告给同一域中的其他节点。其他节点通过向新节点提供它们的信息来响应这个通告。拥有发布者和订阅者等通信对象的节点,如果它们拥有具有兼容服务质量(QoS)设置的相应对象,则会与其他节点建立连接。有关QoS设置的更多信息,请参见管理ROS 2的服务质量.
发现是一个持续进行的过程,它允许新节点在创建时加入网络。每个节点都监视ROS 2网络,并与ROS网络中的ROS主节点类似地工作。当节点离线时,它们还会将自己的缺席通告给其他节点。
新ROS 2节点将其广告发送到现有节点。现有节点响应广告,然后设置持续通信。
子网是将一个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 domainId> udpv4 cind> <地址> 192.34.17.36 地址> locator> udpv4 pind> <地址> 182.30.45.12 地址> locator> udpv4 cind> <地址> 194.158.78.29 地址> locator> initialpeerslist> buinntin> particer> profiles>
ROS 2将信息发布给系统中存在的节点,其中包含内部的IP地址DEFAULT_FASTRTPS_PROFILES.xml.如果,则不会接收到来自子网外另一台机器中的节点的信息DEFAULT_FASTRTPS_PROFILES.xml要么不存在或不包含正确的IP地址。