An overview of the tech on a complex FRC robot
Reference material for my friendsThis document is aimed at a small handful of people, but published publicly as reference material for anyone that needs it. All contents are highly specific to the FRC robotics electrical and programming environments.
Table of Contents
- Table of Contents
- Types of devices
- “The list of blinky things”
- OpenMesh Radios
- Datasheets
- Reference Material
Types of devices
There are three types of devices found on an FRC robot:
- Computers
- Microcontrollers
- Peripherals
On-robot computers
The main computer on-robot is of course the roboRIO. The roboRIO is a standard Real-Time Linux device running a custom Kernel, built on Busybox. The main system users are admin
(the administrative user with full system write access), and lvuser
(this user is the one that executes the robot program).
If you SSH into the roboRIO (ssh [email protected]
), and navigate to /home/lvuser/
, you will find the robot program (probably a .jar
), along with the deploy
folder, and a script that starts it all. You can stick anything in this script and it will run when the roboRIO boots.
Other on-robot computers include the Limelight (which is just a Raspberry Pi Compute Module v3), the router (although you can’t really run custom code on it), and any Raspberry Pis that might be used.
Microcontrollers
Aside from the obvious, Arduinos, other on-board microcontrollers include any CTRE devices or “smart” REV devices. Each speed controller and control module is running some pre-compiled firmware on its own. Some of these devices (like the Talon SRX and the Spark Max) allow us to push custom code to them at runtime (like an off-board control loop) over the CAN bus. The NavX is also a microcontroller, communicating over Serial-over-MXP.
Peripherals
Things like AD Gyroscopes, buttons, rangefinders, color sensors, etc. are all dumb peripherals. These behave exactly like any device you would connect to an Arduino.
“The list of blinky things”
The list of blinky things is a list I came up with years ago for quickly answering the question of “what does that blinking light mean?”.
- CTR Electronics
- Power Distribution Panel (2015-2022?)
- Voltage Regulation Module
- Pneumatic Control Module (multiple pages)
- Talon SRX
- Victor SPX
- Rev Robotics
- National Instruments
- roboRIO (multiple pages)
OpenMesh Radios
The current fleet of robots are using OpenMesh radios for 2.4GHz and 5GHz communication.
These radios come in two models (found on the bottom of the radio). First is the OM5P-AN
and the second is the OM5P-AC
. The AC
variant is the newer (and faster) model. It is also more locked down. You can flash OpenWRT to the AN
model and use it as a practice field router (which I have done before).
These are consumer routers designed for home use! They are not in any way good at robotics applications. You will want to follow this guide to protect your routers before putting them on the field.
For information on flashing routers, see here. Routers from Israeli teams will be incompatible with any north american tech, so they need to be reflashed to match our regulations.
Datasheets
Manufacturer | Model | Datasheet |
---|---|---|
OpenMesh | OM5P-AC | |
CTR Electronics | Power Distribution Panel | |
CTR Electronics | Voltage Regulation Module | |
CTR Electronics | Pneumatic Control Module | |
CTR Electronics | Talon SRX | |
CTR Electronics | Victor SPX | |
Rev Robotics | Spark Max | HTML |
Rev Robotics | Spark | |
National Instruments | roboRIO | |
Kauai Labs | NavX-MXP |
More devices can be found in this list.
Reference Material
- The CAN Bus and Protocol
- The SPI Communication Standard used by many peripherals
- Pulse Width Modulation (used by some speed controllers and encoders)
- Rotary Encoders (keep in mind, we almost exclusively use Hall Effect + Quadrature + Incremental encoders)