step.motion.at_distance ======================= .. py:module:: step.motion.at_distance .. autoapi-nested-parse:: 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 ------- .. autoapisummary:: step.motion.at_distance.WaitUntilDistance Module Contents --------------- .. py:class:: WaitUntilDistance(cm: float) Bases: :py:obj:`step.Step` 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. :param cm: Distance threshold in centimeters. Example:: from raccoon.step import parallel, seq from raccoon.step.motion import drive_forward, wait_until_distance from raccoon.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)]), ])