文章概要
Webots 机器人模拟器完整使用指南,涵盖安装配置、界面介绍、场景搭建、控制器编程等关键内容。文末新增四大核心实战案例,包含机器人避障、PID 控制、A * 路径规划、SLAM 建图导航,配套源码与资源包可直接下载复现。
Webots 快速安装步骤
Webots 支持 Windows、macOS、Linux 三大主流操作系统,安装步骤如下:
- 下载安装包:从官方网站获取对应系统安装程序
- 运行安装向导:按提示完成安装
- 环境配置:设置必要系统环境变量
- 验证安装:启动 Webots 确认运行正常

配套实战资源包(网盘直接下载)
所有案例源码、项目工程、安装包已整理打包,可直接下载使用:
网盘链接:https://pan.baidu.com/s/1MYpOqkRoSbB-N0z9NXcFkQ 提取码:8888
资源包内容:
- webots.zip(基础教程配套工程)
- webots-path-planning.zip(A * 路径规划项目)
- webots_ros2.zip(SLAM 导航 ROS2 工程)
- Webots-micromouse_python.zip(PID + 迷宫机器人)
- webots-R2025a_setup.exe(Windows 安装包)
- e-puck-obstacle-avoidance.zip(E-puck 避障项目)
机器人仿真环境配置
创建第一个仿真项目
- 点击
File→New Project - 设置项目名称与存储路径
- 选择基础仿真环境模板
- 添加机器人模型与控制器
场景搭建基础
Webots 提供丰富环境元素库: 道路、交通设施、建筑物、障碍物、自然景观、各类传感器模型。
Webots 开发全流程解析

1. 模型设计阶段
选择机器人类型、配置传感器与执行器、设置物理属性参数。
2. 控制程序编写
支持语言:C/C++、Python、Java、MATLAB。
实时传感器数据可视化
- 传感器实时数据显示
- 3D 视图多角度观察
- 仿真性能监控
控制器与 Webots 同步机制

