主要内容

从Simulink生成一个独立的ROS 2节点金宝app

本示例向您展示如何从Simulink®模型生成和构建一个独立的ROS 2节点。金宝app您配置一个模型来为独立的ROS 2节点生成c++代码。然后,在主机计算机上构建并运行ROS 2节点。

先决条件

为代码生成配置模型

配置一个模型,为独立的ROS 2节点生成c++代码。该模型是本文中介绍的比例控制器基于ROS的机器人的反馈控制的例子。

  • 打开机器人反馈控制模型配置为ROS 2。另外,电话open_system(“robotControllerROS2”)

  • ROS选项卡,在准备,点击硬件设置.在硬件实现窗格中,硬件板设置节包含特定于生成的ROS 2包的设置,例如要包含在package.xml文件。改变维护人员的名字ROS 2用户示例

  • 该模型需要可变大小的数组。要启用此选项,选中适应信号代码生成>接口>软件环境

  • 解算器窗格,确保求解器类型设置为固定步,并设置固定的大小0.05.在生成的代码中,固定步长大小定义了实际的时间步长,以秒为单位,用于模型更新循环(参见执行从模型生成的代码(金宝app仿真软件编码器)).它可以更小(例如0.001或0.0001),但对于目前的目的,0.05就足够了。

  • 指定外部ROS包作为依赖项:要将外部ROS 2包指定为生成的ROS 2节点的依赖项,请指定适当的工具链选项。在“配置参数”中代码生成>工具链设置,指定构建配置作为指定从下拉菜单中。然后,可以指定所需的包,包括目录,链接库,库路径而且定义了基于您希望与生成的ROS 2节点集成的外部ROS 2包。

  • 点击好吧

生成c++ ROS 2节点

在这个任务中,您将为一个独立的ROS 2节点生成代码,并自动构建并在主机上运行它。

  • 在MATLAB®中,将当前文件夹更改为您有写权限的位置。

  • 模拟选项卡,在准备中,选择ROS工具箱> ROS网络

  • 设置ROS 2网络的Domain ID (ROS 2)。本例中Domain ID为25。

  • 如果部署到本地设备,则需要设置环境变量ROS_DOMAIN_ID到值25,使用setenv在MATLAB。

  • 设置ROS 2网络的ROS中间件(ROS 2)。本例使用ROS Middleware作为rmw_cyclonedds_cpp

  • 如果部署到本地设备,则需要设置环境变量RMW_IMPLEMENTATIONrmw_cyclonedds_cpp,使用setenv在MATLAB。

  • ROSTab,从部署部分下拉,单击构建并运行.如果您得到有关总线类型不匹配的任何错误,请关闭模型,清除基本MATLAB工作空间中的所有变量,并重新打开模型。点击视图诊断链接在模型工具栏底部,以查看构建过程的输出。

代码生成完成后,当前工作文件夹中构建的ROS 2节点开始基于模型的采样时间以同步方式自动运行。在Windows®中运行时,会打开一个命令窗口。不要关闭窗户,而是使用Ctrl + C关闭ros2节点。

使用ros2节点列出所有运行节点的是ROS 2网络。robotControllerROS2应该在显示的节点列表中。

ros2 (“节点”“列表”
/ robotControllerROS2 ros_bridge

验证已部署的节点在ROS 2主题上发布数据,/ cmd_vel,来控制模拟机器人的运动。

ros2 (“主题”“列表”
/clock /cmd_vel /gazebo/link_states /gazebo/model_states /imu /joint_states /odom /parameter_events /rosout /rosout_agg /scan /tf