主要内容

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

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

设置凉亭模拟环境

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

有关Linux VM的详细信息以及使用Gazebo设置自己的Linux环境的要求,请参见凉亭模拟环境的要求和限制

如果使用您自己的Linux环境,请遵循下面的步骤手动安装Gazebo插件.否则,转到发射凉亭模拟环境

手动安装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”);结束

发射凉亭模拟环境

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

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

这些命令启动Gazebo模拟器,包括:

  • 两台激光测距仪:hokuyo0而且hokuyo1

  • 两个RGB相机:camera0而且camera1

  • 两个深度摄像头:depth_camera0而且depth_camera1

  • 2个IMU传感器:imu0而且imu1

  • 单元盒型号:unit_box

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

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

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

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

配置凉亭联合仿真

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

open_system (“performCoSimulationWithGazebo”

在模拟模型之前,使用配置凉亭联合仿真露台Pacer布洛克:

hilite_system (“performCoSimulationWithGazebo /露台Pacer”

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

open_system (“performCoSimulationWithGazebo /露台Pacer”

网络地址下拉,选择自定义.输入Linux机器的IP地址。默认的港口因为凉亭是14581.集响应超时到10秒。

单击测试按钮测试与正在运行的凉亭模拟器的连接。

获取传感器数据

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

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

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

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

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

启动凉亭模型

使用凉亭应用命令块上施加恒定的力z-指向单位框的方向,导致加速度为1 / 年代 2 .创建一个空白ApplyLinkWrench信息使用凉亭空白消息.指定消息的元素,以便将力应用于unit_box /链接实体使用总线分配块。使用露台读来输出盒子的ground truth姿态。箱体在1秒内的位移应接近0.5米。

执行联合仿真

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

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

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

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

单元盒块的位置的时间图z-direction可以使用数据检查.由于随时间的恒定加速度,块沿抛物线形状运动。

模拟结束时单元箱位置为1.001,位移为0.5001,与期望值0.5略有差异。这是由于Gazebo物理引擎的错误。使Gazebo物理引擎的最大步长更小,以减少这种错误。

时间同步

在联合仿真过程中,您可以随时暂停Simulink和凉亭模拟器使用金宝app暂停

注意:凉亭在模拟开始前暂停一段时间。

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

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

下一个步骤