Skip to content

MetalLib

Krithik Rao edited this page Mar 16, 2017 · 2 revisions

UML Outline

The Gamepad Package

  • CowGamepad
    • An abstract class defining the methods and essential properties of any gamepad.
  • GamepadButton
    • A class of static integers defining various button ports corresponding with standard Xbox button mappings.
  • AIRFLOController / Xbox360Controller
    • Wrappers around the relevant controllers.

The ControlLoops Package

  • ErrorController
  • An abstract class defining the methods and essential properties of error controllers.
  • TBHController
    • An experimental control loop by an FRC team called take-back-half. Frequently used to tune flywheel speeds.
  • PIDController
    • A standard Proportion-Integral-Derivative loop used to control system positions.

##The DriveCommands Package

  • DualDriveCommand
    • An interface for any DriveCommand that can drive a two sided drivetrain.
  • ArcadeDriveCommand
    • A class to implement an arcade drive.
  • TankDriveCommand
    • A class to implement a tank drive.

The DataStores Package

  • KVStore
    • The KVStore interface defines a generic read-only Key-Value store
  • PropertyStore
    • A wrapper around the System Properties
  • SmartDashStore
    • A wrapper around the non-persistent SmartDashboard
  • PreferenceStore
    • A wrapper around the persistent Preferences on the SmartDashboard

The Util Package

  • TaskRunner
    • A wrapper around a scheduled executor allowing for single run tasks, killable tasks, entire sets of tasks, and allowing for the clearing of all tasks.
  • UDPServer
    • A generic UDPServer class to interface with any UDPClient.

Individual Classes

  • ComponentBuilder Class

    • A class to build generic components (motors, encoders, solenoids) using values from KVStore keys.
  • MetalRobot Class

    • The MetalRobot class is used as an alternative to IterativeRobot, SimpleRobot, and CommandRobot. It extends RobotBase just like the other options.
    • MetalRobot is a multithreaded version of the robot, utilizing TaskRunner to fully utilize both threads and run systems faster than iterative or command based.
    • MetalRobot also allows for simple running of systems with ease, with a single method to schedule a controller to run during any mode.
    • MetalRobot also has efficient logging to console of state switching and does not needlessly use up a thread.
Clone this wiki locally