Implement the following tank drive control schemes
Dual joystick - each joystick controls a motor
Single joystick - controls speed and rotation
Triggers for turning - Use joystick for speed and triggers for turning
Triggers for gas / break - Right trigger to go forward, left trigger to go back. Joystick for turning
Buttons for speed - Tap A to increase speed, B to decrease. X to set speed to 0. Joystick or triggers for turning according to preference.
Field relative tank control - Move in the direction the joystick is tilted. This will require first rotating to that direction and then moving forward.
Add support for switching between control schemes on the fly. Use the left and right bumpers to cycle between them, and show the currently selected scheme via telemetry.
Auto programming
Drive forward, wait, drive back. Use time to determine length of each step.
Use IMU (gyro) to add support for turning a specified number of degrees
Drive in a square
Add support for driving a specified distance using wheel rotation sensors and diameter of tires
Update straight driving code to use IMU to keep driving in the same direction
Research algorithms (such as PID) to improve accuracy of driving logic, and try implementing those algorithms