Actuator Options¶
Actuator options describe a physical motor (rotor inertia, gear ratio, effort and velocity limits, ...) so a robot
preset can derive its armature and PD gains from the hardware instead of hand-tuned numbers. ActuatorSpecOptions
is the base; the presets below model the motors of the built-in Unitree, DAMIAO and LimX robots. The
robots guide shows how a robot preset uses them.
Actuator specification options and motor presets (Unitree, DAMIAO, LimX).
Classes¶
ActuatorSpecOptions
¶
Bases: ConfigurableOptions
Specification of a single actuator's physical and control parameters.
| PARAMETER | DESCRIPTION |
|---|---|
STIFFNESS
|
Stiffness of the actuator (different from control stiffness, i.e., kp) [N*m/rad]
|
DAMPING
|
Damping of the actuator (different from control damping, i.e., kd) [Nms/rad]
|
FULL_TORQUE_SPEED
|
(X1) Maximum Speed at Full Torque (T-N Curve Knee Point) [rad/s]
|
NO_LOAD_SPEED
|
(X2) No-Load Speed Test Result [rad/s]
|
DRIVING_TORQUE_LIMIT
|
(Y1) Driving Torque Limit, i.e., Torque and Speed in the Same Direction [N*m]
|
BRAKING_TORQUE_LIMIT
|
(Y2) Braking Torque Limit, i.e., Torque and Speed in the Opposite Direction [N*m]
|
EFFORT_LIMIT
|
Maximum torque limit to prevent mechanical damage [N*m]
|
STATIC_FRICTION
|
Static Friction Coefficient
|
DYNAMIC_FRICTION
|
Dynamic Friction Coefficient
|
FRICTION_ACTIVATION_SPEED
|
Velocity at which the friction is fully activated [rad/s]
|
ROTOR_INERTIA
|
Rotor inertia of the motor [kg*m^2]
|
GEAR_RATIO
|
Gear ratio of the gearbox
|
NOTE
Per-joint motor torque-speed envelope parameters.
The torque-speed curve is defined as follows:
Torque Limit, N·m
^
Y2──────────| |──────────────Y1 | │ | │ | │ | | ------------+--------------|------> velocity: rad/s X1 X2
Source code in eden/options/options.py
Attributes¶
Methods:¶
ARMATURE
classmethod
¶
ARMATURE() -> float
Source code in eden/options/actuators.py
RAIBERT_HEURISTIC_KP
classmethod
¶
RAIBERT_HEURISTIC_KP() -> float
Return the control stiffness (kp) computed using the Raibert Heuristic [N*m/rad].
RAIBERT_HEURISTIC_KD
classmethod
¶
Return the control damping (kd) computed using the Raibert Heuristic [Nms/rad].
Unitree7520_22
¶
Bases: ActuatorSpecOptions
Unitree N7520-22.5 motor used in G1 robot.
Source code in eden/options/options.py
Unitree7520_14
¶
Bases: ActuatorSpecOptions
Unitree N7520-14.3 motor used in G1 robot.
Source code in eden/options/options.py
Unitree5020_16
¶
Bases: ActuatorSpecOptions
Unitree N5020-16 motor used in G1 robot.
Source code in eden/options/options.py
Unitree5020_16_DOUBLE
¶
Bases: Unitree5020_16
Two Unitree N5020-16 motors driving a single joint via a 4-bar linkage.
Used for G1 waist pitch/roll and G1 ankle pitch/roll.
Assumes a nominal 1:1 linkage ratio. Under this assumption: - Joint speed limits are identical to a single motor (rotors spin synchronously at joint speed). - Joint torque, friction, and reflected inertia are the sum of both motors' contributions.
Note that the true effective armature is configuration-dependent because of the linkage geometry.
Source code in eden/options/options.py
Attributes¶
DRIVING_TORQUE_LIMIT
class-attribute
¶
DRIVING_TORQUE_LIMIT: float = Unitree5020_16.DRIVING_TORQUE_LIMIT * 2
BRAKING_TORQUE_LIMIT
class-attribute
¶
BRAKING_TORQUE_LIMIT: float = Unitree5020_16.BRAKING_TORQUE_LIMIT * 2
ROTOR_INERTIA
class-attribute
¶
ROTOR_INERTIA: tuple[float, float, float] = tuple(2.0 * r for r in Unitree5020_16.ROTOR_INERTIA)
Unitree4010_25
¶
Bases: ActuatorSpecOptions
Unitree W4010-25 motor used in G1 robot.
Source code in eden/options/options.py
Attributes¶
Unitree8010_6
¶
Bases: ActuatorSpecOptions
Unitree M8010-6 motor used in Go1 robot.
Source code in eden/options/options.py
Attributes¶
Unitree8010_6Calf
¶
Bases: Unitree8010_6
Unitree M8010-6 motor used in Go1 robot with 1.5 gear ratio (linkage ratio) for calf joint.
Source code in eden/options/options.py
Attributes¶
FULL_TORQUE_SPEED
class-attribute
¶
FULL_TORQUE_SPEED: float = Unitree8010_6.FULL_TORQUE_SPEED / 1.5
DRIVING_TORQUE_LIMIT
class-attribute
¶
DRIVING_TORQUE_LIMIT: float = Unitree8010_6.DRIVING_TORQUE_LIMIT * 1.5
BRAKING_TORQUE_LIMIT
class-attribute
¶
BRAKING_TORQUE_LIMIT: float = Unitree8010_6.BRAKING_TORQUE_LIMIT * 1.5
UnitreeGo2HV
¶
Bases: ActuatorSpecOptions
Unitree Go2 HV motor used in Go2 robot (this is a best guess).
Source code in eden/options/options.py
Attributes¶
UnitreeGo2HVCalf
¶
Bases: UnitreeGo2HV
Unitree Go2 HV motor used in Go2 robot with 1.5 gear ratio (linkage ratio) for calf joint.
Source code in eden/options/options.py
Attributes¶
DRIVING_TORQUE_LIMIT
class-attribute
¶
DRIVING_TORQUE_LIMIT: float = UnitreeGo2HV.DRIVING_TORQUE_LIMIT * 1.5
BRAKING_TORQUE_LIMIT
class-attribute
¶
BRAKING_TORQUE_LIMIT: float = UnitreeGo2HV.BRAKING_TORQUE_LIMIT * 1.5
DamiaoDM4310
¶
Bases: ActuatorSpecOptions
DAMIAO DM-J4310-2EC servo motor used as the wrist-joint and gripper motor on the i2rt YAM arm.
24V, 10:1 internal planetary gearbox, gearbox-output peak torque 7 N·m, driving J4-J6 plus the fingers.
Speed/torque values are at the gearbox output shaft per the data sheet;
ROTOR_INERTIA is the motor-side rotor inertia and GEAR_RATIO
folds in the internal planetary, so :meth:ARMATURE returns the
joint-side reflected armature.
Source code in eden/options/options.py
Attributes¶
DamiaoDM4340
¶
Bases: ActuatorSpecOptions
DAMIAO DM-J4340-2EC servo motor (24V variant).
40:1 internal planetary gearbox, joint-side nominal/peak torque 9 / 27 N·m.
Datasheet (24V): nominal current 2.5 A, peak current 8 A, nominal torque 9 N·m, peak torque 27 N·m, nominal speed 36 rpm, max no-load speed 52 rpm.
Speed/torque values are at the gearbox output shaft per the data sheet;
ROTOR_INERTIA is the motor-side rotor inertia and GEAR_RATIO
folds in the internal planetary, so :meth:ARMATURE returns the
joint-side reflected armature (≈ 0.032 kg·m²).
Source code in eden/options/options.py
Attributes¶
LimxOliActuator
¶
Bases: ActuatorSpecOptions
LimX Oli (HU_D04) actuator base.
LimX publishes no datasheets, so only EFFORT_LIMIT (the deployed
user_torque_limit) and the joint-side reflected armature are set; speed and
friction stay at defaults (TODO). The gearbox split is unknown, so the reflected
armature (the armature in the RL MJCF HU_D04_01_agmr.xml) is encoded
directly as ROTOR_INERTIA with GEAR_RATIO = 1.
Source code in eden/options/options.py
LimxOliHipKnee
¶
Bases: LimxOliActuator
Oli hip + knee actuator (140 N·m class).
Source code in eden/options/options.py
LimxOliAnkleWaist
¶
Bases: LimxOliActuator
Oli ankle + waist actuator (42 N·m class).
Ankle (*_achilles push-rods) and waist roll/pitch (waist_A/waist_B)
are parallel linkages, so the effective reflected armature (0.09488) is ~14%
above the physical single-joint value (0.0835).
Source code in eden/options/options.py
LimxOliShoulderElbow
¶
Bases: LimxOliActuator
Oli shoulder + elbow actuator (42 N·m class, direct drive).
Source code in eden/options/options.py
LimxOliWristHead
¶
Bases: LimxOliActuator
Oli wrist + head actuator (19 N·m class).
Source code in eden/options/options.py
Functions:¶
The helpers that turn a motor spec into armature and gains (reflected_inertia, raibert_heuristic_kp, ...) are on
the robotics utilities page.