All Projects → kraken-robotics → The-Kraken-Pathfinding

kraken-robotics / The-Kraken-Pathfinding

Licence: MIT license
A tentacle-based pathfinding library for nonholonomic robotic vehicles

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to The-Kraken-Pathfinding

loco car
Software for LOCO, our autonomous drifting RC car.
Stars: ✭ 44 (+83.33%)
Mutual labels:  autonomous-driving
HIRO Panda TRAC IK
Inverse Kinematics Engine for the Franka Emika Panda for Cartesian Pose Control.
Stars: ✭ 21 (-12.5%)
Mutual labels:  trajectory
panther
Perception-Aware Trajectory Planner in Dynamic Environments
Stars: ✭ 115 (+379.17%)
Mutual labels:  trajectory
Virtual-Lane-Boundary-Generation
Virtual Lane Boundary Generation for Human-Compatible Autonomous Driving
Stars: ✭ 22 (-8.33%)
Mutual labels:  autonomous-driving
Autonomous-Parking-System
Automatic Parking is an autonomous car maneuvering system (part of ADAS) that moves a vehicle from a traffic lane into a parking spot to perform parallel parking. The automatic parking system aims to enhance the comfort and safety of driving in constrained environments where much attention and experience is required to steer the car. The parking…
Stars: ✭ 39 (+62.5%)
Mutual labels:  autonomous-driving
scGEAToolbox
scGEAToolbox: Matlab toolbox for single-cell gene expression analyses
Stars: ✭ 15 (-37.5%)
Mutual labels:  trajectory
TrajectoryTracking
Trajectory Tracking Project
Stars: ✭ 16 (-33.33%)
Mutual labels:  trajectory
YOLOP-opencv-dnn
使用OpenCV部署全景驾驶感知网络YOLOP,可同时处理交通目标检测、可驾驶区域分割、车道线检测,三项视觉感知任务,包含C++和Python两种版本的程序实现。本套程序只依赖opencv库就可以运行, 从而彻底摆脱对任何深度学习框架的依赖。
Stars: ✭ 178 (+641.67%)
Mutual labels:  autonomous-driving
pathfinding-visualizer
Website built using React Framework for visualizing Pathfinding and Maze Generation Algorithms.
Stars: ✭ 33 (+37.5%)
Mutual labels:  pathfinding
SF-GRU
Pedestrian Action Anticipation using Contextual Feature Fusion in Stacked RNNs
Stars: ✭ 43 (+79.17%)
Mutual labels:  autonomous-driving
yupi
Python package designed for collecting and processing trajectory data.
Stars: ✭ 30 (+25%)
Mutual labels:  trajectory
Trajectory-Analysis-and-Classification-in-Python-Pandas-and-Scikit-Learn
Formed trajectories of sets of points.Experimented on finding similarities between trajectories based on DTW (Dynamic Time Warping) and LCSS (Longest Common SubSequence) algorithms.Modeled trajectories as strings based on a Grid representation.Benchmarked KNN, Random Forest, Logistic Regression classification algorithms to classify efficiently t…
Stars: ✭ 41 (+70.83%)
Mutual labels:  trajectory
JuliaAutonomy
Julia sample codes for Autonomy, Robotics and Self-Driving Algorithms.
Stars: ✭ 21 (-12.5%)
Mutual labels:  autonomous-driving
php-a-star
A* (A Star) search algorithm for PHP
Stars: ✭ 61 (+154.17%)
Mutual labels:  pathfinding
mmterm
View proteins and trajectories in the terminal
Stars: ✭ 87 (+262.5%)
Mutual labels:  trajectory
torchtrajectory
The World's First Search Engine for Trajectory Data
Stars: ✭ 28 (+16.67%)
Mutual labels:  trajectory
cepathfind
a path find for tilebase game in unity
Stars: ✭ 30 (+25%)
Mutual labels:  pathfinding
Pathfinding Visualization
A ReactJS project visualizes the path-finding algorithms with additional cool features like speed adjustment, maze generation, mobile support, etc.
Stars: ✭ 14 (-41.67%)
Mutual labels:  pathfinding
Depth-Guided-Inpainting
Code for ECCV 2020 "DVI: Depth Guided Video Inpainting for Autonomous Driving"
Stars: ✭ 50 (+108.33%)
Mutual labels:  autonomous-driving
SelfDrivingCarsControlDesign
Self Driving Cars Longitudinal and Lateral Control Design
Stars: ✭ 96 (+300%)
Mutual labels:  autonomous-driving

