FMS Whitepaper


The Field Management System (FMS) is the electronics core of a FIRST Robotics Competition (FRC) playing field. It encompasses all the controls for the field electronics, team robots, and is used to manage the event by creating match schedules, managing all field hardware during a match (timers, team lights, estops, etc.), scoring the matches in real-time, posting information to the Audience screen, and uploading results data to the Internet.

FMS is based on Ethernet architecture. Components such as the Driver Station, or the touchscreens used by the referees, integrate with FMS through direct wired Ethernet interfaces. Devices like the ball counters used in Breakaway and Rebound Rumble, or the Estops and Stack Lights mounted in each Player Station, interface through Ethernet-based Input/Output (I/O) modules that are donated to FIRST by Rockwell Automation. The lights used to illuminate the tower bases in Logo Motion, the bridges in Rebound Rumble, and the high goals in Aerial Assist are controlled via Ethernet-enabled power supplies donated to FIRST by Philips Color Kinetics. The weight sensors used in Ultimate Accent were read by a National Instruments cRIO-FRC II and interfaced over the Ethernet network to a Rockwell Automation PLC module, to give some examples.

This white paper focuses on the electronics infrastructure needed to control the robots on the playing field. Specific details on the FMS software used during each season can be found in the Field Management System User Guide, publicly available on this site.

Frequently Asked Questions about the Field Management System and recommended best practices when operating on the competition field appear at the end of this document.

Any rules information referenced in this document is for explanation sake only, and the only source of official competition guidelines and rules is the FRC Manual.

This documentation was written using the 2015 revision of the FRC Robot Control System and Field Management System as the model platform. Some improvements to FMS have been introduced in 2015 to coincide with user experience enhancements available when using the roboRIO, however, this system topology has remained mainly the same since 2009.

Driver Station Robot Communications - The Basics

Driver Station <-> Robot Communications - The Basics

The standard configuration for controlling an FRC robot is two core components, the robot itself with a roboRIO controller installed, and a netbook/ ultrabook/ laptop etc. running the FRC Driver Station (DS) software. The FRC Robot Control System is built such that the DS is the master controller, i.e. the status and actions of the robot are determined by commands from the DS.

Communication packets from the DS are broadcast via the integrated radio in the DS or a separate radio (like the WRT610N provided to teams in previous seasons), or through a tether (e.g wired Ethernet or USB.) When operating via wireless link, the DLink radio on the Robot receives the command packets from the DS and forwards them to the roboRIO robot controller. Status packets from the roboRIO are sent to the DS after each received command packet.

On-Field Communications Path for a Single Team

On-Field Communications Path for a Single Team

Driver Station Robot Communications

Communication packets from a Driver Station are routed through the managed switches in the Station Control Cabinet and Scorpion Case to the Field Access Point (AP), which then transmits the packets via wireless link to the appropriate Robot.

The Radio on the Robot receives the wireless transmissions from the Field AP, and forwards the packets to the roboRIO robot controller. Status packets from the roboRIO are sent to the DS (via the Field AP) after each received command packet.

Field Management System (FMS) Role

The FMS software (running on the FMS Server) communicates with each Driver Station via the managed switches in the Scorpion Case and Station Control Cabinets. This communication employs team-specific virtual local area networks (VLANs) which serve to isolate each teams data traffic.

The FMS software does not communicate with the robots directly.  Instead, FMS gathers data from the Driver Station about the Robot’s status, and tells the Driver Station which state (enabled/ disabled/ e-stopped) and mode (autonomous/ teleoperated) the robot should be in, as well as the player station and alliance color.

The FMS software configures the managed switches and Access Point before each match to ensure the data and communications for each team is kept separate from others (a process called "Pre-Start").

Frequently Asked Questions

Does FMS control the robot?

No, FMS does not communicate with the Robots directly. On the playing field, FMS communicates exclusively with each DS, sending it commands for enable/disable, auto/teleop, Estop, player station number and alliance color. The DS then sends this data to the Robot.

What does the flashing Player Station light mean?

The flashing light in the Player Station indicates that FMS does not have the necessary information to confirm your DS has a connection to your Robot. There are two typical ways for this condition to occur: the DS is not communicating with FMS (e.g. the Ethernet cable in the Player Station is not connected), or the DS is telling FMS it does not have communication with the Robot.

What information does FMS log?

FMS combines the status data from each DS along with the data that is monitored from the field components and stores this data in log files. The following data is logged every 500ms for each of the six Robots on the playing field during each match:

  • Timestamp (local time)
  • Match Number
  • Team Number
  • Match Time
  • Alliance
  • Mode (Auto/Teleop)
  • DS in FMS Mode (yes/no)
  • Robot Mode (enable/disable)
  • Estop state (on/off)
  • Robot Link (yes/no)
  • Bandwidth consumption over the wireless link
  • Strength of the signal transmitted by the Dlink radio
  • Signal-to-Noise Ratio of the wireless link
  • Average packet trip time between DS and Robot
  • Number of missed packets between DS and Robot
  • Total number of packets sent by DS to Robot
  • Robot Battery Voltage

