数学理论
文章平均质量分 65
gophae
这个作者很懒,什么都没留下…
展开
-
使用QP方法解基于五次多项式形式的cost function minimization问题
我们在这里使用二次规划(QP)的方法解一个五次多项式形式的曲线的cost function minimization的问题。二次规划的标准形式如下:在之前的讨论的五次多项式的方法中,我们在采用空间上依旧有时间T信息,在这里时间T没有办法放进来,因此只适用于求解空间曲线,或者时间国定曲线的问题。标准的无阶多项式及其一阶导数,二阶导数的表达式如下:代价函数cost function中,我们只考虑横向偏移,以及jerk的大小:(当然我们还可以把比如横向速度和加速度考虑进来)那么写成矩阵形式为:对原创 2021-02-07 18:21:01 · 2589 阅读 · 1 评论 -
针对Hybrid A*论文解析(5)中的方法的一些验证
用matlab试了一个论文分析5里面的一些方法,感觉还是有很多问题,并没有像文章说的那么好。curvature梯度方向的优化基本用不上,梯度的下降方向非常大,而且很不稳定,就算限制了梯度下降的步长,效果也不是很好。从开源代码里面也可以看到,curvature部分直接变成了0,说明代码里面也没用curvature这一项的优化。smoothness 方向的优化,只有当原始曲线噪声比较大的时候优化效果还可以,一旦原始曲线也比较平滑,优化效果也会一般。所谓的原始曲线的噪声比较大,如下如:如果对一条平滑曲线进原创 2020-11-14 13:55:18 · 1837 阅读 · 0 评论 -
庞特里亚金最小值原理求解能耗最小化的时间最优OBVP问题
本文依据论文A computationally efficient motion primitive for quadrocopter trajectory generation中所述的方法,整理出其中对OBVP问题的求解方法。所谓的OBVP即为optimal boundary value problem。OBVP是特殊的BVP问题,最简单的BVP问题就是state sampled lattice planning,这其实也是一种lattice planner方法。常见的例子比如:给定初始位置和终点位置,原创 2020-08-10 20:54:38 · 7408 阅读 · 11 评论 -
等式与不等式约束的序列二次规划(SQP)
最后介绍同时有等式约束和不等式约束的SQP解法。这里面的解法比之前的稍微复杂一点,用到了line search method以及BFGS下降。使用line search是为了增加搜索的鲁棒性,确保在任意的初始点都可以最后收敛到局部最优或者全局最优点。使用BFGS的作用是简化hessian的计算量。解如下问题:跟之前一样,这个问题的kkt条件为:依旧是要找到x,lamda, mu的增量,是的下一步的位置能够逼近kkt条件。以上的KKT条件离散化后改写为:这个KKT条件的源问题就是如下的QP问题原创 2020-07-30 18:08:24 · 3513 阅读 · 3 评论 -
不等式约束的序列二次规划(SQP)
讲完等式约束的SQP,接下来就是不等式约束的SQP,其实两者的算法是完全没有区别的,唯一的就是因为引入了不等式约束,再推导上面就会去考虑近似KKT条件,从这个角度进行思考。解当前的问题就是解这个问题的对偶问题,两者在对偶间隙为0的时候取到最优点,取得的最优点满足KKT条件。接下来就是SQP with inequality constraints的推导,解如下的问题:离散化后,我们现在要做的就是在第K步的x_k和mu_k的基础上,找到一个方向,使得x_k+1和mu_k+1能够逼近下面的kkt条件:离原创 2020-07-30 16:31:20 · 4700 阅读 · 1 评论 -
等式约束的序列二次规划(SQP)
我们还是以陆吾生的Practical optimization algorithms and engineering applications第15章作为模板进行整理,讲的是真的清楚,对其中比较简洁的推导部分我手写了一部分方便初学者理解。这一节先介绍只有等式约束的SQP问题的解法。形如下式:根据一阶必要条件,我们知道在取得最优点的时候,拉格朗日函数取得0。假设我们在K步获得的x和lamda接近最优解,那么下一个k+1布需要做的就是找到delta x, delta lamda使得新的x, lamda原创 2020-07-29 10:49:45 · 2844 阅读 · 0 评论 -
ReedShepp与Dubins path的matlab实现
RS和Dubins path网上都有很多解析,想了解深入的直接看原文是最好的:RS 曲线原文我在git上也找到了实现RS曲线的源码,已经放在我自己的仓库里了,有兴趣可以拉源码看看,毕竟dubins用的还真不多,所以没去找:本人git这里用matlab自带的RS and Dubins connection 来展示一下这两种曲线的实现。真正在用的时候没有必要去做源码实现,大概了解清楚原理即可,毕竟无论你用什么语言,py, cpp, m, julia都有这两种曲线的库。直接调用即可。- RS曲线//Co原创 2020-07-07 10:31:22 · 3782 阅读 · 4 评论 -
基于BFS+DFS+CoordinateDescent的motion planning设计思路
作者受论文path planning for on-road autonoumous driving with concetrated iterative search的启发,设计了一个新的基于linear segments的motion planner.方法分为三部分:首先进行深度搜索,获得粗路径,再用广度搜多获得精确路径,再用CD迭代获得平滑路径。本文持续更新:基于BFS的搜索方案clcclear allobs = [4.5, 0.5; 5.5,0.5];point_ini = [0,0]原创 2020-06-24 14:56:05 · 403 阅读 · 0 评论 -
polynomial plot
In this section, we provide a function that supports generate a quintic polynomial.xs = 3;vxs = 0.3;axs = 0;xe = 0;vxe = 0;axe = 0;T = 8;[a0, a1, a2, a3, a4,a5] = quintic_polynomial(xs, vxs, axs, xe, vxe, axe,T);figurefor t = 0:0.1:T d = a0原创 2020-05-19 14:04:24 · 367 阅读 · 0 评论 -
半正定问题与二阶凸锥问题(SDP&SOCP)
原创 2020-03-15 13:00:15 · 1952 阅读 · 0 评论 -
二次规划问题转换为半正定问题(QPtoSDP)
原创 2020-03-14 14:13:08 · 1533 阅读 · 0 评论 -
对于原始轨迹的噪声过滤方法和曲率计算方法
对于地图采样获得的轨迹,通过cross entropy的方式,进行噪声过滤。曲率计算采用三点式计算圆半径获得。clcclear allload('D:\ccs\test.mat')% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%use your own recorded map info%%%...原创 2020-03-04 20:41:56 · 2084 阅读 · 0 评论 -
PID参数整定法(2)
介绍三种PID工程整定法:原创 2020-02-28 12:53:15 · 813 阅读 · 0 评论 -
Matlab解析LQR与MPC的关系
mathworks社区中的这个资料还是值得一说的。openExample('mpc/mpccustomqp')我们从几个角度来解析两者关系,简单的说就是MPC是带了约束的LQR.下面我们从代码的角度解析这个问题:1, 定义被控系统:A = [1.1 2; 0 0.95];B = [0; 0.0787];C = [-1 1];D = 0;Ts = 1;sys = ss(A,B,...原创 2020-02-27 22:49:05 · 7830 阅读 · 3 评论 -
LQR轨迹跟踪算法Python/Matlab算法实现_LQRmatrix推导(2)
本文提供了另一种LQR状态空间矩阵的推导方式:原创 2020-02-27 16:14:33 · 3144 阅读 · 0 评论 -
离散点曲率拟合
有噪声的离散点,计算曲率。首先用滤波法降噪,然后用三点法计算半径clcclear allload('D:\ccs\DaischTest\TraceC10.mat') spacelimit = 1; start =2; finish =1;x= PosLat(start : spacelimit:length(PosLat)-finish);y = PosLon(star...原创 2020-02-13 15:41:39 · 2489 阅读 · 1 评论 -
曲率多项式转换为直角坐标系
对于形如 k(s) = a + bs + cs2+ds3的曲率多项式,我们将它转换为直角坐标系表示的多项式。推导如图:在每一步delta_s上面进行积分就可以获得直角坐标系下的曲线。举个例子,我们已经获得了关于s的曲率表达式,如图:在横轴上对s进行微分,并对每一步在直角坐标系下做积分即可获得直角坐标系下的曲线关于s的表达式:如图测试使用的代码如下:clcclear all...原创 2020-01-09 15:26:26 · 1179 阅读 · 1 评论 -
Python中的全局变量与局部变量2
from route_design1217 import *from math import *import pandas as pdimport numpy as npimport matplotlib.pyplot as pltv_front = 0d = 12def frenet_to_global(current_x, current_y, heading, theta, ...原创 2020-01-09 12:14:31 · 206 阅读 · 0 评论 -
Python中的全局变量与局部变量
from math import *from numpy import *# 嵌套函数,fun2 中有 fun3def fun2(): num2 = 3 def fun3(): nonlocal num2 num2 *= 2 print("num2=", num2) return fun3()fun2()#...原创 2020-01-09 00:13:56 · 266 阅读 · 0 评论 -
Matlab中的continue、break和return语句
Continue:经常用在for和while语句中,continue一旦被执行,就会终止当前循环,进行下一次循环。eg, 在for 循环中:clcclear allclose alli = 1;COND = 1;for i = 1:20 if mod(i,2)==0 continue else fprintf('the arr...原创 2020-01-06 16:54:01 · 71026 阅读 · 4 评论 -
自动驾驶中的滞后碰撞检测(lazy-collision-checking)
本文我介绍一下我发明的在自动驾驶中使用的滞后碰撞检测法。滞后碰撞检测的基本原理可以参考我的论文:Dynamic Motion Planning Framework for Autonomous Driving in Urban Environments核心思想就是把碰撞检测脱离开来,不再放在cost function里面,通常来说,很多人都会将碰撞检测作为cost function 中的一项,...原创 2019-12-31 16:57:37 · 2199 阅读 · 4 评论 -
自动驾驶路径轨迹规划(三阶曲线spline)
对于给定的一连串waypoints我们需要对其进行平滑线处理,这里介绍一种三阶spline的平滑方法:call function:clcclear all% x = [-4 -2 0 2 4 6 10];% y = [1.2 0.6 0 1.5 3.8 5 3];x = [0,10,50,100,120];y = [0,50,100,150,200]; figure...原创 2019-11-20 13:38:28 · 3658 阅读 · 5 评论 -
全局路径规划:图搜索算法介绍2(A star)
接下来要介绍的是基于贪心算法的图搜索算法Dja, 和 A*什么是贪心算法?意思就是我们总是向离终点最近的搜索方向去搜索:Dja 算法的原理就是通过对搜索点构造cost function, 搜索方向总是朝向cost function 最低的方向。而这个cost function 直接就是从起点到当前点的代价总和:举个简单的例子:如图,起点是S, 从S 往后拓展,有 dep三个点,代价...原创 2019-11-14 09:55:25 · 2108 阅读 · 0 评论 -
全局路径规划:图搜索算法介绍1(BFS/DFS)
对于全局路径规划的设计,我们先要了解什么是图搜索,在此之前,要先知道什么是图:可以看到,图有很多种,有无向图,有向图,节点之间还可以有不同的weight, 用于表述从节点与节点直接迁移的代价。而图搜索算法则是把我们的搜索对象抽象成state space gragh 来处理。基本的理论无外乎用树的理论对图进行搜索,当找到终点后在回溯这一分支,最后获得从起点到终点的路径,而可以优化的地方就是...原创 2019-11-14 09:36:41 · 4865 阅读 · 2 评论 -
三次样条曲线拟合及Matlab/Python实现
对于形如y = a + bx + c * x^2 + d * x^3 的三次spline曲线拟合的数学原理,我就不多说了。我接了一个图给大家看看:数值计算的伪代码如下:书名是:numerical_methods_for_engineers_for_engineers_chapra_canale_6th_editionspline interpolation 在18.6章,想了解如...原创 2019-10-29 20:45:05 · 13848 阅读 · 9 评论 -
非线性回归的数学理论与方法(非线性最小二乘法)
本文介绍如何进行一般的非线性回归非线性回归的原理和线性回归是一样的:虽然有些非线性问题可以通过取对数或其他操作转化为线性问题,但是比如我们遇到了一个一一般性的非线性回归问题:我们就没办法很好的进行线性化,但是还是可以通过非线性回归的一般方法进行求解:首先做泰勒级数展开:这里,j是最初的猜想,initial guess, j+1是预测,delta_a = = a_j+1 - a_j, ...原创 2019-10-12 13:06:15 · 3734 阅读 · 2 评论 -
离散点求导的数学理论与方法
本文介绍如何对离散点进行求导。对于一个点的值(函数上)我们可以通过泰勒级数展开,对其进行近似:解出来一阶导数:主要,我们就是靠这个式子来计算多阶的导数,如果把二阶以后的项去掉,那么一阶导数就是:二阶导数就是:为了提高精度,我们可以留下更多的项数:比如留下二阶项:简化后:、总结一下:向前微分公式:(forward)向后微分公式:(backward)中间微分:(ce...原创 2019-10-12 12:49:58 · 28508 阅读 · 11 评论