此示例显示了如何对齐和预处理记录的传感器数据。这允许融合滤波器按预期执行方向估计。记录数据从加速度计和安装在地面车辆上的陀螺仪收集。
负载记录的惯用测量单元(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轴欧拉角度在陀螺仪读数是阳性的同时降低。这意味着预期记录的方向四元数将被应用为点旋转运算符()。为了使方向四元数匹配方向过滤器,例如imufilter.
,四元素需要作为帧旋转运算符()。这可以通过缀合登录的方向四元数来完成。
图情节(时间,eulerd(东方,'Zyx'那'框架')) 标题('欧拉角')ylabel('\ circ')%程度符号。传奇('z轴'那'y轴'那'x轴')
通过采用时间戳之间的差异来获得对采样率的估计。请注意,时间差异存在一些差异。由于该差异对于该记录数据很小,因此可以使用时间差的平均值。或者,可以使用时间戳和同等间隔的时间戳作为查询点来插值传感器数据。
deltatimes =秒(差异(时间));Samplere = 1 /平均值(倾角);图绘图([deltatimes,repmat(均值(deltatimes),numel(deltatimes),1)])标题('时间差异')ylabel(') 传奇('差异'那'吝啬的')
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文件,您检查了以下方面进行对齐方式:
加速度计和陀螺仪的单位。
加速度计和陀螺仪的轴对齐。
定向四元数旋转运算符(点:或框架:)
可能需要根据记录数据的格式应用不同的单位转换,轴对齐和四元数转换。