摘要:
在使用AR/MA/ARMA处理序列之前,需要确定可以使用哪种模型。 通常通过判断ACF或PACF的数据拖尾与截尾情况即可做出判断: 1. 自相关系数拖尾,偏相关系数截尾,选择AR模型。 2. 自相关系数截尾,偏相关系数拖尾,选择MA模型。 3. 两个都拖尾,选择ARMA模型。 这里PACF用的是Yu 阅读全文
摘要:
正运动学是已知连杆长度和各连杆旋转角度,求最终(x,y)位置的问题。 逆运动学是已知连杆长度和最终(x,y)位置,求各连杆旋转角度的问题。 二维两关节机械臂可以用下图示意: 根据上图可以得到如下公式: x = L1*cos(theta1) + L2*cos(theta1+theta2) y = L1 阅读全文
摘要:
该方法是自抗扰控制器adrc中的一个步骤,这里单独拿出来实现一下。 算法输入为控制信号,输出为微分信号和跟踪信号,能够滤除控制信号中的噪声。 跟踪微分器核心公式如下: fst函数如下: 其中u为控制量,r和h为系数。 matlab代码如下: clear all;close all;clc; T = 阅读全文
摘要:
1. 首先设定一个模型,可以用tf生成一个状态空间,不过我这里用的是反拉普拉斯变换得到的时域模型。 2. 随机生成一组控制量,然后卷积得到系统响应。 3. 利用待求参数过一下模型得到响应再和原始模型响应做个差值,设定为损失量。 4. 利用Matlab自带的非线性最小二乘函数lsqnonlin求解即可 阅读全文
摘要:
路径平滑方法有很多。 如果有预测量可以使用卡尔曼滤波。 如果只是单纯的离散点也可以用多项式拟合、样条插值、回旋曲线或者均值滤波来平滑。 这里这个算法是Apollo里面的算法,单独拿出来看一下吧。 首先算法是利用最优化的方法来求解的,待优化参数就是所有的离散点(xk,yk),如下图: 设定损失函数为 阅读全文
摘要:
上一篇熟悉了连续系统辨识与响应,这一篇熟悉一下离散系统辨识与响应。 计算机通常处理的系统为离散系统,这里我们先将连续系统转换为离散系统,然后再进行处理。 流程上还是先构造离散系统并根据控制量得到响应,然后用子空间迭代算法(以后会单独实现一次)求出状态空间。 再用识别得到的状态空间和原始控制量生成新的 阅读全文
摘要:
在不知道系统模型的情况下,如果想要使用模型的方法控制系统,可以先用系统辨识求得系统的状态空间参数,然后设计控制器。 下面根据已知状态参数设计了一个系统,再利用控制量得到系统响应。 然后结合控制量和系统响应,利用matlab自带的子空间迭代方法辨识得到系统的状态方程。 再比较一下原始响应和辨识结果响应 阅读全文
摘要:
对于一组数据,通常可以用多项式来拟合,当然对于有周期规律的数据,我们也可以用傅里叶级数来拟合。 傅里叶级数公式形式如下: 当我们确定好n之后,关键就是求出A0、an、bn和w即可。 由于有待求系数在非线性函数cos和sin中,我们用非线性最优化方法来求解。 matlab代码如下: clear all 阅读全文
摘要:
可以参考之前的B样条曲线插值的方法。 要想利用控制点进行B样条曲面插值,前提是控制点不能是类似点云一样的无序点,一定要是分布在UV坐标空间中的栅格点。 方法就是首先对U方向进行B样条曲线插值,然后利用插值的结果再在V方向上进行B样条曲线插值即可。 下面用matlab自带的Peaks函数作为控制点为例 阅读全文
摘要:
方法示意图: 控制率公式: 其中theta是当前航向角与路径航向角之差,e为横向误差,v为车辆速度,lambda为控制参数。 算法步骤如下: 1. 根据当前定位结果找到路径最邻近点。 2. 计算该点与定位结果横向误差e与航线误差theta。 3. 根据控制率公式计算出前轮转角。 4. 将前轮转角转化 阅读全文