Skip to content

UMjPassthroughController

Writes control values directly to d->ctrl without modification.

Use this when the MJCF actuators handle their own dynamics (position actuators with kp/kv, or motor actuators receiving raw torque from Python). Functionally identical to the default ApplyControls() path, but as an explicit component for consistency with the controller framework.

Attribute Value
Kind Class
UE Macro UCLASS
Inherits UMjArticulationController
Blueprint Spawnable ✅ Yes

Properties

Public Properties

Property Type Description
bEnabled bool Is this controller active? If false, ApplyControls falls through to default path.

bEnabled

Is this controller active? If false, ApplyControls falls through to default path.

  • Type: bool
  • Editor: ✏️ EditAnywhere
  • Blueprint: 🔵 ReadWrite
  • Category: MuJoCo|Controller

Protected Properties

Property Type Description
Bindings TArray<FActuatorBinding> Actuator→DOF bindings, populated by Bind().

Bindings

Actuator→DOF bindings, populated by Bind().

Functions

Public Functions

General

Function Returns Description
Bind() void Called once after the MuJoCo model compiles. Resolves actuator→DOF
ComputeAndApply() void Called every physics step from AMjArticulation::ApplyControls().
IsBound() bool Has Bind() been called successfully?
GetNumBindings() int32 Number of bound actuators.
GetBindings() const TArray<FActuatorBinding>& Access bindings (for gain configuration by name).
Bind

Called once after the MuJoCo model compiles. Resolves actuator→DOF

  • Signature: Bind(mjModel* m, mjData* d, const TMapUMjActuator\*>& ActuatorIdMap)
ComputeAndApply

Called every physics step from AMjArticulation::ApplyControls().

  • Signature: ComputeAndApply(mjModel* m, mjData* d, uint8 Source)
IsBound

Has Bind() been called successfully?

  • Signature: IsBound()
  • Returns: bool
GetNumBindings

Number of bound actuators.

  • Signature: GetNumBindings()
  • Returns: int32
GetBindings

Access bindings (for gain configuration by name).