.. include:: <isonum.txt>

# FRC Glossary

.. glossary::

   accelerometer
      A common sensor used to measure acceleration in one or more axis.

   AM
      [AndyMark, Inc](https://www.andymark.com/) - strives to develop innovative products and outstanding service while inspiring our customers and making a positive impact in our community.

   AprilTags
       Visual tags that provide low overhead, high accuracy localization. AprilTags are useful for helping your robot know where it is at on the field, so it can align itself to some goal position.

   auto
      The first phase of each match is called Autonomous (auto) and consists of the robot's running pre-programmed instructions.

   back-EMF
      In electric motors, the force generated by the interaction of spinning magnets in a coil of wire which opposes spinning motion.

   boolean
      A form of data with only two possible values (true or false), intended to represent the two truth values of logic and Boolean algebra.

   call stack
      A specially-organized region of memory which helps the program keep track of what function it is in. As each function calls another, the call point is recorded and added to the top of the structure, forming a "stack" of references. Additionally, local variables will also be stored in this stack. See [call stack](https://en.wikipedia.org/wiki/Call_stack) on Wikipedia for more info.

   CAD
      Computer-Aided Design - software used to design an accurate model of an object.  For FRC this is often used to design the robot to get accurate measurements and aid construction.

   CAM
      Computer-Aided Manufacturing - the use of software to control machine tools in the manufacturing of work pieces.

   CAN
      Controller Area Network -  message-based protocol designed to allow microcontrollers and devices to communicate with each other's applications without a host computer.

   CD
      Chief Delphi - [FRC team 47](https://www.thebluealliance.com/team/47) inspired a popular community driven [forum](https://www.chiefdelphi.com/) that today serves as an unofficial discussion hub for all things FRC.

   central limit theorem
      A core concept in probability which states that when many independent variables are added up, the result tends to look like a "normal" (or Gaussian) distribution, regardless of whether the independent variables themselves are normally distributed. See [Central Limit Theorem](https://en.wikipedia.org/wiki/Central_limit_theorem) on Wikipedia for more info.

   CIM
      CCL Industrial Motor, Limited - [Chiaphua Components Limited](https://www.cclmotors.com/) is the company that made the commonly used, relatively powerful, brushed motor.

   Classical Mechanics
      The branch of physics which studies and describes the motion of relatively large, relatively slow objects. See [Classical Mechanics](https://en.wikipedia.org/wiki/Classical_mechanics) on Wikipedia for more info.

   COTS
      Commercial off the shelf - a standard (i.e. not custom order) part commonly available from a vendor to all teams for purchase.

   composition
      A formal software term for building (or "composing") software entities out of smaller component entities. See [object composition](https://en.wikipedia.org/wiki/Object_composition) on Wikipedia for more info.

   CRTP
      Continuously Recurring Template Pattern - A software idiom in which a class [X`` derives from a class template instantiation using `X`` itself as a template argument. See `CRTP](https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern) on Wikipedia for more info.

   CSA
      Control Systems Advisor - FRC volunteer position that assists teams with Robot Control System-related issues.

   CTRE
      [Cross the Road Electronics LLC](https://store.ctr-electronics.com/) - is an engineering design, software development, and electronics manufacturer based outside of Detroit in Macomb, MI. They primarily focus on high-performing, high-quality electronics communication,  motor control, and control system products for FIRST teams and the EV industry. CTR Electronics was founded in 2006 by two FRC mentors who met through their robotics team: Mike Copioli and Omar Zrien and is staffed largely by FRC alumni, and active volunteers & mentors.

   C++
      One of the four officially supported programming languages.

   declarative programming
      A style of software which focuses on describing *what* a program should do, rather than *how* it gets done. See [declarative programming](https://en.wikipedia.org/wiki/Declarative_programming) on Wikipedia for more info.

   dependency injection
      A software design pattern where each class receives all objects it depends upon. Sometimes these are passed through the constructor, but not always. See [dependency injection](https://en.wikipedia.org/wiki/Dependency_injection) on Wikipedia for more info.

   deprecated
      Software that has been replaced and will no longer receive new features. Deprecated software will be maintained for at least 1 year, but may be removed after that. For example, if a method is deprecated prior to the 2022 season, it will be usable in the 2022 season, but may be removed prior to the 2023 season. Teams are encouraged to not use deprecated methods in new code. WPILib always deprecates features at least one year prior to removing them from the codebase.

   design pattern
      A particular, intentionally-chosen style of organizing code. A design pattern intentionally excludes using certain features of a programming language to constrain developers into solutions that are well-suited to a particular problem-space. See [design pattern.](https://en.wikipedia.org/wiki/Design_pattern) on Wikipedia for more info.

   DHCP
      Dynamic Host Configuration Protocol - the protocol that allows a central device to assign unique IP addresses to all other devices.

   encapsulation
      A software design pattern which uses a class to hide the implementation details of other classes. See [encapsulation](https://en.wikipedia.org/wiki/Encapsulation_%28computer_programming%29) on Wikipedia for more info.

   entry
      In :term:`NetworkTables`, a combined :term:`publisher` and :term:`subscriber`. The subscriber is always active, but the publisher is not created until a publish operation is performed (e.g. a value is "set", aka published, on the entry). This may be more convenient than maintaining a separate publisher and subscriber.

   enumeration
      A list of all elements of a set, typically used to refer to a set of pre-defined values.

   EPA
      [Expected Points Added](https://www.statbotics.io/blog/epa) - builds upon the Elo rating system, but transforms ratings to point units and makes several modifications.

   event-driven programming
      A style of programming where certain parts of code generate "events" as a result of some input (sensors, user interaction, etc). Then, other parts of code listen for and respond to "handle" these events. See [event-based](https://en.wikipedia.org/wiki/Event-driven_programming) on Wikipedia for more info.

   FIRST
      For Inspiration and Recognition of Science and Technology - a global nonprofit organization that prepares young people for the future through a suite of life-changing youth robotics programs that build skills, confidence, and resilience.

   FLL
      FIRST Lego League - Introduces science, technology, engineering, and math (STEM) to children ages 4-16 through fun, exciting hands-on learning.

   floating point
      A method for approximating real numbers in computer-based arithmetic, using a fixed precision integer scaled by an integer exponent. Typically computer systems support both "single" precision (32-bit storage) and "double" precision (64-bit storage) floating point values, as defined by IEEE 754.

   FMS
      Field Management System - the electronics core responsible for sensing and controlling the FIRST Robotics Competition field.

   FPGA
       Field-programmable gate array - a specialized integrated circuit consisting of many digital logic elements, which can be configured to act in different patterns. This allows its behavior to be changed after manufacturing. In the context of FRC, National Instruments provides a specific configuration for the RIO's FPGA which allows it to process the electrical inputs and outputs at a very high rate. See [FPGA](https://en.wikipedia.org/wiki/Field-programmable_gate_array) on Wikipedia for more info.

   FRC
      FIRST Robotics Competition - Combining the excitement of sport with the rigors of science and technology.  The ultimate Sport for the Mind inspiring High-school students.

   FTA
      FIRST Technical Advisor - FRC volunteer position that is responsible for ensuring FIRST Robotics Competition events run smoothly, safely, and in accordance with FIRST requirements, and ensuring a high-quality experience for all event participants and teams.

   FTC
      FIRST Tech Challenge - Grades 7-12 are challenged to design, build, program, and operate robots to compete in a head-to-head challenge in an alliance format.

   GDC
      Game Design Committee - designs the game for each year and develops the rules and field setup for each competition.

   GP
      Gracious Professionalism - part of the ethos of FIRST. It's a way of doing things that encourages high-quality work, emphasizes the value of others, and respects individuals and the community.

   GradleRIO
      The mechanism that powers the deployment of robot code to the roboRIO.

   gyroscope
      A device that measures rate of rotation.  It can add up the rotation measurements to determine :term:`heading` of the robot. (“gyro”, for short)

   heading
      The direction the robot is pointed, usually expressed as an angle in degrees.

   imperative programming
      A style of programming that focuses on *what* the code should be doing, step by step, every loop. See [imperative programming](https://en.wikipedia.org/wiki/Imperative_programming) on Wikipedia for more info.

   IMU
      Inertial Measurement Unit - a sensor that combines both an :term:`accelerometer` and a :term:`gyroscope` into a single sensor.

   I2C
      Inter-Integrated Circuit - a synchronous, multi-master/multi-slave (controller/target), single-ended, serial communication bus.

   Java
      One of the four officially supported programming languages.

   JSON
      JavaScript Object Notation - A standardized way of organizing data into named values. The organized data can be easily :term:`serialized`. While the original usage was in Javascript, it can be used and interested by most modern programming languages. See [JSON](https://en.wikipedia.org/wiki/JSON) on Wikipedia for more info.

   KOP
      Kit of Parts - the collection of items listed on the Kickoff Kit checklists, distributed to the team via FIRST Choice, or paid for completely (except shipping) with a Product Donation Voucher (PDV).

   KOP chassis
      The KOP contains a drive base (chassis) distributed to every team (that did not opt out) as part of the :term:`KOP`. For the 2026 season, the KOP chassis is the [AM14U6](https://www.andymark.com/products/am14u6-6-wheel-drop-center-robot-drive-base-2025-frc-kit-of-parts-drive-base).

   LabVIEW
      One of the four officially supported programming languages.

   LED
      Light-Emitting Diode - a semiconductor device that emits light when current flows through it.  Used on multiple robot parts to convey the status of the device.

   mass
      the amount of matter in a physical object. Objects with more mass will resist changes in motion more than objects with less mass. See [mass](https://en.wikipedia.org/wiki/Mass) on Wikipedia for more info.

   moment of inertia
      The property of an object that describes both how much mass it has, and how that mass is distributed relative to a certain axis of rotation. Objects with higher moments of inertia resist changes in rotational motion more than objects with lower moments of inertia. Increasing the moment of inertia is accomplished by adding more mass, or moving the mass further away from the axis of rotation. See [moment of inertia](https://en.wikipedia.org/wiki/Moment_of_inertia) on Wikipedia for more info.

   mutable
      An object that can be modified after it is created.

   MXP
      myRIO Expansion Port - Port in the center of the roboRIO designed to expand the traditional IO count by offering multiple different IO types through one connector.

   NetworkTables
      A publish-subscribe messaging system to communicate data between programs.

   no-op
      No-op is a computer instruction which means no operation. When the computer processor encounters a no-op instruction, it simply moves to the next sequential instruction. Read more about no-op on [Wikipedia](https://en.wikipedia.org/wiki/NOP_%28code%29) .

   odometry
     Using sensors on the robot to create an estimate of the pose of the robot on the field.

   OPR
      [Offensive Power Rating](https://blog.thebluealliance.com/2017/10/05/the-math-behind-opr-an-introduction/) - a system to attempt to deduce the average point contribution of a team to an alliance

   PCM
      Pneumatic Control Module - provides an easy all-in-one interface for pneumatic components.

   PDH
      REV Power Distribution Hub - latest evolution in power distribution for FRC.  With 20 high-current (40A max) channels, 3 low-current (15A max), and 1 switchable low-current channel, the PDH gives teams more flexibility for overall power delivery.

   PDP
      CTRE Power Distribution Panel - power distribution module with 8 high-current (40A max), 8 lower current (20A / 30A), 1 20A protected channel (for :term:`PCM` and :term:`VRM`), and 1 10A protected channel (for the roboRIO).

   permanent-magnet DC motor
      The classification of all legal motors for the FIRST robotics competition. This type of motor takes direct current as input, and uses it to create a magnetic field. In turn, this magnetic field interacts with a physical magnet to create a force that turns the output shaft. Electrical ("brushless") or mechanical ("brushed") means are used to ensure the electrically-generated magnetic field always points in a direction that creates forces when it interacts with the physical magnet, even as the motor's shaft rotates. See [permanent-magnet motor](https://en.wikipedia.org/wiki/Brushed_DC_electric_motor#Permanent-magnet_motors) on Wikipedia for more info.

   persistent
      In :term:`NetworkTables`, a :term:`topic` that is saved to a file by the server and restored at startup.

   PH
      Pneumatic Hub - is a standalone module that is capable of switching both 12V and 24V pneumatic solenoid valves. The Pneumatic Hub features 16 solenoid channels which allow for up to 16 single-acting solenoids, 8 double-acting solenoids, or a combination of the two types.

   PoE
      Power Over Ethernet - method of powering a device by an Ethernet cord that also carries power.  FRC uses passive PoE usually 12-24V that is always being supplied, this can damage a device not expecting the provided voltage.  The most common industry standard is active PoE which uses 48V but first verifies that the device is expecting the power.

   property
      In :term:`NetworkTables`, named information (metadata) about a :term:`topic` stored and updated separately from the topic's data. A topic may have any number of properties. A property's value can be any data type that can be represented in JSON.

   publisher
      In :term:`NetworkTables`, an object that defines a :term:`topic` and creates and sends timestamped data values.

   pose
      The collection of position and rotation information that describes how a rigid body is oriented in space, relative to some fixed reference point.

   pose estimation
      The process of estimating the robot's pose, commonly with :term:`odometry` and/or :term:`AprilTags`. Also known as *on-field localization*.

   PWM
      Pulse-width modulation - a method of controlling the average power or amplitude delivered by an electrical signal.  Used in FRC to control the output of motors not using the :term:`CAN` bus.

   Python
      One of the four officially supported programming languages.

   RAII
      Resource Acquisition Is Initialization - a language behavior (in C++, but not in Java) where holding a resource is tied to object lifetime.

   retro-reflection
      The property of reflecting incoming light back at the same angle it came in at, rather than an incident angle (like a mirror), absorbing it, or scattering it. Most FRC vision processing targets are retro-reflective. See [retroreflector](https://en.wikipedia.org/wiki/Retroreflector) on Wikipedia for more information.

   recursive composition
      A type of :term:`composition` in which the composite object may contain components of the same type as itself. For example, a command group may contain one or more command groups. See [recursive composition](https://en.wikipedia.org/wiki/Object_composition#Recursive_composition) on Wikipedia for more info. See also :term:`recursive composition`.

   retained
      In :term:`NetworkTables`, a :term:`topic` that is kept alive by the server even after all publishers stop publishing.

   REV
      [REV Robotics](https://www.revrobotics.com/) - inspires innovation and creativity within the educational robotics community by offering comprehensive product lines, extensive educational resources, world-class customer service, and specialized sponsorship programs. With a global presence spanning over 190 countries, we empower the next generation of STEM professionals by providing cutting-edge solutions and essential tools for success. Founded in 2014 by robotics enthusiasts Greg Needel and David Yanoshak, REV Robotics is driven by the mission to inspire and support students as they explore the exciting world of robotics and unlock their full robotic design potential. A majority of our employees are FIRST Alumni who remain actively involved, serving as volunteers and mentors for the local FIRST Community. This deep engagement reflects our commitment to supporting and inspiring the next generation of STEM enthusiasts.

   RPM
      Radio Power Module - is designed to keep one of the most critical system components, the OpenMesh OM5P-AC WiFi radio, powered in the toughest moments of the competition.
      Revolutions Per Minute - a unit of rotational speed often used when describing motors.

   RSL
      Robot Signal Light - safety light on every FRC robot used to indicate its operational status.

   serialized
      The property of a data organization scheme that allows the description of the data to be sent in order, byte by byte, over some communication channel. Reading or writing a file on disk is done in this serial fashion (IE, the data is read or written byte by byte, not all at once). Sending data over a :term:`SPI` or :term:`I2C` bus is also done byte by byte, again requiring the data can be serialized.

   simulation
      A way for teams to test their code without having an actual robot available.

   software library
      A collection of code that can be imported into and used by other software. See [software library](https://en.wikipedia.org/wiki/Library_%28computing%29) on Wikipedia for more info.

   solenoid valve
      A airflow-controlling valve which is actuated by a small electromagnet. Strictly speaking, the *solenoid* is the coil of wire which forms the electromagnet, and the *valve* is the mechanism which actually redirects airflow. However, the set of solenoid and valve together is often simply called "a solenoid". See [solenoid valve](https://en.wikipedia.org/wiki/Solenoid_valve). on Wikipedia for more info.

   SPI
      Serial Peripheral Interface - protocol for synchronous serial communication, used primarily in embedded systems for short-distance wired communication between integrated circuits.

   state machine
      A programming construct that divides a problem into many discrete, well-defined, mutually-exclusive "states", then defines how the problem is solved by moving between different states. See [state machine](https://en.wikipedia.org/wiki/Finite-state_machine) on Wikipedia for more more info.

   subscriber
      In :term:`NetworkTables`, an object that receives timestamped data value updates to one or more :term:`topic`\s.

   TBA
      The Blue Alliance - [Website](https://www.thebluealliance.com/) for looking up :term:`FRC` team statistics and event information.

   telemetry
      The process of recording and sending real-time data about the performance of your robot to a real-time readout or log file. For the linguists among us, the word's roots are "tele" (remote) and "metry" (measurement). See [telemetry](https://en.wikipedia.org/wiki/Telemetry) on Wikipedia for more info.

   teleop
      The second phase of each match is called the Teleoperated Period (teleop) and consists of drivers controlling their robots.

   topic
      In :term:`NetworkTables`, a named data channel.

   torque
      A force applied at a distance from some axis of rotation

   trajectory
      A trajectory is a smooth curve, with velocities, and accelerations at each point along the curve, connecting two endpoints on the field.

   transitory
      In :term:`NetworkTables`, a :term:`topic` that will disappear after the last :term:`publisher` stops publishing.

   VRM
      Voltage Regulator Module - provides access to different constant voltages for custom sensors, cameras, or other unique applications. 12V DC Input Directly fed power from the Power Distribution Panel Designed to work with the roboRIO FRC control system.

   WCP
      [WestCoast Products & Design LLC](https://wcproducts.com/) - was founded in Fall of 2011 by Ranjit Chahal (R.C.) and Harvey Rico. WCP aims to provide FIRST Teams, Hobbyists, and educators top notch quality products and designs for their projects.

   WFA
      Woodie Flowers Award - This award recognizes an individual who has done an outstanding job of motivation through communication while also challenging the students to be clear and succinct in their communications.
