生成ROS节点手动部署代码动态仿真模块
这个例子向您展示了如何从Simulink中生成c++代码®模型部署为独立ROS节点。代码是在您的计算机上生成的,必须手动将其传输到目标ROS设备。生成代码时不需要连接到硬件。有关ROS节点的自动部署,请参见从Simulink中生成一个独立的ROS节点.
先决条件
这个例子需要仿真软件编码器™和嵌入式Coder™。
一个带有ROS的Ubuntu Linux系统对于构建和运行生成的c++代码是必要的。您可以使用自己的Ubuntu ROS系统,也可以使用用于ROS Toolbox™示例的Linux虚拟机。看到开始与露台和模拟乌龟机器人有关如何安装和使用虚拟机的说明。
检查基于ros的机器人反馈控制示例,该示例详细说明了生成代码的Simulink模型。
为代码生成配置模型
配置一个模型,以为独立ROS节点生成c++代码配置参数.这里使用的模型是在介绍的比例控制器基于ros的机器人反馈控制的例子。
打开比例控制器模型。
编辑robotROSFeedbackControlExample
将整个模型复制到一个新的空白Simulink模型中。
删除仿真速度控制块。
在Apps选项卡下面控制系统,点击机器人操作系统(ROS).
在机器人操作系统(ROS)对话框,选择机器人操作系统(ROS)
从ROS网络下拉。这就打开了ROS选项卡中的指定ROS网络连接部分。
在准备下节ROS选项卡上,单击硬件设置打开模型配置参数对话框。
的硬件板设置部分包含特定于生成ROS包的设置,例如包含在package.xml
文件。改变维护人员的名字来ROS示例用户
并点击好吧.
在解算器面板的配置参数对话框中,确保类型被设置为固定步
,解算器被设置为ode3 (Bogacki-Shampine)
和固定的大小被设置为0.05
.在生成的代码中,固定的步长定义了用于模型更新循环的实际时间步长。看到从模型生成的代码的执行(仿真软件编码器)为更多的信息。
在代码生成窗格中,确保适应信号启用。
点击好吧关闭配置参数对话框。将模型保存为RobotController.slx
.
配置代码生成的生成选项
在配置模型之后,您必须为目标硬件指定构建选项,并设置文件夹或构建生成的代码。
点击部署下ROS选项卡。然后下部署,点击构建模型此设置确保为ROS节点生成代码,而无需在外部ROS设备上构建代码。
生成和部署代码
在MATLAB中启动ROS master®.这个ROS主程序被Simulink用于代码生成步骤。
在MATLAB命令窗口中输入:
rosinit
将当前文件夹设置为可写目录。当您构建模型时,该文件夹是生成代码的存储位置。
下C代码选项卡上,单击生成代码或按Ctrl + B
启动模型的代码生成。
构建完成后,两个新文件被写入您的文件夹。
RobotController.tgz
—包含c++代码的归档文件build_ros_model.sh
——提取和构建c++代码的shell脚本
手动将这两个文件传输到目标计算机。如果您连接到ROS设备使用rosdevice
,您可以使用putFile
.否则,此步骤假设您正在使用用于Robotics System Toolbox™示例的Linux虚拟机。虚拟机被配置为接受SSH和SCP连接。如果您使用的是自己的Linux系统,请向系统管理员咨询传输文件的安全方法。
确保您的主机系统(与您的RobotController.tgz
而且build_ros_model.sh
有一个SCP客户端。对于Windows®系统,下一步假设PuTTY SCP客户端(pcsp.exe
)安装。
使用SCP将文件传输到Linux虚拟机上的用户主目录。用户名是用户
和密码是密码
.取代< virtual_machine_ip >
你的虚拟机IP地址。
Windows主机系统:
pscp.exe RobotController。tgz build_ros_model.sh user@ < virtual_machine_ip >:
Linux或macOS主机系统:
scp RobotController。tgz build_ros_model.sh user@ < virtual_machine_ip >:
的build_ros_model.sh
文件不是此模型特有的。它只需要为多个模型转移一次。
在Linux系统上,执行以下命令来创建一个Catkin工作区。您可以使用现有的Catkin工作区。构建Catkin工作区。
Mkdir -p ~/catkin_ws_simulink/src CD ~/catkin_ws_simulink/src catkin_init_workspace CD ..catkin_make
在Linux中使用以下命令解压并构建节点。取代< path_to_catkin_ws >
与路径到您的柳絮工作区。如果节点使用自定义消息,则必须手动复制所需的自定义消息包< path_to_catkin_ws > /味精
文件夹之前构建节点。
cd ~ ./build_ros_model.sh RobotController. sh。tgz < path_to_catkin_ws >
如果这不起作用,请确保build_ros_model.sh
通过输入以下命令将其设置为可执行文件。
chmod + x build_ros_model.sh
生成的源代码如下~ / catkin_ws_simulink / src / robotcontroller /
.复习内容package.xml
文件。验证节点可执行文件是使用以下方法创建的:
文件~ / catkin_ws_simulink /猛击/ lib / robotcontroller / robotcontroller_node
如果成功创建了可执行文件,该命令将列出有关该文件的信息。
该模型现在可以作为设备上的独立ROS节点运行了。
可选:然后可以使用此命令运行节点。取代< path_to_catkin_ws >
与路径到您的柳絮工作区。
~ / < path_to_catkin_workspace > /猛击/ lib / robotcontroller / robotcontroller_node