主要内容

连接到一个ROS网络

ROS网络由一个单身ROS的主人和多个ROS节点。ROS主促进活性氧的通信网络,跟踪所有活动ROS的实体。每个节点都需要注册ROS大师能够与其他通信网络。MATLAB®可以启动ROS的主人,或者可以启动主以外的MATLAB(例如,在一个不同的计算机)。

当你与ROS,通常遵循以下步骤:

  1. 连接到一个ROS网络。ROS网络连接,您可以创建ROS主在MATLAB或连接到一个现有的ROS的主人。在这两种情况下,MATLAB还将创建并注册自己的ROS节点(称为MATLAB全球节点与主)。的rosinit功能管理这一过程。

  2. 交换数据。一旦连接,MATLAB与其他ROS节点通过出版商交换数据时,用户和服务。

  3. 断开与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_IPROS_HOSTNAME。如果您指定额外的参数rosinit,他们覆盖环境变量中的值。

setenv (“ROS_MASTER_URI”,“http://192.168.1.1:11311”setenv ()“ROS_IP”,“192.168.1.100”)rosinit

你不需要设置ROS_HOSTNAMEROS_IP。如果两个设置,ROS_HOSTNAME优先。

验证连接

你的ROS连接正常工作,您必须确保所有节点可以与主人和相互通信。各个节点必须与主用户注册,出版商和服务。他们还必须能够相互通信来发送和接收数据。如果你的ROS网络没有设置正确,可能能够发送数据,无法接收数据(反之亦然)。

这个图显示了一个使用单个活性氧ROS网络主和两个不同的节点登记自己的主人。每个节点接触主找到广告ROS网络中其他节点的地址。一旦每个节点知道其他节点的地址,可以建立一个数据交换没有大师的参与。

下一个步骤