Skip to content

attitude

Attitude-aware MLP model with rotation-manifold projection for rsl-rl.

Mirrors lav2/runner/skrl/cfg/LAV2_base_att.py but adapted to rsl-rl's MLPModel interface so it can be referenced via class_name in a config dict.

Control modes and their action dimensions::

cmd_ctatt_euler → 4D [thrust, roll, pitch, yaw] cmd_ctatt_rotvec → 4D [thrust, rx, ry, rz] cmd_ctatt_quat → 5D [thrust, qx, qy, qz, qw] cmd_ctatt_rotmat → 10D [thrust, r00..r22]

Projection layers ensure the rotation component of the policy output lies on a valid manifold. The projection is applied between the MLP output and the distribution update for single-slice distributions (Gaussian), or to the first slice for multi-slice distributions (Beta, heteroscedastic Gaussian).

Classes:

Name Description
AttitudeMLPModel

MLP model with optional rotation-manifold projection.

AttitudeMLPModel

AttitudeMLPModel(obs, obs_groups, obs_set, output_dim, hidden_dims=(128, 128), activation='tanh', obs_normalization=False, distribution_cfg=None, projection_type: str = '')

Bases: MLPModel

MLP model with optional rotation-manifold projection.

The projection is applied between the MLP output and the distribution update. This enforces rotation components to lie on valid manifolds (e.g. unit quaternion, orthogonal matrix).

Parameters:

Name Type Description Default

projection_type

str

Explicit projection name (one of "euler", "rotvec", "quat", "quat_plus", "quat_offset", "rotmat", "rotmat_offset"). When empty, auto-detected from output_dim.

''

Construct the model and append the projection to the MLP trunk.