EZ Template vs ARMS vs LemLib

I’m looking to use a more sophisticated library with PROS this year (literally anything is more sophisticated as i used dead reckoning last year), and from what I can tell the three major options are EZ Template, ARMS, and LemLib. Right now I’m leaning towards LemLib, but I wanted to see what other people’s opinions are in terms of which library they prefer and why.

Thanks in advance.

5 Likes

Hi, I’m Liam, co-author of LemLib.

I was waiting to see if someone else would reply to this first because my own opinion is biased, but no-one did. I’ll do my best to explain each option.

Option 1: EZ-Template. EZ-Template is the most popular library right now. In fact, world champion team 7686B uses it, and team 2733J who did really well too. As the name suggests, its easy to use, its documentation is good, and has a fantastic community from which you can get support from. It should be noted however that it has not been updated recently except for PROS kernel updates to ensure it still works. It has no odometry, but has uses heading and supports tracking wheels and simple curved motions. It also has many driver control features which both ARMS and LemLib lack (for now) Overall a solid choice.

Option 2: ARMS. ARMS is developed by the PROS team. Its main features include odometry and the boomerang motion controller. It is used by the VEXU team BLRS and is in active development. Because of odom, it is more accurate than EZ-template if tuned correctly. The community of users isnt as large as EZ-Template but the developers are super helpful and available on VTOW. Also a solid choice.

Option 3: LemLib. LemLib is developed by me and has quite a number of features. It is in heavy development, with most contributors actively competing in VRC. Notable teams who used it include 1010N, 5090X, and 10012G. It has odometry, supporting any configuration. It also has PID turn to face point, PID move to point, but most notably it has pure pursuit with its very own path generator. Its as easy as drawing a path for the robot to follow. It has pretty good documentation with tutorials to help you get started. It does not have as big a community as EZ-template but you can ask me any questions and I will be happy to help.

I decided to separate this section to avoid any confusion. Below are features that are currently in development, not what is currently implemented. By the end of the upcoming summer break, I plan the following features to be fully implemented in LemLib:

  1. Customized version of Pure Pursuit. Generates motion profiles on-the-fly to follow the lookahead point
  2. X-drive and mecanum support
  3. Live debugging
  4. Extensive GUI on the brain

Reminder - I am biased
I recommend using LemLib. It has the most advanced motion algorithm being able to follow a 2d path. It is under heavy development with many new features on the horizon. But you really can’t go wrong with any of these 3 options. I think the best thing to do would be to try each of them out over the summer and see which you like best.

Links to projects:
EZ-Template source
LemLib source

Sorry, I wasnt able to add links to ez-template because it vexforum wont let mem :sob:

13 Likes

Completely missed this response, but thanks for the information!

Hi Liam. I started to try Lemlib by following 1 - Getting Started - LemLib documentation. and I downloaded the " [example project] from "LemLib/src/main.cpp at stable · LemLib/LemLib · GitHub. Then I import them into pros, try to build it without change anything, unfortunately, it shows two errors as below screenshot:

. However, if I create a new project then build it, it is successful. So I guess something wrong with the “example project”. Would you please check that?

It compiles fine for me. Can you click “view output” and send the output? Or even better, a zip file or github repo of your code?

Thanks for helping me out.
LemLib-stable.zip (26.5 MB)
output.zip (5.0 KB)

You tried to install LemLib into the LemLib source code. You do not need to clone the LemLib repo. The example project is just the main.cpp file in the link you posted.

Create a new pros project, and install LemLib in there. Then copy main.cpp

2 Likes

Thank you. I already installed Lemlib following your website instruction. I can create a new pros project but how to install LemLib in there? You mean copy main.cpp from example project? Will that be a standart procedure for other users if they want to install Lemlib? BTW, do you have another contact information I can keep touch with you?

Read the docs!
Head over to https://lemlib.readthedocs.io/en/stable/tutorials/1_getting_started.html#lemlib-installation, it explains how to install and use LemLib. The sample program is just used as a reference, but first make sure you understand how LemLib works.
Make sure you read the docs in its entirety! Many common issues are addressed in the documentation.
https://lemlib.readthedocs.io/en/stable/tutorials/1_getting_started.html#lemlib-installation

Remember, never use a program created by someone else (adult or not on the team), without at least understanding how it works, in VEX this can lead to a <​g2​> and <​r2​> violation. See the Student Centered Policy for more information!

7 Likes

Thanks but don’t be that rude. We read the doc carefully and follow instructions exactly but that does’t mean everyone will get exact same result. We appreciate Liam’s hard work but we don’t think it is better than EZ Template.

Liam, great work! Did you ever implement the Mecanum / x-drive functionality you mentioned above? Looking for beta testers?

If you have done everything detailed in this page (1 - Getting Started - LemLib documentation), then lemlib should be installed. The most important part is the two lines that you copy and paste into the terminal, which should create some new folders in the “include” folder. If you see a folder named “lemlib” in the “include” folder, the installation was successful!

I highly recommend that you revisit lemlib if you haven’t already, as its capabilities are constantly updating, quickly becoming easier to use and more powerful than some of its alternatives.

Hope this helps!

Hi I’m also trying Lemlib for the first time. But I’m kinda stuck at the configuration part (grouping motor). Since our drivetrain uses 2 11w motors with 6:1 (blue gear) and 1 5.5w motor with fixed 18:1 (200rpm) gear that has a transition gear (1:3) to match the 11w motor speed (at 600 rpm) for both side. And I can’t find a custom way for configuring that especially after v0.5 (since before you can configure each one then group it together)