news 2026/6/14 14:34:33

085、路径规划:Dijkstra与RRT算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
085、路径规划:Dijkstra与RRT算法

飞控算法从入门到精通 | 085、路径规划:Dijkstra与RRT算法

去年在做一个物流无人机项目,客户要求飞机在仓库内自主飞行到指定货架取货。仓库里堆满了货架,通道狭窄,还有几根立柱。我一开始想当然地用了A算法做全局路径规划,结果在仿真里跑得挺好,一上真机就出问题——飞机在某个拐角处反复横跳,最后撞上了货架边缘。后来排查发现,A生成的路径虽然最短,但路径点过于密集,导致控制器的跟踪误差累积,在狭窄通道里直接跑偏。

那次之后我认真对比了Dijkstra和RRT两种算法,发现它们在实际飞控场景下的适用性差异非常大。今天这篇笔记,就把这两种算法的工程实现细节和踩过的坑写清楚。

Dijkstra:别被“最短路径”骗了

Dijkstra算法本质上是广度优先搜索的加权版本。它维护一个开放列表,每次从列表中取出代价最小的节点进行扩展,直到到达目标点。这个逻辑在理论课上讲得很清楚,但真写到飞控代码里,有几个地方特别容易翻车。

第一个坑是栅格地图的代价设计。很多人直接把栅格距离当作边权,比如相邻栅格代价设为1,对角栅格代价设为1.414。这在平坦地面上没问题,但如果你在三维空间里做路径规划,或者要考虑障碍物距离的安全裕度,这种简单赋值就会出问题。我习惯的做法是:对每个栅格,根据其到最近障碍物的距离,动态调整通过该栅格的代价。比如距离障碍物小于两个机身半径的栅格,代价乘以一个惩罚系数。这个系数不能太大,否则算法会绕远路;也不能太小,否则路径贴着障碍物走,飞控稍微有点偏差就撞上。我一般取1.5到2.0之间,具体值要看飞机的定位精度。

第二个坑是开放列表的数据结

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 16:46:31

到底为什么PHP要有路由?

它的本质是:**路由是 Web 应用的 “交通指挥中心” (Traffic Control Center)。 核心矛盾:HTTP 请求是一个原始的字符串(如 GET /users/123)。PHP 脚本本身不知道这个 URL 对应哪个类、哪个方法、哪些参数。路由的作用&#xff1a…

作者头像 李华
网站建设 2026/6/7 16:11:11

OpenMMD常见问题解决:新手必知的10个调试技巧

OpenMMD常见问题解决:新手必知的10个调试技巧 【免费下载链接】OpenMMD OpenMMD is an OpenPose-based application that can convert real-person videos to the motion files (.vmd) which directly implement the 3D model (e.g. Miku, Anmicius) animated movie…

作者头像 李华
网站建设 2026/6/12 5:11:19

Python基础:字符串常用方法之大小写与判断

Python基础:字符串常用方法之大小写与判断一、开篇:大小写比你想象的更重要 在Python字符串处理的最后这篇文章中,我们要搞定两组方法:大小写转换和字符类型判断。它们看似简单,但在实际开发中有大量应用场景。 ⌨️ 无…

作者头像 李华