Skip to content

LemLib/LemLib

Repository files navigation


Important

LemLib is being written from scratch for its upcoming v0.6.0 release. You can find the source code for the latest stable version of LemLib here

Welcome to LemLib! This open-source PROS template aims to introduce common algorithms like Pure Pursuit and Odometry for new and experienced teams alike.

The creation of this template was inspired by EZ-Template and OkapiLib. We aim to develop a library that strikes a balance between ease-of-use, akin to that of EZ-Template, and comprehensive functionality, similar to that of OkapiLib.

Want a place to chat with the devs and other users? Join our Discord server.

License

This project is licensed under the MIT license. Check LICENSE for more details.

Features

  • Generic PID class
  • Odometry
    • Supports IMU
    • Works without tracking wheels
    • Supports all tracking wheels configurations
  • Turn to face point
  • Turn to face heading
  • Swing to face point
  • Swing to face heading
  • Move to Pose via boomerang
  • Path Following via pure pursuit
  • Motion Chaining
  • Driver Control
    • Expo drive curves
    • Smooth deadzone compensation
    • Minimum output
    • Arcade control (single or double stick)
    • Tank control
    • Curvature control (single or double stick)
    • turn-steer prioritization

Example Project

You can find a fully annotated example project here.

Tutorials

The tutorials provide a detailed walkthrough through all the features of LemLib. It covers everything from installation to Path Following:

FAQ

1. Help! Why is my controller vibrating? If your controller vibrated more than once, your inertial sensor calibration failed. Check if its connected to the right port and try again.

2. What drivetrains are supported? Only tank/differential. This is not going to change until other drivetrains are competitive.

3. Do I need tracking wheels? No, but it is recommended. You should absolutely have a horizontal tracking wheel if you don't have traction wheels, and you have to spend extra effort tuning your movements to prevent any wheel slip.

4. Do I need an inertial sensor? No, but it is highly recommended. The one exception to this would be if you have 2 parallel tracking wheels which are tuned well and are perfectly square. LemLib will work without it, but the accuracy will be compromised.

5. Do I need an SD card? As of v0.5.0, no SD card is necessary.

6. What are the units? The units are inches and degrees. In a future release, Qunits will be used so you can use whatever units you like.

7. Is LemLib V5RC legal? Yes. Per the RECF student-centred policy, in the context of third-party libraries.

Students should be able to understand and explain the code used on their robots

In other words, you need to know how LemLib works. You don't need to know the details like all the math, just more or less how the algorithm works. If you want to learn more about LemLib, you can look through the documentation and ask questions on our Discord server.

Documentation

Check out the Documentation.

Contributing

Want to contribute? Please read CONTRIBUTING.md and join our Discord server.

Code of Conduct

See the Code of Conduct on how to behave like an adult.