Can one team’s DS control another team’s Robot?

The FRC competition field is configured such that each team has its own virtual local area network (VLAN) within which all data is passed. The characteristics of a VLAN ensure that the command packets from one team’s DS do not cause a response on another team’s robot. These VLANs exist on both the wired and wireless side of the playing field’s network; this is why for example, it’s necessary for a team in Blue Player Station #1 to connect their DS into the corresponding cable for that station. On the wireless side of the network, the VLANs are configured in the Field Access Point by broadcasting an individual network name (SSID) for each of the six teams on the field, each with its own encryption passkey. These VLANs are configured prior to the start of each match so that only the six teams assigned in FMS may operate on the field. This is also the reason each team must configure their Robot's radio at each event they attend.

What happens when you plug your DS into the competition field?

Once the process of setting up all the VLANs on the competition field is complete, through a process FRC calls “Match Prestart”, the FMS is ready to connect with the six DS’s. When a team plugs their DS into the Ethernet cable for their assigned Player Station, it's first assigned an IP address by the playing field, then starts sending messages to FMS. When the DS receives reply messages from FMS it switches over into FMS Mode. It’s at this point “FMS Connected” is displayed on the DS “Operation” tab. If the team has successfully connected to the field, but is in the wrong Player Station, a message is displayed on the DS indicating to which station the team needs to move.

When in FMS Mode, the DS continues to serve as the master controller for the Robot, but state (enable/disable/estop) and mode (auto/teleop) are dictated by the FMS. The FMS tells the DS what to do, and the DS then tells the Robot.

Is Practice Mode on the DS different from FMS mode?

Yes, the two modes do have some differences, but the majority of the functions are identical. Both operating modes step through the same states, the order is:

  1. Disable - state prior to match start
  2. Autonomous Enable - Autonomous period
  3. Disable - end of Autonomous period
  4. Disable - end of Autonomous period, prior to start of Teleop period
  5. Teleop Enable - Teleop period
  6. Disable - end of Teleop/match end

Joysticks are handled a bit differently between the two modes. In Practice Mode unplugging a joystick will result in the Robot being switched to Disabled. This is designed to be a safety feature, as the Robot may be running in a variety of environments that might not be equipped with barriers to safely contain the Robot.

Unplugging a joystick in FMS Mode will not result in the Robot being disabled. If a joystick becomes disconnected, simply plugging it back in will not result in it returning to normal operation. The user must press F1 on the DS to manually rescan the USB interface to re-detect the joystick.

Finally, the network port used by the DS to send command packets to the Robot is different in Practice Mode than the one used when in FMS Mode.

Why do I need to press F1 when a joystick is disconnected in FMS Mode?

While in Disable, the DS software periodically polls the USB interface for the presence of devices and adds/removes them from the list of joysticks on the DS “Setup” tab automatically. This polling is only done in Disable as it is computationally expensive and could compromise control of an enabled robot.

In FMS Mode, the DS’s Enable/Disable state is dictated by FMS. When a joystick is disconnected during a match the robot is not disabled because FMS is continuously telling the DS to be enabled, and when the DS state is Enable, it does not poll the USB interface for device changes. Pressing F1 on the DS manually rescans the USB interface to redetect the change in joystick devices. If a joystick has disconnected from the DS or is otherwise unresponsive the recommended procedure is:

  1. Unplug the joystick device’s USB connector from the DS
  2. Plug in the joystick device
  3. Press F1 to rescan the USB devices

Is there anything different about the practice field vs. the competition field?

Yes. The practice field uses a different field access point, it does not employ the port filtering, bandwidth limits, or Quality-of-Service priorities used on the competition field, nor does it employ VLANs.

Are there any bandwidth limits on the playing field?

Yes, each team VLAN is limited to 7 megabits/second (Mbps). The bandwidth consumed by control packets sent from the DS to the robot, and the status packets sent from the robot to the DS are each ~40kilobits/second (kbps), or approximately 80kbps total. This leaves approximately 6.9Mbps remaining for camera traffic, NetworkTables variables, and/or any other data traffic a team chooses to employ on their VLAN. In most cases, the camera data traffic will consume the majority of the available bandwidth between the DS and the robot.

The chart below shows the bandwidth consumption for some typical camera resolutions and frame rates. This data was captured using an Axis 1011, but the data is also applicable to the Axis 206.

Bandwidth consumption for different camera resolutions

Bandwidth consumption for different camera resolutions

LabVIEW Dashboard camera stream controls

LabVIEW Dashboard camera stream controls

The Dashboard can be used to monitor the bandwidth consumed by the camera stream from the robot. The default LabVIEW Dashboard includes controls and indicators to assist the user in selecting the preferred camera stream and display the resulting bandwidth consumption.

Axis Camera bandwidth consumption overlay

Axis Camera bandwidth consumption overlay

