从Simulink生成一个独立的ROS 2节点金宝app
本示例向您展示如何从Simulink®模型生成和构建一个独立的ROS 2节点。金宝app您配置一个模型来为独立的ROS 2节点生成c++代码。然后,在主机计算机上构建并运行ROS 2节点。
先决条件
这个例子需要Simulink Coder™。金宝app
中的说明下载虚拟机开始凉亭和模拟乌龟机器人.
检查基于ROS的机器人的反馈控制的例子。
参见ROS 2模型构建失败ROS 金宝appSimu金宝applink支持和限制.
要确保您有适当的第三方软件,请参见ROS工具箱系统要求.
为代码生成配置模型
配置一个模型,为独立的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_IMPLEMENTATION
来rmw_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