使用 SkillGen 自动生成示范#
SkillGen 通过集成运动规划,扩展了 Isaac Lab Mimic 的示范生成能力。它结合人工提供的子任务片段与自动运动规划,生成高质量、可适应不同场景且无碰撞的机器人示范。
什么是 SkillGen?#
SkillGen 解决了传统示范生成的几项局限:
运动质量 :使用 cuRobo 的 GPU 加速运动规划器生成平滑、无碰撞的轨迹。
有效性 :在技能片段之间生成运动学可行的运动规划。
多样性 :通过可配置的采样与规划参数生成多样化示范。
适应性 :在数据生成过程中,使示范适应新的物体位置和场景配置。
系统从人工标注的人类示范中提取局部子任务技能(见 SkillGen 中的子任务 ),再使用 cuRobo 在技能片段之间规划可行运动,同时满足机器人运动学和碰撞约束。
前置要求#
使用 SkillGen 前,需要了解:
遥操作 :如何通过键盘、SpaceMouse 或手部跟踪控制机器人并录制示范。
Isaac Lab Mimic :包括数据采集、标注、生成和策略训练在内的完整工作流。
重要
使用 SkillGen 前,请先仔细阅读 使用 Isaac Lab Mimic 进行合成数据生成与模仿学习 文档。
安装#
SkillGen 需要 Isaac Lab、Isaac Sim 和 cuRobo。请在 Isaac Lab 环境(uv 或 conda)中按以下步骤操作,安装方式应与步骤 1 一致。
步骤 1:安装并验证 Isaac Sim 和 Isaac Lab#
按官方 Isaac Sim 与 Isaac Lab 安装指南中的 包含 Isaac Sim 的 Python 环境 操作。
步骤 2:安装 cuRobo#
cuRobo 为 SkillGen 提供运动规划能力。请使用 CUDA 13.0 工具包( nvcc )编译,与 Isaac Lab 的 PyTorch 构建版本匹配。工具包只在构建时需要;运行时库由 PyTorch 和 Isaac Sim 提供。通过 CUDA_HOME 和 PATH 选择编译器,不要将工具包的库加入 LD_LIBRARY_PATH 。
在 Ubuntu x86_64 上安装主机编译器和 Git:
sudo apt-get update
sudo apt-get install -y build-essential git
从 NVIDIA 软件源安装 CUDA 13.0(工具包不会改动驱动;在 Ubuntu 22.04 上,请将 ubuntu2404 替换为 ubuntu2204 ):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-0
然后构建 cuRobo,并安装到 Isaac Lab 环境。在 Isaac Lab 仓库根目录运行以下命令。 uv sync 会在项目虚拟环境( .venv )不存在时创建它,并为构建提供 PyTorch。由于 uv pip 不支持从 Git URL 进行可编辑安装,需要先克隆 cuRobo 仓库:
uv sync && \
uv pip install setuptools wheel && \
export CUDA_HOME=/usr/local/cuda-13.0 && \
export PATH="$CUDA_HOME/bin:$PATH" && \
export TORCH_CUDA_ARCH_LIST="8.0+PTX" && \
git clone https://github.com/NVlabs/curobo.git src/nvidia-curobo && \
git -C src/nvidia-curobo checkout ebb71702f3f70e767f40fd8e050674af0288abe8 && \
uv pip install -e ./src/nvidia-curobo --no-build-isolation
conda install -c nvidia cuda-toolkit=13.0 -y && \
python -m pip install setuptools wheel && \
export CUDA_HOME="$CONDA_PREFIX" && \
export PATH="$CUDA_HOME/bin:$PATH" && \
export TORCH_CUDA_ARCH_LIST="8.0+PTX" && \
export CC=/usr/bin/gcc CXX=/usr/bin/g++ CUDAHOSTCXX=/usr/bin/g++ && \
git clone https://github.com/NVlabs/curobo.git src/nvidia-curobo && \
git -C src/nvidia-curobo checkout ebb71702f3f70e767f40fd8e050674af0288abe8 && \
test "$(grep -c '^inline __device__ __host__ float lerp(float a, float b, float t)$' \
src/nvidia-curobo/src/curobo/curobolib/cpp/helper_math.h)" -eq 1 && \
sed -i '/^inline __device__ __host__ float lerp(float a, float b, float t)$/,+3d' \
src/nvidia-curobo/src/curobo/curobolib/cpp/helper_math.h && \
python -m pip install -e ./src/nvidia-curobo --no-build-isolation
备注
提交
ebb71702f3f70e767f40fd8e050674af0288abe8已通过 Isaac Lab 测试,使用其他版本可能产生兼容性问题。此提交支持将四边形网格面三角化,cuRobo 需要这项功能来将 USD 解析为碰撞对象。请使用 CUDA 13.0 支持的主机编译器,要求见 NVIDIA 的 主机编译器支持策略 及 C++ 标准要求 。Ubuntu 22.04 和 24.04 的系统 GCC 均兼容。conda 命令会显式选择系统编译器。
cuRobo 以可编辑方式从源码安装,源码克隆到当前目录下的
src/nvidia-curobo。可自行选择用于安装 cuRobo 的工作目录。在 uv 流程中,cuRobo 和 Rerun(步骤 3)不在项目锁定文件中,安装它们后运行
uv sync会再次将它们移出环境。如果发生这种情况,重新运行步骤 2、3 的uv pip install命令即可。uv run不会移除这些包,可以正常使用。上述命令中的
TORCH_CUDA_ARCH_LIST应与您的 GPU 的 CUDA 计算能力匹配(例如,A100 为8.0,许多 RTX 30 系列为8.6,RTX 4090 为8.9);+PTX后缀嵌入 PTX 以实现前向兼容性,以便在不包含原生 SASS 时,较新的 GPU 可以进行 JIT 编译。
警告
如果引入了 Isaac Sim 环境脚本,cuRobo 安装可能会失败
引入 Omniverse Kit/Isaac Sim 环境脚本(例如 setup_conda_env.sh )会将 PYTHONHOME 和 PYTHONPATH 导出到 Kit 运行时及其预捆绑的 Python 包。在 cuRobo 安装期间,这可能导致 conda 在初始化之前导入 Omniverse 的捆绑库(例如 requests/urllib3 ),从而导致崩溃(通常表现为引用 omni.kit.pip_archive 的 TypeError )。
执行以下操作之一:
从未引入任何 Omniverse/Isaac Sim 脚本的干净 shell 中安装 cuRobo。
在调用 Conda 之前临时重置或忽略继承的 Python 环境变量(特别是
PYTHONPATH和PYTHONHOME),以便 Kit 的 Python 不会遮蔽您的 Conda 环境。使用不依赖于 shell 激活的 Conda 机制,并避免继承当前 shell 的 Python 变量。
安装完成后,您可以再次引入 Isaac Lab/Isaac Sim 脚本以供正常使用。
步骤 3: 安装 Rerun#
用于开发中的轨迹可视化:
uv pip install rerun-sdk==0.23
pip install rerun-sdk==0.23
备注
重新运行可视化设置:
Rerun 是可选的,但强烈建议用于调试和验证开发过程中计划的轨迹
通过在 cuRobo 规划器配置中设置
visualize_plan = True来启用轨迹可视化启用后,cuRobo 规划器接口将向 Rerun 进行计划的末端执行器轨迹、路径点以及碰撞数据的实时传输,以进行交互式检查
可视化有助于在生成完整数据集之前识别规划问题、碰撞问题和轨迹平滑性
也可以无界面运行,以降低 Isaac Sim 可视化开销,同时仍通过 Rerun 查看和调试末端执行器轨迹。
步骤 4: 验证安装#
测试 cuRobo 与 Isaac Lab 的配合情况:
# This should run without import errors
uv run python -c "import curobo; print('cuRobo installed successfully')"
# This should run without import errors
python -c "import curobo; print('cuRobo installed successfully')"
小技巧
在 conda 流程中,如果遇到 libstdc++.so.6: version 'GLIBCXX_3.4.30' not found ,可尝试以下命令:
conda config --env --set channel_priority strict
conda config --env --add channels conda-forge
conda install -y -c conda-forge "libstdcxx-ng>=12" "libgcc-ng>=12"
下载 SkillGen 数据集#
我们提供一个预注释的数据集,以帮助您快速开始使用 SkillGen。
数据集内容#
数据集包括:
Franka 臂的人类演示立方体堆叠
每个演示的手动注释的子任务边界
与基本立方体堆叠和自适应箱立方体堆叠任务兼容
下载并设置#
点击 此处 下载预先标注的数据集。
准备数据集目录并移动下载的文件:
# Make sure you are in the root directory of your Isaac Lab workspace
cd /path/to/your/IsaacLab
# Create the datasets directory if it does not exist
mkdir -p datasets
# Move the downloaded dataset into the datasets directory
mv /path/to/annotated_dataset_skillgen.hdf5 datasets/annotated_dataset_skillgen.hdf5
小技巧
SkillGen 的一个重要优势是同一个已注释的数据集可以在多个相关任务(例如基本堆叠和自适应箱堆叠)之间重复使用。这避免了为每个变体收集和注释新数据的需求。
{本教程中的任务可选} 收集一个新数据集(源和注释)
如果您想收集新的源数据集,然后为 SkillGen 创建一个已注释的数据集,请按照以下命令进行操作。用户需要了解 Isaac Lab Mimic 工作流程。
开始之前的重要提示
使用提供的已注释数据集是在本教程中开始使用 SkillGen 任务的最快途径。
如果您创建自己的数据集,SkillGen 需要手动注释子任务的起始和终止边界(无自动注释)。
对于 SkillGen,起始边界信号是必需的;在注释或数据生成过程中使用
--annotate_subtask_start_signals将会导致失败。保持您的子任务定义(
object_ref,subtask_term_signal)与 SkillGen 环境配置一致。
记录演示 (任何远程操作设备都受支持; 必要时替换 spacemouse ):
uv run --extra teleop,isaacsim isaaclab teleop record \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--teleop_device spacemouse \
--dataset_file ./datasets/dataset_skillgen.hdf5 \
--num_demos 10 \
--visualizer kit
./isaaclab.sh -p scripts/tools/record_demos.py \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--teleop_device spacemouse \
--dataset_file ./datasets/dataset_skillgen.hdf5 \
--num_demos 10 \
--visualizer kit
为 SkillGen 注释演示 (编写 term 和开始边界):
uv run --extra isaacsim,mimic python scripts/imitation_learning/isaaclab_mimic/annotate_demos.py \
--device cpu \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--input_file ./datasets/dataset_skillgen.hdf5 \
--output_file ./datasets/annotated_dataset_skillgen.hdf5 \
--annotate_subtask_start_signals \
--visualizer kit
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/annotate_demos.py \
--device cpu \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--input_file ./datasets/dataset_skillgen.hdf5 \
--output_file ./datasets/annotated_dataset_skillgen.hdf5 \
--annotate_subtask_start_signals \
--visualizer kit
理解数据集标注#
SkillGen 需要具有标注子任务开始和结束边界的数据集。不支持自动注释。
SkillGen 中的子任务#
技术定义: 子任务是通过 SubTaskConfig 定义的实现操作目标的连续演示段:
object_ref: 用作此子任务的空间参考的对象(或None)subtask_term_signal: 二进制终止信号名称(在子任务完成时从 0 变为 1)subtask_start_signal: 二进制开始信号名称(在子任务开始时从 0 变为 1; SkillGen 需要)
子任务本地化过程执行:
检测信号转换点(从 0 到 1)以识别子任务边界
[t_start, t_end];在边界之间提取子任务段;
在对象或任务相关帧中计算末端执行器轨迹和关键姿势(使用
object_ref如果提供);
这将绝对的、特定于场景的运动转换为对象相对技能段,可以在数据生成过程中适应新的对象放置和场景配置。
手动注释工作流程#
与 Isaac Lab Mimic 工作流程相反,SkillGen 需要手动注释子任务开始和结束边界。例如,为了抓取一个立方体,开始信号是在夹具关闭之前,终止信号是在物体被抓取之后。您可以调整开始和终止信号以符合您的子任务定义。
小技巧
手动注释控件:
按
N开始/继续播放按
B暂停按
S标记子任务边界按
Q跳过当前演示
在为技能段(例如抓取、堆叠等)标注开始和结束信号时,使用 B 在技能前几步暂停播放,使用 S 注释开始信号,然后使用 N 恢复播放。技能完成后,再次在技能后几步暂停并使用 S 注释结束信号。
使用 SkillGen 进行数据生成#
SkillGen 使用运动规划将标注的演示转换为多样化、高质量的数据集。
SkillGen 的工作原理#
SkillGen 管道使用您的标注数据集和环境的 Mimic API 合成新的演示:
子任务边界使用: 从标注数据集中读取每个子任务的开始和终止索引
目标采样: 根据任务约束和数据生成配置对每个子任务采样目标姿势
轨迹规划: 使用 cuRobo 在子任务段之间规划无碰撞运动(当
--use_skillgen时)轨迹拼接: 将技能段和规划的轨迹拼接成完整的演示。
成功评估: 验证任务成功条件; 只有成功的试验才会被写入输出数据集
使用参数#
SkillGen 数据生成的关键参数:
--use_skillgen: 启用 SkillGen 规划器(必需)--generation_num_trials: 要生成的演示次数--num_envs: 并行环境(根据 GPU 内存调整)--device: 计算设备(cpu/cuda)。使用 cpu 可获得稳定的物理效果可视化:省略
--visualizer/--viz可无界面生成;只有配置或命令原本会启动可视化器时,才需使用--viz none。
任务 1: 基本立方体堆叠#
为标准 Isaac Lab Mimic 立方体堆叠任务生成演示。在这个任务中,Franka 机器人必须:
拿起红色立方体并将其放在蓝色立方体上
拿起绿色立方体并将其放在红色立方体上
最终堆叠顺序: 蓝色(底部)、红色(中部)、绿色(顶部)。
立方体堆叠数据集示例。#
小规模生成#
从一个小数据集开始验证一切是否正常:
uv run --extra isaacsim,mimic python scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 10 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_small_skillgen_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--use_skillgen --visualizer kit
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 10 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_small_skillgen_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--use_skillgen --visualizer kit
大规模生成#
一旦对小规模结果满意,生成一个完整的训练数据集:
uv run --extra isaacsim,mimic python scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 1000 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_skillgen_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--use_skillgen
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 1000 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_skillgen_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--use_skillgen
备注
无界面运行可加快生成速度。保持 Isaac Sim 可视化器关闭,同时在 cuRobo 规划器配置中设置
visualize_plan = True,仍可启用 Rerun 可视化。根据您的 GPU 内存调整
--num_envs(从 1 开始,逐渐增加)。当 num_envs 大于 1 时,性能提升并不十分明显。5 是大多数 GPU 之间性能和内存使用之间平衡的最佳值。生成时间:在 RTX 6000 Ada GPU 上,单环境关闭可视化器生成 1000 条示范约需 90–120 分钟。耗时取决于 GPU、环境数量及示范成功率,而成功率又取决于已标注数据集的质量。
cuRobo 规划接口和配置在 cuRobo 接口特性 中描述。
任务 2: 垃圾箱中的自适应立方体堆叠#
SkillGen 也可用于生成自适应任务的数据集。在这个例子中,我们为在狭窄垃圾箱中的自适应立方体堆叠生成数据集。垃圾箱放置在工作区的固定位置和方向,并且一个蓝色立方体放置在垃圾箱的中心。机器人必须成功生成用于将红色和绿色立方体堆叠在蓝色立方体上的演示,而不与垃圾箱发生碰撞。
自适应垃圾箱堆叠数据生成示例。#
小规模生成#
测试自适应堆叠设置:
uv run --extra isaacsim,mimic python scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 10 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_small_skillgen_bin_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--use_skillgen --visualizer kit
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 10 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_small_skillgen_bin_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--use_skillgen --visualizer kit
大规模生成#
生成完整的自适应堆叠数据集:
uv run --extra isaacsim,mimic python scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 1000 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_skillgen_bin_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--use_skillgen
./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
--device cpu \
--num_envs 1 \
--generation_num_trials 1000 \
--input_file ./datasets/annotated_dataset_skillgen.hdf5 \
--output_file ./datasets/generated_dataset_skillgen_bin_cube_stack.hdf5 \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--use_skillgen
警告
由于复杂性增加,自适应任务通常具有较低的成功率和较长的数据生成时间。由于成功率较低以及计划问题较困难,生成数据集所用的时间也较长。
备注
如果使用预先标注的数据集,并以无界面模式运行数据生成命令,在 RTX 6000 Ada GPU 上,单环境生成 1000 条示范通常约需 220 分钟。
备注
VRAM 使用情况和 GPU 建议
- 在 RTX 6000 Ada 上生成 10 个演示测得的数据。
基础立方体堆叠: 1 个环境约 9.3–9.6 GB 稳定;5 个环境约 21.8–22.2 GB 稳定(初始化期间短暂较高)。
自适应箱立方体堆叠: 1 个环境约 9.3–9.6 GB 稳定;5 个环境约 22.0–22.3 GB 稳定(初始化期间短暂较高)。
最低推荐 GPU:
--num_envs1–2 时 ≥24 GB VRAM;--num_envs最多约 5 时 ≥48 GB VRAM。减少显存占用:优先无界面运行,并适度控制
--num_envs。具体占用会随场景资产和示范数量变化。
从 SkillGen 数据中学习策略#
类似于 Isaac Lab Mimic 工作流程,您可以使用生成的 SkillGen 数据集来训练模仿学习策略,也可以使用 Robomimic。
基础立方体堆叠策略#
为基本立方体叠放任务训练基于状态的策略:
uv run --extra isaacsim,mimic python scripts/imitation_learning/robomimic/train.py \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--algo bc \
--dataset ./datasets/generated_dataset_skillgen_cube_stack.hdf5
./isaaclab.sh -p scripts/imitation_learning/robomimic/train.py \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--algo bc \
--dataset ./datasets/generated_dataset_skillgen_cube_stack.hdf5
自适应箱立方体堆叠策略#
为更复杂的自适应垃圾箱堆叠任务训练策略:
uv run --extra isaacsim,mimic python scripts/imitation_learning/robomimic/train.py \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--algo bc \
--dataset ./datasets/generated_dataset_skillgen_bin_cube_stack.hdf5
./isaaclab.sh -p scripts/imitation_learning/robomimic/train.py \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--algo bc \
--dataset ./datasets/generated_dataset_skillgen_bin_cube_stack.hdf5
备注
训练脚本将模型检查点保存到 IsaacLab/logs/robomimic 下的模型目录。
评估训练好的策略#
测试您训练好的策略:
# Basic cube stacking evaluation
uv run --extra isaacsim,mimic python scripts/imitation_learning/robomimic/play.py \
--device cpu \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--num_rollouts 50 \
--checkpoint /path/to/model_checkpoint.pth \
--visualizer kit
# Basic cube stacking evaluation
./isaaclab.sh -p scripts/imitation_learning/robomimic/play.py \
--device cpu \
--task IsaacContrib-Stack-Cube-Franka-IK-Rel-Skillgen \
--num_rollouts 50 \
--checkpoint /path/to/model_checkpoint.pth \
--visualizer kit
# Adaptive bin cube stacking evaluation
uv run --extra isaacsim,mimic python scripts/imitation_learning/robomimic/play.py \
--device cpu \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--num_rollouts 50 \
--checkpoint /path/to/model_checkpoint.pth \
--visualizer kit
# Adaptive bin cube stacking evaluation
./isaaclab.sh -p scripts/imitation_learning/robomimic/play.py \
--device cpu \
--task IsaacContrib-Stack-Cube-Bin-Franka-IK-Rel-Mimic \
--num_rollouts 50 \
--checkpoint /path/to/model_checkpoint.pth \
--visualizer kit
备注
立方体堆叠和箱立方体堆叠任务的预期成功率和建议
SkillGen 数据生成和下游策略成功对任务和数据集标注质量很敏感,可能会出现较大差异。
对于立方体堆叠和箱立方体堆叠,当按照说明正确标注数据集时,数据生成成功率通常为 40% 到 70%。
对于这些任务,从 1000 个生成的演示训练 2000 个轮次(默认)的行为克隆(BC)策略成功率通常为 40% 到 85%,具体取决于数据质量。
使用 1000 个演示训练 2000 个轮次在 RTX 6000 Ada GPU 上大约需要 30 到 35 分钟。训练时间随演示数量和轮次的增加而增加。
有关数据集生成时间,请参阅 任务 1: 基本立方体堆叠 和 任务 2: 垃圾箱中的自适应立方体堆叠 。
建议: 使用约 1000 个生成的演示训练默认的 2000 个轮次,并评估第 1000 轮次之后保存的多个检查点,以选择性能最佳的策略。
cuRobo 接口特性#
本节总结了 cuRobo 规划器接口和特性。SkillGen 流水线使用 cuRobo 规划器为子任务段之间生成无碰撞运动。然而,用户可以将 cuRobo 用作自己任务的独立运动规划器。用户也可以通过继承基本运动规划器和实现相同 API 来实现自己的运动规划器。
基本运动规划器(可扩展)#
位置:
isaaclab_mimic/motion_planners/base_motion_planner.py目的: SkillGen 使用的所有运动规划器的统一接口
可扩展性: 可通过继承和实现相同 API 来添加新的规划器;SkillGen 在不改变代码的情况下消耗 API
cuRobo 规划器(GPU,具有碰撞感知)#
位置:
isaaclab_mimic/motion_planners/curobo多阶段规划:
每个子任务依次执行回撤、接触、接近阶段
可配置的接触阶段碰撞过滤
对于 SkillGen,回撤和接近阶段是无碰撞的。转移阶段进行碰撞检查。
世界同步:
每次试验更新机器人状态、附加对象和碰撞球从 Isaac Lab 场景
在抓取/放置期间动态附加/分离对象
碰撞表示:
可按阶段启用和过滤的接触感知球集合
输出:
时间参数化,经过碰撞检查的用于拼接的轨迹
测试:
source/isaaclab_mimic/test/test_curobo_planner_cube_stack.pysource/isaaclab_mimic/test/test_curobo_planner_franka.pysource/isaaclab_mimic/test/test_generate_dataset_skillgen.py
这些测试也可以作为如何将 cuRobo 用作独立运动规划器的参考。
备注
有关详细的 cuRobo 配置创建和参数,请参阅文件 isaaclab_mimic/motion_planners/curobo/curobo_planner_config.py 。
生成流水线集成#
当 --use_skillgen 在 generate_dataset.py 中启用时,将执行以下流程:
随机化子任务边界: 使用任务配置的偏移范围为每个子任务随机化启动和终止索引。
构建每个子任务的轨迹: 对于每个末端执行器和子任务:
选择一个源演示片段(基于策略驱动;遵守协调/顺序约束)
将该片段转换到当前场景(对象相对或协调增量;可选首姿插值)
将转换后的片段包装成路径点轨迹
在子任务之间过渡: - 与 cuRobo 计划一次与子任务的第一个路径点(世界同步,可选附加/卸载)的避碰过渡执行计划路径点,然后恢复子任务轨迹
带约束执行: 沿着执行轨迹步进执行末端执行器,同时强制执行子任务约束(顺序、协调与同步步骤); 如果启用,可以选择更新计划可视化
记录和导出: - 积累状态/观测/动作,设置剧集成功标志,并导出剧集(外部流程过滤/捕获成功)
可视化和调试#
用户可以使用基于重运行的计划可视化器可视化计划轨迹并进行碰撞调试。可以通过在 cuRobo 计划器配置中设置 visualize_plan = True 来启用此功能。请注意,需要安装 rerun 才能可视化计划轨迹。有关安装说明,请参阅 安装 中的第 3 步。
重运行集成: 计划轨迹与碰撞球体。#
备注
在 docs/licenses/dependencies/cuRobo-license.txt 中检查 cuRobo 使用许可证