Merge remote-tracking branch ‘gitlink/main’ Resolve README conflict by keeping local project documentation. Co-authored-by: Cursor cursoragent@cursor.com
Merge remote-tracking branch ‘gitlink/main’
Resolve README conflict by keeping local project documentation.
Co-authored-by: Cursor cursoragent@cursor.com
Isaac Sim + Isaac Lab 方向的具身智能 / VLA 项目。第一阶段(Week 1) 目标是搭建仿真场景、机械臂占位、桌面物体、俯视 RGB-D 相机,以及 RGB / depth / metadata 保存链路。不包含模型训练、Qwen2.5-VL、OpenVLA、ROS2 / MoveIt 或抓取控制。
configs/scene.yaml
sim/scene_builder.py
sim/assets.py
sim/camera_utils.py
scripts/01_test_isaac.py
scripts/02_create_scene.py
scripts/03_capture_rgbd.py
export ISAACSIM_PATH=/path/to/isaac-sim export ISAACSIM_PYTHON_EXE=$ISAACSIM_PATH/python.sh
请把 /path/to/isaac-sim 替换为本机 Isaac Sim 安装目录。
/path/to/isaac-sim
项目根目录下,使用系统 Python 或 Isaac Sim 自带 Python 均可安装轻量依赖(不含 torch / transformers):
pip install -r requirements.txt
推荐:
$ISAACSIM_PYTHON_EXE -m pip install -r requirements.txt
在项目根目录 sim-vlm-robot/ 下执行:
sim-vlm-robot/
export ISAACSIM_PATH=/path/to/isaac-sim export ISAACSIM_PYTHON_EXE=$ISAACSIM_PATH/python.sh # 1. 环境自检 $ISAACSIM_PYTHON_EXE scripts/01_test_isaac.py --headless true # 2. 创建场景并保存 USD $ISAACSIM_PYTHON_EXE scripts/02_create_scene.py --headless true --steps 120 # 3. 采集 RGB-D 与 metadata $ISAACSIM_PYTHON_EXE scripts/03_capture_rgbd.py --headless true --steps 120
可选参数:
--headless true|false
true
--config configs/scene.yaml
--steps 120
--frame-id scene_0001
03_capture_rgbd.py
outputs/logs/week1_scene.usd
outputs/rgb/scene_0001.png
outputs/depth/scene_0001.npy
outputs/logs/scene_0001.json
Metadata 字段包括:camera_resolution、camera_position、camera_target、物体/托盘 3D 位置、timestamp、depth_valid。
camera_resolution
camera_position
camera_target
timestamp
depth_valid
sim/assets.py 会在 ISAACSIM_PATH 下递归搜索包含 franka / panda 等关键词的 USD 文件。
ISAACSIM_PATH
franka
panda
若未找到:
WARNING
手动指定真实 Franka 资产(任选其一):
find_franka_usd()
return Path("/your/path/to/franka.usd")
robot.usd_path
franka.usd
常见路径示例(因版本/安装方式而异,仅供参考):
{assets_root}/Isaac/Robots/FrankaRobotics/FrankaPanda/franka.usd
$ISAACSIM_PATH/exts/omni.isaac.franka/...
Franka 是 articulation 关节链,不要直接改 panda_link0 等 link 的 Transform(Property 面板里往往是灰的或会被仿真覆盖)。
panda_link0
注意: Isaac Sim 里选中 RobotMount 时,视口 pivot 可能显示在机械臂 几何包围盒中心(约比底座高 0.55 m),而不是底座。因此不要把 RobotMount.translate.z 直接设为桌面高度。
RobotMount
RobotMount.translate.z
本项目语义:
robot.base_position: [x, y]
robot.z_offset
table_top + 0.557 + z_offset
ModelAlign
base_position
z_offset
rotation
02_create_scene.py
/World/RobotMount
桌面顶面 z = 0.35 + 0.05/2 = 0.375 m。
0.35 + 0.05/2 = 0.375 m
robot: mount_path: /World/RobotMount align_path: /World/RobotMount/ModelAlign prim_path: /World/RobotMount/ModelAlign/Franka base_position: [0.08, 0.0] rotation: [0.0, 0.0, 0.0] z_offset: 0.002
Isaac Sim 5.x 中,Camera.get_depth() 前必须先调用:
Camera.get_depth()
camera.add_distance_to_image_plane_to_frame()
项目已在 sim/camera_utils.py → _prepare_camera_sensor() 中自动注册。验证结果:depth_valid: true,深度单位为米(distance_to_image_plane)。
_prepare_camera_sensor()
depth_valid: true
distance_to_image_plane
固定相机 vs 腕部相机: 当前 camera.mount: fixed,相机 prim 独立于机械臂。Week 2 若改为 eye-in-hand,只需修改 configs/scene.yaml 中的 prim_path(例如挂到 panda_hand),capture_rgbd() 无需重写。
camera.mount: fixed
prim_path
panda_hand
capture_rgbd()
相关文件:
docs/week1_notes.md
Could not import SimulationApp
$ISAACSIM_PYTHON_EXE
python3
ISAACSIM_PATH is not set
export ISAACSIM_PATH=/path/to/isaac-sim
--headless false
--steps
[assets] Franka USD candidate
ISAACSIM_PYTHON_EXE
01_test_isaac.py
week1_scene.usd
sim-vlm-robot/ ├── scripts/ │ ├── 01_test_isaac.py │ ├── 02_create_scene.py │ └── 03_capture_rgbd.py ├── sim/ │ ├── assets.py │ ├── camera_utils.py │ ├── isaac_app.py │ └── scene_builder.py ├── configs/scene.yaml ├── outputs/ ├── docs/week1_notes.md ├── requirements.txt └── README.md
以上均不在当前范围内。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
sim-vlm-robot
Isaac Sim + Isaac Lab 方向的具身智能 / VLA 项目。第一阶段(Week 1) 目标是搭建仿真场景、机械臂占位、桌面物体、俯视 RGB-D 相机,以及 RGB / depth / metadata 保存链路。不包含模型训练、Qwen2.5-VL、OpenVLA、ROS2 / MoveIt 或抓取控制。
项目目标
Week 1 完成内容
configs/scene.yamlsim/scene_builder.pysim/assets.pysim/camera_utils.pyscripts/01_test_isaac.pyscripts/02_create_scene.pyscripts/03_capture_rgbd.py环境变量
请把
/path/to/isaac-sim替换为本机 Isaac Sim 安装目录。安装 Python 依赖
项目根目录下,使用系统 Python 或 Isaac Sim 自带 Python 均可安装轻量依赖(不含 torch / transformers):
推荐:
运行命令
在项目根目录
sim-vlm-robot/下执行:可选参数:
--headless true|false(默认true)--config configs/scene.yaml--steps 120(仿真步数)--frame-id scene_0001(仅03_capture_rgbd.py)输出文件
outputs/logs/week1_scene.usdoutputs/rgb/scene_0001.pngoutputs/depth/scene_0001.npyoutputs/logs/scene_0001.jsonMetadata 字段包括:
camera_resolution、camera_position、camera_target、物体/托盘 3D 位置、timestamp、depth_valid。Franka USD 资产
sim/assets.py会在ISAACSIM_PATH下递归搜索包含franka/panda等关键词的 USD 文件。若未找到:
WARNING手动指定真实 Franka 资产(任选其一):
sim/assets.py中find_franka_usd(),直接return Path("/your/path/to/franka.usd")configs/scene.yaml的robot.usd_path指向本地franka.usd常见路径示例(因版本/安装方式而异,仅供参考):
{assets_root}/Isaac/Robots/FrankaRobotics/FrankaPanda/franka.usd(Omniverse 云端/缓存)$ISAACSIM_PATH/exts/omni.isaac.franka/...调整机械臂位置(Transform)
Franka 是 articulation 关节链,不要直接改
panda_link0等 link 的 Transform(Property 面板里往往是灰的或会被仿真覆盖)。注意: Isaac Sim 里选中
RobotMount时,视口 pivot 可能显示在机械臂 几何包围盒中心(约比底座高 0.55 m),而不是底座。因此不要把RobotMount.translate.z直接设为桌面高度。本项目语义:
robot.base_position: [x, y]robot.z_offsetRobotMount.translate.ztable_top + 0.557 + z_offset(pivot 在几何中心,不是桌面高度)ModelAlignbase_position/z_offset/rotation,重新运行02_create_scene.pybase_position后重建;或选中/World/RobotMount微调(理解 pivot 在几何中心)桌面顶面 z =
0.35 + 0.05/2 = 0.375 m。Depth 采集说明
Isaac Sim 5.x 中,
Camera.get_depth()前必须先调用:项目已在
sim/camera_utils.py→_prepare_camera_sensor()中自动注册。验证结果:depth_valid: true,深度单位为米(distance_to_image_plane)。固定相机 vs 腕部相机: 当前
camera.mount: fixed,相机 prim 独立于机械臂。Week 2 若改为 eye-in-hand,只需修改configs/scene.yaml中的prim_path(例如挂到panda_hand),capture_rgbd()无需重写。相关文件:
sim/camera_utils.py→capture_rgbd(),_prepare_camera_sensor()scripts/03_capture_rgbd.pydocs/week1_notes.md常见问题
1.
Could not import SimulationApp$ISAACSIM_PYTHON_EXE运行脚本,不要用系统python3ISAACSIM_PATH正确2.
ISAACSIM_PATH is not set3. RGB 全黑或 placeholder
--headless false排查渲染--steps(例如 240)4. Franka 未加载
[assets] Franka USD candidate或WARNING5. aarch64 / DGX Spark
Week 1 Checklist
ISAACSIM_PATH/ISAACSIM_PYTHON_EXEpip install -r requirements.txt01_test_isaac.py通过02_create_scene.py生成week1_scene.usd03_capture_rgbd.py生成 PNG / NPY / JSONdocs/week1_notes.md目录结构
下一阶段(非 Week 1)
以上均不在当前范围内。