scenesmith / demos /README.md
yqi19's picture
Add bedroom scene, demos, Chinese documentation, and scene type guide (#1)
42f5508
|
Raw
History Blame Contribute Delete
2.46 kB
# Demo 采集说明
本目录包含从 SceneSmith 生成场景中采集的 pick-and-place demo。
## Demo 列表
| 文件 | 任务 | 场景 |
|------|------|------|
| `demo_bedroom_nightstand_to_desk.json` | 从床头柜取物放到书桌 | 卧室 |
| `demo_bedroom_nightstand_to_desk_trajectory.png` | 轨迹可视化 | 卧室 |
| `demo_bedroom_wardrobe_to_desk.json` | 从衣柜附近取物放到书桌 | 卧室 |
| `demo_bedroom_wardrobe_to_desk_trajectory.png` | 轨迹可视化 | 卧室 |
## 可视化说明
每张 `*_trajectory.png` 包含 4 个子图:
1. **3D 轨迹**:末端执行器路径,颜色区分阶段
- 蓝色 = approach(接近)
- 橙色 = pre_grasp(下降)
- 红色 = grasp(抓取)
- 紫色 = lift(提升)
- 绿色 = transport(搬运)
- 黄色 = place(放置)
2. **俯视图 (XY)**:任务路径平面投影
3. **高度时间曲线**:末端执行器(蓝实线)和物体(红虚线)Z轴变化
4. **夹爪宽度**:0 = 完全闭合,1 = 完全张开
## Demo JSON 格式
```json
{
"task": "Pick an object from the nightstand and place it on the desk",
"scene_id": "bedroom_nightstand_to_desk",
"target_object": "bedroom_nightstand_0",
"initial_pos": [-0.55, -1.73, 0.5],
"goal_pos": [0.79, 1.58, 0.85],
"goal_reference": "bedroom_desk_0",
"success": true,
"total_duration_s": 7.5,
"num_steps": 150,
"trajectory": [
{
"step_id": 0,
"phase": "approach",
"end_effector_pos": [x, y, z],
"end_effector_quat_wxyz": [w, x, y, z],
"gripper_width": 1.0,
"target_object_pos": [x, y, z],
"timestamp": 0.0
}
]
}
```
## 重要说明
本次 demo 是**脚本化轨迹**(scripted demo),不是真实 robot 采集:
- 轨迹是几何插值(直线 + 竖直升降),不来自 robot controller
- 没有物理碰撞避免
- 没有力矩控制
SceneSmith 官方不提供 robot URDF 和 policy。真实 demo 采集需要:
1. 加载 `sim_files/house.dmd.yaml` 到 Drake / MuJoCo
2. 添加 robot URDF
3.`policy_interface.py` 获取目标位姿
4. 用真实 controller 执行并记录
## 采集方法
```bash
python scripts/collect_demo.py \
--scene-state scenes/scene_01_bedroom/sim_files/house_state.json \
--dmd scenes/scene_01_bedroom/sim_files/house.dmd.yaml \
--task "Pick an object from the nightstand and place it on the desk" \
--output-dir demos/ \
--scene-id bedroom_demo
```