FRC Glossary


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


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


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


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 on Wikipedia for more info.

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 on Wikipedia for more info.

Classical Mechanics

The branch of physics which studies and describes the motion of relatively large, relatively slow objects. See Classical Mechanics on Wikipedia for more info.


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


A formal software term for building (or “composing”) software entities out of smaller component entities. See object composition on Wikipedia for more info.


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 on Wikipedia for more info.


One of the three 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 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 on Wikipedia for more info.


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. on Wikipedia for more info.


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


A software design pattern which uses a class to hide the implementation details of other classes. See encapsulation on Wikipedia for more info.


In NetworkTables, a combined publisher and 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.


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

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 on Wikipedia for more info.

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.


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


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 on Wikipedia for more info.


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


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


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 on Wikipedia for more info.


Inertial Measurement Unit, a sensor that combines both an accelerometer and a gyroscope into a single sensor.


One of the three officially supported programming languages.


JavaScript Object Notation. A standardized way of organizing data into named values. The organized data can be easily serialized. While the original usage was in Javascript, it can be used and interested by most modern programming languages. See JSON on Wikipedia for more info.


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 KOP. For the 2023 season, the KOP chassis is the AM14U5.


One of the three officially supported programming languages.


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


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 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 on Wikipedia for more info.


An object that can be modified after it is created.

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 on Wikipedia for more info.


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


In NetworkTables, named information (metadata) about a 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.


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


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


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


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 on Wikipedia for more information.

recursive composition

A type of 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 on Wikipedia for more info. See also recursive composition.


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


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 SPI or I2C bus is also done byte by byte, again requiring the data can be serialized.


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 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. on Wikipedia for more info.

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 on Wikipedia for more more info.


In NetworkTables, an object that receives timestamped data value updates to one or more topics.


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 on Wikipedia for more info.


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


In NetworkTables, a named data channel.


A force applied at a distance from some axis of rotation


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


In NetworkTables, a topic that will disappear after the last publisher stops publishing.