lib7842 - November 28, 2019
What is lib7842?
lib7842 is a PROS library for advanced controls which is built around OkapiLib. It is designed to be a good example for advanced programming and a useful tool for competition.
I have been working of lib7842 since summer 2019, and plan on releasing it to the VEX community by summer 2020. I will use it for competition through the season, which will not only provide testing and experience, but also provide a direction and motivation for the library.
I have shared the library with some teams in the US who are part of TVA for testing and collaboration purposes.
What will lib7842 provide?
The core of lib7842 will be:
- Fluent path generation API
- Pure Pursuit path follower
- Pure Pursuit X-Drive path follower
- Odometry-based PID motion controller
- Odometry-based PID X-Drive controller
- Flexible GUI library
- Vision sensor management and filtering
There are other utilities and functionality in lib7842, but these are the main elements of it.
Programming Practices:
lib7842 is a full library that will be used by many VEX competitors. To deliver the best product possible, I am learning how to follow the best C++ coding standards and practices for lib7842.
- Git
- Make a commit for every change made
- Use imperative tense for commit messages
- Use git flow for source and feature management
- Formatting
- Format all code using clang-format
- CI and Tests
- Tests need to be made for each public API
- Each commit is compiled and tested by Azure Pipelines
- CI Results
- V5 binary and template
- Test results
- Valgrind memory leak detector results
- Callgrind profiler results
- CppCheck static analysis
- Codacity static analysis
- Codefactor static analysis
Commit Messages
Here is an example of lib7842 commit messages, which are intended to be as informative as possible: