The main design philosophy I’d recommend to all teams: Start by defining the minimum amount of information that has to be transferred human->robot, and robot->human.
The smaller you can make these two buckets, the more time the human will have to make match strategy decisions. Which, ultimately, is what they’ll pretty much always be better at than the robot.
For our design, it came down to:
Human->Robot
- Drivetrain motion (3 axes)
- Pull cargo into the robot
- Shoot cargo high goal
- Shoot cargo low goal
- Climbing desired/not-desired
- Raise/lower climber
Robot->Human
Small enough we could fit it onto one controller, and one set of LED’s.
Everything else that we could automate was automated. The sequence of lowering the intake, running one or more motors in the intake and serializer, spooling up the shooter wheel, feeding balls into the shooter wheel at the appropriate pace and only when the wheel was in range to shoot accurately…
I still have this pipe dream of doing all the control on a fancy touchscreen tablet, where the drive team just presses buttons to add/remove/reorder tasks in a queue, and the robot simply chunks through the queue as fast as it can. The biggest missing pieces IMO is accurate-enough full field odometry, and “just the right” sensor solution to execute a collision avoidance algorithm.
Would such a thing be better than the best human drivers? Probably not. Would it show off the crazy cool things this control system is capable of? You betcha.