mdp
模块:
| 名称 | 描述 |
|---|---|
commands |
|
类:
| 名称 | 描述 |
|---|---|
FlightActionMapper |
Map batched normalized actions into controller targets, wrench, or RPM. |
FlightMappingConfig |
Mapping-range configuration for normalized action scaling. |
Mixer |
Map thrust and moment demands to rotor commands. |
FlightController |
PID flight controller (batched). |
VehicleParams |
LAV2 vehicle parameters. |
RotorDynamics |
Batched rotor dynamics model. |
TrackDynamics |
Batched track dynamics model. |
ControlAction |
Body torque control action term. |
ControlActionCfg |
See :class: |
TrackControlAction |
Track force control action term. |
TrackControlActionCfg |
See :class: |
UniformPoseCommandGlobal |
Command generator that generates pose commands containing a 3-D position and heading. |
UniformPoseCommandGlobalCfg |
Configuration for the uniform 3D-pose command generator. |
UniformVelocityGlobalCommand |
Command generator that generates a velocity command with uniform distribution. |
UniformVelocityGlobalCommandCfg |
Configuration for the uniform velocity command generator. |
UniformBimodalVelocityCommand |
Bimodal velocity command generator with a discrete mode indicator (4+1). |
UniformBimodalVelocityCommandCfg |
Configuration for the bimodal velocity command generator (flight vs ground). |
HelixTrajectory |
Batched helix trajectory with optional vertical oscillation. |
LemniscateTrajectory |
Batched Bernoulli lemniscate trajectory with vertical oscillation. |
LissajousTrajectory |
Batched three-dimensional Lissajous trajectory. |
RectangleTrajectory |
Batched constant-speed rectangle trajectory in the horizontal plane. |
RandomTrajectoryCommand |
Trajectory command generator with randomized type and parameters per environment. |
RandomTrajectoryCommandCfg |
Configuration for randomized trajectory commands. |
函数:
| 名称 | 描述 |
|---|---|
randomize_action_term_attr |
Randomize a selected action-term attribute. |
randomize_controller_params |
Randomize controller gains and command limits attached to an action term. |
randomize_mixer_params |
Randomize mixer parameters attached to an action term. |
randomize_rotor_params |
Randomize rotor parameters attached to an action term. |
randomize_mapping_params |
Randomize action-mapper runtime parameters attached to an action term. |
target_pos_b |
Position of target in body frame. |
root_euler_w |
Euler angles of the root in world frame. |
root_axis_angle_w |
Axis-angle of the root in world frame. |
lin_vel_l2 |
Penalize base linear velocity using L2 squared kernel. |
ang_vel_l2 |
Penalize base angular velocity using L2 squared kernel. |
pos_error_l2 |
Penalize asset pos from its target pos using L2 squared kernel. |
pos_error_tanh |
Penalize asset pos from its target pos using tanh kernel. |
yaw_error_l2 |
Penalize heading error from target heading using L2 squared kernel. |
yaw_error_tanh |
Penalize heading error from target heading using tanh kernel. |
track_lin_vel_z_exp |
Reward tracking of linear velocity commands (z axis) using exponential kernel. |
track_lin_vel_exp |
Reward tracking of linear velocity commands using exponential kernel. |
track_yaw_vel_exp |
Reward tracking of angular velocity commands (yaw) using exponential kernel. |
hover_tracking |
Penalize deviation of the collective acceleration command from hover. |
bimodal_action_tanh |
Penalize bimodal actions using tanh kernel. |
bimodal_height_tanh |
Penalize bimodal height using tanh kernel. |
contact_impulse |
Penalize excessive contact impulse (rate of change of contact forces). |
bimodal_contacts |
Penalize contacts when switching from flight to ground mode. |
died |
Termination condition based on the robot's height. |
FlightActionMapper
FlightActionMapper(control_mode: str, params: VehicleParams = VehicleParams(), mapping: FlightMappingConfig | None = None, *, num_envs: int = 1, device: str | device = 'cpu')
Map batched normalized actions into controller targets, wrench, or RPM.
Initialize a batched Torch flight action mapper for the selected mode.
方法:
| 名称 | 描述 |
|---|---|
randomize |
Randomize mapper runtime parameters used by action scaling. |
action_to_collective_acc |
Map a normalized policy collective action to total collective acceleration. |
collective_acc_to_thrust |
Convert total collective acceleration into total thrust in Newtons. |
action_to_collective_thrust |
Convert a normalized policy collective action into total thrust. |
map_action |
Map a normalized batched action into RPM commands and intermediates. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
requires_controller |
bool
|
Whether this mode needs a controller target expansion step. |
requires_controller
property
requires_controller: bool
Whether this mode needs a controller target expansion step.
randomize
randomize(env_ids=None, randomization: dict[str, tuple[float, float]] | None = None) -> None
Randomize mapper runtime parameters used by action scaling.
action_to_collective_acc
action_to_collective_acc(action: Tensor, mixer: Mixer) -> torch.Tensor
Map a normalized policy collective action to total collective acceleration.
collective_acc_to_thrust
collective_acc_to_thrust(collective_acc: Tensor) -> torch.Tensor
Convert total collective acceleration into total thrust in Newtons.
action_to_collective_thrust
action_to_collective_thrust(action: Tensor, mixer: Mixer) -> torch.Tensor
Convert a normalized policy collective action into total thrust.
map_action
map_action(action: Tensor, mixer: Mixer, *, state: Tensor | None = None, flight_controller: ControllerBase | None = None) -> FlightMappingResult
Map a normalized batched action into RPM commands and intermediates.
FlightMappingConfig
dataclass
FlightMappingConfig(velocity_range: tuple[float, float, float] | None = None, attitude_range: tuple[float, float, float] | None = None, body_rate_range: tuple[float, float, float] | None = (2.0, 2.0, 2.0))
Mapping-range configuration for normalized action scaling.
方法:
| 名称 | 描述 |
|---|---|
from_params |
Build mapping ranges from vehicle parameters. |
resolve |
Resolve config overrides into concrete mapping ranges. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
velocity_range |
tuple[float, float, float] | None
|
Velocity scaling in m/s for x, y, z axes. |
attitude_range |
tuple[float, float, float] | None
|
Attitude scaling in radians. |
body_rate_range |
tuple[float, float, float] | None
|
Body-rate scaling in rad/s. |
velocity_range
class-attribute
instance-attribute
velocity_range: tuple[float, float, float] | None = None
Velocity scaling in m/s for x, y, z axes.
attitude_range
class-attribute
instance-attribute
attitude_range: tuple[float, float, float] | None = None
Attitude scaling in radians.
body_rate_range
class-attribute
instance-attribute
body_rate_range: tuple[float, float, float] | None = (2.0, 2.0, 2.0)
Body-rate scaling in rad/s.
from_params
classmethod
from_params(params: VehicleParams) -> FlightMappingConfig
Build mapping ranges from vehicle parameters.
The returned ranges are chosen to broadly cover the controller range
exposed by VehicleParams without requiring exact one-to-one
alignment with the internal PX4-style controller limits.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
VehicleParams
|
Vehicle parameters providing the reference control bounds. |
必需 |
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
FlightMappingConfig |
FlightMappingConfig
|
Mapping ranges derived from |
resolve
resolve(params: VehicleParams) -> FlightMappingConfig
Resolve config overrides into concrete mapping ranges.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
VehicleParams
|
Vehicle parameters providing fallback control bounds. |
必需 |
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
FlightMappingConfig |
FlightMappingConfig
|
Concrete mapping ranges for runtime use. |
Mixer
Mixer(params: VehicleParams = VehicleParams(), num_envs: int = 1, device: str | device = 'cpu')
Map thrust and moment demands to rotor commands.
Note
电机推力分配: 电机1 = 推力 - 横滚(roll) + 俯仰(pitch) + 偏航(yaw) 电机2 = 推力 + 横滚(roll) - 俯仰(pitch) + 偏航(yaw) 电机3 = 推力 + 横滚(roll) + 俯仰(pitch) - 偏航(yaw) 电机4 = 推力 - 横滚(roll) - 俯仰(pitch) - 偏航(yaw)
Initialize the torch mixer with vehicle parameters and device.
方法:
| 名称 | 描述 |
|---|---|
randomize |
Randomize mixer runtime parameters from nominal values. |
calculate_rotor_commands |
Allocate thrust and moments into rotor speeds. |
randomize
randomize(env_ids=None, randomization=None)
Randomize mixer runtime parameters from nominal values.
calculate_rotor_commands
calculate_rotor_commands(control: Tensor) -> torch.Tensor
Allocate thrust and moments into rotor speeds.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Tensor
|
Desired total thrust and roll/pitch/yaw moments. Shape: (num_envs, 4) |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Tensor
|
torch.Tensor: The amplitude of each motor's rotational speed (calculated using |
FlightController
FlightController(params: VehicleParams = VehicleParams(), control_mask: list[int] = [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0], gains: dict | None = None, limits: dict | None = None, num_envs: int = 1, device: str | device = 'cpu')
Bases: ControllerBase
PID flight controller (batched).
Initialize the batched flight PID controller.
方法:
| 名称 | 描述 |
|---|---|
randomize |
Randomize configured PID gains, controller limits, and physical params. |
reset |
Reset PID loops for selected environments. |
update |
Update controller. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
params |
VehicleParams
|
Vehicle parameters for the controller. |
control_mask |
ndarray | Tensor
|
unified control mask for target/state channels, used in update(). e.g. using 9~11 for attitude yaw control. |
params
instance-attribute
params: VehicleParams = params
Vehicle parameters for the controller.
control_mask
instance-attribute
control_mask: ndarray | Tensor = control_mask
unified control mask for target/state channels, used in update(). e.g. using 9~11 for attitude yaw control.
randomize
randomize(env_ids=None, gains=None, limits=None, params=None)
Randomize configured PID gains, controller limits, and physical params.
reset
reset(env_ids)
Reset PID loops for selected environments.
update
update(target: Tensor, state: Tensor) -> torch.Tensor
Update controller.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Tensor
|
(N, 12) desired [x, y, z, vx, vy, vz, roll, pitch, yaw, wx, wy, wz] |
必需 |
|
Tensor
|
(N, 12) current state same ordering. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Tensor
|
torch.Tensor: Tensor of shape (N, 4): [thrust, roll_moment, pitch_moment, yaw_moment]. |
VehicleParams
dataclass
VehicleParams(rho: float = 1.184, g: float = 9.81, sim_dt: float = 0.01, step_dt: float = 0.01, randomization: dict[str, dict[str, tuple[float, float]]] = dict(), mass: float = 2.1, inertia: list = (lambda: np.diag([0.015, 0.0348, 0.042503]).tolist())(), diameter: float = 0.476, Cdx: float = 0.5, x: float = 0.0952, y: float = 0.114423, h: float = -0.0125, alpha: float = math.radians(8.0), r_p: float = 0.0775, Ct: float = 0.666, Cq: float = 0.0716, theta0: float = math.radians(14.6), thetaTip: float = math.radians(6.8), lock: float = 0.6051, max_rpm: float = 10000.0, init_rpm: float = math.nan, rotor_rpm_rate_limit: float = 50000.0, tau_f: float = 0.01, tau_m: float = 0.05, tau_up: float = math.nan, tau_down: float = math.nan, r_w: float = 0.0285, n_w: int = 4, B: float = 0.136, L: float = 0.23, h_cg: float = 0.078, f: float = 0.01, mu0: float = 0.8, K: float = 20, track_cmd_rate_limit: float = 100, mpc_xy_vel_max: float = 12.0, mpc_z_vel_max_up: float = 3.0, mpc_z_vel_max_dn: float = 1.5, mpc_man_tilt_max: float = math.radians(35.0), mc_rollrate_max: float = math.radians(220.0), mc_pitchrate_max: float = math.radians(220.0), mc_yawrate_max: float = math.radians(200.0))
LAV2 vehicle parameters.
方法:
| 名称 | 描述 |
|---|---|
__post_init__ |
Calculate derived parameters. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
rho |
float
|
空气密度 (kg/m^3) |
g |
float
|
重力加速度 (m/s^2) |
sim_dt |
float
|
仿真步长 (s) |
step_dt |
float
|
控制步长 (s) |
randomization |
dict[str, dict[str, tuple[float, float]]]
|
运行时参数随机化配置,按组件 (e.g. rotor/mixer) 划分为多个 scale 相对范围子表 |
mass |
float
|
质量 (kg) |
inertia |
list
|
惯性矩阵 (kg*m^2) |
diameter |
float
|
直径 (m) |
Cdx |
float
|
空气阻力系数 |
x |
float
|
x方向臂长 (m) |
y |
float
|
y方向臂长 (m) |
h |
float
|
重心高度 (m) |
alpha |
float
|
y方向涵道外倾角度 (rad) |
r_p |
float
|
螺旋桨半径 (m) |
Ct |
float
|
推力系数 |
Cq |
float
|
扭矩系数 |
theta0 |
float
|
桨根角 (rad) |
thetaTip |
float
|
桨尖角 (rad) |
theta1 |
float
|
桨叶扭转角 (rad) |
lock |
float
|
Lock number |
max_rpm |
float
|
最大转速 |
init_rpm |
float
|
初始转速 |
rotor_rpm_rate_limit |
float
|
旋翼转速变化率限制 (rpm/s) |
cT |
float
|
转速平方到推力增益 (N/(rpm^2)) |
cM |
float
|
转速平方到扭矩增益 (N*m/(rpm^2)) |
tau_f |
float
|
电机滤波时间常数 (s) |
tau_m |
float
|
兼容保留的电机时间常数 (s) |
tau_up |
float
|
电机升速时间常数 (s) |
tau_down |
float
|
电机降速时间常数 (s) |
r_w |
float
|
主动轮半径 (m) |
n_w |
int
|
负重轮个数 |
B |
float
|
两侧履带中心距 (m) |
L |
float
|
履带节点接地部分长度 (m) |
h_cg |
float
|
车体质心高度 (m) |
f |
float
|
滚动阻力系数(以干燥混凝土路面或沥青路面为例) |
mu0 |
float
|
滑转率为1时的摩擦系数 |
K |
float
|
依赖于土壤黏聚系数和摩擦特性的常数 |
track_cmd_rate_limit |
float
|
履带主动轮指令变化率限制 (rad/s^2) |
mpc_xy_vel_max |
float
|
Maximum horizontal velocity setpoint magnitude in m/s (0 - 20). |
mpc_z_vel_max_up |
float
|
Maximum upward velocity setpoint in m/s (0.5 - 8). |
mpc_z_vel_max_dn |
float
|
Maximum downward velocity setpoint magnitude in m/s (0.5 - 4). |
mpc_man_tilt_max |
float
|
Maximum manual tilt angle in radians (deg: 0 - 90). |
mc_rollrate_max |
float
|
Maximum roll-rate setpoint in rad/s (deg/s: 0 - 1800). |
mc_pitchrate_max |
float
|
Maximum pitch-rate setpoint in rad/s (deg/s: 0 - 1800). |
mc_yawrate_max |
float
|
Maximum yaw-rate setpoint in rad/s (deg/s: 0 - 1800). |
rho
class-attribute
instance-attribute
rho: float = 1.184
空气密度 (kg/m^3)
g
class-attribute
instance-attribute
g: float = 9.81
重力加速度 (m/s^2)
sim_dt
class-attribute
instance-attribute
sim_dt: float = 0.01
仿真步长 (s)
step_dt
class-attribute
instance-attribute
step_dt: float = 0.01
控制步长 (s)
randomization
class-attribute
instance-attribute
randomization: dict[str, dict[str, tuple[float, float]]] = field(default_factory=dict)
运行时参数随机化配置,按组件 (e.g. rotor/mixer) 划分为多个 scale 相对范围子表
mass
class-attribute
instance-attribute
mass: float = 2.1
质量 (kg)
inertia
class-attribute
instance-attribute
inertia: list = field(default_factory=lambda: tolist())
惯性矩阵 (kg*m^2)
diameter
class-attribute
instance-attribute
diameter: float = 0.476
直径 (m)
Cdx
class-attribute
instance-attribute
Cdx: float = 0.5
空气阻力系数
x
class-attribute
instance-attribute
x: float = 0.0952
x方向臂长 (m)
y
class-attribute
instance-attribute
y: float = 0.114423
y方向臂长 (m)
h
class-attribute
instance-attribute
h: float = -0.0125
重心高度 (m)
alpha
class-attribute
instance-attribute
alpha: float = radians(8.0)
y方向涵道外倾角度 (rad)
r_p
class-attribute
instance-attribute
r_p: float = 0.0775
螺旋桨半径 (m)
Ct
class-attribute
instance-attribute
Ct: float = 0.666
推力系数
Cq
class-attribute
instance-attribute
Cq: float = 0.0716
扭矩系数
theta0
class-attribute
instance-attribute
theta0: float = radians(14.6)
桨根角 (rad)
thetaTip
class-attribute
instance-attribute
thetaTip: float = radians(6.8)
桨尖角 (rad)
theta1
class-attribute
instance-attribute
theta1: float = field(init=False)
桨叶扭转角 (rad)
lock
class-attribute
instance-attribute
lock: float = 0.6051
Lock number
max_rpm
class-attribute
instance-attribute
max_rpm: float = 10000.0
最大转速
init_rpm
class-attribute
instance-attribute
init_rpm: float = nan
初始转速
rotor_rpm_rate_limit
class-attribute
instance-attribute
rotor_rpm_rate_limit: float = 50000.0
旋翼转速变化率限制 (rpm/s)
cT
class-attribute
instance-attribute
cT: float = field(init=False)
转速平方到推力增益 (N/(rpm^2))
cM
class-attribute
instance-attribute
cM: float = field(init=False)
转速平方到扭矩增益 (N*m/(rpm^2))
tau_f
class-attribute
instance-attribute
tau_f: float = 0.01
电机滤波时间常数 (s)
tau_m
class-attribute
instance-attribute
tau_m: float = 0.05
兼容保留的电机时间常数 (s)
tau_up
class-attribute
instance-attribute
tau_up: float = nan
电机升速时间常数 (s)
tau_down
class-attribute
instance-attribute
tau_down: float = nan
电机降速时间常数 (s)
r_w
class-attribute
instance-attribute
r_w: float = 0.0285
主动轮半径 (m)
n_w
class-attribute
instance-attribute
n_w: int = 4
负重轮个数
B
class-attribute
instance-attribute
B: float = 0.136
两侧履带中心距 (m)
L
class-attribute
instance-attribute
L: float = 0.23
履带节点接地部分长度 (m)
h_cg
class-attribute
instance-attribute
h_cg: float = 0.078
车体质心高度 (m)
f
class-attribute
instance-attribute
f: float = 0.01
滚动阻力系数(以干燥混凝土路面或沥青路面为例)
mu0
class-attribute
instance-attribute
mu0: float = 0.8
滑转率为1时的摩擦系数
K
class-attribute
instance-attribute
K: float = 20
依赖于土壤黏聚系数和摩擦特性的常数
track_cmd_rate_limit
class-attribute
instance-attribute
track_cmd_rate_limit: float = 100
履带主动轮指令变化率限制 (rad/s^2)
mpc_xy_vel_max
class-attribute
instance-attribute
mpc_xy_vel_max: float = 12.0
Maximum horizontal velocity setpoint magnitude in m/s (0 - 20).
mpc_z_vel_max_up
class-attribute
instance-attribute
mpc_z_vel_max_up: float = 3.0
Maximum upward velocity setpoint in m/s (0.5 - 8).
mpc_z_vel_max_dn
class-attribute
instance-attribute
mpc_z_vel_max_dn: float = 1.5
Maximum downward velocity setpoint magnitude in m/s (0.5 - 4).
mpc_man_tilt_max
class-attribute
instance-attribute
mpc_man_tilt_max: float = radians(35.0)
Maximum manual tilt angle in radians (deg: 0 - 90).
mc_rollrate_max
class-attribute
instance-attribute
mc_rollrate_max: float = radians(220.0)
Maximum roll-rate setpoint in rad/s (deg/s: 0 - 1800).
mc_pitchrate_max
class-attribute
instance-attribute
mc_pitchrate_max: float = radians(220.0)
Maximum pitch-rate setpoint in rad/s (deg/s: 0 - 1800).
mc_yawrate_max
class-attribute
instance-attribute
mc_yawrate_max: float = radians(200.0)
Maximum yaw-rate setpoint in rad/s (deg/s: 0 - 1800).
__post_init__
__post_init__()
Calculate derived parameters.
RotorDynamics
RotorDynamics(params: VehicleParams = VehicleParams(), num_envs: int = 1, device: str | device = 'cpu')
Bases: DynamicsBase
Batched rotor dynamics model.
Initialize batched rotor dynamics on the specified device.
方法:
| 名称 | 描述 |
|---|---|
randomize |
Randomize rotor runtime parameters from nominal values. |
update |
Calculate the output thrust and torque for each motor based on the motor commands. |
reset |
Resets the rotor model to initial conditions. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
params |
VehicleParams
|
Vehicle parameters for the dynamics model. |
params
instance-attribute
params: VehicleParams = params
Vehicle parameters for the dynamics model.
randomize
randomize(env_ids: slice | Sequence[int] | Tensor | None = None, randomization: dict[str, tuple[float, float]] | None = None) -> None
Randomize rotor runtime parameters from nominal values.
update
update(commands: Tensor) -> torch.Tensor
Calculate the output thrust and torque for each motor based on the motor commands.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Tensor
|
Command tensor for each motor. Shape: (num_envs, 4) |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Tensor
|
torch.Tensor: Thrust and torque tensor for each motor. Shape: (num_envs, 8) |
reset
reset(env_ids: slice | Sequence[int] | Tensor) -> None
Resets the rotor model to initial conditions.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
slice | Sequence[int] | Tensor
|
The environment ids to reset. |
必需 |
TrackDynamics
TrackDynamics(params: VehicleParams = VehicleParams(), num_envs: int = 1, device: str | device = 'cpu')
Bases: DynamicsBase
Batched track dynamics model.
Initialize batched track dynamics on the specified device.
方法:
| 名称 | 描述 |
|---|---|
update |
Compute track forces for batched environments. |
reset |
Resets the track model to initial conditions. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
params |
VehicleParams
|
Vehicle parameters for the dynamics model. |
params
instance-attribute
params: VehicleParams = params
Vehicle parameters for the dynamics model.
update
update(commands: Tensor, state: Tensor) -> torch.Tensor
Compute track forces for batched environments.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Tensor
|
Shape |
必需 |
|
Tensor
|
Shape |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Tensor
|
torch.Tensor: Tensor of shape |
reset
reset(env_ids: slice | Sequence[int] | Tensor) -> None
Resets the track model to initial conditions.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
slice | Sequence[int] | Tensor
|
The environment ids to reset. |
必需 |
ControlAction
ControlAction(cfg: ControlActionCfg, env: ManagerBasedRLEnv)
Bases: ActionTerm
Body torque control action term.
This action term applies a wrench to the drone body frame based on action commands
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
cfg |
ControlActionCfg
|
The configuration of the action term. |
cfg
instance-attribute
cfg: ControlActionCfg = cfg
The configuration of the action term.
ControlActionCfg
Bases: ActionTermCfg
See :class:ControlAction for more details.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
class_type |
type[ActionTerm]
|
Class of the action term. |
asset_name |
str
|
Name of the asset in the environment for which the commands are generated. |
params |
VehicleParams
|
Vehicle parameters. |
gains |
dict | None
|
Optional gains configuration for the flight controller. See FlightController for details. |
limits |
dict | None
|
Optional command-limit configuration passed directly to the flight controller. |
control_mode |
str
|
Control mode, options: cmd_motor_thrusts, cmd_motor_speeds, cmd_ctbm, cmd_ctbr, cmd_ctatt, cmd_vel, cmd_pos. |
mapping |
FlightMappingConfig
|
Action-mapping range overrides resolved against |
class_type
class-attribute
instance-attribute
class_type: type[ActionTerm] = ControlAction
Class of the action term.
asset_name
class-attribute
instance-attribute
asset_name: str = 'robot'
Name of the asset in the environment for which the commands are generated.
params
class-attribute
instance-attribute
params: VehicleParams = VehicleParams()
Vehicle parameters.
gains
class-attribute
instance-attribute
gains: dict | None = None
Optional gains configuration for the flight controller. See FlightController for details.
limits
class-attribute
instance-attribute
limits: dict | None = None
Optional command-limit configuration passed directly to the flight controller.
control_mode
class-attribute
instance-attribute
control_mode: str = 'cmd_motor_speeds'
Control mode, options: cmd_motor_thrusts, cmd_motor_speeds, cmd_ctbm, cmd_ctbr, cmd_ctatt, cmd_vel, cmd_pos.
rotorpy ref: - https://github.com/spencerfolk/rotorpy/blob/main/rotorpy/learning/quadrotor_environments.py#L319C1-L350C12 - https://github.com/spencerfolk/rotorpy/blob/main/rotorpy/vehicles/multirotor.py#L997
TODO: also align control modes with px4, see: https://docs.px4.io/v1.14/en/flight_modes/offboard (version is unclear ATM)
mapping
class-attribute
instance-attribute
mapping: FlightMappingConfig = FlightMappingConfig()
Action-mapping range overrides resolved against params.
The default mapping is an intentional policy-facing behavior rather than a direct reflection of the parameter-derived controller ranges.
TrackControlAction
TrackControlAction(cfg: TrackControlActionCfg, env: ManagerBasedRLEnv)
Bases: ActionTerm
Track force control action term.
This action term converts normalized track commands into ground reaction forces applied on each track body.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
cfg |
TrackControlActionCfg
|
The configuration of the action term. |
cfg
instance-attribute
cfg: TrackControlActionCfg = cfg
The configuration of the action term.
TrackControlActionCfg
Bases: ActionTermCfg
See :class:ControlAction for more details.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
class_type |
type[ActionTerm]
|
Class of the action term. |
asset_name |
str
|
Name of the asset in the environment for which the commands are generated. |
params |
VehicleParams
|
Vehicle parameters. |
class_type
class-attribute
instance-attribute
class_type: type[ActionTerm] = TrackControlAction
Class of the action term.
asset_name
class-attribute
instance-attribute
asset_name: str = 'robot'
Name of the asset in the environment for which the commands are generated.
params
class-attribute
instance-attribute
params: VehicleParams = VehicleParams()
Vehicle parameters.
UniformPoseCommandGlobal
UniformPoseCommandGlobal(cfg: UniformPoseCommandGlobalCfg, env: ManagerBasedEnv)
Bases: CommandTerm
Command generator that generates pose commands containing a 3-D position and heading.
The command generator samples uniform 3D positions around the environment origin. The
heading command is either set to point towards the target or is sampled uniformly.
This can be configured through the :attr:UniformPoseCommandGlobalCfg.simple_heading
parameter in the configuration.
Initialize the command generator class.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
UniformPoseCommandGlobalCfg
|
The configuration parameters for the command generator. |
必需 |
|
ManagerBasedEnv
|
The environment object. |
必需 |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
cfg |
UniformPoseCommandGlobalCfg
|
Configuration for the command generator. |
command |
Tensor
|
The desired 3D-pose in base frame. Shape is (num_envs, 4). |
cfg
instance-attribute
cfg: UniformPoseCommandGlobalCfg
Configuration for the command generator.
command
property
command: Tensor
The desired 3D-pose in base frame. Shape is (num_envs, 4).
UniformPoseCommandGlobalCfg
Bases: CommandTermCfg
Configuration for the uniform 3D-pose command generator.
类:
| 名称 | 描述 |
|---|---|
Ranges |
Uniform distribution ranges for the position commands. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
asset_name |
str
|
Name of the asset in the environment for which the commands are generated. |
simple_heading |
bool
|
Whether to use simple heading or not. |
ranges |
Ranges
|
Distribution ranges for the position commands. |
goal_pose_visualizer_cfg |
VisualizationMarkersCfg
|
The configuration for the goal pose visualization marker. Defaults to GREEN_ARROW_X_MARKER_CFG. |
asset_name
class-attribute
instance-attribute
asset_name: str = MISSING
Name of the asset in the environment for which the commands are generated.
simple_heading
class-attribute
instance-attribute
simple_heading: bool = MISSING
Whether to use simple heading or not.
If True, the heading is in the direction of the target position.
ranges
class-attribute
instance-attribute
ranges: Ranges = MISSING
Distribution ranges for the position commands.
goal_pose_visualizer_cfg
class-attribute
instance-attribute
goal_pose_visualizer_cfg: VisualizationMarkersCfg = replace(prim_path='/Visuals/Command/pose_goal')
The configuration for the goal pose visualization marker. Defaults to GREEN_ARROW_X_MARKER_CFG.
Ranges
Uniform distribution ranges for the position commands.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
pos_x |
tuple[float, float]
|
Range for the x position (in m). |
pos_y |
tuple[float, float]
|
Range for the y position (in m). |
pos_z |
tuple[float, float]
|
Range for the z position (in m). |
heading |
tuple[float, float]
|
Heading range for the position commands (in rad). |
pos_x
class-attribute
instance-attribute
pos_x: tuple[float, float] = MISSING
Range for the x position (in m).
pos_y
class-attribute
instance-attribute
pos_y: tuple[float, float] = MISSING
Range for the y position (in m).
pos_z
class-attribute
instance-attribute
pos_z: tuple[float, float] = MISSING
Range for the z position (in m).
heading
class-attribute
instance-attribute
heading: tuple[float, float] = MISSING
Heading range for the position commands (in rad).
Used only if :attr:simple_heading is False.
UniformVelocityGlobalCommand
UniformVelocityGlobalCommand(cfg: UniformVelocityGlobalCommandCfg, env: ManagerBasedEnv)
Bases: CommandTerm
Command generator that generates a velocity command with uniform distribution.
The command comprises linear velocity in x, y, z directions and an angular velocity around the z-axis. It is given in the robot's base frame.
If the :attr:cfg.heading_command flag is set to True, the angular velocity is computed from the heading
error similar to doing a proportional control on the heading error. The target heading is sampled uniformly
from the provided range. Otherwise, the angular velocity is sampled uniformly from the provided range.
Mathematically, the angular velocity is computed as follows from the heading command:
.. math::
\omega_z = \frac{1}{2} \text{wrap_to_pi}(\theta_{\text{target}} - \theta_{\text{current}})
Initialize the command generator.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
UniformVelocityGlobalCommandCfg
|
The configuration of the command generator. |
必需 |
|
ManagerBasedEnv
|
The environment. |
必需 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
If the heading command is active but the heading range is not provided. |
方法:
| 名称 | 描述 |
|---|---|
__str__ |
Return a string representation of the command generator. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
cfg |
UniformVelocityGlobalCommandCfg
|
The configuration of the command generator. |
command |
Tensor
|
The desired base velocity command in the base frame. Shape is (num_envs, 4). |
cfg
instance-attribute
cfg: UniformVelocityGlobalCommandCfg
The configuration of the command generator.
command
property
command: Tensor
The desired base velocity command in the base frame. Shape is (num_envs, 4).
__str__
__str__() -> str
Return a string representation of the command generator.
UniformVelocityGlobalCommandCfg
Bases: CommandTermCfg
Configuration for the uniform velocity command generator.
类:
| 名称 | 描述 |
|---|---|
Ranges |
Uniform distribution ranges for the velocity commands. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
asset_name |
str
|
Name of the asset in the environment for which the commands are generated. |
heading_command |
bool
|
Whether to use heading command or angular velocity command. Defaults to False. |
heading_control_stiffness |
float
|
Scale factor to convert the heading error to angular velocity command. Defaults to 1.0. |
rel_standing_envs |
float
|
The sampled probability of environments that should be standing still. Defaults to 0.0. |
rel_heading_envs |
float
|
The sampled probability of environments where the robots follow the heading-based angular velocity command |
ranges |
Ranges
|
Distribution ranges for the velocity commands. |
goal_vel_visualizer_cfg |
VisualizationMarkersCfg
|
The configuration for the goal velocity visualization marker. Defaults to GREEN_ARROW_X_MARKER_CFG. |
current_vel_visualizer_cfg |
VisualizationMarkersCfg
|
The configuration for the current velocity visualization marker. Defaults to BLUE_ARROW_X_MARKER_CFG. |
asset_name
class-attribute
instance-attribute
asset_name: str = MISSING
Name of the asset in the environment for which the commands are generated.
heading_command
class-attribute
instance-attribute
heading_command: bool = False
Whether to use heading command or angular velocity command. Defaults to False.
If True, the angular velocity command is computed from the heading error, where the target heading is sampled uniformly from provided range. Otherwise, the angular velocity command is sampled uniformly from provided range.
heading_control_stiffness
class-attribute
instance-attribute
heading_control_stiffness: float = 1.0
Scale factor to convert the heading error to angular velocity command. Defaults to 1.0.
rel_standing_envs
class-attribute
instance-attribute
rel_standing_envs: float = 0.0
The sampled probability of environments that should be standing still. Defaults to 0.0.
rel_heading_envs
class-attribute
instance-attribute
rel_heading_envs: float = 1.0
The sampled probability of environments where the robots follow the heading-based angular velocity command (the others follow the sampled angular velocity command). Defaults to 1.0.
This parameter is only used if :attr:heading_command is True.
ranges
class-attribute
instance-attribute
ranges: Ranges = MISSING
Distribution ranges for the velocity commands.
goal_vel_visualizer_cfg
class-attribute
instance-attribute
goal_vel_visualizer_cfg: VisualizationMarkersCfg = replace(prim_path='/Visuals/Command/velocity_goal')
The configuration for the goal velocity visualization marker. Defaults to GREEN_ARROW_X_MARKER_CFG.
current_vel_visualizer_cfg
class-attribute
instance-attribute
current_vel_visualizer_cfg: VisualizationMarkersCfg = replace(prim_path='/Visuals/Command/velocity_current')
The configuration for the current velocity visualization marker. Defaults to BLUE_ARROW_X_MARKER_CFG.
Ranges
Uniform distribution ranges for the velocity commands.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
lin_vel_x |
tuple[float, float]
|
Range for the linear-x velocity command (in m/s). |
lin_vel_y |
tuple[float, float]
|
Range for the linear-y velocity command (in m/s). |
lin_vel_z |
tuple[float, float]
|
Range for the linear-z velocity command (in m/s). |
ang_vel_z |
tuple[float, float]
|
Range for the angular-z velocity command (in rad/s). |
heading |
tuple[float, float] | None
|
Range for the heading command (in rad). Defaults to None. |
lin_vel_x
class-attribute
instance-attribute
lin_vel_x: tuple[float, float] = MISSING
Range for the linear-x velocity command (in m/s).
lin_vel_y
class-attribute
instance-attribute
lin_vel_y: tuple[float, float] = MISSING
Range for the linear-y velocity command (in m/s).
lin_vel_z
class-attribute
instance-attribute
lin_vel_z: tuple[float, float] = MISSING
Range for the linear-z velocity command (in m/s).
ang_vel_z
class-attribute
instance-attribute
ang_vel_z: tuple[float, float] = MISSING
Range for the angular-z velocity command (in rad/s).
heading
class-attribute
instance-attribute
heading: tuple[float, float] | None = None
Range for the heading command (in rad). Defaults to None.
This parameter is only used if :attr:~UniformVelocityGlobalCommandCfg.heading_command is True.
UniformBimodalVelocityCommand
UniformBimodalVelocityCommand(cfg: UniformBimodalVelocityCommandCfg, env: ManagerBasedEnv)
Bases: CommandTerm
Bimodal velocity command generator with a discrete mode indicator (4+1).
This command samples base-frame velocities with two modes:
- Flight mode: uses ranges_flight
- Ground mode: uses ranges_ground
The output command augments the 4-D velocity with a 1-D discrete indicator: - 0.0 for flight mode - 1.0 for ground/terrestrial mode
Heading behavior matches UniformVelocityGlobalCommand with optional heading-target
proportional control. Ranges are applied per selected mode.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
command |
Tensor
|
Return 4-D velocity plus 1-D mode indicator. Shape: (num_envs, 5). |
command
property
command: Tensor
Return 4-D velocity plus 1-D mode indicator. Shape: (num_envs, 5).
UniformBimodalVelocityCommandCfg
Bases: CommandTermCfg
Configuration for the bimodal velocity command generator (flight vs ground).
类:
| 名称 | 描述 |
|---|---|
Ranges |
Uniform distribution ranges for velocity commands per mode. |
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
asset_name |
str
|
Name of the asset receiving commands. |
heading_command |
bool
|
Whether to convert heading error to angular velocity (per-mode ranges apply). |
heading_control_stiffness |
float
|
Scale factor for heading error to yaw rate conversion. |
rel_standing_envs |
float
|
Probability that an environment should be standing still (zero command). |
rel_heading_envs |
float
|
Probability that an environment uses heading-based angular velocity when enabled. |
rel_flight_envs |
float
|
Probability of sampling flight mode (vs ground). |
ranges_flight |
Ranges
|
Ranges for flight mode sampling. |
ranges_ground |
Ranges
|
Ranges for ground/terrestrial mode sampling. |
goal_vel_visualizer_cfg |
VisualizationMarkersCfg
|
The configuration for the goal velocity visualization marker. Defaults to GREEN_ARROW_X_MARKER_CFG. |
current_vel_visualizer_cfg |
VisualizationMarkersCfg
|
The configuration for the current velocity visualization marker. Defaults to BLUE_ARROW_X_MARKER_CFG. |
asset_name
class-attribute
instance-attribute
asset_name: str = MISSING
Name of the asset receiving commands.
heading_command
class-attribute
instance-attribute
heading_command: bool = False
Whether to convert heading error to angular velocity (per-mode ranges apply).
heading_control_stiffness
class-attribute
instance-attribute
heading_control_stiffness: float = 1.0
Scale factor for heading error to yaw rate conversion.
rel_standing_envs
class-attribute
instance-attribute
rel_standing_envs: float = 0.0
Probability that an environment should be standing still (zero command).
rel_heading_envs
class-attribute
instance-attribute
rel_heading_envs: float = 1.0
Probability that an environment uses heading-based angular velocity when enabled.
rel_flight_envs
class-attribute
instance-attribute
rel_flight_envs: float = 0.5
Probability of sampling flight mode (vs ground).
ranges_flight
class-attribute
instance-attribute
ranges_flight: Ranges = MISSING
Ranges for flight mode sampling.
ranges_ground
class-attribute
instance-attribute
ranges_ground: Ranges = MISSING
Ranges for ground/terrestrial mode sampling.
goal_vel_visualizer_cfg
class-attribute
instance-attribute
goal_vel_visualizer_cfg: VisualizationMarkersCfg = VisualizationMarkersCfg(prim_path='/Visuals/Command/velocity_goal', markers={'flight': UsdFileCfg(usd_path=f'{ISAAC_NUCLEUS_DIR}/Props/UIElements/arrow_x.usd', scale=(1.0, 0.1, 0.1), visual_material=PreviewSurfaceCfg(diffuse_color=(0.0, 1.0, 0.0))), 'ground': UsdFileCfg(usd_path=f'{ISAAC_NUCLEUS_DIR}/Props/UIElements/arrow_x.usd', scale=(1.0, 0.1, 0.1), visual_material=PreviewSurfaceCfg(diffuse_color=(1.0, 0.0, 0.0)))})
The configuration for the goal velocity visualization marker. Defaults to GREEN_ARROW_X_MARKER_CFG.
current_vel_visualizer_cfg
class-attribute
instance-attribute
current_vel_visualizer_cfg: VisualizationMarkersCfg = replace(prim_path='/Visuals/Command/velocity_current')
The configuration for the current velocity visualization marker. Defaults to BLUE_ARROW_X_MARKER_CFG.
Ranges
Uniform distribution ranges for velocity commands per mode.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
lin_vel_x |
tuple[float, float]
|
Range for the linear-x velocity command (in m/s). |
lin_vel_y |
tuple[float, float]
|
Range for the linear-y velocity command (in m/s). |
lin_vel_z |
tuple[float, float]
|
Range for the linear-z velocity command (in m/s). |
ang_vel_z |
tuple[float, float]
|
Range for the angular-z velocity command (in rad/s). |
heading |
tuple[float, float] | None
|
Range for the heading command (in rad). Defaults to None. |
lin_vel_x
class-attribute
instance-attribute
lin_vel_x: tuple[float, float] = MISSING
Range for the linear-x velocity command (in m/s).
lin_vel_y
class-attribute
instance-attribute
lin_vel_y: tuple[float, float] = MISSING
Range for the linear-y velocity command (in m/s).
lin_vel_z
class-attribute
instance-attribute
lin_vel_z: tuple[float, float] = MISSING
Range for the linear-z velocity command (in m/s).
ang_vel_z
class-attribute
instance-attribute
ang_vel_z: tuple[float, float] = MISSING
Range for the angular-z velocity command (in rad/s).
heading
class-attribute
instance-attribute
heading: tuple[float, float] | None = None
Range for the heading command (in rad). Defaults to None.
This parameter is only used if :attr:~UniformBimodalVelocityCommandCfg.heading_command is True.
HelixTrajectory
dataclass
HelixTrajectory(*, yaw_from_velocity: bool = True, fixed_yaw: Tensor | None = None, attitude: Tensor | None = None, body_rate: Tensor | None = None, center: Tensor, radius: Tensor, omega: Tensor, z_amplitude: Tensor, z_frequency: Tensor, z_phase: Tensor)
Bases: SpatialTrajectory
Batched helix trajectory with optional vertical oscillation.
方法:
| 名称 | 描述 |
|---|---|
sample_heading |
Sample batched yaw and yaw-rate references for time values |
build_target |
Assemble a batched 12D target tensor from motion primitives. |
__post_init__ |
Initialize shared tensors from the center batch shape when available. |
sample |
Sample the batched helix trajectory at time values |
sample_heading
sample_heading(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> tuple[torch.Tensor, torch.Tensor]
Sample batched yaw and yaw-rate references for time values t.
build_target
build_target(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> torch.Tensor
Assemble a batched 12D target tensor from motion primitives.
__post_init__
__post_init__()
Initialize shared tensors from the center batch shape when available.
sample
sample(t: Tensor) -> torch.Tensor
Sample the batched helix trajectory at time values t.
LemniscateTrajectory
dataclass
LemniscateTrajectory(*, yaw_from_velocity: bool = True, fixed_yaw: Tensor | None = None, attitude: Tensor | None = None, body_rate: Tensor | None = None, center: Tensor, scale: Tensor, omega: Tensor, z_amplitude: Tensor, z_frequency: Tensor, z_phase: Tensor)
Bases: SpatialTrajectory
Batched Bernoulli lemniscate trajectory with vertical oscillation.
方法:
| 名称 | 描述 |
|---|---|
sample_heading |
Sample batched yaw and yaw-rate references for time values |
build_target |
Assemble a batched 12D target tensor from motion primitives. |
__post_init__ |
Initialize shared tensors from the center batch shape when available. |
sample |
Sample the batched lemniscate trajectory at time values |
sample_heading
sample_heading(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> tuple[torch.Tensor, torch.Tensor]
Sample batched yaw and yaw-rate references for time values t.
build_target
build_target(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> torch.Tensor
Assemble a batched 12D target tensor from motion primitives.
__post_init__
__post_init__()
Initialize shared tensors from the center batch shape when available.
sample
sample(t: Tensor) -> torch.Tensor
Sample the batched lemniscate trajectory at time values t.
LissajousTrajectory
dataclass
LissajousTrajectory(*, yaw_from_velocity: bool = True, fixed_yaw: Tensor | None = None, attitude: Tensor | None = None, body_rate: Tensor | None = None, center: Tensor, amplitude: Tensor, frequency: Tensor, phase: Tensor, omega: Tensor)
Bases: SpatialTrajectory
Batched three-dimensional Lissajous trajectory.
方法:
| 名称 | 描述 |
|---|---|
sample_heading |
Sample batched yaw and yaw-rate references for time values |
build_target |
Assemble a batched 12D target tensor from motion primitives. |
__post_init__ |
Initialize shared tensors from the center batch shape when available. |
sample |
Sample the batched Lissajous trajectory at time values |
sample_heading
sample_heading(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> tuple[torch.Tensor, torch.Tensor]
Sample batched yaw and yaw-rate references for time values t.
build_target
build_target(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> torch.Tensor
Assemble a batched 12D target tensor from motion primitives.
__post_init__
__post_init__()
Initialize shared tensors from the center batch shape when available.
sample
sample(t: Tensor) -> torch.Tensor
Sample the batched Lissajous trajectory at time values t.
RectangleTrajectory
dataclass
RectangleTrajectory(*, yaw_from_velocity: bool = True, fixed_yaw: Tensor | None = None, attitude: Tensor | None = None, body_rate: Tensor | None = None, center: Tensor, size: Tensor, speed: Tensor)
Bases: SpatialTrajectory
Batched constant-speed rectangle trajectory in the horizontal plane.
方法:
| 名称 | 描述 |
|---|---|
sample_heading |
Sample batched yaw and yaw-rate references for time values |
build_target |
Assemble a batched 12D target tensor from motion primitives. |
__post_init__ |
Initialize shared tensors from the center batch shape when available. |
sample |
Sample the batched rectangle trajectory at time values |
sample_heading
sample_heading(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> tuple[torch.Tensor, torch.Tensor]
Sample batched yaw and yaw-rate references for time values t.
build_target
build_target(t: Tensor, pos: Tensor, vel: Tensor, acc: Tensor) -> torch.Tensor
Assemble a batched 12D target tensor from motion primitives.
__post_init__
__post_init__()
Initialize shared tensors from the center batch shape when available.
sample
sample(t: Tensor) -> torch.Tensor
Sample the batched rectangle trajectory at time values t.
RandomTrajectoryCommand
RandomTrajectoryCommand(cfg: RandomTrajectoryCommandCfg, env: ManagerBasedEnv)
Bases: CommandTerm
Trajectory command generator with randomized type and parameters per environment.
RandomTrajectoryCommandCfg
Bases: CommandTermCfg
Configuration for randomized trajectory commands.
randomize_action_term_attr
randomize_action_term_attr(env, env_ids: Tensor | None, action_term_name: str = 'control_action', attr_name: str = '_flight_controller', **kwargs)
Randomize a selected action-term attribute.
randomize_controller_params
randomize_controller_params(env, env_ids: Tensor | None, action_term_name: str = 'control_action', controller_attr: str = '_flight_controller', gains: dict | None = None, limits: dict | None = None, params: dict[str, tuple[float, float]] | None = None)
Randomize controller gains and command limits attached to an action term.
randomize_mixer_params
randomize_mixer_params(env, env_ids: Tensor | None, action_term_name: str = 'control_action', mixer_attr: str = '_mixer', param_range: dict[str, tuple[float, float]] | None = None)
Randomize mixer parameters attached to an action term.
randomize_rotor_params
randomize_rotor_params(env, env_ids: Tensor | None, action_term_name: str = 'control_action', rotor_attr: str = '_rotor_dynamics', param_range: dict[str, tuple[float, float]] | None = None)
Randomize rotor parameters attached to an action term.
randomize_mapping_params
randomize_mapping_params(env, env_ids: Tensor | None, action_term_name: str = 'control_action', mapper_attr: str = '_mapper', param_range: dict[str, tuple[float, float]] | None = None)
Randomize action-mapper runtime parameters attached to an action term.
target_pos_b
target_pos_b(env: ManagerBasedRLEnv, command_name: str | None = None, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Position of target in body frame.
root_euler_w
root_euler_w(env: ManagerBasedRLEnv, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Euler angles of the root in world frame.
root_axis_angle_w
root_axis_angle_w(env: ManagerBasedRLEnv, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Axis-angle of the root in world frame.
lin_vel_l2
lin_vel_l2(env: ManagerBasedRLEnv, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Penalize base linear velocity using L2 squared kernel.
ang_vel_l2
ang_vel_l2(env: ManagerBasedRLEnv, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Penalize base angular velocity using L2 squared kernel.
pos_error_l2
pos_error_l2(env: ManagerBasedRLEnv, command_name: str) -> torch.Tensor
Penalize asset pos from its target pos using L2 squared kernel.
pos_error_tanh
pos_error_tanh(env: ManagerBasedRLEnv, std: float, command_name: str) -> torch.Tensor
Penalize asset pos from its target pos using tanh kernel.
yaw_error_l2
yaw_error_l2(env: ManagerBasedRLEnv, command_name: str) -> torch.Tensor
Penalize heading error from target heading using L2 squared kernel.
yaw_error_tanh
yaw_error_tanh(env: ManagerBasedRLEnv, std: float, command_name: str) -> torch.Tensor
Penalize heading error from target heading using tanh kernel.
track_lin_vel_z_exp
track_lin_vel_z_exp(env: ManagerBasedRLEnv, std: float, command_name: str, is_bimodal: bool = False, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Reward tracking of linear velocity commands (z axis) using exponential kernel.
track_lin_vel_exp
track_lin_vel_exp(env: ManagerBasedRLEnv, std: float, command_name: str, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Reward tracking of linear velocity commands using exponential kernel.
track_yaw_vel_exp
track_yaw_vel_exp(env: ManagerBasedRLEnv, std: float, command_name: str, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot')) -> torch.Tensor
Reward tracking of angular velocity commands (yaw) using exponential kernel.
hover_tracking
hover_tracking(env: ManagerBasedRLEnv, std: float = 0.1, action_name: str = 'control_action') -> torch.Tensor
Penalize deviation of the collective acceleration command from hover.
This reward is only meaningful for flight action modes whose first action
channel directly represents total collective acceleration:
cmd_ctatt, cmd_ctbr, and cmd_ctbm. Other modes return zero.
The penalty measures how far the current collective action sample is from hover acceleration. This encourages the policy to stay near the hover operating point.
bimodal_action_tanh
bimodal_action_tanh(env: ManagerBasedRLEnv, std: float, command_name: str, flight_action_name: str = 'control_action', ground_action_name: str = 'track_control_action', ground_weight: float = 1.0, flight_weight: float = 1.0) -> torch.Tensor
Penalize bimodal actions using tanh kernel.
bimodal_height_tanh
bimodal_height_tanh(env: ManagerBasedRLEnv, std: float, command_name: str, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot'), ground_weight: float = 1.0, flight_weight: float = 1.0) -> torch.Tensor
Penalize bimodal height using tanh kernel.
contact_impulse
contact_impulse(env: ManagerBasedRLEnv, threshold: float, sensor_cfg: SceneEntityCfg, mode: str = 'threshold') -> torch.Tensor
Penalize excessive contact impulse (rate of change of contact forces).
This function calculates the impulse as the change in contact forces between consecutive time steps and penalizes values that exceed a threshold.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
ManagerBasedRLEnv
|
The learning environment. |
必需 |
|
float
|
Maximum acceptable impulse magnitude. Forces below this are not penalized. |
必需 |
|
SceneEntityCfg
|
Configuration for the contact sensor, specifying which bodies to monitor. |
必需 |
|
str
|
Penalty calculation mode: - "threshold": Penalize only the amount exceeding threshold (continuous) - "binary": Return 1.0 if any impulse exceeds threshold, else 0.0 (discrete) - "total": Return total impulse magnitude regardless of threshold (for monitoring) |
'threshold'
|
返回:
| 类型 | 描述 |
|---|---|
Tensor
|
torch.Tensor: Penalty value for each environment: - "threshold" mode: Sum of (impulse - threshold) for all violations - "binary" mode: 1.0 if violation exists, 0.0 otherwise - "total" mode: Total impulse magnitude |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
If the sensor history length is less than 2 or the mode is invalid. |
示例:
>>> # Penalize hard landings (impulse > 50 N·s)
>>> impulse_penalty = contact_impulse(
... env, threshold=50.0,
... sensor_cfg=SceneEntityCfg("contact_sensor", body_ids=[arml_id, armr_id]),
... mode="threshold"
... )
>>> rewards["impulse_penalty"] = impulse_penalty * -1.0
bimodal_contacts
bimodal_contacts(env: ManagerBasedRLEnv, command_name: str, threshold: float, sensor_cfg: SceneEntityCfg, mode: str = 'threshold', ground_weight: float = 1.0, flight_weight: float = 1.0) -> torch.Tensor
Penalize contacts when switching from flight to ground mode.
died
died(env: ManagerBasedRLEnv, asset_cfg: SceneEntityCfg = SceneEntityCfg('robot'), min: float = 0.2, max: float = 2.0) -> torch.Tensor
Termination condition based on the robot's height.