主要内容

Rosdevice.

连接远端ROS设备

描述

Rosdevice.对象用于创建与ROS设备的连接。该对象包含必要的登录信息和ROS分发的其他参数。一旦连接使用Rosdevice.,您可以运行和停止ROS核心或ROS节点并检查ROS网络的状态。在运行ROS节点之前,必须连接MATLAB®使用的ROS网络使用罗斯尼特函数。

您可以使用Simulink将ROS节点部署到ROS设备金宝app®楷模。例如,看到从Simulink®生成独立ROS节点金宝app

请注意

连接ROS设备时,需要在设备上安装SSH服务器。

创建

描述

例子

设备= rosdevice (deviceAddress,用户名,密码)创建一个Rosdevice.在指定地址和指定的用户名和密码上连接到ROS设备的对象。

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

属性

展开全部

此属性是只读的。

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

例子:'192.168.1.10'

例子:'samplehost.foo.com'

此属性是只读的。

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

例子:“用户”

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

例子:'/选择/ ros / hydro'

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 停止罗斯核心
iscorerunning 确定ROS Core是否正在运行
系统 在设备上执行系统命令
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,“用户”,'密码')
/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws' AvailableNodes: {'voxel_grid_filter_sl'}

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

runco​​re(d)
另一个Roscore / ROS主机已在ROS设备上运行。使用“stopcore”功能停止它。
运行= isCoreRunning (d)
跑步=逻辑1

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

stopcore(d)暂停(2)运行= iscorerunning(d)
跑步=逻辑0

连接远端ROS设备,启动ROS节点。运行ROS核心,使ROS节点可以通过ROS网络进行通信。您可以运行和停止ROS核心或节点,并使用Rosdevice.目的。

创建到ROS设备的连接。请输入指定ROS设备的地址、用户名和密码。该设备已经包含可用的ROS节点,可以使用runnode.

ipaddress =“192.168.203.129”;d = rosdevice(ipaddress,“用户”,'密码');d.rosfolder ='/选择/ ros / indigo';d.CatkinWorkspace =“~ / catkin_ws_test”
d = rosdevice具有属性:deviceaddress:'192.168.203.129'用户名:'用户'rosfolder:'/ opt / ros / indigo'catkinWorkspace:'〜/ catkin_ws_test'available面区:{'robotcontroller''robotcontroller2'}

运行活性氧核心。将MATLAB®连接到ROS主机使用罗斯尼特。此核心使您可以在ROS设备上运行ROS节点。

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

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

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

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

runnode(d,'robotController')运行= IsnoderUnning(D,'robotController')
跑步=逻辑1

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

stopnode(d,'robotController')Rosshutdown.
使用nodeuri关闭全局节点/ matlab_global_node_84497 http:///192.168.203.1:56034/
stopCore (d)

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

本例使用了已部署为ROS节点的两种不同的Simulink模型。金宝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:DeviceAddress:'192.168.203.129'用户名:'用户'rosfolder:'/ opt / ros / indigo'catkinWorkspace:'〜/ catkin_ws'available面区:{0×1个单元格}
d.CatkinWorkspace =“~ / catkin_ws_test”
d = rosdevice具有属性:deviceaddress:'192.168.203.129'用户名:'用户'rosfolder:'/ opt / ros / indigo'catkinWorkspace:'〜/ catkin_ws_test'available面区:{'robotcontroller''robotcontroller2'}

运行活性氧核心。ROS核心是主机,您可以在ROS设备上运行ROS节点。将MATLAB®连接到ROS主机使用罗斯尼特。对于此示例,端口设置为11311。罗斯尼特可以自动为您选择一个端口,而无需指定此输入。

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'节点命令机器人到特定位置([-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)
介绍了R2019b