insfilterMARG参数调优-卡尔曼滤波器

5视图(30天)
你好,
我想做姿势估计使用的传感器融合 insfilterMARG 过滤器。我有点后的结构 例子 ,我有一个IMU对象来模拟传感器(加速度计、陀螺仪和磁强计)值。我直接使用的GPS信号米中的值(加上一些添加噪声)的轨迹,它来自一个waypointtrajectory(连同取向)。
卡尔曼循环看起来像这样:
ori_est =四元数();
pos_est = 0 (n, 3);
stateIdx = stateinfo(保险丝);
2 = 1:n
fuse.predict (acc (ii):),双向场致发光(ii):));
fuse.fusemag (mag (ii):), Rmag);
正确的(stateIdx保险丝。位置,pos(二世:)、橡胶操作);
[pos_est (ii:), ori_est (ii):)] =姿势(保险丝);
结束
这个过滤器的性能相当好后理想的传感器(没有声音)和手动调整过程噪声值在不同的价值观和评价结果。使用优化函数导致没有成功(即使对于简单模型)到目前为止,所以手动找到的值是唯一的选择。然而当模拟现实环境中噪声的传感器读取,这些过程噪声值变得更加重要,手动,很难找到最优的组合。
因此我尝试使用 调优 函数来找到最优过程噪声值:
sensor_data =表(acc、游客、杂志、pos、南(大小(acc)),“VariableNames”,{加速度计的,“陀螺”,“磁强计”,
“GPSPosition”,“GPSVelocity”});%传感器值,速度不可用
g_truth =表(ori_true pos_true、vel_true repmat (magfieldNED n 1), 0 (n, 3), 0 (n, 3), 0 (n, 3),
“VariableNames”,{“定位”,“位置”,“速度”,“GeomagneticFieldVector”,
“DeltaAngleBias”,“DeltaVelocityBias”,“MagnetometerBias”});%真实值路径轨迹,第一次尝试没有偏见
measurenoise = tunernoise (“insfilterMARG”);
调整(熔断器、measurenoise sensor_data g_truth);
调函数不收敛(我试着添加更多的迭代和改变步骤向前和向后值配置对象。调函数的输出如下:
它结束后方向估计是无法使用,甚至比手动找到接近最优值,这还不够好。
这是预期的行为吗?还是我的理解有任何错误/代码?我可以发布代码的其余部分如果需要。
提前谢谢。

接受的答案

布莱恩Fanous
布莱恩Fanous 2021年8月24日
很难说到底是怎么回事,只有这些代码片段。你能更多吗?
注意调整()函数将不会为你找到初始状态和状态协方差。它将发现测量噪声和处理噪音。但你必须给过滤器一个好的开始初始状态(国有资产)和状态协方差(StateCovariance属性)在调用优化之前()函数。
1评论
父亲Garau Burguera
父亲Garau Burguera 2021年8月25日
谢谢你的回答。
这个问题是初始状态协方差。我有正确的初始状态,但没有过来做任何与协方差。现在我只是尝试不同的值(按比例缩小的眼睛()),结果肯定是改善,但对于更复杂的模型可能还不够。我不确定如何进行状态协方差的初始化或如果有一种方法可以获得更多的猜测(至少在某些值)。例如,如果我们假设初始状态是相当不错(我能找到),那么协方差矩阵将接近0。但是我不知道如何的实际值估计。有什么好方法初始化状态协方差?

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!