libstp.step.motion.at_distance¶
Wait until the robot has driven a certain distance from origin.
Designed to run inside a parallel() branch alongside a drive step:
- parallel(
drive_forward(50), seq([wait_until_distance(30), servo_open()]),
)
Multiple distance-triggered actions:
- parallel(
drive_forward(50), seq([wait_until_distance(20), arm_lower()]), seq([wait_until_distance(30), servo_open()]), seq([wait_until_distance(45), servo_close()]),
)
Polls odometry at 100Hz. Because LinearMotion.start() resets odometry, the distance is measured from the start of the concurrent drive step.
Classes¶
Block until odometry straight-line distance exceeds a threshold. |
Functions¶
|
Wait until the robot has driven at least the given distance. |
Module Contents¶
- class libstp.step.motion.at_distance.WaitUntilDistance(distance_cm: float, hz: int = 100)¶
Bases:
libstp.step.StepBlock until odometry straight-line distance exceeds a threshold.
- libstp.step.motion.at_distance.wait_until_distance(cm: float) WaitUntilDistance¶
Wait until the robot has driven at least the given distance.
Polls odometry straight-line distance from the origin at 100 Hz. Designed to run inside a
parallel()branch alongside a drive step, enabling actions to trigger at specific distances during a drive.- Parameters:
cm – Distance threshold in centimeters.
- Returns:
A WaitUntilDistance step.
Example:
from libstp.step import parallel, seq from libstp.step.motion import drive_forward, wait_until_distance from libstp.step.servo import servo # Open a servo after driving 30 cm into a 50 cm drive parallel([ drive_forward(50), seq([wait_until_distance(30), servo(claw, 90)]), ])