iπ弟弟
野生程序喵,阿里云弹性计算后端开发工程师。
Github: https://github.com/ZYunfeii
展开
-
高斯伪谱C++封装库开源!
这个库在你下载它的那一时刻起不再依赖任何其他代码,直接可用来构建C++的最优控制问题并进行求解。我还写了一个visual studio使用该库的demo项目,供学习。原创 2024-02-07 16:20:43 · 1814 阅读 · 0 评论 -
轨迹跟踪算法:L1非线性跟踪算法演示(附matlab simple demo)
概览L1算法的核心公式只有一个:ascmd=2V2L1sinηa_{s_{\mathrm{cmd}}}=2 \frac{V^{2}}{L_{1}} \sin \etaascmd=2L1V2sinη其中符号解释如下图:一句话解释:L1跟踪算法解出了一个横向加速度作用于对象,输入为对象当前的速度矢量、与对象相距L1的待跟踪轨迹上的参考点。至于η\etaη是根据参考点位置和对象位置以及对象速度矢量来计算的。用L1来做跟踪的关键是如何求取待跟踪轨迹上的一点,该点到对象的位置距离恰好为L1。L1原创 2021-10-05 16:32:00 · 2881 阅读 · 2 评论 -
一个深度强化学习航路规划(路径规划)github项目
地址:https://github.com/ZYunfeii/UAV_Obstacle_Avoiding_DRLREADMEThis is a project about deep reinforcement learning autonomous obstacle avoidance algorithm for UAV. The whole project includes obstacle avoidance in static environment and obstacle avoidance原创 2021-06-14 19:38:53 · 13933 阅读 · 26 评论 -
Dynamic A*(D*) 路径规划算法C++高效实现(开源,OOP)
为何用C++?网上基本都是py或者matlab,C++较少。路径规划算法一般需要落地,C++是沟通硬件的语言,py或matlab不太直接。C++实现算法更考验编程。高效,C++速度更快。何谓D*搜索算法D*也称为动态A*算法,顾名思义,在应对动态环境下D*更高效。为什么?因为它不会replan,也就是不会重规划,而是局部重规划,降低了运算量。关于D*算法的讲解下面几篇blog讲得不错:https://blog.csdn.net/lqzdreamer/article/details/850原创 2021-04-25 20:36:21 · 5967 阅读 · 8 评论 -
改良IFDS扰动流场三维避障规划算法实现
参考文献[1]. Wu J , Wang H , Li N , et al. Formation Obstacle Avoidance: A Fluid-Based Solution[J]. IEEE Systems Journal, 2019, PP(99):1-12.基础算法移步此博客:IFDSImproved IFDS(IIFDS)不同之处:扰动矩阵的合成变化了,从连乘变为连加:M‾(P)=∏w=1WMω(P)→M‾=∑k=1KωkMk\overline{\boldsymbol{M}}原创 2021-03-08 21:23:31 · 2379 阅读 · 3 评论 -
分享轨迹平滑算法之滑动平均平滑(Moving Average, MA)MATLAB代码
应用用于一维、二维、三维轨迹平滑(对需要平滑的轴使用该函数即可)公式以5点MA平滑为例:ys(i)=12N+1(y(i+N)+y(i+N−1)+…+y(i−N))ys(1)=y(1)ys(2)=(y(1)+y(2)+y(3))/3ys(3)=(y(1)+y(2)+y(3)+y(4)+y(5))/5ys(4)=(y(2)+y(3)+y(4)+y(5)+y(6))/5\begin{array}{l}y_{s}(i)=\frac{1}{2 N+1}(y(i+N)+y(i+N-1)+\ldots+y(i-原创 2021-02-27 16:18:08 · 6162 阅读 · 14 评论 -
流体扰动原理的动、静态避障三维轨迹规划算法实现
思想在一条河边仔细观察会发现水流流过河中凸起的石头时会从石头旁边平滑地流过,这是流场的作用。受此启发,将这一思想拓展到UAV或者是任何背景的三维或者是二维轨迹规划问题,即可得到本文所讲述的流体扰动原理规划算法。这一算法实际上属于人工势场算法的一种变形,在没有障碍物的前提下,三维空间中存在一个初始的流场,这个流场指向目标点,使轨迹向目标点汇流。当空间中存在障碍物时,障碍物产生一个扰动流场,扰动流场与初始流场同时作用形成合成流场,合成流场的流线即为规划轨迹。可以将扰动流场算法中的初始流场看做人工势场算法中的原创 2021-02-24 14:17:11 · 3362 阅读 · 13 评论 -
蚁群算法实现三维避障轨迹规划(Matlab)
关于蚁群算法其实大多数优化算法都是“试错”的过程,不同的是如何利用在“试错”过程中得到的经验。蚁群算法在“试错”的过程中通过留下信息素对未来的试错过程加以提示,从而保证一定的收敛性。代码分析我写了一份matlab蚁群算法三维避障规划的代码,能保证收敛,但不够优秀,可以作为基础加以改进。无论是GA、SA、PSO、还是本文讲到的蚁群,应用在三维轨迹规划中都存在一个问题:如何将轨迹表述成一个解以及如何生成一个从起始点到终点的解。在我的A*算法三维规划博客中通过分解空间成类似点云的形式来表述解。而在蚁群算法原创 2021-02-08 15:25:47 · 9334 阅读 · 35 评论 -
A*搜索算法在三维路径规划(避障)中的MATLAB实现与Python实现
A star algorithmA*搜索算法简介A*搜索算法的Python简化代码MATLAB实现启发函数回溯轨迹RRT算法对比A\*算法在三维路径规划中的一些不足A*搜索算法简介A*搜索算法是Greedy Best-First算法的改进,因为Greedy Best-First算法只考虑将预估距离(当前节点到目标点的预估距离)作为遴选开节点集的条件。即:priority=heuristic(goal,next)priority=heuristic(goal, next)priority=heurist原创 2021-01-29 19:50:48 · 21260 阅读 · 86 评论 -
强化学习Q-Learning在二维轨迹规划应用(MATLAB)
博客推荐Q-Learning二维避障轨迹规划目前我写的代码不够成熟,就不贴了。Agent的reward机制如下:走出图像reward为一个较大负数,撞上障碍也为一个较大负数,若不是前两者,则reward为当前点位与目标点位距离的反比函数(越近奖赏越大)。state状态的划分是根据像素区域来的,等同于把图像分割成了若干像素块,这样可以减小state的数量,否则训练困难。Action根据移动方向的角度来分,比如10°划分的话一个state就有36个actions,这样Q表就是states×actions原创 2020-11-26 21:59:59 · 4421 阅读 · 4 评论 -
APF人工势场轨迹规划
实现原博客网址APF实现版本为APF的改进版,见上文文末(引力和斥力均进行改进)。实现效果注意事项引力因子和斥力因子是关键参数,另外APF及其容易陷入局部最优,引入正态微小扰动可以解决这个问题,但是会出现轨迹不够平滑的现象。...原创 2020-11-27 21:59:22 · 2716 阅读 · 5 评论 -
RRT算法在三维轨迹规划中的MATLAB仿真
RRT二维轨迹规划关于RRT二维轨迹规划以及matlab实现参考博客:RRTRRT算法简单思路分析生成根节点,并给出终止节点。随机在空间中找到一点rrr(50%随机点,50%为目标点),判断rrr与轨迹树中哪一个节点的欧氏距离最小,记该节点为nodebestnode_{best}nodebest。从nodebest向node_{best}向nodebest向rrr延伸步长stepSizestepSizestepSize个单位(用向量实现)。判断线段nodebest−>rnode_{原创 2020-11-25 12:07:18 · 9998 阅读 · 70 评论