数据采集
数据采集是 Sim2Real 流程的第一步。通过在模拟器中手动驾驶小车,系统会同步记录摄像头图像、车辆状态和控制动作,最终导出为结构化数据集供 ACT 模型训练使用。
采集的数据格式
每个时间步采集以下数据:
| 字段 | 类型 | 说明 |
|---|---|---|
image | RGB 图像帧 | 模拟器前视摄像头画面 |
state | [vel_left, vel_right] | 左右轮速度(当前车辆状态) |
action | [vel_left, vel_right] | 左右轮控制指令 |
状态维度和动作维度均为 2,分别对应左轮速度和右轮速度。
数据采集步骤
1. 启动系统
确保后端和前端均已启动(参见快速开始),在浏览器中打开 Sim 页面。
2. 控制小车
使用键盘控制小车行驶:
| 按键 | 动作 |
|---|---|
W / ↑ | 前进 |
S / ↓ | 后退 |
A / ← | 左转 |
D / → | 右转 |
3. 开始录制
点击界面上的 "开始采集" 按钮,系统进入录制模式,此时每个控制帧的图像、状态和动作均会被记录。
4. 停止录制
完成一段演示后,点击 "停止采集" 按钮。数据会自动导出到:
output/dataset/
数据集结构
导出后的数据集组织结构如下:
output/dataset/
├── episode_0/
│ ├── images/ # 每帧图像(PNG 格式)
│ ├── states.npy # 状态序列 [N, 2]
│ └── actions.npy # 动作序列 [N, 2]
├── episode_1/
│ └── ...
└── stats.json # 数据集统计信息(均值、标准差)
stats.json 保存了状态和动作的归一化统计量,推理时也需要用到:
{
"state_mean": [0.0, 0.0],
"state_std": [1.0, 1.0],
"action_mean": [0.0, 0.0],
"action_std": [1.0, 1.0]
}
采集建议
- 数量:建议至少采集 100 个样本(帧)才能开始训练,样本越多模型越稳定
- 多样性:涵盖直行、左转、右转等多种驾驶场景,提升模型泛化能力
- 一致性:每段演示应保持合理的驾驶行为,避免急停急转等极端操作
REST API(高级用法)
数据采集功能也通过 REST API 暴露,可用于自动化脚本:
| 方法 | 路径 | 说明 |
|---|---|---|
POST | /api/episode/start | 开始采集 |
POST | /api/episode/stop | 停止采集并导出 |
GET | /api/episode/list | 列出所有 episode |
DELETE | /api/episode/{id} | 删除指定 episode |
下一步
数据采集完成后,继续进行 模型训练。