step.calibration.deadzone.step_dsl ================================== .. py:module:: step.calibration.deadzone.step_dsl .. autoapi-nested-parse:: Auto-generated step builders and DSL functions — DO NOT EDIT. Source: step.py Classes ------- .. autoapisummary:: step.calibration.deadzone.step_dsl.CalibrateDeadzoneBuilder Functions --------- .. autoapisummary:: step.calibration.deadzone.step_dsl.calibrate_deadzone Module Contents --------------- .. py:class:: CalibrateDeadzoneBuilder Bases: :py:obj:`raccoon.step.step_builder.StepBuilder` Builder for CalibrateDeadzone. Auto-generated — do not edit. .. py:method:: motor_ports(value: Optional[List[int]]) .. py:method:: start_percent(value: int) .. py:method:: max_percent(value: int) .. py:method:: settle_time(value: float) .. py:function:: calibrate_deadzone(motor_ports: Optional[List[int]] = None, start_percent: int = 1, max_percent: int = 30, settle_time: float = 0.3) Calibrate motor deadzone via UI-based human observation. The deadzone is the minimum power percentage required to overcome static friction and start the motor turning. BEMF readings are unreliable at low RPM, so this step ramps motor power from ``start_percent`` upward and asks the operator to confirm when the wheel starts spinning. The result is stored as the motor's ``ff.kS`` (static friction) feedforward value. :param motor_ports: List of motor ports to calibrate. ``None`` calibrates all drive motors. :param start_percent: Starting power percentage to test. :param max_percent: Maximum power percentage before giving up. :param settle_time: Seconds to wait after setting power before asking the operator. :returns: A CalibrateDeadzoneBuilder (chainable via ``.motor_ports()``, ``.start_percent()``, ``.max_percent()``, ``.settle_time()``, ``.on_anomaly()``, ``.skip_timing()``). Example:: from raccoon.step.calibration import calibrate_deadzone # Calibrate all motors with defaults calibrate_deadzone() # Calibrate only motors 0 and 1 calibrate_deadzone(motor_ports=[0, 1])