连接到一个ROS网络
ROS网络由一个单身ROS的主人和多个ROS节点。ROS主促进活性氧的通信网络,跟踪所有活动ROS的实体。每个节点都需要注册ROS大师能够与其他通信网络。MATLAB®可以启动ROS的主人,或者可以启动主以外的MATLAB(例如,在一个不同的计算机)。
当你与ROS,通常遵循以下步骤:
连接到一个ROS网络。ROS网络连接,您可以创建ROS主在MATLAB或连接到一个现有的ROS的主人。在这两种情况下,MATLAB还将创建并注册自己的ROS节点(称为MATLAB全球节点与主)。的
rosinit
功能管理这一过程。交换数据。一旦连接,MATLAB与其他ROS节点通过出版商交换数据时,用户和服务。
断开与ROS的网络。调用
rosshutdown
从ROS网络断开MATLAB函数。
这个例子向您展示了如何:
在MATLAB中创建ROS大师
连接到外部ROS的主人
先决条件:开始使用ROS
在MATLAB中创建ROS大师
在MATLAB中创建ROS的主人,电话
rosinit
不带任何参数。这个函数还创建了全球节点,使用MATLAB与ROS网络中的其他节点通信。
rosinit
启动ROS核心……在0.38847秒内完成。初始化ROS主在http://172.29.199.134:51399上。初始化全局节点/ matlab_global_node_30260 NodeURI http://dcc664524glnxa64:38491和http://localhost MasterURI: 51399。
ROS节点外部MATLAB现在可以加入ROS网络。他们可以连接到ROS MATLAB大师通过使用MATLAB主机的主机名或IP地址。
你可以关闭ROS大师和全球节点通过调用rosshutdown
。
rosshutdown
关闭全局节点/ matlab_global_node_30260 NodeURI http://dcc664524glnxa64:38491和http://localhost MasterURI: 51399。在http://172.29.199.134:51399上关闭ROS的主人。
连接到外部ROS的主人
您还可以使用rosinit
命令连接到外部ROS大师(例如运行在一个机器人或虚拟机)。您可以指定的地址在两个方面:一个IP地址或主机名的电脑运行的主。
每次调用后rosinit
,你必须打电话rosshutdown
在调用之前rosinit
用不同的语法。为简便起见,这些调用rosshutdown
在这些例子中省略了。
“master_host”
是一个主机名和192.168.1.1”
是一个外部ROS的IP地址的主人。调整这些地址根据外部主驻留在您的网络。这些命令会失败如果没有找到主人在指定的地址。
rosinit (“192.168.1.1”)rosinit (“master_host”)
两个电话rosinit
假设主接受网络连接在端口11311上,这是标准的ROS主端口。如果主人不同的端口上运行,您可以指定它作为第二个参数。连接到ROS主运行在主机名master_host
和12000端口,使用以下命令:
rosinit (“master_host”,12000)
如果你知道整个统一资源标识符(URI)的主人,您可以创建全球节点和连接到主使用这种语法:
rosinit (“http://192.168.1.1:12000”)
节点主机规范
在某些情况下,你的电脑可以连接到多个网络和有多个IP地址。这幅图显示了一个示例。
电脑左下角MATLAB运行和连接到两个不同的网络。在一个子网,它的IP地址73.195.120.50,
和其他知识产权192.168.1.100
。这台电脑想连接到ROS大师在TurtleBot®计算机IP地址192.168.1.1
。作为注册与主的一部分,MATLAB全球节点指定的IP地址或主机名,其他ROS节点可以达到它。上的所有节点TurtleBot将使用这个地址来发送数据在MATLAB全球节点。
当rosinit
与主人的IP地址被调用,它试图检测所使用的网络接口联系掌握和使用,随着全球节点的IP地址。如果该自动检测失败,您可以显式地指定的IP地址或主机名使用NodeHost
名称-值对的rosinit
调用。的NodeHost
名称-值对可用于任何其他的语法已经显示。
这些命令ROS网络宣传你的计算机的IP地址192.168.1.100
。
rosinit (“192.168.1.1”,“NodeHost”,“192.168.1.100”)rosinit (“http://192.168.1.1:11311”,“NodeHost”,“192.168.1.100”)rosinit (“master_host”,“NodeHost”,“192.168.1.100”)
ROS网络中一个节点注册之后,你可以看到它广告的地址通过使用命令rosnode
信息
< nodename >
。你可以看到通过调用所有注册节点的名称rosnode列表
。
ROS环境变量
在先进的用例,您可能希望指定的地址通过标准活性氧ROS主人和你的广告节点地址环境变量。的语法解释说在前面的部分应该是足够的对于大多数你的用例。
如果没有提供参数rosinit
,该函数还将检查标准ROS环境变量的值。这些变量是ROS_MASTER_URI
,ROS_HOSTNAME
,ROS_IP
。你可以看到他们当前的值使用采用
命令:
采用“ROS_MASTER_URI”getenv ()“ROS_HOSTNAME”getenv ()“ROS_IP”)
你可以设置这些变量使用setenv
命令。设置环境变量后,电话rosinit
不带参数。ROS主人指定的地址ROS_MASTER_URI,
和全球节点的地址是由ROS_IP
或ROS_HOSTNAME
。如果您指定额外的参数rosinit
,他们覆盖环境变量中的值。
setenv (“ROS_MASTER_URI”,“http://192.168.1.1:11311”setenv ()“ROS_IP”,“192.168.1.100”)rosinit
你不需要设置ROS_HOSTNAME
和ROS_IP
。如果两个设置,ROS_HOSTNAME
优先。
验证连接
你的ROS连接正常工作,您必须确保所有节点可以与主人和相互通信。各个节点必须与主用户注册,出版商和服务。他们还必须能够相互通信来发送和接收数据。如果你的ROS网络没有设置正确,可能能够发送数据,无法接收数据(反之亦然)。
这个图显示了一个使用单个活性氧ROS网络主和两个不同的节点登记自己的主人。每个节点接触主找到广告ROS网络中其他节点的地址。一旦每个节点知道其他节点的地址,可以建立一个数据交换没有大师的参与。
下一个步骤
看到与ROS交换数据发布者和订阅者探索在ROS出版商和用户。