What are some alternatives to using a game controller to operate the robot that your team uses?
We were looking around at some options to add buttons or sliders, possibly using the xbox adaptive controller.
- Premade button boxes: AndyMark / Cheaper on Amazon
- Semaphore
- Button box kits (similar products can often be found for cheaper): AndyMark / Cheaper on Amazon
- Yelling and having voice recognition on the robot
- Midi controllers (Novation Launchpad mini/x/pro, Akai apc mini for sliders, generic mini midi keyboards usually have pots/faders/wheels and can be found on amazon for ~$80-$120, or a more budget friendly option with fewer controls)
- Mind control
- Custom button boards can be made with basic arduino (or pi picos which are like $4 a pop) skills and possibly some soldering and can have all the features you want (limited as all of these are to 16* buttons + 6 axes + 2 hats *=i think you can have 32 that the robot can see, but they dont render on the DriverStation. You could also use axes and hats as buttons, but thats kinda jenky)
- Using your drive computer’s keyboard / numpad
- Autonomous control lets the operator and driver sit back and watch
- An iPad that runs a networktables-interacting program with gui buttons and sliders on it (non tactile, but has the benefit of a configurable layout and also ability for an unlimited number of banks)
We had a button board last year which worked really well. I don’t know exactly what we did below the surface though. (Color coded 1/3 of a grid+a couple extra buttons)
I’m now imagining Alexa responding like HAL9000…
“Robot, go score high!”
“I’m afraid I can’t do that…”
Adding on:
- (Wired flight controllers (we have used Spektrum for two years now)
- Tractor/Industrial Machine Controller, a team at MSC last year used one pretty well iirc, I couldn’t remember the number, but they did have some extra functionality besides just having a bunch of buttons
- DDR Pad
We used a generic USB Game controller connected to 30mm Arcade buttons bought off of Amazon.
Code linked here.
Mechanical Advantage just did a pretty in-depth write-up of their operator console, where they also use an Arcade controller. [Parts list/links here]
An Adafruit RP2040 macropad is really good. I managed to program one with CircuitPython to present itself as a controller (so it can be easily used in the robot code, by just doing xboxController.button(1)
etc).
It also has RGB LEDs under each key, so each one can be colour coded, and it also has a small display that can be used to show what each button does. I made the knob be the analog x “joystick” axis, and clicking the knob down “resets” the encoder back to zero.
It’s super easy to build and program.
Game-Specific custom controllers can be fun to design/build. This one was for the 2020 game Infinite Recharge, and was our 2nd driver’s controller for manual/override control of our intake/launcher as well as the controls for our color wheel manipulator and end-game climber mechanisms.
This was built using an Arduino Pro Micro board emulating a joystick/gamepad. Here is the code for the Arduino, which is pretty simple, and the robot side is done the same as any other USB joystick/gamepad.
We also used Google Drawing to design the layout and eventually use that as our drill/cut template, just printing it full size and taping it on. Here is a PDF export of that document. (some of the labels are different as after playing with it physically it was found our driver preferred a few of the control placements swapped)
We used to use the CCI board by Estop Robotics (no longer in business) to make a custom control box each year. It worked as a USB joystick without any code.
This was the controller for 2016:
@w4drone probably knows more about this than me, but elagato stream deck! My only experience with them is as a controller for a/v at an offseason competition, but they should in theory work.
Ive always been curious how teams use multiple position toggle switches or rotary switches. Is each position indicated by a button? Is there a combination of buttons that represent the binary value of the position? Do you use a pov hat or axis to represent it?
The historical way to do this (when the joysticks were actual gameport joysticks) was via an analog input that mapped to a joystick axis. The rotary switch has a resistor divider setup so each position results in a different voltage to the analog input. I assume the new USB boards have analog inputs as well that could be used in this way.
The resistor divider works for a multi position switch. I would usually use potentiometers connected to analog inputs. Either way, the analog shows as an axis, and is then converted to booleans based on ranges (which I would set empirically to match the lines). Sometimes we would also 3D print detents to give some tactile feedback to the operator.
The 3 position switches were just connected to 2 different boolean inputs.
Last year, we had a Python program that ran on the driver station and a USB-powered touchscreen for the operator. It used pynetworktables to send data to the robot. Driver controlled up/down/in/out for the game piece and elevator; operator selected the type and the scoring level.
I was skeptical when we first built it, but it held up well, and was easy to make changes to. It also took way less time than building a button board. Our only mistake was not bringing spare cables to competition – we had a mini-HDMI cable die in Houston and had to make an emergency Micro Center run.
I was expecting it to be some new tech company product, but no…literal semaphore. We’ve talked about using it for pit-to-stands communication last year for things like, “your lunch is here” or “please send [person] over here”.
One of the advantages of using a standard controller, is that if it breaks during an event (and you didnt bring a backup) you can borrow another team’s controller.
With a custom solution of any kind you should definitely make a backup
Do you guys have any photos/code examples you can share with this?
While I was looking around for a new solution to a control station for our co-pilot I came across a video of some flight sim stuff and got a link to this UHID board with 50 inputs. I am working on designing a modular control panel for our driver station and plan to release it here on CD (if I ever finish it). It seems to work pretty well so far, we haven’t used it during a comp yet but with home testing, there have been no issues.
We use an x-keys button board to control the robot after seeing 118 using it at their open house
Agree. Our backup was shuffleboard.