├── .gitignore
├── CMakeLists.txt
├── README.md
├── README_zh-CN.md
├── a_star
├── a_star.cc
├── a_star.md
└── a_star_zh-CN.md
├── common
├── map.cc
└── map.h
└── rrt
├── rrt.cc
└── rrt.h
/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 | .vscode/
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.10)
2 | project(planning_algorithms)
3 |
4 | set(ASTAR
5 | common/map.cc
6 | a_star/a_star.cc
7 | )
8 |
9 | add_executable(a_star ${ASTAR})
10 |
11 | find_package(OpenCV REQUIRED)
12 | include_directories(${OpenCV_INCLUDE_DIRS})
13 | link_directories(${OpenCV_LIBRARY_DIRS})
14 | target_link_libraries(a_star ${OpenCV_LIBS})
15 |
16 | target_include_directories(a_star
17 | PRIVATE
18 | ${PROJECT_SOURCE_DIR}/common
19 | )
20 |
21 | add_executable(rrt rrt/rrt.cc)
22 | target_link_libraries(rrt ${OpenCV_LIBS})
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Planning Algorithm
2 | ## 1. How to Use
3 | ### 1.1 Environment config
4 | [Ubuntu20.04](https://ubuntu.com/)(recommend) or Ubunt18.04
5 | [CMake](https://cmake.org/)
6 | [OpenCV](https://docs.opencv.org/4.5.3/d7/d9f/tutorial_linux_install.html)(OpenCV4 recommend)
7 |
8 | ### 1.2 Build program
9 | ```
10 | mkdir build
11 | cd build
12 | cmake ..
13 | make -j10
14 | ./a_star
15 | ./rrt
16 | ```
17 | ### 1.3 Supplementary Instruction
18 | The rightward direction is the positive direction of the X-axis
19 | The downward direction is the positive direction of the Y-axis.
20 |
21 | ## 2. Taxonomy of motion planning techniques applied in automated driving scenarios
22 |
Algorithm group | 25 |Technique | 26 |Technique description | 27 |
Graph search based planners | 30 |Dijkstra's Algorithm | 31 |
32 | Known nodes/cells search space with associated weights 33 | Grid and node/cells weights computation according to the environment 34 | |
35 |
A* algorithm family | 38 |
39 | Anytime D* with Voronoi cost functions Hybrid-heuristics A* 40 | A* with Voronoi/Lattice enviroment represeantation. PAO* 41 | |
42 | |
State Lattices | 45 |
46 | Enviroment decomposed in a local variable grid, depending on the complexity of the maneuver 47 | Spatio-temporal lattices(considering time and velocity dimensions) 48 | |
49 | |
Sampling based planners | 52 |RRT | 53 |
54 | Physical and logical bias are used to generate the random-tree 55 | Anytime planning with RRT* 56 | Trajectory coordination with RRT 57 | |
58 |
Interpolating curve planners | 61 |Line and circle | 62 |Road fitting and interpolation of known waypoints | 63 |
Clothoid Curves | 66 |
67 | Piecewise trajectory generation with straight, clothoid and circular segments 68 | Off-line generation of clothoid primitives from which the best will be taken in on-line evaluation 69 | |
70 | |
Polynomial Curves | 73 |
74 | Cubic order polynomial curves 75 | Higher order polynomial curves 76 | |
77 | |
Bezier Curves | 80 |
81 | Selection of the optimal control points location for the situation in hand 82 | Rational Bezier curves impletation 83 | |
84 | |
Spline Curves | 87 |Polynomial piecewise implementation Basis splines(b-splines) | 88 ||
Numerical optimization approaches | 91 |Function optimization | 92 |93 | Trajectory generation optimizing parameters such as speed, steering speed, rollover constraints, lateral accelerations, jerk(lateral comort optimization), among others 94 | | 95 |
分类 | 24 |算法 | 25 |说明 | 26 |
基于图搜索的算法 | 29 |Dijkstra算法 | 30 |
31 | 已知带有权重的节点搜索空间 32 | 节点的权重和周围的环境有关 33 | |
34 |
A*算法 | 37 |
38 | A*在Dijkstra算法的基础上增加了启发式代价函数 39 | |
40 | |
Lattices | 43 |
44 | 根据环境的复杂性不同, 将其建模到本地的离散化网格中 45 | 时间-空间lattice, 考虑时间和速度两个维度 46 | |
47 | |
基于取样的算法 | 50 |RRT | 51 |
52 | 用物理和逻辑上的偏差来生成随即搜索树 53 | |
54 |
曲线插值 | 57 |直线和圆 | 58 |利用已知的点进行插值形成路径 | 59 |
回旋线 | 62 |
63 | 利用直线、螺旋曲线、圆弧等分段组成轨迹 64 | 离线生成原始曲线然后放到线上进行评估 65 | |
66 | |
多项式曲线 | 69 |
70 | 三阶多项式曲线 71 | |
72 | |
贝塞尔曲线 | 75 |
76 | 为现有的情况选择最佳的控制点 77 | 有理贝塞尔曲线的实现 78 | |
79 | |
样条曲线 | 82 |分段的多项式函数组成样条曲线 | 83 ||
数值优化 | 86 |函数优化 | 87 |
88 | 优化生成的轨迹的参数(比如速度、转向速度、滚动约束、侧向加速度、Jerk(速度的导数, 表示舒适性)等等) 89 | |
90 |