🔔 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 [email protected]: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.







