We are incharge of designing, implementing, and testing the programming system of the robot. We programmed the TeleOp to fit the drive team's preference and we implemented driver enhancements, such as a button to slow down the robots movement, allowing the driver to strafe small distances. We develop the programming for autonomous, allowing the robot to operate on its own account, and we program any special features that may assist the robot in game play such as various sensors.
When we install the electronics onto the robot, we ensure that all electronics are placed in a safe area, ensuring that no damage will occur if the robot hits a wall or another competitor. However, we place the electronic in an accessible and practical area to allow us to exchange batteries and check on the wiring. Before every match, we charge all the batteries in order to ensure that the robot can perform properly.
Due to the virtual setting this year, we learned how to code online using CoderZ, which stimulates a robot in a realistic environment. The environment resembles what you would find in the real world, incorporating important aspects such as gravity. The program starts by first teaching you how certain mechanisms work and how to code the mechanisms, along with assigning different tasks. Progressively, the tasks level up in difficulty, allowing you to further improve your skills. Our team used CoderZ to learn about distance sensors, touch sensors, and gyroscopes, features that we later implemented onto our physical robot.
During the autonomous period, the robot needs to operate by itself for 30 seconds without manual help from the driver. We write the code, giving the robot different commands that it needs to complete specific tasks in a very short time span.
We customize our TeleOp to fit the drive team's preference. Additionally we modify the driver controls to accommodate for the specific game elements. We added hard stops on our motors, which lock the motors once the driver lets go of the joystick in order to reduce drift. We have a button on the controller that reduces the robot's speed, allowing the driver to make small movements. With the implementation of the gyroscope, we added a face forward button, once pressed the robot faces our tower goal. We also included one-degree changes in the robots alignment, allowing the robot to adjust itself accordingly.
Our team fulfilled a long time goal by mounting a camera to the robot and programming it. The camera is able to track the number of rings in the stack at the beginning of autonomous. We used a vision pipeline that looks at a specific region in the camera frame and senses the amount of “orangeness” that is visible, therefore tracking the amount of rings in the starting stack.
Another feature we included to help our robot’s aim is a gyrosphere. The gyrosphere allows us to sense our angle relative to an initial angle, which in turn allows us to fix the amount of error we have in our angle. We have a PID controller in a closed control loop to help the gyro when facing forward toward our target. The PID controller ensures that the robot will get to the desired angle even if something is in its way or the battery is almost dead. The driver has the option to hit a button which makes the robot adjust its position to face the ““zero degrees” or wherever the robot was initialized to. This gyrosphere feature improves the accuracy of the robot when it is firing rings at powershots or at the goal.