cmvr_ai_lab/source/engineai_lab/robots/gen2.py

212 lines
6.5 KiB
Python
Raw Normal View History

2026-07-13 10:52:46 +08:00
from __future__ import annotations
import isaaclab.sim as sim_utils
from isaaclab.actuators import ImplicitActuatorCfg
from isaaclab.assets import ArticulationCfg
from isaaclab.managers import SceneEntityCfg
2026-07-20 08:56:11 +08:00
from engineai_lab.assets import (
GEN2_ASSET_DIR,
GEN2_ORIGINAL_URDF_PATH,
GEN2_SIMPLIFIED_COLLISION_URDF_PATH,
2026-07-13 10:52:46 +08:00
)
2026-07-20 08:56:11 +08:00
# 训练物理必须固定使用简化碰撞 URDF。禁止文件缺失时静默回退到高精度碰撞
# 否则同一份配置会因安装方式不同而产生不同的接触行为。
GEN2_URDF_PATH = GEN2_SIMPLIFIED_COLLISION_URDF_PATH
if not GEN2_URDF_PATH.is_file():
raise FileNotFoundError(
f"Gen2 training URDF is missing: {GEN2_URDF_PATH}. "
"Reinstall the package with engineai_lab/assets/gen2 included."
)
2026-07-13 10:52:46 +08:00
GEN2_LEG_JOINT_NAMES = [
"left_leg_J1",
"left_leg_J2",
"left_leg_J3",
"left_leg_J4",
"left_leg_J5",
"left_leg_J6",
"right_leg_J1",
"right_leg_J2",
"right_leg_J3",
"right_leg_J4",
"right_leg_J5",
"right_leg_J6",
]
GEN2_WAIST_JOINT_NAMES = ["waist_J1", "waist_J2"]
GEN2_ARM_JOINT_NAMES = [
"left_arm_J1",
"left_arm_J2",
"left_arm_J3",
"left_arm_J4",
"left_arm_J5",
"left_arm_J6",
"left_arm_J7",
"right_arm_J1",
"right_arm_J2",
"right_arm_J3",
"right_arm_J4",
"right_arm_J5",
"right_arm_J6",
"right_arm_J7",
]
GEN2_DFS_JOINT_NAMES = GEN2_LEG_JOINT_NAMES + GEN2_WAIST_JOINT_NAMES + GEN2_ARM_JOINT_NAMES
GEN2_DFS_JOINT_ORDER_ASSET_CFG = SceneEntityCfg("robot", joint_names=GEN2_DFS_JOINT_NAMES, preserve_order=True)
GEN2_FEET_BODY_NAMES = ["left_leg_link_6", "right_leg_link_6"]
GEN2_CFG = ArticulationCfg(
spawn=sim_utils.UrdfFileCfg(
asset_path=str(GEN2_URDF_PATH),
activate_contact_sensors=True,
fix_base=False,
replace_cylinders_with_capsules=True,
rigid_props=sim_utils.RigidBodyPropertiesCfg(
disable_gravity=False,
retain_accelerations=False,
linear_damping=0.0,
angular_damping=0.0,
max_linear_velocity=1000.0,
max_angular_velocity=1000.0,
max_depenetration_velocity=1.0,
),
articulation_props=sim_utils.ArticulationRootPropertiesCfg(
enabled_self_collisions=False,
solver_position_iteration_count=8,
solver_velocity_iteration_count=4,
),
joint_drive=sim_utils.UrdfConverterCfg.JointDriveCfg(
gains=sim_utils.UrdfConverterCfg.JointDriveCfg.PDGainsCfg(stiffness=0, damping=0)
),
),
init_state=ArticulationCfg.InitialStateCfg(
pos=(0.0, 0.0, 1.282),
joint_pos={
"left_leg_J1": 0.0,
"left_leg_J2": 0.0,
"left_leg_J3": 0.0,
"left_leg_J4": 0.0,
"left_leg_J5": 0.0,
"left_leg_J6": 0.0,
"right_leg_J1": 0.0,
"right_leg_J2": 0.0,
"right_leg_J3": 0.0,
"right_leg_J4": 0.0,
"right_leg_J5": 0.0,
"right_leg_J6": 0.0,
"waist_J1": 0.0,
"waist_J2": 0.0,
"left_arm_J1": 0.0,
"left_arm_J2": 1.4835298641951802,
"left_arm_J3": 1.5707963267948966,
"left_arm_J4": 0.0,
"left_arm_J5": 1.5707963267948966,
"left_arm_J6": 0.0,
"left_arm_J7": 0.0,
"right_arm_J1": 0.0,
"right_arm_J2": -1.4835298641951802,
"right_arm_J3": -1.5707963267948966,
"right_arm_J4": 0.0,
"right_arm_J5": 1.5707963267948966,
"right_arm_J6": 0.0,
"right_arm_J7": 0.0,
},
joint_vel={".*": 0.0},
),
soft_joint_pos_limit_factor=0.9,
actuators={
"body": ImplicitActuatorCfg(
joint_names_expr=[".*"],
stiffness={
".*_leg_J1": 180.0,
".*_leg_J2": 160.0,
".*_leg_J3": 90.0,
".*_leg_J4": 220.0,
".*_leg_J5": 55.0,
".*_leg_J6": 55.0,
"waist_J.*": 80.0,
".*_arm_J1": 50.0,
".*_arm_J2": 50.0,
".*_arm_J3": 45.0,
".*_arm_J4": 35.0,
".*_arm_J5": 30.0,
".*_arm_J6": 20.0,
".*_arm_J7": 20.0,
},
damping={
".*_leg_J1": 6.0,
".*_leg_J2": 5.0,
".*_leg_J3": 4.0,
".*_leg_J4": 7.0,
".*_leg_J5": 1.0,
".*_leg_J6": 1.0,
"waist_J.*": 4.0,
".*_arm_J1": 0.8,
".*_arm_J2": 0.8,
".*_arm_J3": 0.8,
".*_arm_J4": 0.6,
".*_arm_J5": 0.5,
".*_arm_J6": 0.4,
".*_arm_J7": 0.4,
},
effort_limit={
".*_leg_J1": 320.0,
".*_leg_J2": 320.0,
".*_leg_J3": 120.0,
".*_leg_J4": 450.0,
".*_leg_J5": 120.0,
".*_leg_J6": 120.0,
"waist_J.*": 182.0,
".*_arm_J1": 182.0,
".*_arm_J2": 182.0,
".*_arm_J3": 134.0,
".*_arm_J4": 66.0,
".*_arm_J5": 25.0,
".*_arm_J6": 25.0,
".*_arm_J7": 25.0,
},
effort_limit_sim={
".*_leg_J1": 320.0,
".*_leg_J2": 320.0,
".*_leg_J3": 120.0,
".*_leg_J4": 450.0,
".*_leg_J5": 120.0,
".*_leg_J6": 120.0,
"waist_J.*": 182.0,
".*_arm_J1": 182.0,
".*_arm_J2": 182.0,
".*_arm_J3": 134.0,
".*_arm_J4": 66.0,
".*_arm_J5": 25.0,
".*_arm_J6": 25.0,
".*_arm_J7": 25.0,
},
velocity_limit={
".*_leg_J1": 26.3,
".*_leg_J2": 26.3,
".*_leg_J3": 35.2,
".*_leg_J4": 26.3,
".*_leg_J5": 35.2,
".*_leg_J6": 35.2,
"waist_J.*": 35.2,
".*_arm_J.*": 35.2,
},
velocity_limit_sim={
".*_leg_J1": 26.3,
".*_leg_J2": 26.3,
".*_leg_J3": 35.2,
".*_leg_J4": 26.3,
".*_leg_J5": 35.2,
".*_leg_J6": 35.2,
"waist_J.*": 35.2,
".*_arm_J.*": 35.2,
},
)
},
)