写在前面 这篇文章是rrt算法系列的最后一篇文章啦,那么下面一个系列呢,我计划做c++相关语法的学习博客。 为什么要做这么一个c++系列的文章呢?因为做自动驾驶的路径规划的话,实现是必不可少的,那么为了保证算法实现的时间不会太长,高效率的c++肯定是一个不错的选项。 rrt算法效果 file:rrt.cpp brief:rrt算法实现的主体 author:AIplusX param:成员变量 r
file: rrt.h brief:这个rrt.h文件是rrt算法实现类的声明 author:AIplusX version:beta_v0.0 date:2021_12_02 update:2021_12_02 warning:记得在类的析构函数里面delete掉堆内申请的内存 remarks:因为在做这个类的时候没有考虑虚函数的问题,所以析构函数没有做成virtual的,所以在做子类的时候要
file: rrt_graph.h brief:这个rrt_graph.h文件是为了绘制rrt的地图,主要内容是包括任意障碍物的绘制方法的功能实现 author:AIplusX version:beta_v0.0 date:2021_12_01 update:2021_12_01 warning:记得在类的析构函数里面delete掉堆内申请的内存 remarks:无 todo:可以做为之后rrt
写在前面 为了保证rrt算法能在各种障碍物的情况下运行,因为做的是在非结构化的环境下路径规划,而且还是静态规划,因此要尽可能保证基本的rrt算法实现没有问题。 算法实现结果 黑色:障碍物(可由鼠标绘制);绿色线段:探索路径;绿色方块:终点红色方块:起点棕色线段:最终路径点划线:路径探索下边界绿色圆点:代表算法开始运行 障碍物绘制 首先看一下任意障碍物绘制的效果以及算法效果: 要查看不同障碍
写在前面 这篇文章分享的主要是交互界面的实现,因为我是基于C++实现的,所以可视化界面需要第三方库,我选择的是easyX,然后这篇文章主要介绍atan2()的坐标转换测试的可视化以及rrt探索枝干的可视化。 程序效果 黑色:障碍物(可由鼠标绘制);绿色线段:探索路径;绿色方块:终点红色方块:起点棕色线段:最终路径点划线:路径探索下边界绿色圆点:代表算法开始运行 程序介绍 atan2()测试 首先
写在前面 这篇文章主要介绍C++基于vector实现 效果展示: 黑色:障碍物(可由鼠标绘制);绿色线段:探索路径;绿色方块:终点红色方块:起点棕色线段:最终路径点划线:路径探索下边界绿色圆点:代表算法开始运行 实现 因为C++语言的特性以及方便实现,算法实现可能与伪代码有些许区别,但是总体逻辑上是一样的。 首先是rrt算法的主体程序了: void RRT::rrt_algorithm() {
写在前面 这个系列的文章将会分享rrt算法的实现结果以及伪代码思路。rrt算法是基于采样的路径规划算法,与A*算法的基于搜索是不同的。 算法实现过程中遇到了一些困难,类似距离计算公式写错等低级错误,也有路径探索方向写错等算法理解错误,这些我都将在后续文章中提出。 为了算法的运行,我还写了一些调试函数,包括atan2()使用的使用可视化,这些我也会在后续文章中进行展示。 结果展示 黑色:障碍物(可
file: Graph.h brief:这个Graph类是用来画格子地图的,这个类可以生成地图起点终点和障碍物坐标 author:AIplusX version:beta_v0.0 date:2021_11_17 update:2021_11_17 warning:记得在类的析构函数里面delete掉堆内申请的内存 remarks:用户参数结构体里的map地图数组
file:A_star.cpp brief:基于父节点搜索邻域格点 author:AIplusX param[in|out] 输入:父节点内存的地址 | 输出:无 return:无 exception:无 note:首先根据数组索引父节点周围的格点,然后根据算法逻辑进行格点属性(G,F值)的更新 remarks:注意堆中内存的利用,如果申请的内存代表的坐标已经有
file: A_star.h brief:A_star类用法的注意事项 author:AIplusX version:beta_v0.0 date:2021_11_15 update:2021_11_15 warning:offset_x和offset_y数组的大小有2种形式,大小分别是4和8,分别对应宏定义的曼哈顿距离和欧几里得距离,因为曼哈顿距离只走4个格子,而欧
结果展示 这里对于图形化界面进行一个简单的介绍: 绿色:已搜索(待遍历)节点;浅灰色:搜索过程中的最小F数值点;红色:起点;绿色:终点;黄色:最终的生成路径;黑色:障碍物(不可走坐标); A_star类 源码如下所示: class A_star { public: A_star() {}; ~A_star(); void Astar_alg
写在前面 障碍物在算法环境中是不可缺少的,可以看成是算法的约束条件。那么如何生成不重复的随机障碍点呢?接下来我就主要介绍这个办法,以及如何利用C++将坐标点数据在不同功能函数之间高效率传递。 结果展示 绿色:已搜索(待遍历)节点;浅灰色:搜索过程中的最小F数值点;红色:起点;绿色:终点;黄色:最终的生成路径;黑色:障碍物(不可走坐标); 随机障碍物 我的思路是将地图上所有的坐标点都塞进一个vec
写在前面 A*算法之所以有可变性与其启发函数有密不可分的关系,启发函数可以决定算法在搜索的时候的搜索方式,那么今天就来比较一下不同启发函数(搜索方式)对于算法表现的影响。 绿色:待搜索节点;浅灰色:搜索过程中的最小Fn数值点;红色:起点;绿色:终点;黄色:最终的生成路径;黑色:障碍物(不可走坐标); 下面在做算法演示的时候我还是保留了一个障碍物,也是为了保证算法运行的完整性。 对比 首先以曼哈顿距
写在前面 哈哈哈,好久没更新啦,最近事情很多,所以这个A*算法的实现项目就拖了很久了。然后这两天我在停更的时候也想了很多关于之后博客的内容形式,我想以专栏的形式进行博客更新,每个项目都是一个独立的专栏,这样不但方便事后回溯,而且也方便总结。 关于专栏内容我也有了新的想法,因为我这两天也看了很多我之前写的代码,发现根本看不懂了,所以我就想着从现在开始给我的代码都写技术文档,然后附在相应算法介绍的后面
包括A*和RRT等传统路径规划算法的实现以及讲解
博客
泡泡
积分
勋章
[rrt_algorithm07]技术文档_rrt
[rrt_algorithm06]技术文档_rrt
[rrt_algorithm05]技术文档_rrtGraph
[rrt_algorithm04]基于easyX的任意障碍物绘制
[rrt_algorithm03]基于easyX的交互界面实现
[rrt_algorithm02]rrt算法实现
[rrt_algorithm01]rrt算法以及伪代码
[Astar_algorithm07]技术文档_Graph
[Astar_algorithm06]技术文档_A_star
[Astar_algorithm05]技术文档_A_star
[Astar_algorithm04]A_star类与Astar_algorithm等函数
[Astar_algorithm03]随机障碍点生成以及坐标点传递方法
[Astar_algorithm02]启发函数的比较
[Astar_algorithm01]A*算法伪代码以及思路
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信