“智能不是记住一切,而是学会如何在不同环境下保持鲁棒。”
ISSACLAB仿真数据合成方法是 “人演示 → 标注 → 变换与拼接 → 仿真回放校验 → HDF5写盘 → 训练/评估” 的Pipeline详细如下:
1. 人类遥操作采集(Teleop → Trajectory)
控制链条
输入设备(Keyboard / SpaceMouse / XR 手部追踪)
→ 计算末端执行器目标位姿 (EEF Pose, SE(2)/SE(3),相对或绝对)
→ IK 求解
→ 关节控制(PD / 力矩控制)
→ 物理仿真闭环。
相对 vs 绝对坐标
相对(Rel):鲁棒、适配场景随机化。
绝对(Abs):直观,但依赖精确配准。
采样与记录
统一时钟采样(20–50 Hz)。
保存:关节角 / EEF 位姿 / 对象位姿 / 夹爪状态 / 相机图像(必要时)。
数据策略
少而精(≥10 条高质量成功演示)优于多而杂。
失败轨迹当场丢弃,减少后续清洗。
2. 演示回放与粗筛(Replay → Curation)
一致性检验:同初始条件下回放应近似重现。若偏差大,常见原因是:IK 超限、接触不稳、轨迹抖动。
冗余裁剪:删除空转段,减少无关状态。
目标:提前剔除“不稳样本”,保留清晰演示。
3. 子任务结构化(Subtasks)
3.1 三要素
object_ref:当前交互的对象坐标系(若无对象则为 None)。
term_signal_id:子任务结束的标志(事件检测/启发式)。
interpolation_steps:拼接到下个子任务的插值步数。
原则:子任务 尽量少,边界选在“自由空间/动力学平稳”的时刻。
3.2 对象相对变换(应对随机化)
轨迹以“对象坐标系”保存。
新场景只需替换对象初始位姿,即可复用逻辑。
收益:对初始姿态、桌高、纹理随机化具鲁棒性。
3.3 线性插值(平滑拼接)
问题:子任务间 EEF 姿态不连续,出现“跳变”。
方法:在 EEF 位姿空间插值(位置线性,姿态四元数球插),再转为动作。
经验值:
0 步 → 跳变;
5 步 → 自然;
20 步 → 冗长。
4. 仿真回放校验与写盘(Success → HDF5)
4.1 成功判定
每条演示需在仿真执行并成功才写盘。
任务类型:
State 任务:仅需低维状态。
Visuomotor 任务:需记录相机图像流。
判定:依据任务布尔条件(如物块堆叠的顺序、稳定性阈值)。
4.2 HDF5 典型结构
Plain Text |
5. 两条训练分支
State-only
无相机,仅存状态序列。
任务名带 …IK-Rel-Mimic-v0。
Visuomotor
启用相机,保存图像与标定。
命令需加 --enable_cameras,并设置渲染模式。
注意:任务名 / 策略类型 / 数据集必须一致。
6. 多 EEF 与 XR 采集要点
XR 输入:Vision Pro 提供手腕位姿,Pinocchio 解决 IK 抖动;手指用 dex-retargeting。
子任务组织:如“左手 pick,右手 idle → place”。右手动作需边界标注。
协作建议:避免双臂同时大动作,方便做相对插值。
A. 子任务设计
数量少、边界清晰。
边界选在自由空间/低约束区。
终止信号应稳定可判定。
B. 相对化与插值
均以交互对象坐标系做相对化。
插值保证位姿连续,必要时保证速度/加速度 C¹ 连续。
常见插值步数:5–10。
C. 仿真回放
只写成功样本。
对边缘样本可多 seed 检查。
相机参数、渲染随机化需与训练分布匹配。
D. HDF5 数据健康
动作、状态、图像严格对齐。
元数据完整记录(任务版本、随机化参数、归一化范围)。
episode 分块存储,压缩平衡速度与体积。
E. 训练与评估
做任务级/对象级留出评估泛化。
指标:成功率、误差、稳定时间。
失败样本回流到采集规则,形成迭代闭环。
可用 DAgger 再采样缓解 compounding error。
F. 多 EEF 与 XR 特别注意
跨手约束需显式标注。
XR 噪声需滤波、限幅、标定。
建议 Pinocchio 做运动学,减少 IK 抖动。
G. 常见陷阱
子任务过多 → 拼接失败率升高。
只用绝对坐标 → 随机化场景下失效。
忽略相机 → 视觉策略训练不匹配。
归一化不一致 → 动作尺度错位。
边界标注漂移 → 相对化与插值失败。
