构建世界


预计完成时间:3 分钟

4.2   SDF(SDFormat)

在上一单元中,你已经学习了如何使用 URDF 文件创建机器人模型。本章将教你如何使用 SDF 文件来创建仿真世界。

什么是 SDFormat?

SDF / SDFormat 是 Simulation Description Format(仿真描述格式)的缩写。它是一种 XML 格式,用于描述机器人模拟器中的对象与环境,以及可视化和控制相关内容。SDFormat 是一种稳定、健壮且可扩展的格式,能够描述机器人、静态和动态对象、光照、地形,甚至物理属性等各个方面。

SDFormat 能做什么?

无论机器人是一个简单的带轮底盘,还是一台人形机器人,你都可以使用 SDFormat 准确描述它的各个方面。除了运动学和动力学属性之外,还可以定义传感器、表面属性、纹理、关节摩擦以及更多参数。这些能力使得 SDFormat 可被用于仿真、可视化、运动规划和机器人控制。

SDFormat 如何帮助仿真?

仿真往往需要丰富且复杂的环境,使模型能够在其中存在并发生交互。SDFormat 提供了定义多种环境的能力。一个环境中可以包含多个光源、地形、来自 OpenStreetMaps 的街道,以及在线 3D 模型仓库中的各种模型。

如何识别一个 SDFormat 文件?

一个以 XML 起始标签开头,并且包含 SDF 起止标签对的文件,就可以识别为 SDF 文件。它的扩展名不一定必须是 .sdf,也可能是 .model、.data、.xml 等。

<?xml version="1.0"?>
<sdf version="1.8">
    ...
    ...
    ...
</sdf>

好了,现在该开始设计你自己的 world 文件了。先在 robot_description 功能包里创建一个名为 worlds 的文件夹,然后在其中创建一个名为 demo_world.sdf 的 world 文件。

在 Web Shell 1 中执行

In [ ]:
cd /workspace/src/robot_description
In [ ]:
mkdir worlds
In [ ]:
cd worlds
In [ ]:
touch demo_world.sdf

现在你可以继续跟着本章的内容,把下面学到的信息逐步写进 demo_world.sdf 文件中。