陀螺儀搖擺臺測試
github倉庫:
ps:博文不再更新,後續更新會在github倉庫進行。
1,測試目的
弄清楚產品imu陀螺儀的動態效能。
2,測試方法
產品三個軸分別進行搖擺測試。記錄下,搖擺前靜止兩分鐘,然後開始搖擺(角度:20°,頻率:0.25hz)兩分鐘,最後搖擺結束再靜止兩分鐘的資料。通過matlab進行資料分析。
3,matlab程式
clc; %清空命令列視窗
clear; %清空工作區
gyro_x = dlmread('x軸.dat'); %從文字中讀取陀螺儀資料,單位:deg/s,速率:200hz
gyro_y = dlmread('y軸.dat');
gyro_z = dlmread('z軸.dat');
gyro_x_zero = mean(gyro_x(1:12000, 3)); %求陀螺儀零偏
gyro_y_zero = mean(gyro_y(1:12000, 4));
gyro_z_zero = mean(gyro_z(1:12000, 5));
gyro_x_minus_zero = gyro_x(:, 3) - gyro_x_zero; %陀螺儀資料減去零偏
gyro_y_minus_zero = gyro_y(:, 4) - gyro_y_zero;
gyro_z_minus_zero = gyro_z(:, 5) - gyro_z_zero;
gyro_x_angle = cumsum(gyro_x_minus_zero) / 200; %陀螺儀資料積分求角度
gyro_y_angle = cumsum(gyro_y_minus_zero) / 200;
gyro_z_angle = cumsum(gyro_z_minus_zero) / 200;
gyro_x_time = (1:length(gyro_x_angle)) / 200; %求陀螺儀資料的時間
gyro_y_time = (1:length(gyro_y_angle)) / 200;
gyro_z_time = (1:length(gyro_z_angle)) / 200;
figure('name', '陀螺儀x軸資料積分角度'); %建立繪圖視窗
plot(gyro_x_time, gyro_x_angle); %繪圖
xlabel('time:sec'); %新增x軸標籤
ylabel('angle:deg'); %新增y軸標籤
grid on; %新增網格線
figure('name', '陀螺儀y軸資料積分角度'); %建立繪圖視窗
plot(gyro_y_time, gyro_y_angle); %繪圖
xlabel('time:sec'); %新增x軸標籤
ylabel('angle:deg'); %新增y軸標籤
grid on; %新增網格線
figure('name', '陀螺儀z軸資料積分角度'); %建立繪圖視窗
plot(gyro_z_time, gyro_z_angle); %繪圖
xlabel('time:sec'); %新增x軸標籤
ylabel('angle:deg'); %新增y軸標籤
grid on; %新增網格線
4,測試結果
圖1:陀螺儀x軸資料積分得到的角度
圖2:陀螺儀y軸資料積分得到的角度
圖3:陀螺儀z軸資料積分得到的角度
5,測試結論
搖擺過程中,陀螺儀x、y軸激發出了0.1deg/s的漂移(可能是零偏或比例因子正反轉不一樣),z軸沒有激發明顯的漂移。陀螺儀三個軸的比例因子標定的還不錯,在千分之一以內。陀螺儀z軸要比x、y軸效能要好不少。
陀螺儀的學習
從陀螺儀得到x y z三個角速度後就需要通過積分來得到角度,事實上,經過簡單的積分是得不到正確的角度的,更得不到尤拉角,在這裡說一下通過的runge kunta更新四元數,從而對角速度積分得到角度的過程。四元數能到快速的發展,得益於飛行器控制與導航的發展,要求更合理的描述剛體空間的運動,以便於計算機...
陀螺儀工作原理
陀螺儀是用來測量平衡和轉速的工具,在載體高速轉動的時候,陀螺儀始終要通過自我調節,使得轉子保持原有的平衡,這一點是如何做到的?帶著這個問題,我們來看一下這個古老而又神秘的裝置的工作原理。我把三個gimbal環用不同的顏色做了標記,底部三個軸向,rgb分別對應xyz。假設現在這個陀螺儀被放在一艘船上,...
陀螺儀工作原理
我們知道陀螺儀使用來測量平衡和轉速的工具,在載體高速轉動的時候,陀螺儀始終要通過自我調節,使得轉子保持原有的平衡,這一點是如何做到的?帶著這個問題,我們來看一下這個古老而又神秘的裝置的工作原理。我把三個gimbal環用不同的顏色做了標記,底部三個軸向,rgb分別對應xyz。假設現在這個陀螺儀被放在一...