We have traditionally built a custom control box for our operator, and let the driver use either a Logitech DualAction or two joysticks.
This worked well until last year, with the introduction of the Cypress board. We used the Cypress board to handle IO in Kitty’s Kat Box (Our operator that year was named “Kitty”.). We had to boot up the Classmate at least three matches ahead of time in case the driver had an issue, which could force us to reboot one or two times. A very annoying fix. We needed an analog dial for kick power, and the Cypress board was the only thing that gave us an analog input that didn’t re-center each time it was plugged in.
This year, we used an xBox controller (Kitty’s Kat Pad) for the operator, but ran out of buttons (the disadvantage of using a stock gamepad). Unhappy with the Cypress board last year, we bought a Logitech Precision pad (which contains only buttons - no joysticks), opened it up, and soldered wires to all of the button inputs. We built a new box, which we backed in velcro so it sticks to the operator console shelf, and it included a 6-position auto select switch, 3 light color buttons, a button for Score LOW (never used in the official season), and an extra button (originally assigned to FOLD, it was just easier to fold it manually).
OTS gamepad:
+Already made
+Has JS axises
-Lacks many buttons (if you need a lot of buttons)
Semi-custom gamepad (using a gamepad as base instead of Cypress board):
-No support for analog inputs that don’t automatically center
+Lots of buttons (Whatever the controller had, plus the 4 D-pad axis)
Cypress-based control box:
-Cypress bug - I don’t know if this was fixed
+Easier to build than gamepad, maybe.
-Cypress bug. Seriously. Its a big issue.
As for HMI’s, we’ve used a box of state buttons for many years with success. Our 2007 and 2005 robots both had a button for each state, plus buttons to open the claw/fingers, and 2007 also had ramp buttons. Our 2011 robot could have worked with such a control board, but we initially didn’t want to use Cypress IO (and built around an xBox pad).