The Controller as a User Interface
Remotely Controlling the Robot
We most often use remote controls to interact with our televisions. We press buttons that make the television display a channel or information/access screen that we want. Technically, your television's remote control is a UI. However, it is a much less sophisticated UI than the one that your smartphone uses. Because it's less sophisticated, it is usually electrical engineers, not UI engineers, that design television remotes. Because of their training, electrical engineers look at the problem of adding new features to a remote control as a circuit problem: how to add a new button to control some new feature on your television. They don't consider the usability of the new button in relation to the other buttons.
Programming your V5 Controller is much more sophisticated. During the Driver Controlled matches of a competition, you want your driver/team to have as many advantages as possible. So you can program the buttons and joysticks to do more than one simple behavior. And, you can program them to do complex behaviors when buttons/joysticks are used in combination-similar to how some gaming controllers work. As the programmer of your Controller, you consider-like a UI Engineer would-which buttons to use in combination by figuring out how your fingers and hands would need to be placed in order to reach all of the buttons involved. You wouldn't want the driver controlling your robot to end up with cramps in her hands.
The programming for your V5 Controller has it check repeatedly on which button(s) is being pressed so that they can have the robot perform the appropriate behavior(s). Consider that there could be very many nested conditional statements within the Controller's project when using combinations of presses, like the following example: If the A button is pressed and the B button is pressed, do this behavior. If the A button is pressed, the B button is pressed, and the left joystick is pushed downward, do this behavior. Else (only A is pressed), do this behavior. Consider how many more combinations of conditionals are needed to take into account all of the other buttons and their combinations that are available on the Controller.
Of course, as you program more complex behaviors into the functioning of the Controller, the project gets closer to having the robot be autonomous. So a competition team needs to figure out which are the best behaviors to program into their Controllers as complex sequences and which behaviors are best left decomposed into multiple parts so that the Controller lets the driver (user) have more control over the speed and accuracy of the behavior.
Motivate Discussion - VEX Robotics Competitions
Each year, VEX challenges its users with a new game. Teams compete in matches consisting of a fifteen (15) second Autonomous Period (no Controller), followed by a one minute and forty-five second (1:45) Driver Controlled Period (Controller). Some students may have competed in robotics competitions before either as part of a club or team. The questions below ask students to share their experiences and/or interests in competitions.
Q: Has anyone here, or someone you know, competed in a robotics competition?
A: Encourage the students who have competed to share their experiences. Follow up with more questions, such as, 'what robot did you use?' and/or 'what was your favorite part of the experience?'.
Q: Is anyone interested in learning more about this year’s VEX competition/game?
A: When students respond yes, you can direct them to the VEX Competition website and show the video of this year's challenge.
Extend Your Learning - Programming the Controller
As explained above, the controller can be programmed so that a button or combination of buttons can initiate a complex sequence of behaviors. This complex sequence does not have to be a straightforward sequence of movements but can also include conditionals by using sensor data to determine which complex sequence of behavior is appropriate within the situation.
Challenge students to program their controllers so that pressing one or two buttons leads the robot to carry out a complex task. Here are some possible examples:
The robot retrieves a ball or game element of a particular color.
The robot picks up and launches a game element toward a particular goal.
The robot reorients itself by backing up flush against a wall before continuing.