Networking question - how does driver station communicate with the robot?

So I’m working on a side project ( a robot dog :slight_smile: ) that uses a RoboRIO and Spark Maxes but also uses a Jetson TX1 on ROS and I’m trying to figure out how driver station communicates with the RIO. I want to enable/disable the robot using a Python function but to do this, I need to understand how driver station goes about sending signals such as enable/disable to the robot. The point of this is to make driver station superfluous and make it easier to enable/disable. Is there a specific networking protocol or concept I should look into to do this? How can I figure out what signal to send in order to enable/disable? Any help would be appreciated. Even if this isn’t possible, I’d still like to know how they communicate.

Some ideas were suggested in this thread: Driverstation on rapsberry pi?

1 Like

You could use something like Wireshark to look into the packets that the driver station application sends.

1 Like

Why have a DS or a RoboRIO at all?

https://team900.org/blog/ZebROSNano/

4 Likes

I’d suggest not using the RIO if you wanted to write your own enable/disable functionality since there’s a lot of excess going on in the DS to RIO communication that you’d need to replicate in order to get it to work. However, it has been done before with QDriverStation and LibDS though the protocol hasn’t been updated to work past the 2017 season.

1 Like

It’s worth looking through https://wpilib.screenstepslive.com/s/fms/m/whitepaper/l/608744-fms-whitepaper#driver-station-and-robot-communications.

1 Like

I’m using Spark Maxes because of their excellent position control and it seems that the only FRC company that has developed a ROS Node is CTRE.

(But I would love it if I only needed to use the Jetson)

I was looking through LibDS on GitHub and I would like to write one for 2020 but I can’t seem to find what changes from year to year for DS-RoboRIO communication.

CTRE hasn’t developed that. We did. :slight_smile:

Though we are grateful to CTRE for helping us with some of it.

If you troll through our GitHub, you might be able to find the incomplete SparkMax work we did and start there. It’s on our ToDo list to add support for the SparkMax to our codebase but that takes time and it’s a long list.

You can add it though if you are inclined to do so and have the time.

Woah that’s really cool. I’d love to help with the Spark Max node but since that’ll take time, for this specific project I’ll probably use some of the other solutions here.

1 Like

https://github.com/FRC900/2019RobotCode/tree/spark_max and https://github.com/FRC900/2019Offseason/tree/spark_max

We’ve got a few updates since then but not too much.

This is a great resource for understanding how the DS communicates with the robot: https://frcture.readthedocs.io/en/latest/

2 Likes