🔔 CHECK OUT THE NEWER VERSION path_optimizer_2 and path_optimizer_ilqr
  
This ROS package generates feasible paths for non-holonomic vehicles.
- ROS kinetic on Ubuntu 16.04
 - OpenCV 3
 
mkdir -p workspace/src && cd workspace/src
git clone git@github.com:LiJiangnanBit/path_optimizer.git
sudo bash path_optimizer/scripts/install_deps.sh
cd ..
catkin build path_optimizer
source devel/setup.bash
install_deps.sh will install other dependencies (Those already installed will be skipped). These dependencies include:
- ipopt 3.12.4
 - cppad 20180000.0
 - google benchmark
 - glog
 - gflags
 - osqp-eigen
 - grid_map
 - ros_viz_tools
 - tinyspline_ros.
 
A png image is loaded as the grid map. You can click to specify the global reference path and the start/goal state of the vehicle.
roslaunch path_optimizer demo.launch
- Pick at least six points.
 - There are no hard and fast rules about the spacing of the points.
 - If you want to abandon the chosen points, just double click anywhere when using the "Publish Point" tool.
 - You can replace 
gridmap.pngwith other black and white images. Note that the resolution indemo.cppis set to 0.2m, whick means that the length of one pixel is 0.2m on the map. - In application, the reference path is given by a global path or by a search algorithm like A*.
 
- Currently, it's not strictly required to reach the goal state. But this can be changed.
 - The start state must be ahead of the first reference point.
 
This is a computation time test.
rosrun path_optimizer path_optimizer_benchmark
Refer to demo.cpp
The parameters that you can change can be found in planning_flags.cpp.
Refer here.
- Take inputs (red dots):
 - (Optional) Use B spline curve fitting to make the path continuous and then search around it for a more reasonable reference path (yellow dots).
This step can be skipped by changing settings.
 - Smooth the reference path using IPOPT (yellow curve).
 - Represent the path planning problem as a QP and solve it using OSQP.
 







