Сгенерируйте нецентрированные показания БИНС

Этот пример показывает, как сгенерировать показания инерциального измерительного блока (IMU) от датчика, который установлен на наземном транспортном средстве. В зависимости от местоположения датчика, ускорения БИНС различны.

Создайте Траекторию

Укажите траекторию путевой точки транспортного средства и вычислите положения транспортного средства с помощью lookupPose.

% Sampling rate.
Fs = 100;

% Waypoints and times of arrival.
waypoints = [1 1 1; 3 1 1; 3 0 0; 0 0 0];
t = [1; 10; 20; 30];

% Create trajectory and compute pose.
traj = waypointTrajectory(waypoints, t, "SampleRate", Fs);
[posVeh, orientVeh, velVeh, accVeh, angvelVeh] = lookupPose(traj, ...
    t(1):1/Fs:t(end));

Создайте датчик и задайте смещение

Создайте две 9-осевые imuSensor объекты, состоящие из датчиков акселерометра, гироскопа и магнитометра. Один imuSensor объект формирует показания БИНС, установленного в источник средства, а другой генерирует показания БИНС, установленного на сиденье драйвера. Затем укажите смещение между источником транспортного средства и БИНС, установленным на сиденье драйвера. Функции helperPlotIMU визуализация местоположения датчиков.

% IMU at vehicle origin.
imu = imuSensor("accel-gyro-mag", "SampleRate", Fs);

% IMU at driver's seat.
mountedIMU = imuSensor("accel-gyro-mag", "SampleRate", Fs);

% Position and orientation offset of the vehicle and the mounted IMU.
posVeh2IMU = [2.4 0.5 0.4];
orientVeh2IMU = quaternion([0 0 90], "eulerd", "ZYX", "frame");

% Visualization.
helperPlotIMU(posVeh(1,:), orientVeh(1,:), posVeh2IMU, orientVeh2IMU);

Figure contains an axes. The axes contains 2 objects of type line, patch.

Вычислите траекторию БИНС, используя траекторию транспортного средства

Вычислите траекторию основной истины БИНС, установленного на сиденье драйвера, используя transformMotion функция. Эта функция использует смещения положения и ориентации и траекторию транспортного средства, чтобы вычислить траекторию IMU.

[posIMU, orientIMU, velIMU, accIMU, angvelIMU] = transformMotion( ...
    posVeh2IMU, orientVeh2IMU, ...
    posVeh, orientVeh, velVeh, accVeh, angvelVeh);

Сгенерируйте показания датчика

Сгенерировать показания БИНС как для БИНС, установленного в начале транспортного средства, так и для БИНС, установленного на сиденье драйвера.

% IMU at vehicle origin.
[accel, gyro, mag] = imu(accVeh, angvelVeh, orientVeh);

% IMU at driver's seat.
[accelMounted, gyroMounted, magMounted] = mountedIMU( ...
    accIMU, angvelIMU, orientIMU);

Сравнение показаний акселерометра

Сравните показания акселерометра двух БИНС. Заметьте, что ускорение по оси X отличается из-за расположения вне центра.

figure('Name', 'Accelerometer Comparison')
subplot(3, 1, 1)
plot([accel(:,1), accelMounted(:,1)])
legend('Aligned with Vehicle', 'Off-centered')
title('Accelerometer')
ylabel('x-axis (m/s^2)')
subplot(3, 1, 2)
plot([accel(:,2), accelMounted(:,2)])
ylabel('y-axis (m/s^2)')
subplot(3, 1, 3)
plot([accel(:,3), accelMounted(:,3)])
ylabel('z-axis (m/s^2)')

Figure Accelerometer Comparison contains 3 axes. Axes 1 with title Accelerometer contains 2 objects of type line. These objects represent Aligned with Vehicle, Off-centered. Axes 2 contains 2 objects of type line. Axes 3 contains 2 objects of type line.

Сравнение показаний гироскопа

Сравните показания гироскопа двух БИНС.

figure('Name', 'Gyroscope Comparison')
subplot(3, 1, 1)
plot([gyro(:,1), gyroMounted(:,1)])
ylim([-0.22 0.1])
legend('Aligned with Vehicle', 'Off-centered')
title('Gyroscope')
ylabel('x-axis (rad/s)')
subplot(3, 1, 2)
plot([gyro(:,2), gyroMounted(:,2)])
ylabel('y-axis (rad/s)')
subplot(3, 1, 3)
plot([gyro(:,3), gyroMounted(:,3)])
ylabel('z-axis (rad/s)')

Figure Gyroscope Comparison contains 3 axes. Axes 1 with title Gyroscope contains 2 objects of type line. These objects represent Aligned with Vehicle, Off-centered. Axes 2 contains 2 objects of type line. Axes 3 contains 2 objects of type line.

Сравнение показаний магнитометра

Сравните показания магнитометра двух БИНС.

figure('Name', 'Magnetometer Comparison')
subplot(3, 1, 1)
plot([mag(:,1), magMounted(:,1)])
legend('Aligned with Vehicle', 'Off-centered')
title('Magnetometer')
ylabel('x-axis (\muT)')
subplot(3, 1, 2)
plot([mag(:,2), magMounted(:,2)])
ylabel('y-axis (\muT)')
subplot(3, 1, 3)
plot([mag(:,3), magMounted(:,3)])
ylabel('z-axis (\muT)')

Figure Magnetometer Comparison contains 3 axes. Axes 1 with title Magnetometer contains 2 objects of type line. These objects represent Aligned with Vehicle, Off-centered. Axes 2 contains 2 objects of type line. Axes 3 contains 2 objects of type line.