前言
搭建Gazebo的仿真场景是进行Gazebo仿真的第一步,Gazebo仿真场景需要尽量与实际实验环境条件相一致,保证了仿真结果对实际实验将具有很大的参考意义。通过根据不同需求调整仿真场景,快速完成多种仿真实验,完成对程序和算法的评估。同时,在仿真测试中发现,仿真模型的运动及控制效果在很大程度上受仿真场景的约束和影响,因此实现Gazebo仿真场景的搭建是至关重要的。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Gazebo世界显示
提供两种环境:陆上环境(原生环境)和水下环境
二、仿真场景介绍
1. 陆上世界
陆上世界是理想条件下的仿真环境,环境中仅有灯光和地面,物理定律在仿真环境中仍适用。仿真界面的左面板中左上角显示插入模型及其主要组成部分,左下角面板表示的是场景中物体的物理属性,其中的主界面展示了机器人在环境中的状态,上方的工具栏中包括视图选项,模型平移,旋转,伸缩及插入简单三维形状的操作。同时可以通过模型库导入模型,对模型可右键删除。
操作步骤
启动陆上世界:roslaunch gazebo_world gazebo_world.launch
- 陆上世界
- 模型库
2. 水下世界
基于第三方的API设计了两种水下世界—基于Marker定位的全景光源水下世界和水陆两栖分布式岛屿世界,两类水下世界拥有同样的基本功能,模型浸没在水中的部分受到相应的浮力,会在与重力达到平衡时达到悬停状态。水深1.5m,可按需要更改。在覆盖Marker的全景光源水下世界中,水底表面有序排列4*5种不同的ArUco码,用于机器人在水中定位,全景光源避免了机器人的投影对ArUco码识别的影响。水陆两栖分布式岛屿世界中的岛屿大小不一,形状不同,可以用于两栖球形机器人的水陆分割效果测试,静态避障和路径规划和水陆功能切换验证,具有广泛用途和使用价值【ArUco码可以模型库导入也可以直接代码插入到水下世界,光源直接在Gazebo操作界面插入,岛屿模型通过Blender三维建模后插入到水下世界代码块】
第三方API链接
水下机器人仿真相关插件
- 基于Marker定位的全景光源水下世界
- 水陆两栖分布式岛屿世界
水位调节
<visual name='ground'>
-------------------------
<pose frame=''>0 0 -1.5 0 0 0</pose>//-1.5为水位深度
-------------------------
</visual>
<collision name='ground'>
<pose frame=''>0 0 -1.5 0 0 0</pose>
------------------------
</collision>
总结
陆上世界直接使用了Gazebo官方场景,水下世界需要添加水动力的插件,使得模型在水中能够产生浮力,同时后续需要在模型中对水动力学参数进行整定,这里面的水下世界处于静水状态,未来会进一步考虑处于流动状态的水下世界,需要相关代码参考的可以私聊我,谢谢!