@@ -0,0 +1,1551 @@
+package com.edinarobotics.zephyr.autonomous;%0A%0Aimport com.edinarobotics.utils.autonomous.AutonomousStep;%0Aimport com.edinarobotics.zephyr.Zephyr;%0Aimport edu.wpi.first.wpilibj.Gyro;%0A%0A/**%0A * A step that waits for the Gyro to report that we have completed a precise%0A * turn of a certain number of degrees.%0A */%0Apublic class GyroWaitStep extends AutonomousStep%7B%0A    private double angle;%0A    private Gyro gyro;%0A    private Zephyr robot;%0A    %0A    /**%0A     * Constructs a new GyroWaitStep that will wait for the robot to have%0A     * turned a certain number of degrees given by %7B@code angle%7D.%0A     * @param angle The angle in degrees to wait for (can be negative).%0A     * @param gyro The %7B@link Gyro%7D sensor to use to measure turned degrees.%0A     * @param robot The robot that is turning, used to call%0A     * %7B@link Zephyr#mechanismSet()%7D to keep components alive.%0A     */%0A    public void GyroWaitStep(double angle, Gyro gyro, Zephyr robot)%7B%0A        this.angle = angle;%0A        this.gyro = gyro;%0A        this.robot = robot;%0A    %7D%0A    %0A    public void start()%7B%0A        gyro.reset();%0A    %7D%0A    %0A    public void run()%7B%0A        robot.mechanismSet();%0A    %7D%0A    %0A    /**%0A     * Returns %7B@code true%7D when the given number of degrees have gone by in%0A     * a turn.%0A     * @return %7B@code true%7D if we have turned the given number of degrees,%0A     * %7B@code false%7D otherwise.%0A     */%0A    public boolean isFinished()%7B%0A        if(angle %3C= 0)%7B%0A            return gyro.getAngle() %3C= angle;%0A        %7D%0A        else%7B%0A            return gyro.getAngle() %3E= angle;%0A        %7D%0A    %7D%0A%7D%0A

Add GyroWaitStep to allow making precise turns in autonomous.