Giter Site home page Giter Site logo

kraken-robotics / kraken-cpp Goto Github PK

View Code? Open in Web Editor NEW
9.0 7.0 3.0 207 KB

A tentacle-based pathfinding library for nonholonomic robotic vehicles

License: MIT License

CMake 3.16% C++ 96.84%
pathfinding-library robot-motion-planning autonomous-vehicles

kraken-cpp's Introduction

License: MIT

Kraken-cpp

Kraken-cpp is a abandoned C++ port of The Kraken Pathfinding. We encourage you to check the Java version.

Contribution

The project is currently abandoned, but you may become the new maintainer if you wish to. Pull request may still be accepted too.

Acknowledgements

Huge thanks to Pierre Bourré and Vincent Studer for their dedication to this project.

kraken-cpp's People

Contributors

hindi avatar kay0u avatar pfgimenez avatar ssttuudd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kraken-cpp's Issues

Create a static math utility class

We need a static class to perform some geometric computations.

It must include:

  • compute_new_orientation (currently in ItineraryPoint)
  • angle_difference (currently in OrientedPosition2D)

It may include a float version of M_PI to avoid static_cast all the time.

Write a configuration manager

We need a configuration manager that stores values for keys. The required features are :

  • can read an INI file
  • offers an API to modify the values
  • each key has a default value

The corresponding java source is https://github.com/PFGimenez/config/blob/master/core/src/main/java/pfg/config/Config.java
You don't need to port explicitly this java source ; it is probably more efficient to write the configuration manager from scratch.

You can use an external library. You need to check that :

  • its license is compatible with ours
  • it is a lightweight library

English is the mandatory langage.
Remember to comply with ROS style guide

Porting data structures

First we need to port some data structures. Java sources : https://github.com/PFGimenez/The-Kraken-Pathfinding/tree/kraken-cpp/core/src/main/java/pfg/kraken/struct

  • XY and XY_RW should be merged. XY_RW is a writable structure and XY is a read-only one.
  • XY must be serializable
  • XYO and ItineraryPoint are mainly used for a neat API
  • Cinematique should be renamed Kinematic
  • CinematiqueObs should be renamed SolidKinematic
  • The double should be ported into float
  • The public member variables in Cinematique and CinematiqueObs should be made private with appropriate getters. (This doesn't apply to XYO and ItineraryPoint)

English is the mandatory langage, please translate any french words.
Remember to comply with ROS style guide

Port navmesh

In order to use the D* Lite algorithm, we need to be able to generate automatically a navmesh.

There are six classes to port.

Three structures:

  • NavmeshNode, a node of the navmesh
  • NavmeshEdge, a edge of the navmesh
  • NavmeshTriangle, a triangle of the navmesh

The navmesh builder : NavmeshComputer
The navmesh itself : TriangulatedMesh
The Navmesh class is used to read / generate a navmesh.

Java sources : https://github.com/PFGimenez/The-Kraken-Pathfinding/tree/kraken-cpp/core/src/main/java/pfg/kraken/dstarlite/navmesh

English is the mandatory langage, please translate any french words.
Remember to comply with ROS style guide

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.