diff --git "a/docs/blog/posts/\345\237\272\344\272\216\346\220\234\347\264\242\347\232\204\350\267\257\345\276\204\350\247\204\345\210\222.md" "b/docs/blog/posts/\345\237\272\344\272\216\346\220\234\347\264\242\347\232\204\350\267\257\345\276\204\350\247\204\345\210\222.md" new file mode 100644 index 0000000..54be771 --- /dev/null +++ "b/docs/blog/posts/\345\237\272\344\272\216\346\220\234\347\264\242\347\232\204\350\267\257\345\276\204\350\247\204\345\210\222.md" @@ -0,0 +1,53 @@ +# 基于搜索的路径规划 + +## 1. 图搜索基础 + +### 1.1 配置空间 + +一个n维空间,其中每一个点代表一个机器人的位姿 + +>在配置空间中规划 +![在配置空间中规划](https://picgo-1257309505.cos.ap-guangzhou.myqcloud.com/20241010110244.png) + +### 1.2 图搜索 + +1. 构建graph + - 栅格地图: 天然就是一个graph + - PRM: 随机采样点,然后连接成图 + +2. 图搜索主循环 + - 维护一个容器存储所有待访问的节点 + - 容器初始节点为start + - 循环 + - pop + - expansion + - push + - 结束循环 + +### 1.3 启发式搜索 + +存储节点,根据启发式函数排序 + + - 贪心搜索: $f(n) = h(n)$ + - A*搜索: $f(n) = g(n) + h(n)$ + - Dijkstra: $f(n) = g(n)$ + +启发式函数:$h(n)$ 估计从n到goal的代价 + - 曼哈顿距离 + - 欧几里得距离 + - 切比雪夫距离 + + +## 2. Dijkstra和A*算法 + +### 2.1 Dijkstra算法 + +$g(n)$: 从start到n的最少代价 + +![](https://picgo-1257309505.cos.ap-guangzhou.myqcloud.com/20241010112711.png) + +### 2.2 A*算法 + +![](https://picgo-1257309505.cos.ap-guangzhou.myqcloud.com/20241010113458.png) + +!!! note Admissible启发式函数:$h(n) \leq h^*(n)$ \ No newline at end of file