Gazebo之SDF简介
创始人
2024-11-14 07:39:26
0

Gazebo之SDF简介

  • 1. 源由
  • 2. SDF简介
  • 3. SDF世界
    • 3.1 定义World
    • 3.2 定义Physics
    • 3.3 定义Plugins
      • 3.3.1 Physics plugin
      • 3.3.2 UserCommands plugin
      • 3.3.3 SceneBroadcaster plugin
    • 3.4 定义GUI
      • 3.4.1 MinimalScene/GzSceneManager
      • 3.4.2 World control plugin
      • 3.4.3 World stats plugin
    • 3.5 Entity tree plugin
    • 3.6 定义Light
  • 4. models
    • 4.1 模型链接
    • 4.2 模型下载
  • 5. SDF测试
    • 5.1 运行SDF(模型下载本地)
    • 5.2 运行SDF(模型网络连接)
  • 6. 参考资料

1. 源由

Gazebo在Ardupilot开源3D模拟仿真上被广泛使用。

通过SDFormat(Simulation Description Format)构建Ardupilot仿真世界,并如何向其中添加模型。

2. SDF简介

Gazebo作为开源项目,为仿真带来了全新的方法,提供了完整的开发库和云服务工具箱,使仿真变得简单。

在高保真传感器数据流的现实环境中,快速迭代您的新物理设计。在安全的环境中测试控制策略,并在持续集成测试中利用仿真。

SDFormat(Simulation Description Format),有时缩写为 SDF,是一种 XML 格式,用于描述机器人模拟器、可视化和控制的对象和环境。

3. SDF世界

3.1 定义World

           ...     ...       

前两个标签定义了 XML 和 SDF 的版本。然后是 标签,所有内容都在这对标签之间。

3.2 定义Physics

     0.001     1.0  

physics 标签指定了动态引擎的类型和属性。

  • 选择 name 1ms,因为步长是1毫秒。
  • type 是动态引擎(物理库)的类型。有 Ode、Bullet、Simbody 和 Dart 等选项。我们将其设置为 ignored,因为选择物理引擎的类型尚未通过此标签完成。
  • 是仿真中每个系统与世界状态交互的最大时间。值越小,计算越精确,但需要更多的计算能力。
  • 是仿真时间与实际时间的比率。

3.3 定义Plugins

插件是一段动态加载的代码。

3.3.1 Physics plugin

  

Physics 插件对于模拟世界的动态非常重要。

3.3.2 UserCommands plugin

  

UserCommands 插件负责创建模型、移动模型、删除模型以及许多其他用户命令。

3.3.3 SceneBroadcaster plugin

  

SceneBroadcaster 插件显示我们的世界场景。

3.4 定义GUI

     ...     ...  

Gazebo GUI 有许多插件可供选择。

  • camera_fps
  • camera_tracking
  • camera_tracking_config
  • grid_config
  • image_display
  • interactive_view_control
  • key_publisher
  • marker_manager
  • minimal_scene
  • navsat_map
  • plotting
  • point_cloud
  • screenshot
  • shutdown_button
  • tape_measure
  • teleop
  • topic_echo
  • topic_viewer
  • transport_scene_manager
  • world_control
  • world_stats
  • … …

添加一些必要的插件,以使我们的世界能够具有基本的功能并运行起来。

3.4.1 MinimalScene/GzSceneManager

