Control System Contepts - MDHSRobotics/TeamWiki GitHub Wiki

Home / References

#Control System Concepts

###Purpose While the FRC Java framework is very good and very flexible, the flexibility and limitless options can make learning and understanding the framework very difficult. The concepts communicated in this document are best practices learned from the experience of a couple of seasons that will hopefully simplify and better organize the control system components and accelerate the process of learning how to develop a robot control system. In some cases, these may contradict some of the examples provided by FRC or Chief Delphi. As is often the case in software development, there is not necessarily only 1 right way to do things. Contradicting sources may simply be showing an equally effective alternative approach to achieve a task.

###Reference FRC Control System

###Overview Robot - Robot is the highest level entity in the control system. A robot can have the following:

  • Subsystems - A subsystem is a portion of the robot dedicated to a specific set of functions. For example, the drive system is dedicated to getting the robot to move around the field. An arm system is dedicated to actuating an arm on the robot. Subsystems typically have multiple components, including:
    • Solenoids - A solenoid is an actuator controlled by the PCM. It is typically a pneumatic device.
    • Motors - Motors can either be servo motors or motors controlled by a speed controller. PWM signals are used to control motors.
    • Sensors - Sensors provide inputs to the robot. These can be digital, like contact switches, or analog, like gyroscopes, distance sensors, etc. Camera's are also sensors.
    • Configuration Settings - It is often useful to be able to adjust the configuration settings of a subsystem, like the gain on a signal, and on or off switch for afeature, or the threshold setting for a distance measurement.
  • Commands - Commands are prescribed actions for the robot to do, like open bomb bay doors. Commands can require one or more subsystems.
  • Operator Interfaces - An operator interface is a device that enables a human to interact with a robot. Typical OI's include joysticks and a console. Operator Interface typically include:
    • Buttons - Buttons on a joystick or in a console can be used to trigger a command, cancel a command or toggle a command.
    • Axis - Axis are typically analog outputs from a joystick, like a left/right axis or a up/down axis.

This is the recommended structure to use when designing and implementing the robot. Although other options are possible, leveraging this structure will simplify the code and organize the code in a more manageable manner. Deviations from this structure or permissible in individual cases, but efforts to fit this model should be first exhausted.

###Control System Component View Control System Component View

###Control System Relationship Diagram Control System Relationship Diagram