FMS Port usage - Color for Control Panel

I understand how to get the robot to read the color data from the FMS, but I need to understand how to send this data to the driver station without FMS.
The whitepaper does not appear to include information about the exact format of this packet or what UDP port is used.
My team is hosting practice matches next weekend and I would like to write some code to mimic what the FMS is doing with the color data.
In Java, teams can get the color, which is just a single character using this:
DriverStation.getInstance().getGameSpecificMessage();

It sounds trivial to write a program to send this data to the driver station as long as I know the port and the format of that the Driver Station is expecting.

It’s not clear what you’re looking for…

If you’re looking to test your robot’s “get color from FMS” code, the DriverStation application has a text field you can type into, which will meet this need

The FMS whitepaper doesn’t go into specifics of the FMS/DS data protocol, because frankly, it doesn’t need to. I’ve yet to find a reason that information would be necessary, except if you’re attempting to reverse-engineer FMS (i.e. make a replacement FMS, though you could just use the FMS-lite or CheesyArena)

2 Likes

I think there’s almost no chance of a team scoring 49 balls in a scrimmage - though not impossible with preloads filling up the field. Game data comes over the FMS protocol, which is responsible for more than just the game data packet. I’m not sure if Cheesy Arena or FMS Lite can handle it, but those could both do game data in 2018 so it’s worth having a look at those. Worst case, you can just tell teams a random color before the match and have them put in in the game data box themselves.

It’s actually not trivial to do. The Game Data is sent over the TCP connection between the FMS and the DS, and there is a fairly large handshake along with a ton of other required things in that connection. It’s just a message in that stream, and not a separate port or anything like that.

So in order to send that data, you would need to setup the full FMS control for controlling the robots, and that protocol is not simple to use your own. You can use something like FMS Lite from previous seasons and that should work if you need it. But you can’t do just the Game Data portion.

While the timing will be wrong, my advice is to get all the teams on an alliance to enter the data into their driverstation before the match (or have someone else do it during the match)
As others have said, sending this data to the driverstation remotely is NOT trivial.

Also note that if you do attempt to write your own FMS, the driverstations loose the ability to disable OR estop their robots, requiring the FMS to do this. Make sure this is bullet proof.

With the official FMS Offseason, the driver’s station is quite capable of e-stopping a robot. Maybe TOO capable. [glares daggers of death at certain programmers]

I believe that Chezy Arena also retains that ability.

2 Likes

Good to know, not sure what issue I was having with that then.

Assuming you mean game data, you can type in either R, G, Y, B in the game data field of the driver station to test your code. I know my team depends on this as well to test our wheel spinner.

Thanks for clearing that up. I was imagine UDP being used so because the color could just be broadcast to all the teams on the Alliance at once, but I guess since everyone is on their own VLAN, we need to send the data to each team separately anyway.

We may just go with the no-tech version of telling everyone what color to turn the wheel to if they get to that point. It’s good to know that teams can test their work without doing this the official way.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.