主要内容

从模型生成一个独立的ROS节点万博1manbetx

这个例子向您展示了如何从一个仿真软件生成,建立一个独立的ROS节点®模型。万博1manbetx

介绍

在这个示例中,您可以配置一个模型为一个独立的ROS生成c++代码节点。然后构建和运行Ubuntu Linux®®的ROS节点系统。

先决条件

  • 这个例子需要仿真软件编码器™。万博1manbetx

  • Ubuntu Linux系统与ROS和SSH服务器安装是必要的构建和运行生成的c++代码。您可以使用自己的Ubuntu ROS系统,或者您可以使用Linux虚拟机用于机器人系统工具箱™(见例子从露台和模拟TurtleBot开始指令)。

  • 检查反馈控制的ROS-Enabled机器人的例子。

为代码生成配置模型

配置一个模型为一个独立的ROS生成c++代码节点。模型中引入的比例控制器反馈控制的ROS-Enabled机器人的例子。

  • 开放RobotController.slx。点击链接或运行RobotController在命令窗口中。

  • 准备下节ROS选项卡上,单击硬件设置打开硬件实现面板的配置参数对话框。的硬件板设置部分包含设置特定于ROS生成方案,如信息包含在package.xml文件。改变维护人员的名字ROS示例用户

  • 模型使用可变大小的数组。如果你有嵌入式编码器™安装,您必须启用代码生成的大小可变的信号。检查适应信号代码生成>界面>软件环境。如果适应信号选择是不可见的,检查选项,使用嵌入式编码特性硬件实现>高级参数

  • 解算器面板的配置参数对话框中,确保解决者类型被设置为固定步,并设置固定的大小0.05。在生成的代码中,固定的大小定义实际的时间步,在几秒钟内,用于模型更新循环(见执行从模型生成的代码(万博1manbetx仿真软件编码器))。它可以做得更小(例如,0.001或0.0001),但对于当前目的0.05就足够了。

配置到ROS的连接设备

一个ROS设备任何安装了ROS的Linux系统,构建和运行一个ROS节点的能力。如果你有仿真软件编码器,万博1manbetx可以为一个独立的ROS节点生成代码。如果您的系统是连接到一个ROS设备仿真软件也可以生成的代码转移到ROS设备,建立一个可执行万博1manbetx文件,并运行产生的ROS节点(这被称为“部署”ROS节点)。

在这个任务中,你决定,如果你想生成代码的ROS节点或如果你想构建和ROS设备上运行它。如果你连接到一个ROS设备,您可以配置仿真软件使用它作为你的ROS的部署目标节点。万博1manbetx

  • 建模选项卡上,单击模型设置

  • 硬件实现面板的配置参数对话框中,选择一个建立行动硬件板硬件资源>组>设置>目标构建选项。选择构建行动影响的行为模型在构建模型。万博1manbetx没有一个(默认设置)只生成的代码ROS节点,没有建立在外部ROS设备。构建和负载生成的代码,传输到外部设备,构建一个ROS节点执行。如果您选择构建和运行,生成的节点执行开始自动的构建。

  • 设置建立行动构建和运行。

  • 配置连接到外部ROS设备。下ROS选项卡,从部署到下拉,点击管理远程设备。这将打开连接到一个ROS设备对话框。在这个对话框中,你可以输入所有的信息模型需要部署ROS节点。万博1manbetx这包括你的ROS设备的IP地址或主机名称,您的登录凭证,柔荑花序工作区。改变柔荑花序工作区~ / catkin_ws_test

