Robot Controller
Introduction
The Robot Controller project was created to try to shift the team's rover control method away from the previous Xbox 360 controller, due to issues with unintuitive/insufficient controls for all the rover's features. Ideally, the amount of customization a custom board provides should allow for the team to control the rover much more easily, with greater freedom in all areas. During the development process, a dev board was created for testing various components, and then a rev1 board was created, which is what the below description will refer to.
Controls
Groupings
The controls on the rev1 board are split into 4 areas: Drive, Gimbal, Science, and Arm. Each area has been with a combination of joysticks, buttons, slide potentiometers, and/or switches, based off of rough controls planning that was done prior to creating schematics for the PCB. Note that all control mappings are subject to change, based on necessity and/or user feedback.
Drive
The Drive control grouping consists of a joystick, 3 buttons, a slide potentiometer, and a switch. The current control mappings are as follows:
- Joystick: Moves the rover in the direction specified, with the speed scaling based on how far the joystick has been displaced from its center
- Joystick Button: Unmapped, may be used later
- Slide Potentiometer: Speed modifier (allows the rover's speed to be scaled down to allow for more precise adjustments)
- Switch: Reverse-mode toggle (swaps the direction of the joystick controls)
- Button 1: Full-stop, halts all movement immediately
- Buttons 2-3: Extra, in case extra features are requested later
Gimbal
The Gimbal control grouping consists of a joystick, which operates the gimbal upon which the rover's camera is mounted.
Science
The Science control grouping consists of a joystick and 8 buttons. The current control mappings are as follows:
- Joystick: Up/Down operates the elevator of the Science module, Left/Right opens or closes the shovel
- Joystick Button: Toggles between enabling joystick up/down and left/right, since operating both at once may damage the Science mechanism
- Buttons 1-2: Move left/right 1 index
- Buttons 3-4: Move to leftmost/rightmost index
- Buttons 5-6: Open/close lid
- Button 7: Pre-programmed mixing sequence
- Button 8: Extra, in case extra features are requested later
Arm
The Arm control grouping consists of 3 joysticks, 5 buttons, a slide potentiometer, and a switch. The current control mappings are as follows:
- Joystick 1: Up/Down operates the arm's shoulder, left/right operates the turntable
- Joystick 2: Up/Down operates the arm's elbow
- Joystick 3: Up/Down operates the wrist pitch, Left/Right operates the wrist roll
- Slide Potentiometer: Speed modifier (allows the arm's joint speed to be scaled down to allow for more precise adjustments)
- Switch: Toggles between joint-control and inverse-kinematics (in IK mode, the joysticks switch to operating each axis)
- Buttons 1-2: Open/close claw
- Buttons 3-4: Set/go to home position
- Button 5: Extra, in case extra features are requested later
Schematics
Power
The power schematic consists of a 2-pin terminal block that takes in 5V power, which is then converted to 3V3 with an LDO.
MCU
The MCU schematic consists of the STM32F446RET6 and all its connected ports, as well as the reset button, RGB LED, and debug connector.
USB
The USB schematic consists of the USB connector, as well as a USB TVS diode array and a USB_5V LED.
Control Schematics
Each control schematic sheet contains the components for each control grouping (Gimbal and Drive are combined into 1 sheet, GimbDrive), each of which is debounced using a 10k resistor and 1uF capacitor. All control components also have a TVS diode, to avoid potential static damage from user contact with the board.