/frenet_optimal_planner

Implementation of the Frenet Optimal Planning Algorithm (with modifications) in ROS.

Primary LanguageC++Apache License 2.0Apache-2.0

frenet_optimal_planner

CodeFactor Code Grade Code Quality Score GitHub Repo stars GitHub Repo forks

Ubuntu ROS C++

Implementation of the Frenet Optimal Planning Algorithm (with modifications) in ROS.

The original paper "Optimal trajectory generation for dynamic street scenarios in a Frenét Frame" can be found here

Demo

image

Features & Modifications

  1. We improved the framework to adopt the pipeline used in Apollo Lattice Planner to speed up the planning.
  2. We add an asynchronous collision checking module as an option (can be switched on by setting use_async = True), which can significantly improve the planning frequency.
  3. We add a trajectory concatenation strategy to keep the trajectories consistent between adjacent planning cycles.

Dependencies

Our package is only based on standard ROS pkgs, with no other external dependencies:

  • C++11 above
  • CMake: 3.0.2 above
  • Eigen (included)
  • ROS Packages:
    • roscpp
    • rospy
    • tf
    • tf2_ros
    • std_msgs
    • nav_msgs
    • geometry_msgs
    • autoware_msgs
    • message_generation
    • visualization_msgs
    • dynamic_reconfigure

Installation

Clone the repo and install dependencies:

# clone the repo
git clone https://github.com/SS47816/frenet_optimal_planner.git
cd frenet_optimal_planner

# install dependencies
rosdep install --from-paths src --ignore-src -r -y

# build using `catkin_make` , or you can build with `catkin build`
catkin_make
# source 
source devel/setup.bash

Usage

Launch the Planner node by running:

# Launch nodes
roslaunch frenet_optimal_planner frenet_optimal_planner.launch

Contribution

You are welcome contributing to the package by opening a pull-request

We are following: Google C++ Style Guide, C++ Core Guidelines, and ROS C++ Style Guide

License

Our frenet_optimal_planner ROS package is licensed under Apache License 2.0

The included Eigen Library follows its own Mozilla Public License v. 2.0