step.servo.steps_dsl¶
Auto-generated step builders and DSL functions — DO NOT EDIT.
Source: steps.py
Classes¶
Builder for ShakeServo. Auto-generated — do not edit. |
|
Builder for SlowServo. Auto-generated — do not edit. |
|
Builder for FullyDisableServos. Auto-generated — do not edit. |
Functions¶
|
Oscillate a servo back and forth between two angles for a set time. |
|
Move a servo to an angle with smooth interpolated motion. |
Fully disable all servo outputs, removing all power from the servo pins. |
Module Contents¶
- class step.servo.steps_dsl.ShakeServoBuilder¶
Bases:
raccoon.step.step_builder.StepBuilderBuilder for ShakeServo. Auto-generated — do not edit.
- servo(value: raccoon.hal.Servo | step.servo.preset.ServoPreset)¶
- step.servo.steps_dsl.shake_servo(servo: raccoon.hal.Servo | step.servo.preset.ServoPreset = _UNSET, duration: float = _UNSET, angle_a: float = _UNSET, angle_b: float = _UNSET)¶
Oscillate a servo back and forth between two angles for a set time.
Rapidly alternates the servo between
angle_aandangle_bfor the given duration. The dwell time at each angle is automatically estimated from the angular distance so the servo has time to physically reach each endpoint before reversing. Useful for shaking objects loose or signalling the operator.- Parameters:
servo – The servo to control, obtained from the robot hardware map (e.g.
robot.servo(1)).duration – Total oscillation time in seconds. Must be >= 0.
angle_a – First oscillation endpoint in degrees.
angle_b – Second oscillation endpoint in degrees.
- Returns:
A ShakeServoBuilder (chainable via
.servo(),.duration(),.angle_a(),.angle_b(),.on_anomaly(),.skip_timing()).
Example:
from raccoon.step.servo import shake_servo # Shake a sorting tray for 3 seconds between 60 and 120 degrees shake_servo(robot.servo(1), duration=3.0, angle_a=60.0, angle_b=120.0)
- class step.servo.steps_dsl.SlowServoBuilder¶
Bases:
raccoon.step.step_builder.StepBuilderBuilder for SlowServo. Auto-generated — do not edit.
- servo(value: raccoon.hal.Servo | step.servo.preset.ServoPreset)¶
- easing(value: step.servo.steps.Easing | step.servo.steps.EasingFunc)¶
- step.servo.steps_dsl.slow_servo(servo: raccoon.hal.Servo | step.servo.preset.ServoPreset = _UNSET, angle: float = _UNSET, speed: float = 60.0, easing: step.servo.steps.Easing | step.servo.steps.EasingFunc = Easing.EASE_IN_OUT)¶
Move a servo to an angle with smooth interpolated motion.
Instead of commanding the servo to jump straight to the target (as
servo()does), this step interpolates through intermediate positions using an easing curve. The default is smoothstep ease-in-ease-out (3t² − 2t³), which gives gentle acceleration and deceleration. Other curves can be selected via theeasingparameter.The total move duration is derived from the angular distance divided by
speed. Intermediate positions are updated at ~10 Hz.- Parameters:
servo – The servo to control, obtained from the robot hardware map (e.g.
robot.servo(0)).angle – Target angle in degrees.
speed – Movement speed in degrees per second. Must be positive. Defaults to 60.0 deg/s.
easing – Interpolation curve. Pass an
Easingmember or any callable(t: float) -> floatmapping [0, 1] → [0, 1]. Defaults toEasing.EASE_IN_OUT.
- Returns:
A SlowServoBuilder (chainable via
.servo(),.angle(),.speed(),.easing(),.on_anomaly(),.skip_timing()).
Example:
from raccoon.step.servo import slow_servo, Easing # Gently lower the arm servo to 20 degrees at 45 deg/s slow_servo(robot.servo(0), angle=20.0, speed=45.0) # Linear (constant-speed) motion slow_servo(robot.servo(0), angle=150.0, easing=Easing.LINEAR) # Ease-out only (fast start, slow stop) slow_servo(robot.servo(0), angle=0.0, easing=Easing.EASE_OUT)
- class step.servo.steps_dsl.FullyDisableServosBuilder¶
Bases:
raccoon.step.step_builder.StepBuilderBuilder for FullyDisableServos. Auto-generated — do not edit.
- step.servo.steps_dsl.fully_disable_servos()¶
Fully disable all servo outputs, removing all power from the servo pins.
Commands the firmware to enter the fully-disabled servo mode for every servo port. In this mode, no PWM signal is sent and the servos can be moved freely by hand. This is useful for saving power or when the servos should not hold position (e.g. at the end of a run).
Servos will automatically re-enable when a new position command is sent (e.g. via
servo()orslow_servo()).- Returns:
A FullyDisableServosBuilder (chainable via ,
.on_anomaly(),.skip_timing()).
Example:
from raccoon.step.servo import fully_disable_servos # Release all servos at the end of a mission fully_disable_servos()