编写资产配置#
本指南详细介绍了创建 ArticulationCfg
的过程。 ArticulationCfg
是定义Isaac Lab中 Articulation
属性的配置对象。
备注
在本指南中,我们只涵盖了创建 ArticulationCfg
的过程,但创建任何其他资产配置对象的过程类似。
我们将使用Cartpole示例来演示如何创建 ArticulationCfg
。 Cartpole是一个简单的机器人,由一个连接到杆的小车组成。 小车可以沿着轨道自由移动,杆可以在小车周围自由旋转。
Cartpole配置代码
1# Copyright (c) 2022-2024, The Isaac Lab Project Developers.
2# All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5
6"""Configuration for a simple Cartpole robot."""
7
8
9import omni.isaac.lab.sim as sim_utils
10from omni.isaac.lab.actuators import ImplicitActuatorCfg
11from omni.isaac.lab.assets import ArticulationCfg
12from omni.isaac.lab.utils.assets import ISAACLAB_NUCLEUS_DIR
13
14##
15# Configuration
16##
17
18CARTPOLE_CFG = ArticulationCfg(
19 spawn=sim_utils.UsdFileCfg(
20 usd_path=f"{ISAACLAB_NUCLEUS_DIR}/Robots/Classic/Cartpole/cartpole.usd",
21 rigid_props=sim_utils.RigidBodyPropertiesCfg(
22 rigid_body_enabled=True,
23 max_linear_velocity=1000.0,
24 max_angular_velocity=1000.0,
25 max_depenetration_velocity=100.0,
26 enable_gyroscopic_forces=True,
27 ),
28 articulation_props=sim_utils.ArticulationRootPropertiesCfg(
29 enabled_self_collisions=False,
30 solver_position_iteration_count=4,
31 solver_velocity_iteration_count=0,
32 sleep_threshold=0.005,
33 stabilization_threshold=0.001,
34 ),
35 ),
36 init_state=ArticulationCfg.InitialStateCfg(
37 pos=(0.0, 0.0, 2.0), joint_pos={"slider_to_cart": 0.0, "cart_to_pole": 0.0}
38 ),
39 actuators={
40 "cart_actuator": ImplicitActuatorCfg(
41 joint_names_expr=["slider_to_cart"],
42 effort_limit=400.0,
43 velocity_limit=100.0,
44 stiffness=0.0,
45 damping=10.0,
46 ),
47 "pole_actuator": ImplicitActuatorCfg(
48 joint_names_expr=["cart_to_pole"], effort_limit=400.0, velocity_limit=100.0, stiffness=0.0, damping=0.0
49 ),
50 },
51)
52"""Configuration for a simple Cartpole robot."""
定义生成配置#
如 生成基本物体到场景中 教程中所述,生成配置定义要生成的资产的属性。此生成可能以程序方式进行,也可能通过现有的资产文件(例如USD或URDF)进行。在本例中,我们将从USD文件生成Cartpole。
从USD文件生成资产时,我们定义其 UsdFileCfg
。此配置对象接收以下参数:
usd_path
: 要生成的USD文件路径rigid_props
: 关节根部的属性articulation_props
: 所有关节链接的属性
最后两个参数是可选的。如果未指定,它们将保持在USD文件中的默认值。
spawn=sim_utils.UsdFileCfg(
usd_path=f"{ISAACLAB_NUCLEUS_DIR}/Robots/Classic/Cartpole/cartpole.usd",
rigid_props=sim_utils.RigidBodyPropertiesCfg(
rigid_body_enabled=True,
max_linear_velocity=1000.0,
max_angular_velocity=1000.0,
max_depenetration_velocity=100.0,
enable_gyroscopic_forces=True,
),
articulation_props=sim_utils.ArticulationRootPropertiesCfg(
enabled_self_collisions=False,
solver_position_iteration_count=4,
solver_velocity_iteration_count=0,
sleep_threshold=0.005,
stabilization_threshold=0.001,
),
),
如要从URDF文件中导入关节而不是从USD文件中导入,你可以用 UrdfFileCfg
替换 UsdFileCfg
。更多详情,请查看API文档。
定义初始状态#
每个资产都需要通过其配置在模拟中定义其初始或 默认 状态。此配置存储在资产的默认状态缓冲区中,当需要重置资产状态时,可以访问这些缓冲区。
备注
资产的初始状态是根据其本地环境框架定义的。然后,当重置资产状态时,需要将其转换为全局模拟框架。更多详情,请查看 与关节交互 教程。
对于关节, InitialStateCfg
对象定义了关节根部的初始状态以及所有关节的初始状态。在本例中,我们将在XY平面的原点处生成Cartpole,在Z高度为2.0米处。同时,关节位置和速度设置为0.0。
init_state=ArticulationCfg.InitialStateCfg(
pos=(0.0, 0.0, 2.0), joint_pos={"slider_to_cart": 0.0, "cart_to_pole": 0.0}
),
定义执行器配置#
执行器是关节中的关键组件。通过此配置,可以定义要使用的执行器模型类型。我们可以使用物理引擎提供的内部执行器模型(即隐式执行器模型),也可以使用用户定义的方程系统控制的自定义执行器模型(即显式执行器模型)。有关执行器的更多详情,请参见 执行器 。
cartpole的关节具有两个执行器,分别对应于它的每个关节:cart_to_pole
和 slider_to_cart
。我们对这些执行器使用两种不同的执行器模型作为示例。但是,由于它们都使用相同的执行器模型,可以将它们组合成一个单独的执行器模型。
使用分开的执行器模型进行执行器模型配置
actuators={
"cart_actuator": ImplicitActuatorCfg(
joint_names_expr=["slider_to_cart"],
effort_limit=400.0,
velocity_limit=100.0,
stiffness=0.0,
damping=10.0,
),
"pole_actuator": ImplicitActuatorCfg(
joint_names_expr=["cart_to_pole"], effort_limit=400.0, velocity_limit=100.0, stiffness=0.0, damping=0.0
),
使用单个执行器模型进行执行器模型配置
actuators={
"all_joints": ImplicitActuatorCfg(
joint_names_expr=[".*"],
effort_limit=400.0,
velocity_limit=100.0,
stiffness={"slider_to_cart": 0.0, "cart_to_pole": 0.0},
damping={"slider_to_cart": 10.0, "cart_to_pole": 0.0},
),
},