{"id":15019161,"url":"https://github.com/jacibrunning/pathfinder","last_synced_at":"2025-07-30T07:04:24.801Z","repository":{"id":62401936,"uuid":"53483413","full_name":"JaciBrunning/Pathfinder","owner":"JaciBrunning","description":"Cross-Platform, Multi-Use Motion Profiling and Trajectory Generation","archived":false,"fork":false,"pushed_at":"2020-04-01T15:12:46.000Z","size":3342,"stargazers_count":256,"open_issues_count":23,"forks_count":78,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-05-20T04:05:21.069Z","etag":null,"topics":["frc","motion-planning","motion-profiling","trajectory-generation"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JaciBrunning.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-03-09T09:02:38.000Z","updated_at":"2025-03-18T15:50:40.000Z","dependencies_parsed_at":"2022-11-01T09:00:51.723Z","dependency_job_id":null,"html_url":"https://github.com/JaciBrunning/Pathfinder","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/JaciBrunning/Pathfinder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaciBrunning%2FPathfinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaciBrunning%2FPathfinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaciBrunning%2FPathfinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaciBrunning%2FPathfinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JaciBrunning","download_url":"https://codeload.github.com/JaciBrunning/Pathfinder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaciBrunning%2FPathfinder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267827337,"owners_count":24150345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["frc","motion-planning","motion-profiling","trajectory-generation"],"created_at":"2024-09-24T19:53:05.589Z","updated_at":"2025-07-30T07:04:24.770Z","avatar_url":"https://github.com/JaciBrunning.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pathfinder\n## BUILDS FAILING, CAN'T FIND MAVEN? See here: https://www.chiefdelphi.com/t/important-changes-to-pathfinder-hosting/383357\nCross-Platform, Multi-Use Motion Profiling and Trajectory Generation.\n\nPathfinder is a library for generating Motion Profiles, a way to smoothly fit and follow a trajectory based upon \ngiven waypoints. Currently, both a C and Java API are available, but can be applied to almost any application.\n\nAn example profile is given below, with the waypoints:  \n1) X = -4, Y = -1, Angle = -45 degrees  \n2) X = -2, Y = -2, Angle = 0  \n3) X = 0,  Y = 0,  Angle = 0\n\nThe Graph on top is the X/Y position, and the Graph on the bottom is the Velocity.  \n![](img/trajectory.png)\n\n## Modifiers\nPathfinder supports Modifiers. Modifiers are a way to manipulate a trajectory with a given rule.  \nPathfinder supports Tank and Swerve Drive modifiers.  \n\nTank Drive:  \n![](img/tank.png)\n\nSwerve Drive:  \n![](img/swerve.png)\n\n## A note on calculation\nPathfinder requires some knowledge about your robot. The most important measurement is the maximum velocity, which can be either calculated or measured\nemperically. \n\nMeasuring the velocity is the best option, and can be done in multiple ways:\n- Drive at full speed in a straight line. After allowing the robot to reach max speed, measure the distance it covers within a certain amount of time.\n- Drive at full speed in a circle. Time how long it takes to do 10 rotations, and use the formula for circumference `C = 2*pi*r` with `r = track radius` to calculate the distance travelled in total, dividing by `10 * time` to get max velocity.\n\n## Part of the FIRST Robotics Competition?\n\n### For 2019:\nThis (old) version of Pathfinder has been published for the 2019 FRC Season, if you would like to use the legacy version\nover the new and shiny [Pathfinder v2](https://github.com/GrappleRobotics/Pathfinder).\n\nThe Vendor JSON File is published here: [https://dev.imjac.in/maven/jaci/pathfinder/PathfinderOLD-latest.json](https://dev.imjac.in/maven/jaci/pathfinder/PathfinderOLD-latest.json)\n\nRefer to the 2019 Vendor Library instructions for how to use this file, but the short and sweet of it is:\n- VSCode: Command Palette (CTRL + SHIFT + P) -\u003e WPILib: Manage Vendor Libraries -\u003e Install new library (online) -\u003e Paste the above URL.\n- GradleRIO Standalone: Download the file and place it in `vendordeps/PathfinderOLD.json` relative to your project's root directory.\n\n### For 2018:\nAdd the following lines to your build.gradle if you're using GradleRIO (2018.01.11 or higher):\n\n### Java:\n```gradle\ndependencies {\n    compile pathfinder()\n}\n```\n\n### C++:\n```gradle\nmodel {\n    frcUserProgram(NativeExecutableSpec) {\n        lib library: \"pathfinder\"\n    }\n}\n```\n\n**If you're not using GradleRIO, do the following:**  \n### Java\nIf you're not using GradleRIO, you must download this manually and copy into `~/wpilib/user/java/lib`: http://dev.imjac.in/maven/jaci/pathfinder/Pathfinder-Java/1.8/Pathfinder-Java-1.8.jar  \nYou also have to download this, extract it, and place `libpathfinder.so` into `~/wpilib/user/java/lib`: http://dev.imjac.in/maven/jaci/pathfinder/Pathfinder-JNI/1.8/Pathfinder-JNI-1.8-athena.zip\n\n### C++\nDownload this and put `libpathfinder.a` in `~/wpilib/user/cpp/lib`: http://dev.imjac.in/maven/jaci/pathfinder/Pathfinder-Core/1.8/Pathfinder-Core-1.8-athena.zip   \nDownload this and extract all of its contents to `~/wpilib/user/cpp/include`: http://dev.imjac.in/maven/jaci/pathfinder/Pathfinder-Core/1.8/Pathfinder-Core-1.8-headers.zip   \n\n## Using Pathfinder on your Architecture.\n1. Download the prebuilt Pathfinder files: [https://dev.imjac.in/maven/jaci/pathfinder/](https://dev.imjac.in/maven/jaci/pathfinder/)\n    - C/C++: Use Pathfinder-Core. You will need both the `headers` file and the file for your platform (e.g. 64-bit linux is `linuxx86-64`)\n    - Java: Use Pathfinder-Java and Pathfinder-JNI. For Pathfinder-JNI, you will need the jar for your platform (e.g. 64-bit linux is `linuxx86-64`)\n\n2. Add Pathfinder to your project.\n    - For C/C++: Unzip the headers zip and add it to your include path. Also unzip your platform zip and link with `-lpathfinder`\n    - For Java: Add both the Pathfinder-Java and Pathfinder-JNI jars to your classpath.\n\n## Usage\nTo see the usage for each language variation of the API, see the README in their folder.\n\n| Language | Folder |\n| -------- | ------ |\n| C        | [Pathfinder-Core](Pathfinder-Core/) |\n| Java     | [Pathfinder-Java](Pathfinder-Java/) |\n| LabVIEW  | [Pathfinder-LabVIEW](Pathfinder-LabVIEW/) |\n\n### Other languages\n\nThe RobotPy project has created python bindings around the Pathfinder libraries, and can be found at https://github.com/robotpy/robotpy-pathfinder\n\n## A word on releases\nThe releases on Maven (mentioned above) are built for the NI RoboRIO (v16/7 2018 image). If you go to the github releases, you can download the 1.5 version for Windows/Linux/Mac releases.\n\n## Further reading\nIf you want to know more about how Pathfinder works, I highly suggest watching the seminar on [Motion Profiling by FRC Team 254](https://www.youtube.com/watch?v=8319J1BEHwM), which inspired and provided a lot of guidance for this project. Both use the same generation procedure, with some logistical differences.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacibrunning%2Fpathfinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacibrunning%2Fpathfinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacibrunning%2Fpathfinder/lists"}