主要内容

记录传感器数据对齐以进行方向估计

此示例显示了如何对齐和预处理记录的传感器数据。这允许融合滤波器按预期执行方向估计。记录数据从加速度计和安装在地面车辆上的陀螺仪收集。

加载记录的传感器数据

负载记录的惯用测量单元(IMU)数据并提取单个传感器数据和时间戳。

加载('imudata''imut')时间= imutt.time;Accel = imutt.linearacceleration;gyro = imutt.angularvelocity;东方= imutt.Oorientation;

检查陀螺数据

从角速度读数的范围内,记录的陀螺数据是每秒弧度而不是每秒度数。此外,较大的Z轴值和小的X和Y轴值表示设备仅围绕Z轴旋转。

图绘图(时间,陀螺仪)标题('陀螺仪')ylabel('rad / s') 传奇('x轴''y轴''z轴'

检查加速度计数据

由于加速度计的Z轴读数约为10,因此记录数据为每秒平方米而不是G。

图绘图(时间,Accel)标题('加速度计')ylabel('m / s ^ 2') 传奇('x轴''y轴''z轴'

检查方向数据

将记录的方向四元数数据转换为以度的欧拉角度。Z轴正在发生变化,而X和Y轴相对固定。这与陀螺仪和加速度计读数相匹配。因此,不需要熄灭或旋转的轴。然而,Z轴欧拉角度在陀螺仪读数是阳性的同时降低。这意味着预期记录的方向四元数将被应用为点旋转运算符($ v'= qvq ^ {*} $)。为了使方向四元数匹配方向过滤器,例如imufilter.,四元素需要作为帧旋转运算符($ v'= q ^ {*} vq $)。这可以通过缀合登录的方向四元数来完成。

图情节(时间,eulerd(东方,'Zyx''框架')) 标题('欧拉角')ylabel('\ circ'%程度符号。传奇('z轴''y轴''x轴'

找到记录数据的采样率

通过采用时间戳之间的差异来获得对采样率的估计。请注意,时间差异存在一些差异。由于该差异对于该记录数据很小,因此可以使用时间差的平均值。或者,可以使用时间戳和同等间隔的时间戳作为查询点来插值传感器数据。

deltatimes =秒(差异(时间));Samplere = 1 /平均值(倾角);图绘图([deltatimes,repmat(均值(deltatimes),numel(deltatimes),1)])标题('时间差异')ylabel(') 传奇('差异''吝啬的'

将转换的Logged四元数与imufilter.四元素

将记录的方向四元数共轭,然后将其与估计的取向四元数进行比较imufilter.。从下图中,Z轴欧拉角估计仍然存在恒定的偏移。这是因为imufilter.假设设备的初始方向与导航帧对齐。

Loggedorient =连结(东方);filt = imufilter('采样率', 采样率);estorient = filt(Accel,Gyro);图形子图(2,1,1)图(时间,eulerd(Loggedorient,'Zyx''框架'),' - ') 标题('legged euler角度')ylabel('\ circ'%程度符号。传奇('z轴''y轴''x轴')子图(2,1,2)图(时间,eulerd(estorient,'Zyx''框架')) 标题('| imufilter |欧拉角')ylabel('\ circ'%程度符号。传奇('z轴''y轴''x轴'

对齐登录的方向和imufilter.方向

对齐imufilter.通过使用第一个登录的方向四元数应用恒定偏差来取向四元数。对于四元数,可以通过预先乘以帧旋转或后乘以点旋转来应用恒定的旋转偏压。自从imufilter.将四元数报告为帧旋转运算符,估计的方向四元数由第一个登录的方向四元数预乘以。

alplipdestorient = loggedorient(1)。* estorient;图形子图(2,1,1)图(时间,eulerd(Loggedorient,'Zyx''框架'),' - ') 标题('legged euler角度')ylabel('\ circ'%程度符号。传奇('z轴''y轴''x轴')子图(2,1,2)绘图(时间,eulerd(alumenteStorient,'Zyx''框架')) 标题('对齐| imufilter |欧拉角')ylabel('\ circ'%程度符号。传奇('z轴''y轴''x轴'

结论

对于此示例中的MAT文件,您检查了以下方面进行对齐方式:

  • 加速度计和陀螺仪的单位。

  • 加速度计和陀螺仪的轴对齐。

  • 定向四元数旋转运算符(点:$ v'= qvq ^ {*} $或框架:$ v'= q ^ {*} vq $

可能需要根据记录数据的格式应用不同的单位转换,轴对齐和四元数转换。