public PyramidShoot() {
        // Drive back. This used to be an EncoderDrive, but our right encoder
        // is broken.
        addSequential(new Command() {
            {
                requires(Robot.driveTrain);
            } 
            protected void initialize() {
                Robot.vision.setDistance(Vision.Distance.NEAR);
                Robot.driveTrain.clearEncoder();
            }
            protected void execute() {
                Robot.driveTrain.tankDrive(-0.6, -0.6);
            }
            protected boolean isFinished() {
                return Robot.driveTrain.getLeftDistance() < -1476;
            }
            protected void end() {
                Robot.driveTrain.tankDrive(0, 0);
            }
            protected void interrupted() {
                end();
            }
        });
//        addSequential(new StartCommand(new SetColor(new Color(0,0,255))));
        addSequential(new StringPotTilt(Tilter.SPEED_DEFAULT, 2.51));
//        addSequential(new TiltSetDistance(Tilter.SPEED_DEFAULT, Vision.Distance.NEAR));
        // Align tilter with target
//        addSequential(new TargetPIDTilt(Target.ThreePT, 1.0, false));
        // Shoot repreatedly (in case of jams)
        addSequential(new Shoot());
        addSequential(new Shoot());
        addSequential(new Shoot());
        addSequential(new Shoot());
        addSequential(new Shoot());
        addSequential(new Shoot());
        // End shooting (not always necessary)
        addSequential(new SpinDown());
    }