Webots 简介R2025a
什么是 Webots?
Webots 是一个开源的机器人仿真软件,由 Cyberbotics 公司开发。它提供了一个完整的开发环境,用于模拟移动机器人、机械臂、无人机等各种机器人系统。Webots 广泛应用于机器人研究、教育和工业应用。它最初是作为研究移动机器人中的各种控制算法的研究工具而开发的。 自 2018 年 12 月起,Webots 在 Apache 2.0 许可下作为开源软件发布。
Webots 具有强大的3D物理仿真引擎,支持多种编程语言(C/C++、Python、Java、MATLAB等),提供丰富的传感器和执行器模型,是机器人学习和开发的理想平台。
Webots 的主要特点:
C/C++、Python、Java、MATLAB等
Webots 的应用领域
Webots 广泛应用于机器人研究、教育、工业仿真等领域。它可以帮助开发者快速原型设计、测试算法、验证控制系统,而无需昂贵的硬件设备。
官方网站与资源
Webots 官网:https://www.cyberbotics.com/
Webots 文档:https://www.cyberbotics.com/doc/guide/index
Webots 用户界面
Webots 提供了直观的用户界面,包括3D场景视图、场景树、控制台等主要组件。了解用户界面对于高效使用Webots至关重要。
仿真菜单 (Simulation Menu)
仿真菜单是Webots中最重要的菜单之一,提供了控制仿真运行的各种选项:
仿真控制按钮
播放 (Play) - 开始或继续仿真
暂停 (Pause) - 暂停当前运行的仿真
单步 (Step) - 执行一个仿真步骤
快进 (Fast) - 以最快速度运行仿真
实时 (Real Time) - 以实时速度运行仿真
重载 (Reload) - 重新加载当前世界文件
重置 (Reset) - 将仿真重置到初始状态
场景树操作
场景树显示了仿真世界中的所有对象层次结构,提供了丰富的编辑功能:
场景编辑操作
添加节点 - 向场景中添加新的对象或节点
前插节点 - 在选中节点之前插入新节点
后插节点 - 在选中节点之后插入新节点
删除节点 - 删除选中的节点
上移节点 - 将选中节点向上移动
下移节点 - 将选中节点向下移动
视图控制
3D视图提供了多种控制选项来观察和操作仿真场景:
3D视图操作
旋转视图 - 围绕场景旋转摄像机
平移视图 - 平移摄像机位置
视图切换 - 切换不同的观察视角
截图功能 - 保存当前3D视图截图
恢复视图 - 恢复默认视图设置
文件菜单操作
文件菜单允许您执行常规的文件操作:加载、保存等。以下是各个菜单项的详细说明:
新建子菜单
新建子菜单允许您创建新的模拟文件:
项目和文件创建
新建项目目录... - 创建包含多个子目录的项目目录,用于存储世界文件、控制器文件、数据文件、插件等
新世界文件... - 在当前模拟项目中创建简单的世界文件,可包含矩形竞技场等组件
新建机器人控制器... - 创建新的机器人控制器程序,支持C、C++、Java、Python或MATLAB
新建物理插件... - 创建新的物理插件,支持C或C++编程语言
New PROTO... - 创建新的PROTO节点,可定义名称、标签和基础节点
文件操作
基本的文件打开、保存和管理操作:
世界文件操作
开放世界... - 打开文件选择对话框,选择要加载的".wbt"文件
打开最近的世界 - 从子菜单列表中选择最近打开的".wbt"文件
打开示例世界 - 列出所有可用的示例世界,支持搜索功能
保存世界 - 使用当前文件名保存当前世界
将世界另存为... - 使用新文件名保存当前世界
重新加载世界 - 从保存版本重新加载当前世界并重新启动模拟
重置模拟 - 恢复模拟的初始状态,比重新加载更快
文本文件操作
文本编辑器相关的文件操作:
文本编辑功能
新建文本文件 - 在文本编辑器中打开空文本文件
打开文本文件... - 选择要加载的文本文件(如".java"文件)
保存文本文件 - 保存当前文本文件
将文本文件另存为... - 使用新文件名保存当前文本文件
保存所有文本文件 - 保存所有打开和未保存的文本文件
恢复文本文件 - 从保存版本重新加载文本文件
媒体和分享功能
截图、录制和分享功能:
媒体操作
截取屏幕截图... - 截取Webots中当前视图的屏幕截图,保存为PNG或JPG格式
制作影片... - 创建MPEG影片(Linux和macOS)或AVI影片(Windows),支持加速和慢动作录制
共享... - 将当前世界导出为交互式3D场景或录制3D动画并发布到HTML5网页
重要提示
- 文件位置:".wbt"文件应保存在Webots项目目录的"worlds"子目录中
- 备份建议:保存操作会覆盖文件内容,建议手动创建安全副本
- 加载进度:世界文件加载超过2秒时会显示进度窗口,可以取消加载
- 影片录制:仅在Webots步骤期间捕获帧,暂停时不录制
编辑菜单 (Edit Menu)
编辑菜单提供常用的文本编辑功能,用于操作在文本编辑器中打开的文件,如复制、粘贴、剪切等。
基本编辑操作
复制 (Copy) - 复制选中的文本内容
粘贴 (Paste) - 粘贴剪贴板中的内容
剪切 (Cut) - 剪切选中的文本内容
查找和替换 - 文本搜索和替换功能
视图菜单 (View Menu)
视图菜单允许您控制仿真窗口中的显示效果和观察方式。
对象跟随功能
视点控制
跟随对象 (Follow Object) - 在固定视点和跟随移动对象之间切换
恢复视点 (Restore Viewpoint) - 恢复视点到文件加载时的初始设置
移动视点到对象 - 将视点居中并缩放到选中的节点
视图方向控制
方向切换
前视图 (Front View) - 切换到前方观察视角
后视图 (Back View) - 切换到后方观察视角
左视图 (Left View) - 切换到左侧观察视角
右视图 (Right View) - 切换到右侧观察视角
顶视图 (Top View) - 切换到顶部观察视角
底视图 (Bottom View) - 切换到底部观察视角
渲染模式
显示选项
透视投影 (Perspective Projection) - 自然投影模式,远处物体显示较小
正交投影 (Orthographic Projection) - 距离不影响物体大小,平行线保持平行
普通渲染 (Plain Rendering) - 显示几何面、材质、颜色和纹理
线框渲染 (Wireframe) - 仅显示可渲染图元的线段
可选渲染功能
调试显示
- 显示坐标系 - 在3D窗口右下角显示全局坐标系(红绿蓝箭头代表x、y、z轴)
- 显示所有边界对象 - 显示所有边界对象(白线表示,碰撞时变为玫瑰色,静止时变为蓝色)
- 显示接触点 - 显示碰撞检测引擎生成的接触点
- 显示连接器轴 - 显示连接器轴(黑色表示旋转对齐,绿蓝色表示y和z轴)
- 显示关节轴 - 显示关节轴(黑线表示)
- 显示测距仪视锥 - 显示每个测距仪的OpenGL裁剪视锥和记录图像(黄色线框)
- 显示激光雷达射线路径 - 显示每个激光雷达的激光射线路径(青色线框)
- 显示摄像头视锥 - 显示每个摄像头的视锥和记录图像(洋红色线框)
- 显示距离传感器射线 - 显示距离传感器的射线(红线,碰撞点后变绿)
- 显示光传感器射线 - 显示光传感器的射线(黄线)
- 显示法线 - 显示IndexedFaceSet和Mesh节点的法线(洋红色或黄色)
仿真菜单 (Simulation Menu)
仿真菜单用于控制仿真模式和运行状态。
仿真控制
暂停 (Pause) - 暂停仿真运行
单步 (Step) - 执行一个基本时间步的仿真
实时 (Real-time) - 以实时速度运行仿真
快速 (Fast) - 以最快速度运行仿真
渲染 (Rendering) - 启用或禁用图形渲染(禁用可提高仿真速度)
其他重要菜单
构建菜单 (Build Menu)
叠加菜单 (Overlays Menu)
提供渲染设备叠加(摄像头、显示器、测距仪)的特定操作,可以显示或隐藏单个设备的叠加图像。
工具菜单 (Tools Menu)
常用工具
- 3D视图 - 显示或隐藏3D窗口
- 场景树 - 打开场景树窗口进行世界编辑
- 文本编辑器 - 打开Webots文本编辑器
- 文档 - 显示或隐藏离线Webots文档窗口
- 恢复布局 - 恢复主窗口面板的出厂布局
- 清除所有控制台 - 清除所有已打开控制台的内容
- 首选项 - 打开设置窗口
帮助菜单 (Help Menu)
帮助和支持
关于... - 显示许可证信息
- Webots导览... - 启动展示Webots功能的导览示例
- 检查更新... - 检查是否有新版本可用
- OpenGL信息... - 显示当前OpenGL硬件和驱动信息
主工具栏和速度计
工具栏功能
显示/隐藏场景树 - 控制场景树的显示状态
添加节点 - 从Webots库中插入节点或对象
- 速度计 - 显示仿真相对于实时的运行速度
- 虚拟时间 - 显示格式为H:MM:SS:MMM的虚拟时间
基本时间步可在WorldInfo节点的basicTimeStep字段中设置,以虚拟时间毫秒为单位表示。
开始使用 Webots
准备好开始你的Webots机器人仿真之旅了吗?从基础教程开始,逐步掌握机器人仿真的各个方面。
安装 Webots
点击下载 Webots(官网下载)
在 Webots 中使用 Python
Webots 的 Python API 是参考 C++ API 设计的,因此它们的类层次结构、类名和函数名几乎相同。Python API 目前由大约25个类组成,包含约200个公共函数,位于名为 controller
的模块中。这些类要么是场景树节点的表示(如 Robot、LED 等),要么是实用工具类(如 Motion、ImageRef 等)。
Webots 的 Python API 支持 Python 3.7 及以上版本。除了 Webots 内置编辑器外,还可以使用 PyCharm 来编辑和启动 Python 控制器。
使用 PyCharm 的配置要求
要在 PyCharm 中编辑和运行 Webots Python 控制器,需要进行以下配置:
PyCharm 配置步骤
- 打开项目:在 PyCharm 中打开 Webots 控制器目录
- 添加 API 路径:在"项目结构"中添加
WEBOTS_HOME/lib/controller/python
目录
- 配置环境变量:在"运行配置"中设置系统相关的库路径
- 设置外部控制器:在 Webots 中将机器人控制器设为
<extern>
- 调试运行:先在 Webots 中启动仿真,再在 PyCharm 中运行代码
环境变量配置
- Windows:PATH 添加
WEBOTS_HOME\lib\controller
和 WEBOTS_HOME\msys64\mingw64\bin
- Linux:LD_LIBRARY_PATH 添加
WEBOTS_HOME/lib/controller
- macOS:DYLD_LIBRARY_PATH 添加
WEBOTS_HOME/lib/controller
Python 安装配置
Webots 使用标准的 python
命令行启动 Python。它会执行当前 PATH 中找到的第一个 python 二进制文件。如果要使用不同版本的 Python,请安装所需版本并配置环境,使其成为从终端命令行调用时的默认 python 版本。
配置不同 Python 版本
- 全局设置:在 Webots 首选项的"常规"选项卡中更改默认 Python 命令(如设置为
python3.8
)
- 控制器专用:编辑控制器目录中的
runtime.ini
文件,在 [python]
部分设置 COMMAND 值
- Shebang 头:在 Linux 和 macOS 上,可在 Python 文件开头使用如
#!/usr/bin/env python3.8
各平台安装说明
Linux 系统
大多数 Linux 发行版已预装 Python 3。检查已安装的 Python 版本:
python --version
或
python3 --version
macOS 系统
可从 Python 官网 或使用 Homebrew 安装。建议在首选项中设置 python3 可执行文件的绝对路径。
/Library/Frameworks/Python.framework/Versions/3.x/bin/python3
Windows 系统
从 Python 官网 安装最新版本,并将 python.exe
所在路径添加到 PATH 环境变量中。
在 CMD 中输入 python --version
验证安装是否正确。
Python 库依赖
某些示例仿真(如视觉跟踪示例)需要 OpenCV 和 NumPy 库。使用 pip 安装 opencv-python 时会自动安装 NumPy。
安装 OpenCV 库
- Linux:
sudo apt-get install python3-pip && sudo pip3 install opencv-python
- macOS:
pip install opencv-python --user
- Windows:
PYTHON_PATH\Scripts\pip.exe install opencv-python
参考资料:详细的 Python API 文档请参阅 Webots Python 使用指南。