ART: Astrobots Robot Template
ART aims to be an easy-to-use and flexible VexCode Library that provides teams with powerful tools while also being a valuable resource to the Vex community.
Table of Contents
Project Goals
The main goal of ART is to allow newer teams to explore and apply several of the powerful features commonly used within the Vex Robotics Competiton. Alongside the library itself, a major goal is to create sufficient documentation and explanation for teams to fully understand the concepts they are utilizing in their code. This allows competitors to use the library for competition while abiding with <G2> (V5RC is a student-centered program) and allows them to grow their knowledge and apply it outside of VRC.
Aside from that, ART is also just a way to finally publish code that I’ve been putting off for the last couple years. Most of the first few versions of ART will be classes and features I developed for competition on various Astrobots teams over the past few years. After that, I hope to develop additional features and systems based on feedback from the community, allowing me to prioritize features that the community deems useful.
Finally, apart from just releasing it, ART mainly is and was just a passion project, with the main users being local teams I can provide direct support to. However, I hope to provide support to whoever wants to use this Template even once I graduate.
Project Lifetime and Development plans
ART will release in multiple minor versions as it grows and more features are added. Features should be compatible with previous versions, but some features may result in major reworks and a brand new version will release instead.
I only really have plans for a few initial versions and a few much later ones, so a lot of features will likely come from the community and what they want.
Features
V1.0 (Initial Version):
- TankDrive wrapper class
- Odometry
- Several motion functions
- PID control class
- Vector Utility Class
- Unit Utility Classes
Features planned for future versions:
- Smarter Motor Control class
- Sensor Wrapper classes
- Path Utility class
- Pure Pursuit
- PATH.JERRYIO support
- Macros and Auton support classes
- Custom Timer class
The Initial Version of ART should be finished by mid-August. I had planned to release it sometime next week, but I have yet to validate and write tutorials for a lot of stuff, so it’s getting pushed back. Assuming things go well, I’ll create a pre-release version with the documentation, but no tutorials.
One of the main drivers for this project was that a lot of local teams asked me to share some of my code for different things such as odometry and PID. Seeing as I was already working on packaging things into a library, it seemed better to fully flesh out this project with explanations and tutorials rather than re-explain everything every time I’m asked.
Additionally, I thought it would be nice to release this to the greater community as well. Over the past couple of days, there has been a lot of discussion on VexCode vs PROS and the quality of documentation. While ART does prioritize documentation, the development of this project is in no way a response to those discussions. Rather, documenting code is something I rarely do, so I wanted to ensure I did it properly at least once before I graduate and leave nothing behind for future competitors.
The development and direction of ART past just adapting and releasing the code I’ve competed with will be determined heavily by community opinion. What would you like from ART and what features would you like to see added?