在Simulink和Gazebo之间进行联合仿真万博1manbetx
本例展示了如何在Simulink™和Gazebo之间设置同步模拟,以便从Gazebo发送命令和接收数据。万博1manbetx
设置凉亭模拟环境
对于本例,使用您自己的带有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进行联合仿真。万博1manbetxxml
身体:
<插件名称=“GazeboPlugin”文件名=“lib / libGazeboCoSimPlugin.so”> < portNumber > 14581 < / portNumber > < /插件>
filename字段必须指向已编译的Gazebo插件的位置。这个路径可以相对于Gazebo本身的启动位置,或者你可以通过运行以下命令将它添加到Gazebo插件搜索路径:
出口GAZEBO_PLUGIN_PATH = $ {GAZEBO_PLUGIN_PATH}: / home / user / src / GazeboPlugin /出口
配置凉亭联合仿真
打开performCoSimulationWithGazebo
模型,演示了如何从这些模拟传感器接收传感器数据,以及如何从Simulink中驱动单元盒模型。万博1manbetx
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
.创建一个空白ApplyLinkWrench
信息使用凉亭空白消息.指定消息的元素,以便将力应用于unit_box /链接
实体使用总线分配块。使用露台读来输出盒子的ground truth姿态。箱体在1秒内的位移应接近0.5米。
执行联合仿真
要开始联合仿真,单击运行.您还可以使用一步.退一步在联合模拟期间万博1manbetx不支持。
在模拟运行时,请注意Gazebo模拟器和Simulink时间是同步的。万博1manbetx
该模型利用MATLAB函数块和MATLAB绘图功能对Gazebo传感器数据进行可视化。以下是从Gazebo相机获得的图像数据快照:
以下是激光雷达扫描图像的快照:
单元盒块的位置的时间图z-direction可以使用数据检查.由于随时间的恒定加速度,块沿抛物线形状运动。
模拟结束时单元箱位置为1.001,位移为0.5001,与期望值0.5略有差异。这是由于Gazebo物理引擎的错误。使Gazebo物理引擎的最大步长更小,以减少这种错误。
时间同步
在联合仿真过程中,您可以随时暂停Simulink和凉亭模拟器使用万博1manbetx暂停
注意:凉亭在模拟开始前暂停一段时间。
这是由于以下联合模拟时间序列:
传感器数据和驱动命令在正确的时间步长交换。执行时选择先踩凉亭,再踩Simulink。万博1manbetx模拟执行仍在进行t + 1, 万博1manbetxSimulink只停留在前一步时间上,直到您恢复模型。