配置文件说明
VitAI SDK使用YAML格式配置仿真场景。
YAML配置结构
# configs/uipc_scene.yaml
# 全局配置
output_dir: "~/.vitai"
asset_dir: "assets/data"
# 调试可视化
debug_vis:
show_fem_mesh: false # UIPC FEM网格(橙色线框)
show_attachments: false # Gelpad约束连线
show_sensor_windows: true # 传感器窗口(总开关)
show_gelpad_marker: false # Gelpad标记点
show_tactile_image: false # 触觉RGB图像窗口
show_marker_image: true # 标记点运动窗口
show_camera_depth_image: true # 深度图窗口
# UIPC仿真
uipc_sim:
ground_height: 0.0025
gravity: [0.0, 0.0, -9.8]
contact:
d_hat: 0.001
enable: true
# UIPC对象(刚体/可变形体)
objects:
pot_msh_rigid:
type: rigid
prim_path: "/World/envs/env_.*/pot_msh_rigid"
init_state:
pos: [0.7, -0.25, 0.02]
rot: [1, 0, 0, 0]
spawn:
msh_path: "objects/mshes/pot.msh"
scale: [1, 1, 1]
constitution_cfg:
type: "AffineBody" # 刚体本构
m_kappa: 1000000.0
ball_deformable:
type: deformable
prim_path: "/World/envs/env_.*/ball"
# ...
constitution_cfg:
type: "StableNeoHookean" # 超弹性材料
youngs_modulus: 0.5
poisson_rate: 0.45
# 触觉传感器
tactile_sensors:
left:
gelpad:
prim_path: "/World/envs/env_.*/Robot/Gripper/gripper_gf225/gelpad_0"
mesh_cfg:
edge_length_r: 0.05 # 网格细化(1/20)
constitution_cfg:
youngs_modulus: 1
poisson_rate: 0.49
constraint_cfg:
constraint_strength_ratio: 500000.0
body_name: "finger_case_0" # ⚠️ Isaac Sim刚体名称
isaaclab_rigid_body_prim_path: "/World/envs/env_.*/Robot/Gripper/gripper_gf225"
compute_attachment_data: true
sensor:
type: gf225
prim_path: "/World/envs/env_.*/Robot/Gripper/gripper_gf225/finger_case_0" # ⚠️ 与body_name对应
device: "cuda"
sensor_camera_cfg:
resolution: [480, 480]
data_types: ["depth", "rgb"]
clipping_range: [0.005, 0.014] # 深度裁剪范围(米)
data_types: [camera_depth, marker_motion]
debug_vis: true
right: # 右侧传感器类似,注意_0改为_1
gelpad:
prim_path: "/World/envs/env_.*/Robot/Gripper/gripper_gf225/gelpad_1"
constraint_cfg:
body_name: "finger_case_1" # ⚠️ 注意后缀_1
# ...
sensor:
prim_path: "/World/envs/env_.*/Robot/Gripper/gripper_gf225/finger_case_1" # ⚠️ 与body_name对应
# ...
关键配置参数
⚠️ Prim路径映射关系
GF225传感器必须与Isaac Sim World中的Prim正确映射:
| 配置项 | 说明 | 示例 |
|---|---|---|
gelpad.prim_path | UIPC Gelpad路径 | gelpad_0 / gelpad_1 |
constraint_cfg.body_name | Isaac Sim刚体名称 | finger_case_0 / finger_case_1 |
sensor.prim_path | 传感器挂载路径 | 必须与body_name对应 |
左右传感器:body_name和sensor.prim_path后缀必须匹配(_0 vs _1)。
Gelpad参数
| 参数 | 说明 | 推荐值 |
|---|---|---|
edge_length_r | 网格细化(越小越细) | 0.05 |
youngs_modulus | 杨氏模量(MPa) | 1.0 |
poisson_rate | 泊松比 | 0.49 |
constraint_strength_ratio | 约束强度 | 500000.0 |
Sensor参数
| 参数 | 说明 | 推荐值 |
|---|---|---|
resolution | 相机分辨率 | [480, 480] |
clipping_range | 深度范围(米) | [0.005, 0.014] |
data_types | 数据类型 | [camera_depth, marker_motion] |
对象类型
| 类型 | 本构模型 | 适用场景 |
|---|---|---|
rigid | AffineBody | 刚性物体(杯子、盖子) |
deformable | StableNeoHookean | 软体(球、海绵) |
配置示例
添加新刚体对象
objects:
my_object:
type: rigid
prim_path: "/World/envs/env_.*/my_object"
init_state:
pos: [0.5, 0, 0.1]
rot: [1, 0, 0, 0]
spawn:
msh_path: "objects/mshes/my_object.msh"
scale: [1, 1, 1]
constitution_cfg:
type: "AffineBody"
m_kappa: 1000000.0
添加可变形对象
objects:
soft_ball:
type: deformable
prim_path: "/World/envs/env_.*/soft_ball"
init_state:
pos: [0.5, 0, 0.2]
rot: [1, 0, 0, 0]
spawn:
msh_path: "objects/mshes/ball.msh"
scale: [1, 1, 1]
constitution_cfg:
type: "StableNeoHookean"
youngs_modulus: 0.5
poisson_rate: 0.45