MinimalScene 和 GzSceneManager 使我们的世界具备基本功能并运行起来的必要插件, 负责显示我们世界的 3D 场景。它具有以下属性(大多数 GUI 插件也具有这些属性):

  • showTitleBar 如果为 true,它将在插件上方显示蓝色标题栏,标题栏显示在 </code> 标签中指定的名称。</li><li><strong>state</strong> 是插件的状态,可以使用 docked 将其停靠在其位置,也可以是 floating 状态。</li></ul><p>对于渲染引擎,我们可以选择 ogre 或 ogre2。<ambient_light> 和 <background_color> 指定场景的环境光和背景色。<camera_pose> 指定摄像机的 X、Y、Z 位置,后跟其滚动、俯仰和偏航旋转。</p> <pre><code><!-- 3D scene --> <plugin filename="MinimalScene" name="3D View"> <gz-gui> <title>3D View false docked ogre2 scene 0.4 0.4 0.4 0.8 0.8 0.8 -6 0 6 0 0.5 0 0.25 25000 false 5 5 floating false

    3.4.2 World control plugin

    负责控制整个世界。其一些属性如下:

    • 如果为 true,则在左下角会有播放/暂停按钮。
    • 标签指定发布世界统计信息(如仿真时间和实际时间)的主题。
    • 如果为 true,则 Gazebo 启动时仿真将暂停。
                   World control         false         false         72         121         1          floating                                               true     true     true     /world/world_demo/control     /world/world_demo/stats  

    3.4.3 World stats plugin

    负责显示世界统计信息,包括

    通过这些标签,我们可以选择要显示的值(展开右下角以查看这些值)。我们可以选择这些值将发布到哪个 上。让我们尝试运行世界并监听该主题。

                   World stats         false         false         110         290         1          floating                                               true     true     true     true     /world/world_demo/stats   

    3.5 Entity tree plugin

    在这个插件中,我们可以看到我们世界中的所有实体(仿真中的所有事物都被视为“实体”)。我们可以看到不同的模型、太阳以及它们的链接、视觉效果和碰撞。

       

    3.6 定义Light

    • 指定世界中的光源。光源的 可以是点光源、方向光源或聚光灯。
    • 是光源相对于 relative_to 属性中指定的框架的位置(x, y, z)和方向(滚动、俯仰、偏航);在我们的例子中(relative_to 属性被忽略)是相对于世界的。
    • 如果为 true,光源将投射阴影。 是漫反射光和镜面反射光的颜色。
    • 指定光源的衰减特性,包括:
      • 是光源的范围。
      • 是常数衰减系数,1 表示从不衰减,0 表示完全衰减。
      • 是线性衰减系数,1 表示在整个距离内均匀衰减。
      • 是二次衰减系数,为衰减添加曲率。
      • 是光源的方向,仅适用于聚光灯和方向光。
         true     0 0 10 0 0 0     0.8 0.8 0.8 1     0.2 0.2 0.2 1              1000         0.9         0.01         0.001          -0.5 0.1 -0.9  

    4. models

    可以使用已经构建好的模型,而不是自己构建模型。Gazebo Fuel 提供了数百个可以轻松添加到 Gazebo 世界中的模型。可以按以下方式添加模型。

    4.1 模型链接

    访问 Gazebo Fuel 网站,选择你喜欢的模型,然后点击模型描述页面上的 <> 图标。这将把一个 SDF 代码片段复制到你的剪贴板,然后将其粘贴到你的世界中的关闭 标签的正上方,如下所示:

              https://fuel.gazebosim.org/1.0/OpenRobotics/models/Coke       

    4.2 模型下载

    前面的方法在运行时下载你的模型,然后像这样引用它:

              model://Coke       

    从 Gazebo Fuel 下载模型保存模型,如果如下所示目录:

    world_tutorial ├── Coke └── world_demo.sdf 

    同时需要将 GZ_SIM_RESOURCE_PATH 环境变量设置为模型的父文件夹。

    $ export GZ_SIM_RESOURCE_PATH=`pwd` 

    5. SDF测试

    测试资料:SnapLearnGazebo/lesson_01_sdf

    5.1 运行SDF(模型下载本地)

    $ export GZ_SIM_RESOURCE_PATH=`pwd` $ gz sim world_demo_local.sdf 

    5.2 运行SDF(模型网络连接)

    $ export https_proxy=http:192.168.1.10:808 $ gz sim world_demo_uri.sdf 

    6. 参考资料

    【1】ArduPilot开源代码之ROS2Humble+CartographerSLAM+SITL+Gazebo
    【2】ArduPilot飞控之Gazebo + SITL + MP的Jetson Orin环境搭建
    【3】ArduPilot飞控之ubuntu22.04-Gazebo模拟
    【4】PX4模块设计之七:Ubuntu 20.04搭建Gazebo模拟器

相关内容

热门资讯

玩家攻略!werplan脚本,... 玩家攻略!werplan脚本,微乐山西威信小程序(透视)一直存在有工具(哔哩哔哩)1、在微乐山西威信...
玩家必备科技!!智星菠萝透视,... 玩家必备科技!!智星菠萝透视,微乐小程序游戏破解器下载(透视)竟然有有app(哔哩哔哩)1、用户打开...
事发当天!约局吧作必弊脚本,微... 事发当天!约局吧作必弊脚本,微信小程序微乐陕西挖坑(透视)本来真的有脚本(哔哩哔哩)1)微信小程序微...
一分钟教你!拱趴大菠萝有挂吗,... 一分钟教你!拱趴大菠萝有挂吗,微信小程序有挂吗辅助(透视)切实真的有方法(哔哩哔哩)微信小程序有挂吗...
推荐几款新版!pokemmo脚... 推荐几款新版!pokemmo脚本辅助器,微乐小程序免费黑科技是真的吗(透视)果然真的有器(哔哩哔哩)...
突发!poker world辅... 突发!poker world辅助器,微乐自建房辅助软件功能(透视)果然有有方法(哔哩哔哩)微乐自建房...
每日必看!poker红龙辅助,... 每日必看!poker红龙辅助,微乐小程序辅助多少钱(透视)切实真的是有神器(哔哩哔哩)1、每一步都需...
实测交流!智星德州插件2024... 实测交流!智星德州插件2024最新版,微乐自建房辅助工具安全吗(透视)本来存在有器(哔哩哔哩)1)微...
终于清楚!拱趴大菠萝有挂吗,微... 终于清楚!拱趴大菠萝有挂吗,微乐富足和靠谱吗(透视)本来是有器(哔哩哔哩)1、每一步都需要思考,不同...
玩家必看科普!约局吧游戏挂,微... 玩家必看科普!约局吧游戏挂,微乐江西小程序辅助器(透视)总是是真的有神器(哔哩哔哩)亲,关键说明,微...