构建机器人


预计完成时间:10 分钟

2.5   网格模型

网格模型可以用来创建更复杂的三维几何形状。设想一下,你手上有一台真实机器人,整个项目是用 CAD 软件完成的,现在你想对它进行仿真,那么你通常会直接拥有模型文件。URDF 支持 .stl.dae 文件,其中后者通常能提供更好的显示效果。

下面来看如何在你当前制作的机器人中使用网格模型。

进入底盘的 visual 部分,并将下面这段代码替换掉:

<geometry>
    <box size="2 1.3 0.4" />
</geometry>

替换为以下内容:

  复制并粘贴

In [ ]:
<geometry>
    <mesh filename="package://robot_description/meshes/chassis.stl" />
</geometry>

URDF 支持 package:// 这种写法,可以通过相对路径更方便地找到文件。这也意味着你的功能包中必须有一个 meshes 文件夹。先创建这个文件夹,然后上传下面的文件:

  在 Web Shell 3 中执行

In [ ]:
mkdir -p /workspace/src/robot_description/meshes/

将这个 chassis.stl 文件下载到你的电脑中,并放进你在 robot_description 功能包里创建的 meshes 文件夹。

"Mesh File Drag and Drop"

meshes 文件夹添加到 setup.py 中,这样下次编译时就能检测到 *.stl 文件。

此时你的 setup.py 文件应该包含下面这四行:

(os.path.join('share', package_name, 'urdf'), glob('urdf/*.urdf')),
(os.path.join('share', package_name, 'rviz'), glob('rviz/*.rviz')),
(os.path.join('share', package_name, 'meshes'), glob('meshes/*.stl')),
(os.path.join('share', package_name, 'launch'), glob('launch/*.launch.*')),

重新启动 rviz.launchJoint State Publisher GUI,你应该看到如下结果:

"Robot Chassis Mesh"

注意,这个 .stl 文件会沿用基础几何体所设置的材质颜色。

- 练习 2.3.1 -

为车轮也添加一个网格模型文件。

使用下面这个文件:

调整轮毂盖的可视效果,让机器人尽量接近下图所示的样子:

"Robot Wheel Mesh"

- 练习 2.3.1 结束 -
- 练习 2.3.1 参考答案 -

在自己尝试完成练习之前,不要先看答案。完成后再查看参考答案,会更方便你对比自己的实现。

如果你在完成练习时遇到问题,可以到论坛寻求支持。

robot.urdf

- 练习 2.3.1 参考答案结束 -