LiJiangnanBit / path_optimizer

Optimization-based real-time path planning for vehicles.
MIT License
518 stars 138 forks source link
autonomous-driving osqp osqp-eigen path-optimization path-planning quadratic-programming robotics

path_optimizer

:bell: CHECK OUT THE NEWER VERSION path_optimizer_2 and path_optimizer_ilqr


This ROS package generates feasible paths for non-holonomic vehicles.
2021-01-07 01-19-29屏幕截图.png

Simulation videos

(1) Simulation in dynamic environment

(2) Simulation with complex static obstacles

simulation

Run demos

0. Install dependencies and build

1. Demo

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

(1) Pick reference points using "Publish Point" tool in RViz.

选点.gif

(2) Pick start state using "2D Pose Estimate" tool and pick goal state using "2D Nav Goal" tool.

规划.gif

2. Benchmark test

This is a computation time test.

rosrun path_optimizer path_optimizer_benchmark

Usage

Refer to demo.cpp
The parameters that you can change can be found in planning_flags.cpp.

How it works

Refer here.

  1. Take inputs (red dots):
    2020-02-13 16-27-46屏幕截图.png
  2. (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.
    2020-02-13 16-27-56屏幕截图.png
  3. Smooth the reference path using IPOPT (yellow curve).
    2020-02-13 16-28-05屏幕截图.png
  4. Represent the path planning problem as a QP and solve it using OSQP.
    2020-02-13 16-28-19屏幕截图.png