0 前言
官方文档:https://isaac-sim.github.io/IsaacLab/main/source/overview/teleop_imitation.html
1 遥操作
isaaclab中提供了SE(2) 和 SE(3) 空间的接口用于描述刚体运动的指令。
SE(2) 空间的指令接口:SE(2) 描述的是 二维平面内的刚体运动(如移动机器人、AGV)。
返回的指令:
[
v
x
,
v
y
,
ω
z
]
[v_x, v_y, ω_z]
[vx,vy,ωz]
v
x
v_x
vx:沿 x 轴 的线速度(前进/后退)。
v
y
v_y
vy:沿 y 轴 的线速度(左右平移)。
ω
z
ω_z
ωz:绕 z 轴 的角速度(偏航速率,即转向速度)。 SE(3) 空间的指令接口:SE(3) 描述的是 三维空间中的刚体运动(如无人机、机械臂)。
返回的指令:
[
v
x
,
v
y
,
v
z
,
ω
x
,
ω
y
,
ω
z
]
[v_x, v_y, v_z, ω_x, ω_y, ω_z]
[vx,vy,vz,ωx,ωy,ωz]
v
x
,
v
y
,
v
z
v_x, v_y, v_z
vx,vy,vz:沿 x/y/z 轴 的线速度。
ω
x
,
ω
y
,
ω
z
ω_x, ω_y, ω_z
ωx,ωy,ωz:绕 x/y/z 轴 的角速度(滚转、俯仰、偏航)。
要使用键盘设备进行反向运动学 (IK) 控制:
./isaaclab.sh -p scripts/environments/teleoperation/teleop_se3_agent.py --task Isaac-Lift-Cube-Franka-IK-Rel-v0 --num_envs 1 --teleop_device keyboard
同样的可以使用 SpaceMouse等专业的 6 自由度(6-DoF)输入设备进行控制。变化--teleop_device spacemouse
./isaaclab.sh -p scripts/environments/teleoperation/teleop_se3_agent.py --task Isaac-Lift-Cube-Franka-IK-Rel-v0 --num_envs 1 --teleop_device spacemouse
NVIDIA Isaac Lab 结合 CloudXR 和 手部追踪 技术,提供了一种 沉浸式机器人遥操作方案,适用于需要高精度空间控制的任务(如装配、抓取、堆叠等)。
./isaaclab.sh -p scripts/environments/teleoperation/teleop_se3_agent.py --task Isaac-Stack-Cube-Franka-IK-Abs-v0 --teleop_device handtracking_abs --device cpu
键盘控制的指令映射(SE(3) 空间)
操作类型按键功能说明重置指令R将所有速度/位姿指令归零(急停)。夹爪控制K切换夹爪的打开/关闭状态。平移控制x 轴(前后)W/S沿机器人基坐标系的 x 轴正/负向移动。y 轴(左右)A/D沿 y 轴正/负向移动。z 轴(上下)Q/E沿 z 轴正/负向移动。旋转控制绕 x 轴(滚转)Z/X正/负方向旋转(如机械臂“侧翻”)。绕 y 轴(俯仰)T/G正/负方向旋转(如机械臂“点头”)。绕 z 轴(偏航)C/V正/负方向旋转(如机械臂“水平转向”)。
SpaceMouse 控制的指令映射(SE(3) 空间)
操作类型输入方式功能说明重置指令右键点击将所有指令归零。夹爪控制左键点击切换夹爪状态。平移控制x/y 轴(平面)倾斜 SpaceMouse 手柄沿 x/y 轴平移(灵敏度由倾斜幅度决定)。z 轴(上下)推/拉 SpaceMouse 手柄沿 z 轴升降。旋转控制扭转 SpaceMouse 手柄绕各轴旋转(自然映射到机器人姿态)。
2 模仿学习
通过遥操作设备(如键盘或 SpaceMouse)收集人类示范数据,是 Learning from Demonstrations (LfD) 的核心步骤。NVIDIA Isaac Lab 提供工具将数据存储为 HDF5 格式,便于后续训练策略网络。
Collecting Demonstrations(收集数据) 案例:为任务 Isaac-Stack-Cube-Franka-IK-Rel-v0(机械臂堆叠方块:按顺序堆叠方块(蓝→红→绿)。)收集人类示范数据,存储为 HDF5 格式,用于后续模仿学习(LfD)。
创建数据集目录:mkdir -p datasets收集数据:通过指定遥操作设备运行 record_demos.py 可选择的设备类型:spacemouse, keyboard, handtracking, handtracking_abs, dualhandtracking_abs ./isaaclab.sh -p scripts/tools/record_demos.py --task Isaac-Stack-Cube-Franka-IK-Rel-v0 --teleop_device
高质量示范的要点:
单次示范时长建议 10-30秒,避免冗余动作。机械臂路径应 直线接近目标,减少曲折运动。
❌ 绕远路调整姿态 → ✅ 直接移动至目标上方再下降。 操作时避免停顿,保持流畅的轨迹。(策略难以学习“何时暂停”的隐含逻辑。)按 R 键可 丢弃当前示范 并重置环境,重新开始录制。
Pre-recorded Demonstrations(预录制示范数据集) 我们提供了一个预先录制的dataset.hdf5包含 10 个真人演示的数据Isaac-Stack-Cube-Franka-IK-Rel-v0 集。如果您不想收集自己的演示,可以下载此数据集并在后续教程步骤中使用。
Generating additional demonstrations(Isaac Lab Mimic 自动生成额外示范数据)
Isaac Lab Mimic是一种基于少量人类示范自动扩展数据集 的工具,通过算法模拟生成更多样化的示范数据,提升模仿学习策略的泛化能力。 Mimic 的两种环境模式
环境类型输入数据输出策略适用算法Isaac-Stack-Cube-Franka-IK-Rel-Mimic-v0机器人状态(关节角度、末端位姿等)状态控制(State-Based)行为克隆(BC)、GAILIsaac-Stack-Cube-Franka-IK-Rel-Visuomotor-Mimic-v0视觉输入(摄像头图像)视觉运动策略(Visuomotor)CNN+BC、强化学习
第一步:标注原始数据
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/annotate_demos.py \
--device cuda \
--task Isaac-Stack-Cube-Franka-IK-Rel-Mimic-v0 \
--auto \
--input_file ./datasets/dataset.hdf5 \
--output_file ./datasets/annotated_dataset.hdf5
#--auto 启用自动标注模式(无需手动标记)
#--task 必须与后续生成环境一致(此处为状态控制任务)
- 自动分割子任务:将连续示范数据拆解为逻辑单元(如“抓取蓝色方块”→“移动到目标位置”→“放置”)。
- 添加语义标签:为每段数据标记其所属的子任务阶段,供 Mimic 针对性生成变体。
第二步:使用 Isaac Lab Mimic 小批量生成一些额外的演示(检查辅助)
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cuda --num_envs 10 --generation_num_trials 10 \
--input_file ./datasets/annotated_dataset.hdf5 --output_file ./datasets/generated_dataset_small.hdf5
#--num_envs 并行环境数(GPU 内存不足时需调低)
#--generation_num_trials 总生成数据量(此处仅生成10条用于验证)
- 测试生成效果:检查生成的数据是否物理合理(如无碰撞、轨迹平滑)。
- 调试参数:调整噪声强度、初始位姿扰动等超参数。
第三步:全量生成
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cuda --headless --num_envs 10 --generation_num_trials 1000 \
--input_file ./datasets/annotated_dataset.hdf5 --output_file ./datasets/generated_dataset.hdf5
#GPU 较弱(如笔记本) --num_envs 5,降低并行数
#GPU 强大(如台式机) --num_envs 20,加速生成
- 规模化生成:生产足够数据(1000条)供策略训练。
- 性能优化:--headless 禁用渲染,--num_envs 最大化利用 GPU。
Robomimic框架
Robomimic 是由 NVIDIA 和伯克利联合开发的 模仿学习(Imitation Learning)开源框架,支持行为克隆(BC)、GAIL 等算法,专为机器人任务设计。 要安装 robomimic 框架,请使用以下命令:
# install the dependencies
sudo apt install cmake build-essential
# install python module (for robomimic)
./isaaclab.sh -i robomimic
Training an agent(训练一个智能体) 使用Mimic 生成的数据可以训练一个状态基 BC 策略Isaac-Stack-Cube-Franka-IK-Rel-v0,或者视觉运动 BC 策略Isaac-Stack-Cube-Franka-IK-Rel-Visuomotor-v0
./isaaclab.sh -p scripts/imitation_learning/robomimic/train.py \
--task Isaac-Stack-Cube-Franka-IK-Rel-v0 --algo bc \
--dataset ./datasets/generated_dataset.hdf5
./isaaclab.sh -p scripts/imitation_learning/robomimic/train.py \
--task Isaac-Stack-Cube-Franka-IK-Rel-Visuomotor-v0 --algo bc \
--dataset ./datasets/generated_dataset.hdf5