仿真步长控制
默认步长 32ms,可自定义调整,保证控制器与仿真器时间同步。
自动驾驶仿真实战
支持城市道路、高速公路等典型自动驾驶仿真场景。
高级仿真技巧
多机器人协同仿真
支持多机器人同一环境协同作业,适用于多智能体研究。
物理引擎配置
内置 ODE 物理引擎,支持刚体动力学、碰撞检测、关节约束。
常见问题与解决方案
仿真性能优化
调整仿真步长、合理设置传感器频率、优化 3D 模型复杂度。
学习资源推荐
官方文档
用户指南:docs/guide/ 参考手册:docs/reference/ 示例项目:projects/samples/
社区支持
官方论坛、GitHub 开源项目、在线教程与视频。
总结
Webots 是功能全面的机器人仿真平台,通过本教程可掌握基础使用方法,独立完成仿真项目开发。持续实践可实现更复杂的智能机器人系统开发。
扩展实战:Webots 四大核心落地项目(含源码 + 资源)
前文已讲解 Webots 基础安装、环境配置、仿真流程,本节补充工业与学术常用四大机器人仿真实战,所有源码可直接运行。
实战一:E-puck 机器人红外避障实战
1. 案例原理
E-puck 机器人搭载 8 路红外传感器,通过实时检测障碍物方位,动态调整左右轮转速实现自主避障。
2. 完整可运行源码(Python)
from controller import Robot, DistanceSensor, Motor
TIME_STEP = 64
MAX_SPEED = 6.28
robot = Robot()
ps = []
ps_names = ["ps0", "ps1", "ps2", "ps3", "ps4", "ps5", "ps6", "ps7"]
for name in ps_names:
sensor = robot.getDevice(name)
sensor.enable(TIME_STEP)
ps.append(sensor)
left_motor = robot.getDevice("left wheel motor")
right_motor = robot.getDevice("right wheel motor")
left_motor.setPosition(float('inf'))
right_motor.setPosition(float('inf'))
left_motor.setVelocity(0.0)
right_motor.setVelocity(0.0)
while robot.step(TIME_STEP) != -1:
ps_values = [s.getValue() for s in ps]
left_obstacle = ps_values[5] > 80 or ps_values[6] > 80 or ps_values[7] > 80
right_obstacle = ps_values[0] > 80 or ps_values[1] > 80 or ps_values[2] > 80
left_speed = MAX_SPEED * 0.5
right_speed = MAX_SPEED * 0.5
if left_obstacle:
left_speed = -MAX_SPEED * 0.3
right_speed = MAX_SPEED * 0.5
elif right_obstacle:
left_speed = MAX_SPEED * 0.5
right_speed = -MAX_SPEED * 0.3
left_motor.setVelocity(left_speed)
right_motor.setVelocity(right_speed)
3. 资源下载
上面资源包地址中:e-puck-obstacle-avoidance.zip
实战二:PID 轨迹跟踪控制实战
1. 算法原理
PID 由比例 P、积分 I、微分 D 组成,用于精准轨迹跟踪、消除稳态误差、抑制震荡。
2. 完整可运行源码(Python)
from controller import Robot, Motor, GPS
TIME_STEP = 64
MAX_SPEED = 6.28
Kp = 2.0
Ki = 0.01
Kd = 0.1
robot = Robot()
gps = robot.getDevice("gps")
gps.enable(TIME_STEP)
left_motor = robot.getDevice("left wheel motor")
right_motor = robot.getDevice("right wheel motor")
left_motor.setPosition(float('inf'))
right_motor.setPosition(float('inf'))
target_x = 0.5
target_y = 0.5
integral = 0.0
last_error = 0.0
while robot.step(TIME_STEP) != -1:
x, y, _ = gps.getValues()
error = target_x - x
integral += error * TIME_STEP / 1000.0
derivative = (error - last_error) / (TIME_STEP / 1000.0)
last_error = error
output = Kp * error + Ki * integral + Kd * derivative
left_motor.setVelocity(MAX_SPEED*0.5 + output)
right_motor.setVelocity(MAX_SPEED*0.5 - output)
3. 资源下载
上面资源包中:Webots-micromouse_python.zip
实战三:A * 全局路径规划(含可视化)
1. 算法原理
A* = 最优路径搜索算法,公式:f(n) = g(n) + h(n) g:实际代价 h:预估代价
2. 完整可运行源码(Python)
import math
class Node:
def __init__(self, x, y):
self.x = x
self.y = y
self.g = 0
self.h = 0
self.f = 0
self.parent = None
def astar(grid, start, end):
open_list = []
closed_list = []
start_node = Node(*start)
end_node = Node(*end)
open_list.append(start_node)
while open_list:
current = min(open_list, key=lambda n: n.f)
open_list.remove(current)
closed_list.append(current)
if current.x == end_node.x and current.y == end_node.y:
path = []
while current:
path.append((current.x, current.y))
current = current.parent
return path[::-1]
neighbors = [(-1,0),(1,0),(0,-1),(0,1)]
for dx, dy in neighbors:
nx, ny = current.x + dx, current.y + dy
if 0 <= nx < len(grid) and 0 <= ny < len(grid[0]) and grid[nx][ny] == 0:
neighbor = Node(nx, ny)
if neighbor in closed_list:
continue
neighbor.g = current.g + 1
neighbor.h = math.hypot(nx-end_node.x, ny-end_node.y)
neighbor.f = neighbor.g + neighbor.h
neighbor.parent = current
if neighbor not in open_list:
open_list.append(neighbor)
return None
3. 资源下载
上面资源包中:webots-path-planning.zip
实战四:SLAM 建图与自主导航(Webots+ROS2)
1. 案例功能
- 激光雷达环境建模
- Cartographer SLAM 建图
- A * 全局规划 + DWA 局部避障
- 自主导航、定点巡航
2. 部署命令
git clone https://github.com/cyberbotics/webots_ros2.git
cd webots_ros2
colcon build
source install/setup.bash
ros2 launch webots_ros2_epuck rats_life_launch.py
3. 资源下载
上面资源包中:webots_ros2.zip
扩展实战总结
本文四大案例覆盖机器人感知避障、运动控制、路径规划、SLAM 导航四大核心技术栈,所有源码与工程文件已整理至网盘,可直接下载运行,适合学习、课程设计、毕业设计与项目开发使用。