I’m going to be brutaly honest…
Based upon what’s available, your Go-To at the moment would be using LemLib.
However, you will realize that even with LemLib, even odometry configuration seems confusing and the path planning seems un-necessarily complex and could have been simplified a lot better using a list of lists/vectors.
Potentially in the future, I am working on making a lib of my own, planned to be available for VEXCode and PROS upon release that pretty much fixes a lot of the issues of lackluster libraries:
The library is not only intuitive for newcomers who use VEXCode or PROS, but also shows that VEXCode and PROS are ultimately similar in nature and are almost interchangable.
The only reason why I used VEXCode primarily is because PROS documentation is unnecessarily complex, however VEXCode doesn’t really have documentation. But one thing VEXCode has that made me choose it primarily was because VEXCode has @jpearman, a genuine godsend on this forum. And no amount of complex and scattered documentation PROS provides can even compare to the sage advice of jpearman. And honestly, I didn’t use PROS because any question on any server is just “RTM” to literally a very non-intuivive and unnecessarily complex documentation page.
I also found that PROS documentation has zero visual differentiation between a header and code.
This is what tripped me up when I was younger and made me walk away because I was extremely confused when I saw.
std::int32_t pros::Controller::get_analog ( pros::controller_analog_e_t channel )
Basically, what I’m saying is that PROS can be easy to understand but the documentation decides not to be. To put it bluntly, everyone can learn PROS if PROS actually focuses on making clear differentiations between headers and code, instead of merely fitting the two together as “C++” royally confusing newcomers. Sure, it is technically correct to be C++, however some codes are examples and others are meant to inform. And PROS doesn’t even try to explain the difference and assumes that anyone reading the documentation knows the difference between the two. Which, most people who are just enterting robotics simply don’t.
If you look at Okapilib, you will realize how dated its documentation is, alongside how un-intuitive it is for newcomers.
https://okapilib.github.io/OkapiLib/md_docs_tutorials_walkthrough_clawbot.html
When I was younger, I thought that this wasn’t actually code but was some explanation on how a constructor works due to the overuse of pointers and pointer functions (and I didn’t know they were pointers at the time due to a lack of C++ knowledge).
That is why LemLib is so popular, because people recognize how dated PROS and Okapilib’s documentation is. And, genuinely, even LemLib itself can still be scary for newcomers. So if you give me a little time, I plan to release my own lib with VEXCode and PROS support, and hopefully writing tutorials for even VEXCode and PROS usage to a degree simplified for newcomers. And my library can act as an introduction for those who are switching from VEXCode to PROS and vice versa.


