主要内容

在Simulink和Gazebo之间进行联合仿真金宝app

这个例子展示了如何在Simulink™和Gazebo之间设置同步模拟,以发送命令并从Gazebo接收数据。金宝app

搭建露台模拟环境

对于本例,使用您自己的Linux环境和Gazebo,或者下载提供的文件带有ROS和凉亭的虚拟机.在虚拟机(VM)中,需要的Gazebo插件位于/home/user/src/GazeboPlugin。

虚拟机的软件要求如下:

操作系统:Ubuntu Xenial Xerus或Ubuntu Bionic Beaver

软件依赖关系:CMake 2.8、Gazebo 9和libgazebo9-dev

如果使用您自己的Linux环境,请遵循下面的步骤手动安装Gazebo插件.Othwerise,去启动露台模拟环境

手动安装Gazebo插件

以zip包的形式获取插件源代码。这个函数创建一个名为GazeboPlugin,并将其压缩为GazeboPlugin.zip

packageGazeboPlugin

复制GazeboPlugin.zip安装到满足以下要求的Linux机器:

在您的Linux平台上解压缩包,对于本例,我们解压缩为/home/user/src/GazeboPlugin

在终端中运行这些命令来编译插件。

cd /home/user/src/GazeboPlugin

如果构建文件夹已存在,请删除它。

rm - r构建

安装插件。

Mkdir build CD build cmake ..使

插件的位置是/home/user/src/GazeboPlugin /出口/ lib / libGazeboCoSimPlugin.so

从主机中删除生成的插件。

如果存在(“GazeboPlugin”“dir”)删除文件夹(“GazeboPlugin”“年代”);结束如果存在(“GazeboPlugin.zip”“文件”删除()“GazeboPlugin.zip”);结束

启动露台模拟环境

在VM或您自己的Linux操作系统中打开终端,运行以下命令来启动Gazebo模拟器。

cd/home/user/src/GazeboPlugin /出口出口SVGA_VGPU10 = 0露台. . /世界/ multiSensorPluginTest.world——详细

以下命令启动Gazebo模拟器:

  • 两个激光测距仪:hokuyo0hokuyo1

  • 两个RGB相机:camera0camera1

  • 两个深度照相机:depth_camera0depth_camera1

  • 两个IMU传感器:imu0imu1

  • 单元框模型:unit_box

multiSensorPluginTest.world位于/home/user/src/GazeboPlugin /世界文件夹中。这个世界文件包含了Gazebo插件,用于与Simulink进行联合仿真。金宝appxml身体:

<插件名称=“GazeboPlugin”文件名=“lib / libGazeboCoSimPlugin.so”> < portNumber > 14581 < / portNumber > < /插件>

文件名字段必须指向编译后的Gazebo插件的位置。这个路径可以是相对于Gazebo本身启动的位置,或者你可以通过运行下面的命令将它添加到Gazebo插件搜索路径中:

出口GAZEBO_PLUGIN_PATH = $ {GAZEBO_PLUGIN_PATH}: / home / user / src / GazeboPlugin /出口

联合仿真配置露台

打开performCoSimulationWithGazebo模型,演示了如何从这些仿真传感器接收传感器数据,以及如何从Simulink驱动单元盒模型。金宝app

open_system (“performCoSimulationWithGazebo”

在模拟模型之前,配置Gazebo协同模拟使用露台Pacer布洛克:

hilite_system (“performCoSimulationWithGazebo /露台Pacer”

打开区块并单击配置露台网络和仿真设置链接。

open_system (“performCoSimulationWithGazebo /露台Pacer”

网络地址下拉列表中,选择自定义.输入Linux机器的IP地址。默认的港口露台是14581.集响应超时到10秒。

单击测试按钮,以测试与运行中的露台模拟器的连接。

获得传感器数据

使用露台读块从三个传感器获取特定主题的数据:

  • IMU,/露台/违约/ imu / imu / imu0 /链接

  • 激光雷达扫描,/露台/违约/ hokuyo0 /联系/激光/扫描

  • RGB相机,/露台/违约/ camera0 /联系/相机/形象

使用MATLAB®功能块显示IMU读数和可视化的激光雷达扫描和RGB图像。

开动露台模型

使用露台使用命令在物体上施加恒定的力z-方向,导致加速度为1的单位框 / 年代 2 .创建一个空白的ApplyLinkWrench信息使用露台空白信息.属性指定消息中要对其施加强制的元素unit_box /链接实体使用总线分配块。使用露台读输出的地面真理的姿态的盒子。盒子在1秒周期内的位移应接近0.5米。

执行联合仿真

联合仿真开始,点击运行.您还可以使用步进模拟一步退一步在联合模拟期间金宝app不支持。

当模拟运行时,请注意Gazebo模拟器和Simulink的时间是同步的。金宝app

该模型利用MATLAB函数块和MATLAB绘图功能实现了对凉亭传感器数据的可视化。以下是从凉亭相机获得的图像数据快照:

以下是激光雷达扫描图像的快照:

单元盒块位置的时间图z-direction可以使用数据检查.由于在一段时间内恒定的加速度,块轨迹呈抛物线形状。

单元盒在仿真结束时的位置为1.001,导致位移为0.5001,与期望值0.5略有不同。这是由于露台物理引擎的错误。让Gazebo物理引擎中的最大步长更小,以减少这个错误。

时间同步

在联合模拟期间,您可以在任何时候暂停Simulink和凉亭模拟器使用金宝app暂停

注意:凉亭在模拟前暂停了一次。

这是由于以下联合模拟的时间序列:

传感器数据和驱动命令在正确的时间步长交换。执行选择先步进Gazebo,然后是Simulink。金宝app模拟执行仍然在t + 1, 金宝appSimulink只是停留在前面的步骤时间,直到您恢复模型。

下一个步骤