Class HoodFinderOpMode

java.lang.Object
com.qualcomm.robotcore.eventloop.opmode.OpMode
com.qualcomm.robotcore.eventloop.opmode.LinearOpMode
com.crossbotics.ftchelper.finders.FinderOpMode
com.crossbotics.ftchelper.finders.HoodFinderOpMode

public abstract class HoodFinderOpMode extends FinderOpMode
Finds a launcher hood's calibration for Tunables.Hood: the servo position (or encoder ticks) at its two hard stops (posA, posB), and if you measure them, the hood's angle there (angleA, angleB) and at points in between (a calibration table, for a linkage that is not a straight line). It works before the hood has any numbers in Tunables.java.
 A servo hood:
   Start:  D-pad = choose a start point (the servo does NOT move yet), A = move it there.
   Nudge:  D-pad right/left = +/- 0.01, up/down = +/- 0.05, hold RB = 10 times finer.
 A motor hood: nothing is powered. Move the hood by hand; the screen shows the encoder (0 = where it
   was at INIT, so start with the hood on the stop you want as 0, the same as in a match).
 Both:
   X = this is stop A (posA)          B = this is stop B (posB)    (a hair off each stop)
   hold LB + D-pad = the angle you measured here (up/down +/- 1, right/left +/- 0.1)
   A = save a calibration point here (position, angle)    Y = undo the last point
 Help: GUIDE (or hold START 1 s) = a help page with every button; everything pauses.
 

It shows the lines for Tunables.java: Tunables.Hood: posA = 0.205, posB = 0.648, then angleA = 0, angleB = 25 once you gave the angles at both stops; OR, once you saved points between the stops (and gave the angles at both stops), a calibration line INSTEAD (the Hood reads one or the other). Each angle you give is used for one place (a stop or a point): measure the next place before marking it. A table whose angles do not keep going one way is not shown (the Hood would stop INIT): the screen says which point to measure again. Copy them into Tunables.java (the robot uses the file, not this screen; a change made in the tuning menu is also lost at the next restart unless you copy it back). The lines are saved on the Control Hub at STOP.

In your TeamCode, the robot in five files (it reads the hood's name, servo or motor, and reversed() from Robot.java without needing its Tunables numbers):


 @TeleOp(name = "Hood Finder", group = "Finders")
 public class HoodFinder extends HoodFinderOpMode {
     @Override protected RobotDefinition robot() { return new Robot(); }
 }
 
Without one, it uses the servo or motor called hoodName() ("hood"). Docs: docs/modules/finders.md. Guide: docs/guides/finders.md
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    com.qualcomm.robotcore.hardware.Gamepad
     
    com.qualcomm.robotcore.hardware.Gamepad
     
    com.qualcomm.robotcore.hardware.HardwareMap
     
    static final int
     
    int
    Deprecated.
    org.firstinspires.ftc.robotcore.external.Telemetry
     

    Fields inherited from class com.crossbotics.ftchelper.finders.FinderOpMode

    results, t

    Fields inherited from class com.qualcomm.robotcore.eventloop.opmode.OpMode

    blackboard, msStuckDetectInit, msStuckDetectInitLoop, msStuckDetectLoop, msStuckDetectStart, time
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Binds gamepad 1 buttons.
    protected String
    The finder's name, e.g.
    protected String[]
    The help page: every button and the steps, a line each (at most 13 lines, about 50 characters each, to fit on the Driver Station).
    protected String
    The hood's configuration name when there is no robot().
    final void
     
    protected RobotDefinition
    Your robot in five files (return new Robot();): its hood is used.
    protected void
    Sets up the hardware, in INIT.
    protected void
    The finder's own screen lines, every loop.
    protected void
    What INIT shows (the controls, a safety note).
    protected void
    Runs once every loop after the buttons: moves things, measures.
    protected void
    Stops every motor and servo it moves.

    Methods inherited from class com.crossbotics.ftchelper.finders.FinderOpMode

    helpKeyDown, inputsReady, openHelp, pause, runOpMode

    Methods inherited from class com.qualcomm.robotcore.eventloop.opmode.LinearOpMode

    idle, init, init_loop, isStarted, isStopRequested, loop, opModeInInit, opModeIsActive, sleep, start, stop, waitForStart

    Methods inherited from class com.qualcomm.robotcore.eventloop.opmode.OpMode

    getRuntime, internalPostInitLoop, internalPostLoop, internalPreInit, internalUpdateTelemetryNow, resetRuntime, terminateOpModeNow, updateTelemetry

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • MS_BEFORE_FORCE_STOP_AFTER_STOP_REQUESTED

      public static final int MS_BEFORE_FORCE_STOP_AFTER_STOP_REQUESTED
      See Also:
    • gamepad1

      public volatile com.qualcomm.robotcore.hardware.Gamepad gamepad1
    • gamepad2

      public volatile com.qualcomm.robotcore.hardware.Gamepad gamepad2
    • telemetry

      public org.firstinspires.ftc.robotcore.external.Telemetry telemetry
    • hardwareMap

      public volatile com.qualcomm.robotcore.hardware.HardwareMap hardwareMap
    • msStuckDetectStop

      @Deprecated public int msStuckDetectStop
      Deprecated.
  • Constructor Details

    • HoodFinderOpMode

      public HoodFinderOpMode()
  • Method Details

    • robot

      protected RobotDefinition robot()
      Your robot in five files (return new Robot();): its hood is used. Default null: hoodName().
    • hoodName

      protected String hoodName()
      The hood's configuration name when there is no robot(). Default "hood".
    • finderName

      protected String finderName()
      Description copied from class: FinderOpMode
      The finder's name, e.g. "Servo finder".
      Specified by:
      finderName in class FinderOpMode
    • setup

      protected void setup()
      Description copied from class: FinderOpMode
      Sets up the hardware, in INIT. Nothing may move here.
      Specified by:
      setup in class FinderOpMode
    • showInit

      protected void showInit(RobotTelemetry t)
      Description copied from class: FinderOpMode
      What INIT shows (the controls, a safety note).
      Overrides:
      showInit in class FinderOpMode
    • bind

      protected void bind(ControllerBindings c)
      Description copied from class: FinderOpMode
      Binds gamepad 1 buttons. Actions must be quick: never wait.
      Specified by:
      bind in class FinderOpMode
    • step

      protected void step()
      Description copied from class: FinderOpMode
      Runs once every loop after the buttons: moves things, measures. Never waits.
      Specified by:
      step in class FinderOpMode
    • show

      protected void show(RobotTelemetry t)
      Description copied from class: FinderOpMode
      The finder's own screen lines, every loop.
      Specified by:
      show in class FinderOpMode
    • helpLines

      protected String[] helpLines()
      Description copied from class: FinderOpMode
      The help page: every button and the steps, a line each (at most 13 lines, about 50 characters each, to fit on the Driver Station). GUIDE (or START held 1 s) shows it, in INIT or while running. Default: a page that says there is no help yet.
      Overrides:
      helpLines in class FinderOpMode
    • stopAll

      protected void stopAll()
      Description copied from class: FinderOpMode
      Stops every motor and servo it moves. Called at the end, always.
      Specified by:
      stopAll in class FinderOpMode
    • requestOpModeStop

      public final void requestOpModeStop()