An actuator that uses Pigpiox to drive a servo.
Configuration is derived from the joint's motor_profile injected by
BB.Actuator.Server:
- Position limits from
motor_profile.motor_lower/motor_upper - Velocity limit from
motor_profile.motor_velocity_limit - PWM range maps linearly to the motor's position range
(
motor_lower → min_pulse,motor_upper → max_pulse)
When a position command is received, the actuator:
- Clamps the position to motor limits
- Converts to PWM pulse width
- Sends PWM command to pigpiox
- Publishes a
BB.Message.Actuator.BeginMotionviaBB.Actuator.publish_begin_motion/3(which handles the motor → joint-space conversion)
Safety
This actuator implements the BB.Safety behaviour. When the robot is disarmed
(either by command or due to supervisor crash), the servo PWM output is disabled
by setting the pulse width to 0.
Summary
Functions
Disable the servo by setting pulse width to 0.
Functions
Disable the servo by setting pulse width to 0.
Called by BB.Safety.Controller when the robot is disarmed or crashes.
This function works without GenServer state - it only needs the pin number.