The programming sub-team is responsible for the software that controls every part of the robot- including the driver inputs, motor outputs, vision systems, autonomous routine, and much more! They’re also responsible for the development of Scoutradioz, the scoring app that we use to record the performance of ourselves and other teams.
The code for all of our robots and apps is open source and can be viewed on our GitHub organization and we’ve been improving our capabilities every year. As we try out new technologies, we’re also trying to integrate systems that are used in the industry. For example, we created a code style guide that we use throughout our code to promote good conventions and make everything look uniform. We also use code review from peers, continuous integration (CI), and robot simulation when merging new features into our main code to ensure that everything works as intended.
In the programming sub-team, we use a lot of different technologies while developing our code. We use a combination of Java, C++, and Python for our robot-focused code. The scouting app is programmed with web technologies: JavaScript, HTML, and CSS.
Seasonal improvements
Each year we try out new technologies in order to improve both our on-field performance and education.
For our 2023 robot, we switched back to Java as it has more community resources available. We adopted AdvantageKit and it’s input-first logging principle, which proved very useful after matches when we had to diagnose issues. We improved our vision capabilities, using Limelights to detect AprilTags for field localization, as well as the the retroreflective tape on nodes and the game pieces (using object detection) for precise alignment to each. We started using PathPlanner to easily create both autonomous and teleop-assisting routes, in combination with a WPILib-based swerve implementation that utilized both vision and odometry to get a more accurate position estimate.
For the first time in our 2022 robot, we used a custom swerve drive implementation, a closed-loop controlled shooter for more precise shots, and a Limelight vision system to measure the distance and angle of the hub.
printf("Programming is fun!\n")