一个ROS网络由单个的罗斯大师和多个ROS节点.ROS master通过跟踪所有活跃的ROS实体来促进ROS网络中的通信。每个节点都需要向ROS主节点注册,以便能够与网络的其他部分通信。MATLAB®可以启动ROS主程序,或者主程序可以在MATLAB之外启动(例如,在不同的计算机上)。
当你使用ROS时,你通常会遵循以下步骤:
连接到ROS网络.要连接到ROS网络,您可以在MATLAB中创建ROS master或连接到现有的ROS master。在这两种情况下,MATLAB也将创建并注册自己的ROS节点(称为MATLAB全球节点)和主人在一起。这个松香
函数管理这个过程。
交换数据. 一旦连接,MATLAB通过发布者、订阅者和服务与其他ROS节点交换数据。
断开ROS网络.调用rosshutdown
函数断开MATLAB与ROS网络的连接。
这个例子向你展示了如何:
在MATLAB中创建一个ROS主程序
连接到外部ROS主机
先决条件:从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
你也可以用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_MASTER_URI
,ROS_主机名
和ROS_IP
. 您可以使用采用
命令:
采用“ROS_MASTER_URI”getenv ()“ROS_HOSTNAME”getenv ()‘叶刘淑仪’)
属性可以设置这些变量环境变量
命令。设置环境变量后,调用松香
没有争论。ROS主机的地址由罗斯·乌里大师,
全局节点的播发地址由ROS_IP
或ROS_主机名
.如果你指定额外的参数松香
,它们将覆盖环境变量中的值。
setenv (“ROS_MASTER_URI”,“http://192.168.1.1:11311”setenv ()‘叶刘淑仪’,“192.168.1.100”)松香
您不必同时设置这两个参数ROS_主机名
和ROS_IP
.如果两者都设置了,ROS_主机名
优先。
为了让您的ROS连接正常工作,您必须确保所有节点都能与主节点以及彼此之间进行通信。单个节点必须与主节点通信,以注册订阅者、发布者和服务。它们还必须能够相互通信以发送和接收数据。如果您的ROS网络没有正确设置,可能会发送数据而无法接收数据(反之亦然)。
这个图显示了一个具有单个ROS主节点和两个向主节点注册自己的不同节点的ROS网络。每个节点都与主节点联系,以查找ROS网络中其他节点的通告地址。一旦每个节点知道另一个节点的地址,数据交换就可以建立,而无需主机的参与。
看到与ROS发布者和订阅者交换数据探索ROS中的发布者和订户。