主要内容

连接到ROS网络

一个ROS网络由单个的罗斯大师和多个ROS节点.ROS master通过跟踪所有活跃的ROS实体来促进ROS网络中的通信。每个节点都需要向ROS主节点注册,以便能够与网络的其他部分通信。MATLAB®可以启动ROS主程序,或者主程序可以在MATLAB之外启动(例如,在不同的计算机上)。

当你使用ROS时,你通常会遵循以下步骤:

  1. 连接到ROS网络.要连接到ROS网络,您可以在MATLAB中创建ROS master或连接到现有的ROS master。在这两种情况下,MATLAB也将创建并注册自己的ROS节点(称为MATLAB全球节点)和主人在一起。这个松香函数管理这个过程。

  2. 交换数据. 一旦连接,MATLAB通过发布者、订阅者和服务与其他ROS节点交换数据。

  3. 断开ROS网络.调用rosshutdown函数断开MATLAB与ROS网络的连接。

这个例子向你展示了如何:

  • 在MATLAB中创建一个ROS主程序

  • 连接到外部ROS主机

先决条件:从ROS开始吧

在MATLAB中创建一个ROS主程序

  • 要在MATLAB中创建ROS主机,请调用松香不带任何参数。该函数还创建了全局节点,MATLAB使用该节点与ROS网络中的其他节点通信。

松香
启动ROS核心……用时0.9318秒。在http://192.168.0.10:55484上初始化ROS master。使用NodeURI http://bat800205glnxa64:36135/初始化全局节点/matlab_global_node_11482

MATLAB外部的ROS节点现在可以加入ROS网络。他们可以使用MATLAB主机的主机名或IP地址连接到MATLAB中的ROS主机。

您可以通过调用rosshutdown

rosshutdown
使用NodeURI http://bat800205glnxa64:36135/关闭全局节点/matlab_global_node_11482

连接外部ROS Master

你也可以用the松香连接到外部ROS主机的命令(例如,在机器人或虚拟机上运行)。您可以通过两种方式指定主机的地址:通过IP地址或通过运行主机的计算机的主机名。

每次呼叫之后松香,你必须打电话rosshutdown在调用之前松香使用不同的语法。简单地说,这些调用rosshutdown在这些例子中省略了。

“master_host”是一个示例主机名和'192.168.1.1”是外部ROS主机的示例IP地址。请根据外部主机在网络中的位置调整这些地址。如果在指定地址未找到主机,则这些命令将失败。

松香(“192.168.1.1”)松香(“master_host”)

两个电话都是松香假设主机在端口11311(标准ROS主机端口)上接受网络连接。如果主机在其他端口上运行,可以将其指定为第二个参数。连接到主机名上运行的ROS主机主机和端口12000,使用以下命令:

松香(“master_host”, 12000)

如果您知道主机的整个统一资源标识符(URI),则可以使用以下语法创建全局节点并连接到此主机:

松香(“http://192.168.1.1:12000”)

节点主机规范

在某些情况下,您的计算机可能连接到多个网络并具有多个IP地址。这张插图展示了一个例子。

左下角的计算机运行MATLAB,并连接到两个不同的网络。在一个子网中,其IP地址为73.195.120.50,另一方面,它的IP是192.168.1.100。此计算机希望以IP地址连接到TurtleBot®计算机上的ROS主机192.168.1.1.作为向master注册的一部分,MATLAB全局节点必须指定其他ROS节点可以到达的IP地址或主机名。TurtleBot上的所有节点都将使用这个地址向MATLAB中的全局节点发送数据。

什么时候松香使用主节点的IP地址调用时,它会尝试检测用于与主节点联系的网络接口,并将其用作全局节点的IP地址。如果自动检测失败,可以使用NodeHost的名称-值对松香呼叫这个NodeHost名称-值对可以与已经显示的任何其他语法一起使用。

这些命令将您的计算机的IP地址通告给ROS网络192.168.1.100

松香(“192.168.1.1”“NodeHost”“192.168.1.100”)松香(“http://192.168.1.1:11311”“NodeHost”“192.168.1.100”)松香(“master_host”“NodeHost”“192.168.1.100”)

在ROS网络中注册节点后,您可以使用命令查看其播发的地址rosnode信息< nodename >。您可以通过调用节点列表

ROS环境变量

在高级用例中,您可能希望通过标准ROS环境变量指定ROS主机的地址和播发的节点地址。前面章节中解释的语法对于大多数用例来说应该足够了。

如果未向提供任何参数松香,该函数还将检查标准ROS环境变量的值ROS_MASTER_URIROS_主机名ROS_IP. 您可以使用采用命令:

采用“ROS_MASTER_URI”getenv ()“ROS_HOSTNAME”getenv ()‘叶刘淑仪’)

属性可以设置这些变量环境变量命令。设置环境变量后,调用松香没有争论。ROS主机的地址由罗斯·乌里大师,全局节点的播发地址由ROS_IPROS_主机名.如果你指定额外的参数松香,它们将覆盖环境变量中的值。

setenv (“ROS_MASTER_URI”“http://192.168.1.1:11311”setenv ()‘叶刘淑仪’“192.168.1.100”)松香

您不必同时设置这两个参数ROS_主机名ROS_IP.如果两者都设置了,ROS_主机名优先。

验证连接

为了让您的ROS连接正常工作,您必须确保所有节点都能与主节点以及彼此之间进行通信。单个节点必须与主节点通信,以注册订阅者、发布者和服务。它们还必须能够相互通信以发送和接收数据。如果您的ROS网络没有正确设置,可能会发送数据而无法接收数据(反之亦然)。

这个图显示了一个具有单个ROS主节点和两个向主节点注册自己的不同节点的ROS网络。每个节点都与主节点联系,以查找ROS网络中其他节点的通告地址。一旦每个节点知道另一个节点的地址,数据交换就可以建立,而无需主机的参与。

下一步