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

WaitUntilDistance

Block until odometry straight-line distance exceeds a threshold.

Functions

wait_until_distance(→ WaitUntilDistance)

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.Step

Block 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)]),
])