Build Status License: MIT

The Kraken Pathfinding

A multithreaded tentacle-based pathfinding library for holonomic and nonholonomic robotic vehicles

What is Kraken ?

Kraken finds a trajectory followable by a car-like vehicle in the form of a list of points.

Features

The trajectory created by Kraken has several properties, making it suitable for robotic vehicles, namely:

  • position continuity (G0 continuity), orientation continuity (G1 continuity) and curvature piecewise continuity (piecewise G2 continuity);
  • handles forward and backward movement;
  • takes into account the limited linear acceleration and deceleration;
  • limits the radial acceleration.

Kraken has two default modes:

  • find a path given a start position, a start orientation and an end position;
  • find a path given a start position, a start orientation, an end position and an end orientation.

You can easily add new modes that suit your need.

Trajectory example

Roadmap

A roadmap is available in the wiki of the project: https://github.com/PFGimenez/The-Kraken-Pathfinding/wiki/Roadmap

Why Java ?

For legacy reasons, mainly.

Getting Kraken

Precompiled .jar

You can download the latest stable and unstable versions of Kraken at https://github.com/orgs/kraken-robotics/packages.

Maven installation

If you want to use this library in one of your maven project, create a file ~/.m2/settings.xml that contains:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                    http://maven.apache.org/xsd/settings-1.0.0.xsd">

<activeProfiles>
    <activeProfile>github</activeProfile>
</activeProfiles>

<profiles>
    <profile>
    <id>github</id>
    <repositories>
        <repository>
        <id>central</id>
        <url>https://repo1.maven.org/maven2</url>
        </repository>
        <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/kraken-robotics/*</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        </repository>
    </repositories>
    </profile>
</profiles>

<servers>
    <server>
    <id>github</id>
    <username>kraken-robotics</username>
    <password>ghp_nc1fD61m3CyHIyuKtPLACEHOLDER_KRAKEN</password>
    </server>
</servers>
</settings>

Then run:

sed -i s/PLACEHOLDER_KRAKEN/AB3j8vCSm61wj1FqElk/ ~/.m2/settings.xml

And add this to your pom.xml :

  <repositories>
    <repository>
      <id>central</id>
      <url>https://repo1.maven.org/maven2</url>
    </repository>
    <repository>
      <id>github</id>
      <url>https://maven.pkg.github.com/kraken-robotics/*</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

and

<dependency>
    <groupId>pfg.kraken</groupId>
    <artifactId>kraken</artifactId>
    <version>[2.0.0,)</version>
</dependency>

Manual compilation

If you want the latest version:

$ git clone https://github.com/kraken-robotics/The-Kraken-Pathfinding --depth 1
$ cd The-Kraken-Pathfinding/core
$ mvn install

Examples are available in the directory examples. To execute an example, run mvn compile and then mvn exec:java -Dexec.mainClass="pfg.kraken_examples.Example1".

Great, I have a trajectory. How do my robot follow it ?

Getting the trajectory is only half of the work, because you won't go far if your robot can't follow it. Different control algorithms exist; in this section the Samson control algorithm [1] is presented.

First, recall that the curvature of a curve C at the point P is the inverse of the radius of curvature at P, i.e. the inverse of the radius of the circle that "fits" the best C at P.

Let R be the vehicle and R' its orthogonal projection to the curve and denote θ(R) the orientation of the robot, θ(R') the orientation setpoint at R', κ(R') the curvature setpoint at R' and d the algebric distance between R and R' (d > 0 if the robot is on the left of the curve, d < 0 otherwise).

The curvature setpoint is κ = κ(R') - k₁×d - k₂×(θ(R) - θ(R')), where k₁ and k₂ are two constants depending on the system.

In practice, if the robot has a small orientation error, one can approximate d with (R.y - R'.y) cos(θ(R')) - (R.x - R'.x) sin(θ(R')).

This control algorithm has been successfully used with Kraken in the INTech Senpaï Moon-Rover project (french !).

License

This project is licensed under the MIT license, which is very permissive. I'd love to know the projects that use Kraken; please keep me posted !

Acknowledgements

I would like to thank the INTech robotics club that taught me all I know about robotics and greatly influenced the developpement of Kraken.

Bibliography

[1] Samson, C. (1995). Control of chained systems application to path following and time-varying point-stabilization of mobile robots. IEEE transactions on Automatic Control, 40(1), 64-77.

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