Webots 中如何导入 STL 模型,并正确调整尺寸与颜色

虽然我是干软件编程的,但工作中总会遇到一些"计划外技能点":

机械、仿真、建模、视觉、甚至一点点工业设计。

Webots 对我来说就是一个非常友好的妥协方案

  • 买不起的设备,可以先在电脑里跑

  • 不用等硬件、不用装、不用修

  • 不会因为"线接反了"或者"电机坏了"浪费一天

当然,它也有一个相当危险的点:

功能太多,但你并不知道从哪开始用。

这篇文章就记录一个非常基础、但几乎每个人都会遇到的问题

👉 如何把自己建的静态模型,正确地放进 Webots 世界中。


一、模型从哪里来?

如果你只是想在 Webots 里摆点桌子、凳子、机台外壳、围栏之类的东西,其实不需要高精度建模。

我个人推荐两条路:

  • SolidWorks

  • Fusion 360

我这次用的是 Fusion 360 (没错,快到期了😂)。

目标很简单

我只做了一个非常朴素的工作台

  • 实际尺寸:1600 × 700 × 750 mm

  • 本质就是:一张桌子 + 四条腿

  • 细节肯定有瑕疵,但先能用最重要

Webots 里 80% 的静态模型,本质都是"占位 + 参考",不是产品级建模。

二、导出模型,准备进 Webots

建好之后,直接从 Fusion 导出即可。

常用格式:

  • .stl(最常用,也最稳)

  • .dae(Collada,带材质,但容易踩坑)

我这里直接用 STL


三、把 STL 丢进 Webots

现在进入 Webots。

1️⃣ 新建一个 World

我先简单建了一个地板,准备把工作台放进去,看看比例和效果。

2️⃣ 导入 STL 文件

直接:

  • 找到 STL

  • 拖进 Webots

然后你会看到一个非常经典的画面👇

模型大得离谱

真的大到让人想笑。

四、为什么会"超级大"?

这是几乎所有新手都会遇到的问题,原因只有一个:

👉 单位不一致

  • CAD(Fusion / SolidWorks):毫米

  • Webots(VRML):

也就是说:

复制代码
1600 mm = 1.6 m

但 Webots 并不知道你这个 STL 是毫米单位,

它会默认当成"米"来用

于是:

一个 1.6 米的桌子

变成了 1600 米的怪物


五、正确的做法:不要直接用导入的 Shape

这是一个非常重要的工程经验点。

❌ 不推荐

  • 直接用 Webots 自动生成的 Shape

  • 在原始节点上乱改

✅ 正确流程

  1. 新建一个 Solid

  2. 把 STL 放进这个 Solid 里

  3. scale 控制尺寸

  4. 顺便统一材质和颜色

六、缩放比例到底该怎么设?

我这里是一步步试出来的。

第一次尝试

复制代码
scale 0.01

👉 小了一点,但还是不对。

第二次尝试

复制代码
scale 0.001

👉 基本和真实工作台比例一致。

原因很简单:

复制代码
毫米 → 米 = ÷1000

七、加一点材质,模型就"活了"

在 Solid 里:

  • 给 Shape 加一个材质

  • 设个浅灰 / 银白

  • roughness 稍微高一点

哪怕模型很简单,一有材质,工业感马上就出来了

八、最终的文件结构(推荐习惯)

复制代码
复制代码
Solid
├─ Transform
│  └─ Shape
│     ├─ geometry (Mesh / STL)
│     └─ appearance

好处:

  • 后期可以整体移动

  • 可以加物理属性(质量 / 碰撞)

  • 不会被 Webots 自动生成的结构绑死

我的文件路径截图:

第一张是没有缩放功能:

第二张有缩放功能:

九、这一小步,其实非常关键

看起来这只是:

"把一个桌子放进 Webots"

但它解决的是后面一整条路径:

  • 工厂场景搭建

  • 机台布局

  • 机器人可达性验证

  • 视觉 / 相机位姿规划

而且最爽的一点是:

没有硬件质量问题
没有装配问题
没有"今天不想配线了"的问题


结尾

Webots 的功能确实很多,也确实容易让人迷路。

但只要你从最基础的"把东西放进去"开始,后面每一步都会自然展开。

相关推荐
小帅吖1 年前
Webots控制器编程
机器人·机器人仿真·webots