主要内容

在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编译CD使

插件位置为/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

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

  • 单元箱型号:unit_box

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

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

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

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

配置Gazebo联合仿真

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

open_system (“performCoSimulationWithGazebo”

在模拟模型之前,配置Gazebo Co-Simulation using露台Pacer布洛克:

hilite_system (“performCoSimulationWithGazebo /露台Pacer”

打开该块并单击配置Gazebo网络和模拟设置链接。

open_system (“performCoSimulationWithGazebo /露台Pacer”

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

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

获取传感器数据

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

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

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

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

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

驱动凉亭模型

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

执行联合仿真

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

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

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

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

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

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

时间同步

在联合仿真过程中,您可以随时暂停Simulink和Gazebo Simu金宝applator暂停

注意:Gazebo在模拟之前暂停了一个时间步骤。

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

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

下一个步骤