CPR Programming Division

This division hosts a collection of some of the greatest problem-solvers on our team as they are charged with the responsibility of making our robot functional. Our gifted software students practice the most important skills of any engineer—innovating and collaborating—as they work behind the scenes to power our robot. Without code, our robot would not be able to accomplish any of the tasks that FIRST sets for us. The software team are able to modify code mid-competition to solve mechanical issues, ensuring us a potential victory. We are proud to recognize our growing understanding in the computer science field.

Programming Training in CPR

Most newcomers to CPR’s Programming division already have a basic understanding of software and have done some programming in the past, whether in school or as part of an independent project. We build on this experience and teach our students a wide variety of skills and FRC-specific software knowledge. This includes working with the WPILib suite, using the AdvantageKit framework for simulation and data logging, and processing vision data with PhotonVision. We also teach our Programming students about electronics and wiring to control motors using Phoenix Tuner, SPARK, CAN and REV. In the process, students also gain a greater understanding of the firmware and hardware that our team uses.

Features in Competition

Auto Routines - Several autonomous routines can be chosen for a variety of starting configurations and alliance arrangements. These routines are highly valuable for match performance and our wide variety means that we can avoid interfering with our alliance partners during the autonomous portion of the match.

Vision - Specialized cameras can detect reflective tape or AprilTags on the field and derive valuable information, including estimating the robot’s position on the field and calculating firing solutions for a shooter subsystem.

Task Automation - Many robot functions can be automated, which saves time and can have a large effect on robot performance. We often automate shooting and climbing routines. We also bind complex functions to a single controller button, which allows us to initialize a subsystem or perform several related functions at once.