|
1 | 1 | # autolib
|
2 |
| -*a pros library for advanced vex autonomous programming* |
| 2 | + |
| 3 | +**Summary** |
| 4 | + |
| 5 | +AutoLib is a Pros C++ Library based off of OkapiLib for Advanced Vex Autonomous Programming. |
| 6 | + |
| 7 | +*Notice: AutoLib Version 1 beta is coming out soon! And we would love your contributions! To find us, email acetousk@gmail.com or ping on the [Unofficial Vex Discord](https://discord.gg/) @potatehoes#7782* |
| 8 | + |
| 9 | +## Why AutoLib? |
| 10 | + |
| 11 | +### Features: |
| 12 | + - PathGenerator: A simplified easy class for generating a path. |
| 13 | + - PurePursuit: A robust path following algorithm for controlling your robot's chassis. |
| 14 | + - Documentation: Great Documentation for Expert to Newbie Vex Team Programmers |
| 15 | + - Open Source: You can contribute to this project. |
| 16 | + |
| 17 | +## Docs |
| 18 | +We know nobody reads through the long and boring documentation in the ReadMe anyway, so head over to the documentation website: |
| 19 | + |
| 20 | +[https://github.com/team914/autolib/wiki](https://github.com/team914/autolib/wiki) |
| 21 | + |
| 22 | +## Examples |
| 23 | + |
| 24 | +### Implimentation |
| 25 | +```cpp |
| 26 | +//This will construct the PathGenerator class |
| 27 | +PathGenerator pathGenerator( |
| 28 | +{ |
| 29 | + //The first point is, by default, automatically 0, 0 |
| 30 | + autolib::Point{ -1_ft, 1_ft }, //This generates a Point at ( -1 foot, 1 foot ) |
| 31 | + autolib::Point{ 0_ft, 2_ft }, //Then ( 0 feet, 2 feet ) |
| 32 | + autolib::Point{ 1_ft, 1_ft }, //Then ( 0 feet, 2 feet ) |
| 33 | + autolib::Point( 1_in, 1_in ) //Then ( 1 inch, 2 inches ) |
| 34 | + //You can send any number of points along your path. |
| 35 | +}, .1_in /**This is the distance between each point after you generate a path. |
| 36 | + * The more points the better, however more points will take longer |
| 37 | + * to setup in pre auton. |
| 38 | + */ |
| 39 | +); |
| 40 | + |
| 41 | +/**This will generate a series of points based off an algorithm. |
| 42 | + * Currently only HermiteSpline is supported. To figure out how this algoritm works, |
| 43 | + * we suggest you check this desmos graph out. https://www.desmos.com/calculator/h2jshqzjdo |
| 44 | + */ |
| 45 | +pathGenerator.generatePath( PathGenerator::PathType::HermiteSpline ); |
| 46 | + |
| 47 | +//This will construct the PurePursuit class |
| 48 | +PurePursuit purePursuit( |
| 49 | + pathGenerator.getPath(), // this will send the path from the PathGenerator to PurePursuit |
| 50 | + 4_in // this is the Pure Pursuit Algorithm's lookaheadDistance |
| 51 | +); |
| 52 | + |
| 53 | +/**This should be run in a loop during auton. This uses okapi's odometry feature to |
| 54 | + * identify the current global x, y, and yaw of the robot. This data is extremely vital |
| 55 | + * to the Pure Pursuit Algorithm. If this data is signifigantly off the actual position, |
| 56 | + * then it can and probaly *will* mess up your auton. |
| 57 | + */ |
| 58 | +purePursuit.getGoalCurvature( 0_ft, 0_in, 0_rad ); |
| 59 | + |
| 60 | +``` |
| 61 | +## Contributing |
| 62 | + |
| 63 | +We love contributions from the community! Contributions are |
| 64 | +accepted using GitHub pull requests; for more information, see |
| 65 | +[GitHub documentation - Creating a pull request](https://help.github.com/articles/creating-a-pull-request/). In addition, dealing with git branches and forks can be tricky if you don't already know how to use them; see [Editing and Creating a new branch with git and manage branches](https://github.com/acetousk/autolib/wiki/Editing-Create-a-new-branch-with-git-and-manage-branches) |
| 66 | + |
| 67 | +For a good pull request, we ask you provide the following: |
| 68 | + |
| 69 | +1. Include a clear description of your pull request in the description with the basic "what" and "why"s for the request. |
| 70 | +2. If the pull request is a new feature, please include appropriate documentation in the wiki. |
| 71 | +3. Keep a consistent coding style. |
| 72 | + |
| 73 | +## License |
| 74 | + |
| 75 | +AutoLib is licensed under the MIT license. |
0 commit comments