cmvr_ai_lab/source/engineai_lab/robots/gen2.py
2026-07-20 08:56:11 +08:00

212 lines
6.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
from engineai_lab.assets import (
GEN2_ASSET_DIR,
GEN2_ORIGINAL_URDF_PATH,
GEN2_SIMPLIFIED_COLLISION_URDF_PATH,
)
# 训练物理必须固定使用简化碰撞 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."
)
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,
},
)
},
)