The default SmartDashboard does not include integrated controls like those provided in the LabVIEW Dashboard, but provisions are available to display the bandwidth consumption of the camera stream. Including the “#b” option in the Overlay settings/Include Text field in the Axis camera to will overlay a bandwidth measurement (in kbps) on the camera stream. This option also works for the LabVIEW Dashboard.

What are the recommended settings for the Axis Camera?

  • Image Resolution: 320x240
  • Compression: 30
  • Overlay settings/Include Text: #b
    • This setting will overlay a bandwidth measurement (in kbps) onto the camera stream as shown above.

What is Quality of Service (QoS)? Are there any QoS priorities on the competition field?

Typically, networks operate on a best-effort delivery basis, which means that all packet traffic has equal priority and an equal chance of being delivered in a timely manner. When congestion occurs, all traffic has an equal chance of being dropped.

Configuring QoS on the field network allows for the selection of specific network traffic, placing a priority level on it, and using congestion-management and congestion-avoidance techniques to provide preferential treatment. This makes network performance more predictable and bandwidth utilization more effective.

The FMS does have a QoS policy. The policy increases the priority of all control packets between to the DS and Robot to the same level as voice data, while keeping the priority of video data at the best-effort (or lowest priority) level. The “voice” level is the highest priority level packets can be set to without impacting the core functionality of the field network.

Prioritizing control packets at the same level used for voice data was chosen because the desired performance is similar in both applications. In order for Voice-Over-IP (VoIP) to be a realistic replacement for standard public switched telephone network (PSTN) telephony services, customers need to receive the same quality of voice transmission they receive with basic telephone services,meaning consistently high-quality voice transmissions. Like other real-time applications (e.g. controlling an FRC Robot), VoIP is extremely bandwidth- and delay-sensitive. For VoIP transmissions to be intelligible to the receiver, voice packets should not be dropped, excessively delayed, or suffer varying delay.

Which network ports are open on the competition field?

The ports that the teams are able to access on the competition field are as follows:

  • UDP/TCP 1180 - 1190: This port range is typically used for camera data from the Robot to the DS when the camera is connected to the roboRIO via USB. This port is bidirectional on the field.
  • TCP 1735: SmartDashboard, bidirectional
  • UDP 1130: Dashboard-to-Robot control data, directional
  • UDP 1140: Robot-to-Dashboard status data, directional
  • HTTP 80: Camera connected via switch on the robot, bidirectional
  • HTTP 443: Camera connected via switch on the robot, bidirectional
  • UDP/TCP 554: Real-Time Streaming Protocol for h.264 camera streaming, bi-directional
  • UDP/TCP 5800-5810: Team Use, bi-directional

All these ports are open on the competition field, so a team can use them as they wish if they choose not to employ them as outlined above (i.e. TCP 1180 can be used to pass data back and forth between the Robot and the DS if the team chooses not to use the camera on USB).

What is the significance of Trip time?

Trip time is the roundtrip time required for a control packet to be delivered from the DS to the Robot and a corresponding status packet to be sent from the Robot to the DS. It’s similar to a network ping, but it’s built into the communications protocol.

The DS computes the average trip time of the last 10 packets, logs it, as well as forwards the most current average value in each status packet sent to the FMS, which occurs every 100ms. Typical trip times are under 10ms, but can increase due to network congestion as a result of high bandwidth usage, addition processing in the DS, or inefficient user code on the Robot.  Trip times are monitored during each match by the FTA.

How is Trip time impacted by Bandwidth usage?

How is Trip time impacted by Bandwidth usage?

The figure above shows how Average Trip time of the DS-Robot packets increases as the total bandwidth on the VLAN is consumed. NOTE: The data shown was captured prior to the 2014 season, but still applies in 2015. The only difference is that in 2015 the increase in Average Trip time occurs around 6.5Mbps due to the increased efficiency in control and status packet size between the DS and roboRIO.

A significant increase in Average Trip Time occurs just above 6Mbps of data because there is already ~900Kbits/sec being consumed by the DS-Robot packets alone. Network congestion increases as you approach the 7Mbps limit of the VLAN and as a result the Average Trip Time increases. The QoS policy described above works to prioritize control packets specifically to allow for some reasonable level of Robot control to be available under such conditions, but performance cannot be guaranteed.

If you are experiencing high trip times, the first place to look should be the settings of your camera stream from the Robot to the DS.

  • For teams using the LabVIEW Dashboard: Increasing the compression value, or reducing the image size or frame rate should result in the average trip time value decreasing.

For teams using the SmartDashboard: Check the settings in the Axis camera. The SmartDashboard implementation requests a MJPEG stream using the default camera settings. If they have not been manually configured, they are 640x480 @30fps with a compression value of 30. Under these conditions the camera stream alone requires ~14Mbps of bandwidth, which is twice (2X) the available limit on the competition field. Change the camera settings to match the recommended values detailed above to determine if performance improves.

0 Report Errors

Use this form to report any errors with the documentation. For help with WPILib, please use the FIRST Forums at For reporting WPILib bugs, please submit an issue on GitHub at