主要内容

从角速度测量中去除偏差

这个例子展示了如何使用imufilter

使用kinematicTrajectory用两部分来创建一个轨迹。第一部分有一个恒定的角速度y- - -z相互重合。第二部分在所有三个轴上都有一个变化的角速度。

时间= 60 * 8;fs = 20;numSamples = duration * fs;rng (“默认”种子RNG,以重现噪声传感器的测量结果。initialAngVel =(0、0.5、0.25);finalAngVel = (-0.2, 0.6, 0.5);constantAngVel = repmat (initialAngVel,地板(numSamples / 2), 1);varyingAngVel = [linspace(initialAngVel(1), finalAngVel(1), ceil(numSamples/2)).',...finalAngVel linspace (initialAngVel(2),(2),装天花板(numSamples / 2)。”...linspace (initialAngVel (3) finalAngVel(3),装天花板(numSamples / 2)。');angVelBody = [constantAngVel;varyingAngVel];accBody = 0 (numSamples, 3);traj = kinematicTrajectory (“SampleRate”fs);[qn, ~ ~, accNED angVelNED] = traj (accBody angVelBody);

创建一个imuSensor系统对象™,IMU,使用非理想陀螺仪。调用IMU地面加速度,角速度和方向。

IMU = imuSensor (“accel-gyro”...“陀螺”gyroparams (“随机散步”, 0.003,“ConstantBias”0.3),...“SampleRate”fs);[accel读数,gyroReadingsBody] = IMU(accNED,angVelNED,qNED); / /

创建一个imufilter系统对象,保险丝.调用保险丝通过模拟的加速度计读数和陀螺仪读数。

保险丝= imufilter (“SampleRate”fs,“GyroscopeDriftNoise”1 e-6);[~, angVelBodyRecovered] =保险丝(accelReadings gyroReadingsBody);

绘制地面真实角速度、陀螺仪读数和每个轴的恢复角速度。

返回的角速度imufilter补偿陀螺仪偏差随时间的影响,并收敛到真实的角速度。

时间= (0:numSamples-1) / fs;图(1)图(时间,angVelBody (: 1),...时间,gyroReadingsBody (: 1),...时间,angVelBodyRecovered(: 1)标题(“轴”)传说(“真正的角速度”...“陀螺仪数据”...“恢复角速度”) ylabel (“角速度(rad / s)”

Figure包含一个轴对象。标题为x轴的axis对象包含3个类型为line的对象。这些物体代表真实的角速度,陀螺仪读数,恢复的角速度。

图(2)图(时间,angVelBody (:, 2),...时间,gyroReadingsBody (:, 2),...时间,angVelBodyRecovered(: 2)标题(“轴”) ylabel (“角速度(rad / s)”

Figure包含一个轴对象。标题为y轴的axis对象包含3个类型为line的对象。

图(3)图(时间,angVelBody (:, 3),...时间,gyroReadingsBody (:, 3),...时间,angVelBodyRecovered(: 3)标题(z轴的) ylabel (“角速度(rad / s)”)包含(“时间(s)”

Figure包含一个轴对象。标题为z轴的坐标轴对象包含3个类型为line的对象。