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
- We improved the framework to adopt the pipeline used in
Apollo Lattice Planner
to speed up the planning. - 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. - We add a trajectory concatenation strategy to keep the trajectories consistent between adjacent planning cycles.
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
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
Launch the Planner node by running:
# Launch nodes
roslaunch frenet_optimal_planner frenet_optimal_planner.launch
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
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