Files
Gym_GPU/rl_game/get_up/env/t1_env.py

74 lines
2.8 KiB
Python
Raw Normal View History

2026-03-16 05:00:20 -04:00
from isaaclab.assets import ArticulationCfg, AssetBaseCfg
from isaaclab.scene import InteractiveSceneCfg
from isaaclab.sensors import ContactSensorCfg
2026-03-16 05:00:20 -04:00
from isaaclab.utils import configclass
from isaaclab.actuators import ImplicitActuatorCfg
from isaaclab import sim as sim_utils
import os
_DEMO_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
2026-03-21 23:46:59 -04:00
T1_USD_PATH = os.path.join(_DEMO_DIR, "asset", "t1", "T1_locomotion_physics_lab.usd")
2026-03-16 05:00:20 -04:00
@configclass
class T1SceneCfg(InteractiveSceneCfg):
"""最终修正版:彻底解决 Unknown asset config type 报错"""
2026-03-16 05:00:20 -04:00
# 1. 地面配置:直接在 spawn 内部定义材质
2026-03-16 05:00:20 -04:00
ground = AssetBaseCfg(
prim_path="/World/ground",
spawn=sim_utils.GroundPlaneCfg(
physics_material=sim_utils.RigidBodyMaterialCfg(
static_friction=1.0,
dynamic_friction=1.0,
restitution=0.3,
friction_combine_mode="average",
restitution_combine_mode="average",
)
),
2026-03-16 05:00:20 -04:00
)
# 2. 机器人配置
robot = ArticulationCfg(
prim_path="{ENV_REGEX_NS}/Robot",
spawn=sim_utils.UsdFileCfg(
usd_path=T1_USD_PATH,
activate_contact_sensors=True,
rigid_props=sim_utils.RigidBodyPropertiesCfg(
disable_gravity=False,
max_depenetration_velocity=10.0,
2026-03-16 05:00:20 -04:00
),
articulation_props=sim_utils.ArticulationRootPropertiesCfg(
enabled_self_collisions=True,
solver_position_iteration_count=8,
2026-03-16 05:00:20 -04:00
solver_velocity_iteration_count=4,
),
),
init_state=ArticulationCfg.InitialStateCfg(
pos=(0.0, 0.0, 0.4), # 掉落高度
2026-03-16 05:00:20 -04:00
joint_pos={".*": 0.0},
),
actuators={
"t1_joints": ImplicitActuatorCfg(
2026-03-16 05:00:20 -04:00
joint_names_expr=[".*"],
effort_limit=800.0, # 翻倍,确保电机有力气
velocity_limit=20.0,
stiffness=500.0, # 【关键】从 150 提到 500-800 之间
damping=40.0, # 【关键】从 5 提到 30-50 之间,抑制乱抖
2026-03-16 05:00:20 -04:00
),
},
)
2026-03-19 09:08:57 -04:00
contact_sensor = ContactSensorCfg(
prim_path="{ENV_REGEX_NS}/Robot/.*",
update_period=0.0,
history_length=3,
)
2026-03-16 05:00:20 -04:00
# 3. 光照配置
light = AssetBaseCfg(
prim_path="/World/light",
spawn=sim_utils.DistantLightCfg(color=(0.75, 0.75, 0.75), intensity=3000.0),
2026-03-19 09:08:57 -04:00
)
# ['Trunk', 'H1', 'H2', 'AL1', 'AL2', 'AL3', 'left_hand_link', 'AR1', 'AR2', 'AR3', 'right_hand_link', 'Waist', 'Hip_Pitch_Left', 'Hip_Roll_Left', 'Hip_Yaw_Left', 'Shank_Left', 'Ankle_Cross_Left', 'left_foot_link', 'Hip_Pitch_Right', 'Hip_Roll_Right', 'Hip_Yaw_Right', 'Shank_Right', 'Ankle_Cross_Right', 'right_foot_link']