All Projects → JaciBrunning → Pathfinder

JaciBrunning / Pathfinder

Licence: mit
Cross-Platform, Multi-Use Motion Profiling and Trajectory Generation

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Pathfinder

Awesome Decision Making Reinforcement Learning
A selection of state-of-the-art research materials on decision making and motion planning.
Stars: ✭ 68 (-70.04%)
Mutual labels:  motion-planning
Pick Place Robot
Object picking and stowing with a 6-DOF KUKA Robot using ROS
Stars: ✭ 126 (-44.49%)
Mutual labels:  motion-planning
Rrt Algorithms
n-dimensional RRT, RRT* (RRT-Star)
Stars: ✭ 195 (-14.1%)
Mutual labels:  motion-planning
Path planning
This repository contains path planning algorithms in C++ for a grid based search.
Stars: ✭ 70 (-69.16%)
Mutual labels:  motion-planning
Rvo2 3d
Optimal Reciprocal Collision Avoidance in Three Dimensions (C++)
Stars: ✭ 108 (-52.42%)
Mutual labels:  motion-planning
Am traj
Alternating Minimization Based Trajectory Generation for Quadrotor Aggressive Flight
Stars: ✭ 142 (-37.44%)
Mutual labels:  motion-planning
Dynamicwindowapproach
The Dynamic Window Approach planning algorithm written in C with Python Bindings
Stars: ✭ 17 (-92.51%)
Mutual labels:  motion-planning
Crocoddyl
Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms
Stars: ✭ 207 (-8.81%)
Mutual labels:  motion-planning
Cleanit
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners. Under development.
Stars: ✭ 125 (-44.93%)
Mutual labels:  motion-planning
Hybrid A Star Annotation
Hybrid A*路径规划器的代码注释
Stars: ✭ 188 (-17.18%)
Mutual labels:  motion-planning
Omplapp
The Open Motion Planning Library (OMPL), GUI + FCL/Assimp integration
Stars: ✭ 83 (-63.44%)
Mutual labels:  motion-planning
Pybullet Planning
PyBullet Planning
Stars: ✭ 89 (-60.79%)
Mutual labels:  motion-planning
Gpmp2
Gaussian Process Motion Planner 2
Stars: ✭ 161 (-29.07%)
Mutual labels:  motion-planning
Awesome Robotics Libraries
😎 A curated list of robotics libraries and software
Stars: ✭ 1,159 (+410.57%)
Mutual labels:  motion-planning
Rvo2 Cs
Optimal Reciprocal Collision Avoidance (C#)
Stars: ✭ 208 (-8.37%)
Mutual labels:  motion-planning
Topotraj
A robust UAV local planner based on the ICRA2020 paper: Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths
Stars: ✭ 50 (-77.97%)
Mutual labels:  motion-planning
Aikido
Artificial Intelligence for Kinematics, Dynamics, and Optimization
Stars: ✭ 133 (-41.41%)
Mutual labels:  motion-planning
Airsim Neurips2019 Drone Racing
Drone Racing @ NeurIPS 2019, built on Microsoft AirSim
Stars: ✭ 220 (-3.08%)
Mutual labels:  motion-planning
Ur5 ros Gazebo
Universal Robot (UR5) Pick and Place Simulation in ROS-Gazebo with a USB Cam and Vacuum Grippers
Stars: ✭ 211 (-7.05%)
Mutual labels:  motion-planning
Xpp
Visualization of Motions for Legged Robots in ros-rviz
Stars: ✭ 177 (-22.03%)
Mutual labels:  motion-planning

Pathfinder

BUILDS FAILING, CAN'T FIND MAVEN? See here: https://www.chiefdelphi.com/t/important-changes-to-pathfinder-hosting/383357

Cross-Platform, Multi-Use Motion Profiling and Trajectory Generation.

Pathfinder is a library for generating Motion Profiles, a way to smoothly fit and follow a trajectory based upon given waypoints. Currently, both a C and Java API are available, but can be applied to almost any application.

An example profile is given below, with the waypoints:

  1. X = -4, Y = -1, Angle = -45 degrees
  2. X = -2, Y = -2, Angle = 0
  3. X = 0, Y = 0, Angle = 0

The Graph on top is the X/Y position, and the Graph on the bottom is the Velocity.

Modifiers

Pathfinder supports Modifiers. Modifiers are a way to manipulate a trajectory with a given rule.
Pathfinder supports Tank and Swerve Drive modifiers.

Tank Drive:

Swerve Drive:

A note on calculation

Pathfinder requires some knowledge about your robot. The most important measurement is the maximum velocity, which can be either calculated or measured emperically.

Measuring the velocity is the best option, and can be done in multiple ways:

  • 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.
  • 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.

Part of the FIRST Robotics Competition?

For 2019:

This (old) version of Pathfinder has been published for the 2019 FRC Season, if you would like to use the legacy version over the new and shiny Pathfinder v2.

The Vendor JSON File is published here: https://dev.imjac.in/maven/jaci/pathfinder/PathfinderOLD-latest.json

Refer to the 2019 Vendor Library instructions for how to use this file, but the short and sweet of it is:

  • VSCode: Command Palette (CTRL + SHIFT + P) -> WPILib: Manage Vendor Libraries -> Install new library (online) -> Paste the above URL.
  • GradleRIO Standalone: Download the file and place it in vendordeps/PathfinderOLD.json relative to your project's root directory.

For 2018:

Add the following lines to your build.gradle if you're using GradleRIO (2018.01.11 or higher):

Java:

dependencies {
    compile pathfinder()
}

C++:

model {
    frcUserProgram(NativeExecutableSpec) {
        lib library: "pathfinder"
    }
}

If you're not using GradleRIO, do the following:

Java

If 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
You 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

C++

Download 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
Download 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

Using Pathfinder on your Architecture.

  1. Download the prebuilt Pathfinder files: https://dev.imjac.in/maven/jaci/pathfinder/

    • 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)
    • 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)
  2. Add Pathfinder to your project.

    • For C/C++: Unzip the headers zip and add it to your include path. Also unzip your platform zip and link with -lpathfinder
    • For Java: Add both the Pathfinder-Java and Pathfinder-JNI jars to your classpath.

Usage

To see the usage for each language variation of the API, see the README in their folder.

Language Folder
C Pathfinder-Core
Java Pathfinder-Java
LabVIEW Pathfinder-LabVIEW

Other languages

The RobotPy project has created python bindings around the Pathfinder libraries, and can be found at https://github.com/robotpy/robotpy-pathfinder

A word on releases

The 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.

Further reading

If you want to know more about how Pathfinder works, I highly suggest watching the seminar on Motion Profiling by FRC Team 254, which inspired and provided a lot of guidance for this project. Both use the same generation procedure, with some logistical differences.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].