主要内容

rosdevice

连接远端ROS设备

描述

rosdevice对象用于创建与ROS设备的连接。ROS设备可以是本地设备,也可以是远端设备。对象包含必要的登录信息和ROS分布的其他参数。一旦建立连接使用rosdevice,运行并停止ROS核心或ROS节点,检查ROS网络状态。在运行ROS节点之前,必须连接MATLAB®连接到ROS网络rosinit函数。

您可以使用Simulink将ROS节点部署到ROS设备金宝app®模型。有关示例,请参见从Simulink生成一个独立的ROS节点金宝app

您还可以部署从MATLAB代码生成的ROS节点。

请注意

若要连接远端ROS设备,必须在设备上安装SSH服务器。连接到本地主机时,如果指定了SSH服务器,则无需在本地设备上安装SSH服务器deviceAddress作为“localhost”.或者,如果指定deviceAddress作为“127.0.0.1”或作为本地设备的主机名,则必须在本地设备上安装SSH服务器。

创建

描述

例子

设备= rosdevice (deviceAddress用户名密码创建一个rosdevice对象连接到指定地址的ROS设备并使用指定的用户名和密码。

设备= rosdevice创建一个rosdevice的保存值连接到ROS设备的对象deviceAddress用户名,密码

设备= rosdevice (“localhost”创建一个rosdevice连接到本地设备的对象。

属性

全部展开

此属性是只读的。

ROS设备的主机名或IP地址,指定为字符向量。

例子:“192.168.1.10”

例子:“samplehost.foo.com”

此属性是只读的。

用于连接到ROS设备的用户名,指定为字符向量。

例子:“用户”

ROS安装位置,指定为字符向量。如果没有指定文件夹,MATLAB将尝试为您确定正确的文件夹。在部署ROS节点时,请在下面的“配置参数”对话框中从Simulink设置此值金宝app硬件实现

例子:' / opt / ros /水电

在设备上部署模型的Catkin文件夹,指定为字符向量。在部署ROS节点时,请在下面的“配置参数”对话框中从Simulink设置此值金宝app硬件实现

例子:“~ / catkin_ws_test”

此属性是只读的。

可在ROS设备上运行的节点,作为字符向量的单元格数组返回。类的一部分才会列出节点CatkinWorkspace并且已经使用Simulink部署到设备上。金宝app

例子:{“robotcontroller”、“publishernode”}

对象的功能

runNode 启动ROS或ROS 2节点
stopNode 停止ROS或ROS 2节点
isNodeRunning 确定ROS或ROS 2节点是否正在运行
runCore 启动ROS核心
stopCore 停止ROS核心
isCoreRunning 确定ROS核心是否正在运行
系统 在设备上执行系统命令
putFile 将文件复制到设备
getFile 从设备获取文件
deleteFile 从设备中删除文件
dir 列出设备上的文件夹内容
openShell 打开交互式命令shell到设备

例子

全部折叠

连接到远端ROS设备并启动ROS核心。ROS核心需要运行ROS节点通过ROS网络进行通信。可以运行并停止ROS核心或节点,并使用rosdevice对象。

创建到ROS设备的连接。指定特定ROS设备的地址、用户名和密码。该设备包含有关ROS设备的信息,包括可用的ROS节点,可以使用这些节点运行runNode

ipaddress =“192.168.203.131”;D = rosdevice(ipaddress,“用户”“密码”
d = rosdevice with properties: DeviceAddress: '192.168.203.131'用户名:'user' ROSFolder: '/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws' availablenode: {'voxel_grid_filter_sl'}

运行ROS内核并检查它是否正在运行。

runCore (d)
另一个roscore / ROS主服务器已经在ROS设备上运行。使用'stopCore'函数来停止它。
running = isCoreRunning(d)
运行=逻辑1

停止ROS内核并确认它不再运行。

stopCore(d) pause(2) running = isCoreRunning(d)
运行=逻辑0

连接远端ROS设备,启动ROS节点。运行ROS核心,以便ROS节点可以通过ROS网络进行通信。可以运行并停止ROS核心或节点,并使用rosdevice对象。

创建到ROS设备的连接。指定特定ROS设备的地址、用户名和密码。设备已经包含可用的ROS节点,可以使用这些节点运行runNode

ipaddress =“192.168.203.129”;D = rosdevice(ipaddress,“用户”“密码”);d.ROSFolder =' / opt / ros /靛蓝;d.CatkinWorkspace =“~ / catkin_ws_test”
d = rosdevice with properties: DeviceAddress: '192.168.203.129'用户名:'user' ROSFolder: '/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws_test' availablenode: {'robotcontroller' 'robotcontroller2'}

运行ROS核心。将MATLAB®连接到ROS master使用rosinit.这个核心使您能够在ROS设备上运行ROS节点。

runCore (d) rosinit (d.DeviceAddress, 11311)
使用NodeURI http://192.168.203.1:56034/初始化全局节点/matlab_global_node_84497

检查已连接的ROS设备上可用的ROS节点。列出的这些节点是根据Simulink®模型生成的金宝app在Simulink中开始使用ROS金宝app的例子。

d.AvailableNodes
ans =1×2细胞{' robotcontroller} {' robotcontroller2 '}

运行ROS节点并指定节点名称。检查节点是否运行。

runNode (d,“RobotController”) running = isNodeRunning(d,“RobotController”
运行=逻辑1

停止ROS节点。断开ROS网络连接。停止ROS核心。

stopNode (d,“RobotController”) rosshutdown
使用NodeURI http://192.168.203.1:56034/关闭全局节点/matlab_global_node_84497
stopCore (d)

在已连接的ROS设备上运行多个ROS节点。ROS节点可以使用Simulink®模型生成,以在ROS网络上执行金宝app不同的任务。这些节点然后部署在ROS设备上,可以独立于Simulink®运行。金宝app

这个例子使用了两个不同的Simulink模型,它们被部署为ROS金宝app节点。看到从Simulink生成一个独立的ROS节点金宝app并按照说明生成和部署ROS节点。这样做两遍,说出他们的名字“robotcontroller”而且“robotcontroller2”.的“robotcontroller”Node向机器人发送速度命令,使其导航到给定的点。的“robotcontroller2”Node使用相同的模型,但将线速度提高了一倍,以更快地驱动机器人。

创建到ROS设备的连接。指定特定ROS设备的地址、用户名和密码。该设备包含有关ROS设备的信息,包括可用的ROS节点,可以使用这些节点运行runNode

ipaddress =“192.168.203.129”;D = rosdevice(ipaddress,“用户”“密码”
d = rosdevice with properties: DeviceAddress: '192.168.203.129'用户名:'user' ROSFolder: '/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws' availablenode: {0×1 cell}
d.CatkinWorkspace =“~ / catkin_ws_test”
d = rosdevice with properties: DeviceAddress: '192.168.203.129'用户名:'user' ROSFolder: '/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws_test' availablenode: {'robotcontroller' 'robotcontroller2'}

运行ROS核心。ROS核心是使您能够在ROS设备上运行ROS节点的master。将MATLAB®连接到ROS master使用rosinit.本例中端口设置为11311。rosinit可以自动为您选择端口,而无需指定此输入。

runCore (d) rosinit (d.DeviceAddress, 11311)
使用NodeURI http://192.168.203.1:59395/初始化全局节点/matlab_global_node_66434

检查已连接的ROS设备上可用的ROS节点。本例中列出的节点是根据Simulink®模型中的过程生成的金宝app从Simulink生成一个独立的ROS节点金宝app的例子。生成两个独立的节点,“robotcontroller”而且“robotcontroller2”,模型中线速度分别设为1和2。

d.AvailableNodes
ans =1×2细胞{' robotcontroller} {' robotcontroller2 '}

启动机器人模拟器使用ExampleHelper金宝appSimulinkRobotROS.这个模拟器自动连接到ROS设备上的ROS主机。您将使用该模拟器运行ROS节点并控制机器人。

sim = ExampleHelper金宝appSimulinkRobotROS;

运行ROS节点,指定节点名称。的“robotcontroller”Node命令机器人到达特定位置(10 [-10]).等着看机器人开车吧。

runNode (d,“robotcontroller”暂停(10)

重置机器人模拟器重置机器人的位置。或者,单击重置模拟.由于节点仍在运行,机器人将继续返回到特定位置。如果需要停止发送命令,请停止节点。

resetSimulation (sim.Simulator)暂停(5)

stopNode (d,“robotcontroller”

运行“robotcontroller2”节点。该模型以两倍的线速度驱动机器人。重置机器人位置。等着看机器人开车吧。由于速度增加,你应该看到一个更大的转弯。

runNode (d,“robotcontroller2”resetSimulation(sim.Simulator)暂停(10)

关闭模拟器。停止ROS节点。断开ROS网络并停止ROS核心。

关闭stopNode (d,“robotcontroller2”) rosshutdown
使用NodeURI http://192.168.203.1:59395/关闭全局节点/matlab_global_node_66434
stopCore (d)

限制

  • 你不能改变ROSFolder属性。对于本地主机连接,它将始终指向MATLAB安装中的ROS文件夹。

版本历史

R2019b引入