ROS文件夹是活性氧ROS的位置安装设备。如果你不指定此文件夹,设置测试(见下一步)试图确定正确的文件夹。

  • 如果ROS设备打开,可以从你的电脑,你可以通过点击验证连接设置测试。测试验证每个设备设置和显示警告和错误的模型诊断观众如果找到问题。万博1manbetx如果可能的话,测试也表明如何固定的问题。点击测试现在。

  • 最有可能的是,柔荑花序工作区中~ / catkin_ws_test目标设备上是不存在的。测试检测到这个问题,建议创建文件夹和初始化工作空间。点击修复自动应用这个动作。几秒钟后,您应该看到一个绿色的注意,成功创建了文件夹。在下图中可以看到成功的一个例子创建的文件夹。柔荑花序工作区现在可以验证,点击测试在连接设置对话框中。警告已经消失了,柔荑花序工作区准备构建ROS节点。

  • 改变设备连接设置和测试它们,直到没有任何警告或错误显示。如果一个自动修复您的设置是可行的,仿真软件显示显示万博1manbetx修复按钮。一旦你有了一套好的设置,点击好吧在连接设置对话框中保存设置。

连接设置并不特定于单个模型,但在仿真软件适用于所有ROS模型。万博1manbetx

生成c++ ROS节点

为一个独立的ROS节点生成代码,并自动转让、构建和运行它在ROS设备。练习使用活性氧ROS生成节点主ROS设备上运行。

1。在MATLAB®,改变当前文件夹到一个临时位置你有写权限。

2。代码生成过程首先准备模型模拟,以确保所有块正确初始化。这个准备需要一个有效的连接到ROS的主人。

在MATLAB中,您可以使用rosdevice对象开始在活性氧ROS主设备。如果你不提供任何参数,rosdevice使用仿真软件对话框中的输入的设备连接设置连接到ROS设备。万博1manbetx

d = rosdevice runCore (d);

3所示。使用rosinit连接MATLAB在活性氧ROS主运行装置:

rosinit (d.DeviceAddress)

4所示。告诉仿真软万博1manbetx件MATLAB使用相同的ROS连接设置。下模拟选项卡,在准备部分中,选择ROS网络。设置活性氧(ROS 1)大师和节点主机网络地址默认的

你只需要执行步骤2 - 4次/ MATLAB会话,不是每次你生成活性氧节点。

5。ROS选项卡上,单击部署>构建和运行。如果你得到任何关于总线类型不匹配的错误,关闭模式,清除所有变量从基MATLAB工作区,并重新打开模型。

点击视图诊断模型的底部链接工具栏看到构建过程的输出。

6。一旦代码生成完成,ROS节点转移到ROS的柔荑花序工作区设备。节点构建有同步的方式,开始自动运行基于模型的采样时间。

生成的节点连接到活性氧ROS设备上运行的主。

7所示。使用rosnode列出所有正在运行的节点是ROS网络。“robotcontroller”应该显示列表中的节点。

rosnode列表

您可以使用rostopic验证部署节点发布数据ROS主题来控制机器人的运动:

rostopic信息/ mobile_base /命令/速度

运行并验证ROS节点

新建的ROS节点运行,使用一个基于matlab的机器人模拟器验证其行为。

1。在MATLAB中,输入ExampleHelper万博1manbetxSimulinkRobotROS启动机器人模拟器。模拟器会自动连接到活性氧ROS设备上运行的主。如果你想连接到Gazebo-based机器人仿真,明白了从仿真软件连接到ROS-enabled机器人®万博1manbetx

sim = ExampleHelper万博1manbetxSimulinkRobotROS

2。验证(模拟机器人走向目标期望的职位常数模型)中指定。机器人停止一旦达到目标(-10,10)。

3所示。点击重置模拟复位机器人的位置(0,0)。机器人立即开始移动到目标位置。

4所示。在MATLAB中,您可以管理ROS节点通过仿真软件生成的万博1manbetxrosdevice对象。一旦部署仿真软万博1manbetx件模型,您可以使用rosdevice运行和停止节点在任何时候,无需重建模型。万博1manbetx

AvailableNodes属性显示了robotcontroller节点部署。您可以验证通过调用运行的节点isNodeRunning函数。

d = rosdevice

isNodeRunning (d,“robotcontroller”)

5。阻止活性氧节点运行。

