如果您已经完成前面的《用Isaac Lab玩转 LeRobot 机械手臂训练》项目,在IsaacLab里面透过键盘去模拟 SO101机械手臂6个关节的操作,那么本项目将带您进一步透过 SO101实体的leader手臂,在IsaacLab里面操控模拟器的follower手臂拿取橘子的实验(如下图),并且录制数据以及结合进行训练与推理,可以作为 Isaac 模拟环境与 SO101 手臂的一个结合演示。

本项目是复现 https://github.com/LightwheelAI/leisaac 提供的开源仓内容,这里假设您已经安装好 IsaacSim 与 IsaacLab 的对应版本,如果还没安装这两个模拟器的话,请参考《用Isaac Lab玩转 LeRobot 机械手臂训练》项目,里面有完整的操作教程,这里不重复赘述。
以下是本文操作的系统配置与环境,提供大家参考:
IsaacSim | CUDA | Python | IsaacLab |
|---|---|---|---|
4.5.0 | 11.8 | 3.10 | 2.1.1 |
5.0.0 | 12.8 | 3.11 | 2.2.0 |
本实验采用 IsaacSim 5.0.0 的组合,用 conda 创建 python 的虚拟环境。
git clone https://github.com/LightwheelAI/leisaac.git
cd leisaac
pip install -e source/leisaac# 下载 so101 follower 的 usd 文件
wget https://github.com/LightwheelAI/leisaac/releases/download/v0.1.0/so101_follower.usd -O assets/robots/so101_follower.usd
# 下载 kitchen 场景文件
wget https://github.com/LightwheelAI/leisaac/releases/download/v0.1.0/kitchen_with_orange.zip
unzip kitchen_with_orange.zip -d assets/scenes/确认场景文件在 assets 目录下的结构是否如下图:
<assets>
├── robots/
│ └── so101_follower.usd
└── scenes/
└── kitchen_with_orange/
├── scene.usd
├── assets
└── objects/
├── Orange001
├── Orange002
├── Orange003
└── Plate# 确保端口可读写
sudo chmod 666 /dev/ttyACM0 $$ sudo usermod -aG dialout $USER
# 执行数据采集
python scripts/environments/teleoperation/teleop_se3_agent.py \
--task=LeIsaac-SO101-PickOrange-v0 \
--teleop_device=so101leader \
--port=/dev/ttyACM0 \
--num_envs=1 \
--device=cuda \
--enable_cameras \
--record \
--dataset_file=./datasets/dataset.hdf5下面简单说明一下这些参数的用法,加粗的部分表示重要的参数:
如果一切正常,应该就会看到以下画面出现:

下面提供参考的执行指令:

至于后面的动态操作,请参考我们在哔哩哔哩《NVIDIA lsaacLab远程操控SO-101机械手臂实战》网课“第7分40秒”开始的内容,会更加直接。
在执行训练之间,如果要检查所采集的数据是否良好,可以执行以下指令查看一下:
python scripts/environments/teleoperation/replay.py \
--task=LeIsaac-SO101-PickOrange-v0 \
--num_envs=1 \
--device=cuda \
--enable_cameras \
--replay_mode=action \
--dataset_file=./datasets/dataset.hdf5 \
--select_episodes 1 2注意事项:
由于这是在 IsaacLab 里采集的数据,后面如果要部署到 LeRobot 环境的话,就需要先进行格式的转换。这个开源项目提供一个 isaaclab2lerobot.py 脚本来执行格式转换,位置在 leisaac/scripts/convert 下面,
python scripts/convert/isaaclab2lerobot.py不过这边有三个重点需要注意:
由于 lerobot 需要 python 3.10 环境,我们使用的 IsaacSim 5.0.0 是在 python 3.11 环境,在这里没法安装 lerobot 环境,因此需要另外开启一个 Terminal 再创建一个新的 python 3.10 虚拟环境,然后按照《Lerobot Installation》的步骤去安装Lerobot SO-101操作环境。
在 isaaclab2lerobot.py 第264行hdf5_files = [os.path.join(hdf5_root, 'dataset.hdf5')] 的文件名需要根据录制的文件进行修改。
然后在 lerobot 环境中切换目录到 leisaac 目录下,执行上面的指令。
数据转换后的存放位置置在 “${HF_LEROBOT_HOME}" 目录下的 "EverNorif/so101_test_orange_pick" ,如果没有设置HF_LEROBOT_HOME 变量,那就要到 " ${HOME}/.cache/huggingface/lerobot/" 目录下去寻找。
执行过程中,如果出现 “FileExistsError: [Errno 17] File exists: 'xxxxxxx/EverNorif/so101_test_orange_pick' ”错误时,就是将 so101_test_orange_pick 目录删掉或更名,然后再重新执行指令。
转换过程请参考《NVIDIA lsaacLab远程操控SO-101机械手臂实战》网课“第18分30秒”开始的内容。
现在可以用 lerobot 所提供的脚本,来查看这些数据的状态。请执行以下指令:
python -m lerobot.scripts.visualize_dataset \
--repo-id EverNorif/so101_test_orange_pick \
--episode-index 0就能看到如下图的输出结果:

本项目的线上教学视频请参考《NVIDIA lsaacLab远程操控SO-101机械手臂实战》,重点在于让大家体验 IsaacSim、IsaacLab 模拟 Lerobot SO-101 手臂的过程,至于里面所使用的厨房场景、橘子、SO101手臂等物件是比较复杂的环节,这部分需要开发人员花时间去学习 OpenUSD 相关知识,才能更进一步提升对整体应用的技术,这是下一步不能省略的过程。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。