Links
Summary
Alloy is a framework used for programming both FTC and FRC robots. The main features are:
- An automatic annotation based update system with priority
- A state machine to manage autonomus actions
- A rich component system that helps structure projects, as well as adds common functionality such as debugging
- The ability to write system agnostic code that can be shared between FRC and FTC robots.
- Various utilities to solve common mechanical programming problems
- A virtualized robot base to run code without having access to a physical robot
The project stopped being maintained when I graduated high school, so there are some features that mayincompete or not fully functional.
Languages Used: Java
Technologies Used: WPILib
Takeaways
This was the first major project that I worked on, which lead me to understand some really important concepts about design. The project had many iterations, starting with some concrete utilities, that were not very extensible. When I realized that this was not sustainable for the long term, as it was not very modular or adaptable, I decided to rewrite the system with the component system. I also learned a lot about object oriented design, as the project takes advantage of inheritance, polymophism, encapsulation, abstract classes, interfaces, and type generics. The project also takes advantage of reflection to dyanmically add methods to the update system at runtime.
I also learned about over-engineering, as this project sometimes gets to 4 or 5 levels of inheritance , which I thought was cool intitially. After working with the project for a while, I realized that this much complexity within the project caused some confusion when trying to understand what everything does.
Contributors
While the code of this project was written mainly by me, many ideas have been contriubted by the team members of FRC Team 555 - Montclair Robotics.