🤖 机器人多学科仿真软件:Webots(3)——机器人模型创建与导入


📌 目录

  1. Webots 模型系统简介
  2. 创建自定义机器人模型的基本方法
  3. 使用 PROTO 文件构建模块化机器人
  4. 导入第三方模型(如 URDF、STL)
  5. 机器人模型常见组件结构说明
  6. 动力学属性与传感器设置
  7. 模型调试技巧与注意事项
  8. 实战:导入一个 ROS 机器人模型
  9. 总结与最佳实践

1. Webots 模型系统简介

Webots 中的机器人模型是一组包含 几何、动力学、传感器、控制器 等属性的 节点树(Node Tree)。模型可以是:

  • 内置机器人(如 NAO、Pioneer)
  • 用户自定义模型
  • 通过 URDF、STL 等导入的外部模型

Webots 支持 模块化建模(通过 .proto),也允许你手动在 .wbt 世界文件中直接构造机器人。


2. 创建自定义机器人模型的基本方法

最基础的方法是直接在 .wbt 文件中使用 Robot 节点创建模型。例如:

Robot {
  translation 0 0 0
  children [
    Solid {
      translation 0 0 0.05
      geometry Box {
        size 0.1 0.1 0.1
      }
      appearance Appearance {
        material Material {
          diffuseColor 0.8 0.2 0.2
        }
      }
    }
  ]
  controller "my_controller"
}

此结构定义了一个简单的红色立方体机器人。


3. 使用 PROTO 文件构建模块化机器人

Webots 强烈推荐使用 .proto 文件来构建可重用组件或模块化机器人。

示例:创建一个基本轮式底盘

PROTO MyWheeledRobot [
  field SFVec3f    translation 0 0 0
  field SFRotation rotation    0 1 0 0
]
{
  Robot {
    translation IS translation
    rotation IS rotation
    children [
      # 添加车体、轮子等子组件
    ]
    controller "my_controller"
  }
}

优点:

  • 参数化建模
  • 易于调试和共享
  • 可以嵌套使用其他 PROTO 文件

4. 导入第三方模型(URDF、STL)

Webots 支持从多个格式导入模型:

✅ URDF 导入

可通过 ROS 工具 urdf2webots 或 Webots 提供的 importURDF 工具转换。

rosrun webots_ros import_urdf my_robot.urdf

或通过 Webots 菜单:
File → Import Robot from URDF

✅ STL/OBJ 文件导入

使用 Shape 节点引用:

Shape {
  geometry IndexedFaceSet {
    coord Coordinate { point [...] }
  }
  appearance Appearance {
    material Material { diffuseColor 1 1 1 }
  }
}

或直接:

Shape {
  geometry Mesh {
    url "my_robot.stl"
  }
}

注意:Mesh 文件仅用于可视化模型,若需物理仿真,需结合 BoundingObject 和 Physics 节点。


5. 机器人模型常见组件结构说明

典型结构如下:

Robot
├── children
│   ├── Solid(每个连接的部件)
│   │   ├── geometry(几何体)
│   │   ├── appearance(材质)
│   │   └── physics(动力学参数)
│   ├── HingeJoint / SliderJoint(关节)
│   └── Sensor(如 DistanceSensor)
└── controller(控制器脚本)

6. 动力学属性与传感器设置

每个 Solid 节点可以设置物理属性:

physics Physics {
  mass 0.5
  centerOfMass [0 0 0.05]
  inertiaMatrix [...]
}

添加传感器示例:

DistanceSensor {
  name "front_sensor"
  translation 0.1 0 0.05
  rotation 0 1 0 0
}

通过 enable(timeStep) 可在控制器中启动。


7. 模型调试技巧与注意事项

  • 使用 Webots 的 3D 视图检查坐标和连接;
  • 打开 “Scene Tree” 面板确认结构;
  • 使用控制台输出调试控制器状态;
  • 质量单位为 kg,尺寸为 m,时间为 s;
  • 避免使用空心 Mesh 作为物理实体;
  • 所有关节连接的 Solid 必须设置质量和碰撞体。

8. 实战:导入一个 ROS 机器人模型

步骤:

  1. 安装 urdf2webots 工具:sudo apt install ros-<distro>-urdf2webots
  2. 执行转换命令:urdf2webots my_robot.urdf -o my_robot_webots
  3. 在 Webots 中打开 my_robot_webots.wbt 文件。
  4. 配置 ROS 节点接口(可通过 webots_ros2 插件连接 ROS2)。

9. 总结与最佳实践

内容建议
模型复用使用 PROTO 封装参数化模型
外部导入优先使用 URDF 配合 ROS 工具链
传感器模拟使用 Webots 内置传感器节点
可视化优化使用 Mesh 渲染 + Solid 简化碰撞体
模型测试每次构建后单独测试控制器与动力学

📚 参考资料与延伸阅读


是否需要我提供该内容的 Markdown、PDF 版,或帮助你生成完整的模型构建模板(.proto)文件示例?