stopNode (d,“robotcontroller”)isNodeRunning (d,“robotcontroller”)

6。单击重置模拟按钮在模拟窗口。机器人呆在位置(0,0),不动。

  • 现在重新启动节点。

runNode (d,“robotcontroller”)
  • 机器人应该朝着目标位置。

7所示。一旦你做了验证,可以清理系统状态如下。

  • 停止运行在目标设备上的节点

stopNode (d,“robotcontroller”)
  • 在主机电脑,关闭机器人模拟器图窗口和类型rosshutdown在MATLAB命令行。

rosshutdown

高级的主题和故障排除

指定代码生成和构建选项:你可以选择不同的代码生成和构建行为通过指定其中的一个部署从下将来发布选项ROS选项卡。

  • 生成代码——生成活性氧包源代码localhost或远程设备上。

  • 构建模型——生成活性氧包源代码和构建独立的本地或远程设备上执行。

  • 构建和运行——生成活性氧包源代码,构建独立的可执行文件和本地或远程设备上开始运行它。

在仿真软件指定ROS网络设置万博1manbetx:默认情况下,模型使用ROS万博1manbetx连接设置rosinit在MATLAB。覆盖这些设置,指定ROS在仿真软件连接设置。万博1manbetx下模拟选项卡,在准备部分中,选择ROS网络并设置ROS大师和节点主机网络地址:

指定外部ROS包依赖关系:指定外部依赖关系,生成的活性氧ROS包节点,指定适当的工具链选项。下的配置参数,代码生成>工具链设置,指定构建配置作为指定从下拉。然后,您可以指定需要包,包括目录、链接库,库路径定义了基于外部ROS的包你想与生成的活性氧集成节点。

生成c++代码归档:无论什么建立行动您选择(没有,构建和加载、构建和运行),仿真软件总是生成两个文件在当前文件夹:存档包含c++源代码(万博1manbetxRobotController。tgz在我们的示例中)和shell脚本中提取和构建的c++代码手动(build_ros_model.sh)。如果你的MATLAB计算机没有连接到ROS设备,您可以将文件手动和构建。

处理器生成的代码:如果您使用块从其他产品(如计算机视觉系统工具箱™),生成的代s manbetx 845码可能包括了特定于处理器的优化,导致编译问题在构建ROS在Linux上的节点。在这些情况下,您需要告诉仿真软件平台生成的代码被编译。万博1manbetx你可以通过硬件实现面板模型的配置参数对话框。

在MATLAB运行ROS的主人:你在上面的示例中,连接到一个活性氧ROS设备上运行的主。或者,您可以创建一个ROS主在MATLAB。使用rosinit在MATLAB命令行:

rosinit (“NodeHost”<您的计算机的IP地址>)

例如,如果你的主机的IP地址是172.18.250.92,使用以下命令:

rosinit (“NodeHost”,“172.18.250.92”)

NodeHost设置是重要的,以确保生成的活性氧节点能够沟通到主MATLAB。请注意:ROS生成节点将使用NodeHostIP地址在MATLAB全球ROS节点进行通信,所以确保指定的IP地址访问ROS的设备(例如,使用)。看到连接到一个ROS网络例子的重要性的更多细节NodeHost设置。

任务模式:仿万博1manbetx真软件可以生成代码(见多任务或单一任务模式基于时间的调度和代码生成(万博1manbetx仿真软件编码器))。默认情况下,生成的活性氧代码使用单一任务模式(一个线程的利率)没有实时调度。这使得生成的活性氧代码执行sudo特权,但可能会导致难以预测的性能。

如果你需要更多的可预测的性能,您可以使用多任务配置模型。在解算器使面板的配置参数对话框对待每个离散率作为一个单独的任务使多任务。在生成的代码中,这将创建一个单独的线程中每一个利率模型,并使用线程的优先级调度。

ROS节点运行,您需要管理权限的ROS设备。万博1manbetx仿真软件自动检测时如果你的权限不足模型部署到目标设备。

相关的话题