Skip to content

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

License

Notifications You must be signed in to change notification settings

SS47816/frenet_optimal_planner

Repository files navigation

frenet_optimal_planner

Ubuntu ROS C++ CodeFactor GitHub Repo stars GitHub Repo forks

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