We saw some incredible driver stations this year during the competition. We want to redesign ours now. We would love to see some of your designs. We currently have the Andymark 36" station. We want to add XBOX controller holders with velco, a button box, and an integrated USB Hub.
Usually using a breakout board that enumerates as a usb joystick- you can make this yourself using a microcontroller board (raspberry pi pico is my current favorite for this) with your own firmware, or there are COTS products that do this as well.
There are different options. One is to come in via USB, as a HID device that will be handled by the driver station and then the I/O becomes available through several GenericHID APIs. The other is to use network tables (or something custom) and to bypass the driver station – this is especially likely for information coming from the robot to be displayed on an operator console.
FIRST has offered little boards for this for some time. Back in 2014, there used to be more support in the driver station for a specific board, see here (this was the “Cypress FirstTouch I/O board” or PSoC). We still had one of these around, here’s a picture of a custom PCB that organizes the 8 analog inputs, 20 digital inputs, and 12 digital outputs:
Our system uses a custom PCB back plane which connects all the buttons and switches to an Arduino DUE and Leonardo (essentially just removes a bunch of wires and soldering) The DUE and Leonardo take all the analog button and potentiometer inputs and masks itself as a HID device (pretty much a joystick) and then they can be mapped like any other button in robot code/driver station. The touchscreen PI displays run a python script that creates buttons as well, and those are also then masked as normal joystick devices. I’m not the code guy, but you can take a look here. GitHub - Team41Robotics/Driver-Station-2020: The code for the 2019-2020 driver station for team 41 robotics
Just found these again tonight, haven’t been used since 2014 but for awhile we ran one of these bad boys and just some flight sticks. Still use the flight sticks but dropped the “official” drive station laptops in 2015
It’s pretty trivial to set up a laptop to act as a combination endpoint and switch, or to do port forwarding. But, it’s probably more common to run a process on the laptop to interact with both the robot (via NetworkTables or not) and the fancy output H/W in the driver station.
My team port forwarded the network tables off and used two devices, which was hopefully legal, but we built our drive station software to explicitly support distributed compute since we kind of ram a gaming laptops GPU into the ground and ended up partly relying on an M1 MacBook Pro to handle half of the work.