陀螺儀演算法
⑴ 有沒有陀螺儀的原理過程最好帶圖
一、引言
陀螺儀作為一種慣性測量器件,是慣性導航、慣性制導和慣性測量系統的核心部件,廣泛應用於軍事和民用領域。傳統的陀螺儀體積大、功耗高、易受干擾,穩定性較差,最近美國模擬器件公司推出了一種新型速率陀螺晶元ADXRS,它只有7mm×7mm×3mm大小,採用BGA-32封裝技術,這種封裝至少要比任何其他具有同類性能的陀螺儀小100倍,而且功耗為30mW,重量僅0.5g,能夠很好的克服傳統陀螺儀的缺點。由ADXRS晶元組成的角速度檢測陀螺儀能夠准確的測量角速度,此外還可以利用該陀螺儀對角度進行測量,實驗取得了良好的結果。
二、陀螺儀的原理和構造
ADXRS系列陀螺儀是由美國模擬器件公司製造,採用集成微電子機械繫統(iMEMS)專利工藝和BIMOS工藝的角速度感測器,內部同時集成有角速率感測器和信號處理電路。與任何同類功能的陀螺儀相比,ADXRS系列陀螺儀具有尺寸小、功耗低、抗沖擊和振動性好的優點。
1、科里奧利加速度
ADXRS系列陀螺儀利用科里奧利(Coriolis)加速度來測量角速度,科里奧利效應原理如圖1所示。假設某人站在一個旋轉平台的中心附近,他相對地面的速度用圖1箭頭的長度所示。如果移動到平台外緣的某一點,他相對地面的速度會增加,如圖1較長的箭頭所示。由徑向速度引起的切向速度的速率增加,這就是科里奧利加速度。設角速度為w科里奧利加速度的一半,另一般來自徑向速度的改變,二者總和為2wv旋轉平台必須施加一個大小為2Mwv科里奧利加速度,並且該人將受到大小相等的反作用力。的力來產生。如果人的質量為M,該,平台半徑為r,則切向速度為wr,如果以速度v沿徑向r移動,將產生一個切向加速度wv,這僅是
陀螺儀通過使用一種類似於人在一個旋轉平台移出或移入的諧振質量元件,利用科里奧利效應來測量角速度。圖2示出了ADXRS系列陀螺儀完整的微機械結構,陀螺儀通過附著在諧振體上的電容檢測元件測量諧振質量元件及其框架由於科里奧利效應產生的位移。這些電容檢測元件都是由硅材料製成的橫梁,它們與兩組附著在基片上的靜止硅橫梁互相交叉,因而形成兩個標稱值相等的電容器。由角速度引起的位移在該系統內產生一個差分電容。如果彈簧的彈性系數為K2wv M。如果總電容為C2wv,它直接與該角速度成比例。這種關系的逼真度在實際應用中非常好,其線性誤差小於0.1%。 MC/gK,硅橫梁的間距為g,則差分電容為/K,那麼反作用力造成的位移為
2、陀螺儀的構造以及電路的實現
ADXRS系列陀螺儀的外圍尺寸為7mm×7mm×3mm,採用BGA-32封裝技術,有ADXRS150和ADXRS300兩種型號,它們的功能電路完全相同,唯一不同在於前者的量程為±150°/s,後者的量程為±300°/s。圖3顯示了ADXRS300的內部電路結構和外圍電路,其中外圍電路主要是電容和電阻組成。
引腳AVCC接5V電源電壓,22nF的泵浦電容用於產生12V的泵浦電壓以供部分電路使用。測得的角速度以電壓形式在引腳RATEOUT輸出,0°/s時輸出電壓為2.5V,RATEOUT與引腳SUMJ之間並聯一個電阻RoutADXRS300的角速度響應帶寬,-3dB頻率由下式決定:和電容Cout,從而組成低通濾波器用於限制
fout = 1 / (2 π ? Rout ? Cout) (1)
內部電路的Rout180kΩ,可以從外部給RoutΩ//RextADXRS300的量程為±300°/s,可以在RATEOUT和SUMJ引腳之間給Rout300 kΩ的電阻可以使量程增大50%,但是這需要對電路重新調零,調零時在SUMJ引腳處外接一個電阻RnullRATEOUT的零點是2.5V,但角運動范圍不對稱時,按下式計算:到地或電源正極,對稱角運動情況下並聯一個電阻來增大量程,例如並聯一個,從而調整角速率響應帶寬。並聯一個電阻Rext,使得Rout=180k為
Rnull = (2)
式中,Vnull0——未校正時零角速度的輸出電壓,
Vnull1——校正後所需的零點電壓。
如果求得的Rnull5V電源上。為負值,則把電阻Rnull接地;為正值,接在
三、實驗過程和測量結果
ADXRS300陀螺儀直接的用途就是做角速度測量儀,此外也可以用於測量物體旋轉角度—對陀螺儀的輸出結果積分,所得的數值即為角度。
本實驗即用ADXRS300陀螺儀測量角度,通過ADXRS300角速度測量儀測量旋轉物體的轉動角速度(注意:陀螺儀可以以任何角度安裝在旋轉物體的任何地方,只要測量使陀螺儀旋轉軸和所要測量的軸平行即可),再對角速度積分就是我們所要的角度了。根據此原理,先把陀螺儀的輸出通過數據採集器送入PC機中,再用軟體進行積分並最終顯示結果。具體流程如圖4。
1、硬體設計
測量角度的具體方法是把ADXRS300陀螺儀固定在由步進電機驅動的圓盤上,由圓盤帶動陀螺儀轉動,陀螺儀的輸出電壓由F-5101數據採集控制器進行A/D轉換。F-5101的輸入電壓范圍為-5V~5V,A/D轉換位數為12位,轉換速度為25ms,適用於本實驗的數據採集。
F-5101通過列印口與計算機相連,佔用主機378H和379H兩個I/O埠。主機通過寫378H向F-5101送入操作狀態,讀379H得到A/D轉換的數據。
系統的供電電壓為220V,需要通過AC220B05-1W5型電源模塊把220V交流電轉換為5V直流電供ADXRS300陀螺儀使用。
2、軟體設計
讀取陀螺儀的輸出電壓值,換算成角速度並進行積分,最終顯示結果這一步驟通過Visual Basic程序來實現。從計算機379H埠讀取的數值為12位2進制數,利用公式
Vout10× (A×16 + B + C / 16)×4096 – 5 (3)=
可以把12位二進制數轉換為十進制數,從而求得陀螺儀的實際輸出電壓。其中Vout12位二進制數的高4位、中4位和低4位。電壓值換算成角速度由下式決定:設角速度為w,則:為輸出電壓,A,B,C分別為
w = (Vout -V0) / 5mV /°/s (4)
其中5mV/°/s為ADXRS300陀螺儀的靈敏度,V2.5V。0為陀螺儀靜止時的輸出電壓,一般為
積分的主要步驟是用角速度w5。乘以程序運行一次所用的時間△t,循環運行程序,對每次的乘積進行累加,並實時送出累加結果,該結果即為測得的物體轉過的角度,程序流程如圖
3、實驗結果
表1列出了陀螺儀轉動±90°和±180°這四種情況的輸出結果。
實驗結果表明:角度相對誤差小於0.5%,有較高的精度。其中誤差來源主要包括:
程序運行一次所用的時間△t過長,造成對角速度的積分不精確,這是產生誤差的主要來源。解決的方法是盡量避免冗長的程序語句,使用運行速度較快的計算機或者採用更精確的演算法。
數據採集A/D轉換時可能產生的誤差,造成所積分的角速度不準確。
⑵ MPU6050 加速度計 陀螺儀 PC機上實現數據融合演算法
我知道的也不多,說一下我的理解吧。拿正點原子的程序為例mou6050:原子的程序配合上位機能輸出6個數據,加速度輸出:ax,ay,az角速度輸出:wx,wy,wz分別在上位機上顯示,這個數據是原始數據,dmp結算後的四元數。而單片機TFT屏幕上顯示的Pitch、Roll、Yaw角度是通過陀螺儀的四元數解算出來,這個數據有個問題即使陀螺儀放不平(有個傾斜角),mpu6050上電後是以此時的狀態為0度角度,這樣測出來的數據肯定是錯誤的。原因是:陀螺儀測量的是角速度變化率,它也不知道0度在哪,它是以刷新的那個時刻記為0度開始積分的。因此陀螺儀單獨是沒法用的需要校準,校準的感測器可以是地磁感測器或者加速度計。而陀螺儀地磁和加速度計又有自己的缺點,需要他們把彼此的數據做個融合。
⑶ 用陀螺儀可否精確地計算出在空中劃出的軌跡
單靠陀螺儀應該是不行的,需要再結合加速度計,而且兩者都需要時三軸的,即三軸陀螺儀,三軸加速度計。另外陀螺儀和加速度計的精度是能否精確計算軌跡的關鍵。目前的陀螺儀,高端的有光纖陀螺儀與激光陀螺儀,這種價格高,一般人也看不到。低端一點的以MEMS陀螺儀為主,手機上用的陀螺儀屬於這一類,不過漂移非常大,基本上應該是100度每小時的漂下去。當然MEMS陀螺儀也有高端一點的,精度可到5度每小時,更高的我沒見過,可能有,不過我不知道。有了硬體之後還需要演算法,高級的演算法甚至可以把低端陀螺儀的精度提高一個等級,開發的難度也可想而知。
⑷ 加速度計和陀螺儀融合的演算法
給你arino的卡爾曼濾波融合演算法,非原創,我只是封裝了演算法。
H文件:
/*
* KalmanFilter.h
* Non-original
* Author: x2d
* Copyright (c) 2012 China
*
*/
#ifndef KalmanFilter_h
#define KalmanFilter_h
#include <WProgram.h>
class KalmanFilter
{
public:
KalmanFilter();
/*
卡爾曼融合計算
angle_m: 加速度計測量並通過atan2(ax,ay)方法計算得到的角度(弧度值)
gyro_m:陀螺儀測量的角速度值(弧度值)
dt:采樣時間(s)
outAngle:卡爾曼融合計算出的角度(弧度值)
outAngleDot:卡爾曼融合計算出的角速度(弧度值)
*/
void getValue(double angle_m, double gyro_m, double dt, double &outAngle, double &outAngleDot);
private:
double C_0, Q_angle, Q_gyro, R_angle;
double q_bias, angle_err, PCt_0, PCt_1, E, K_0, K_1, t_0, t_1;
double angle, angle_dot;
double P[2][2];
double Pdot[4];
};
CPP文件:
/*
* KalmanFilter.cpp
* Non-original
* Author: x2d
* Copyright (c) 2012 China
*
*/
#include "KalmanFilter.h"
KalmanFilter::KalmanFilter()
{
C_0 = 1.0f;
Q_angle = 0.001f;
Q_gyro = 0.003f;
R_angle = 0.5f;
q_bias = angle_err = PCt_0 = PCt_1 = E = K_0 = K_1 = t_0 = t_1 = 0.0f;
angle = angle_dot = 0.0f;
P[0][0] = 1.0f;
P[0][1] = 0.0f;
P[1][0] = 0.0f;
P[1][1] = 1.0f;
Pdot[0] = 0.0f;
Pdot[1] = 0.0f;
Pdot[2] = 0.0f;
Pdot[3] = 0.0f;
}
void KalmanFilter::getValue(double angle_m, double gyro_m, double dt, double &outAngle, double &outAngleDot)
{
/*
Serial.print("angle_m = ");
Serial.print(angle_m);
Serial.print(";");
Serial.print("gyro_m = ");
Serial.print(gyro_m);
Serial.print(";");
*/
angle+=(gyro_m-q_bias) * dt;
angle_err = angle_m - angle;
Pdot[0] = Q_angle - P[0][1] - P[1][0];
Pdot[1] = -P[1][1];
Pdot[2] = -P[1][1];
Pdot[3] = Q_gyro;
P[0][0] += Pdot[0] * dt;
P[0][1] += Pdot[1] * dt;
P[1][0] += Pdot[2] * dt;
P[1][1] += Pdot[3] * dt;
PCt_0 = C_0 * P[0][0];
PCt_1 = C_0 * P[1][0];
E = R_angle + C_0 * PCt_0;
K_0 = PCt_0 / E;
K_1 = PCt_1 / E;
t_0 = PCt_0;
t_1 = C_0 * P[0][1];
P[0][0] -= K_0 * t_0;
P[0][1] -= K_0 * t_1;
P[1][0] -= K_1 * t_0;
P[1][1] -= K_1 * t_1;
angle += K_0 * angle_err;
q_bias += K_1 * angle_err;
angle_dot = gyro_m-q_bias;
outAngle = angle;
outAngleDot = angle_dot;
/*
Serial.print("angle = ");
Serial.print(angle);
Serial.print(";");
Serial.print("angle_dot = ");
Serial.print(angle_dot);
Serial.print(";");
*/
}
#endif
⑸ 航模 陀螺儀 原理
你所查找的「帶環」的陀螺儀是機械陀螺儀,主要是利用角動量守恆原理,因此它主要是一個不停轉動的物體,它的轉軸指向不隨承載它的支架的旋轉而變化。
你看到的是個電路板的陀螺儀是MEMS陀螺儀,也就是微機電陀螺儀,在航模、手機、相機中廣泛運用,MEMS陀螺儀利用科里奧利力——旋轉物體在有徑向運動時所受到的切向力,裡面是不會有圈圈環環的,哈哈~~~
其基本原理如下:
MEMS陀螺儀通常有兩個方向的可移動電容板。徑向的電容板加震盪電壓迫使物體作徑向運動(有點象加速度計中的自測試模式),橫向的電容板測量由於橫向科里奧利運動帶來的電容變化(就象加速度計測量加速度)。因為科里奧利力正比於角速度,所以由電容的變化可以計算出角速度。
現在你明白這玩意兒是咋把角運動信號轉換成電信號的了吧,但是要想了解陀螺儀導航原理,網路限製作答的1W字不夠寫的,哈哈~~這屬於慣性導航范疇了,可以多交流。
作答完畢,希望有幫助。
給你張iphone的陀螺儀照片,哈哈
⑹ 陀螺儀和加速度計在功能上有什麼區別
加速度計用於測量加速度。藉助一個三軸加速度計可以測得一個固定平台相對地球表面的運動方向,但是一旦平台運動起來,情況就會變得復雜的多。如果平台做自由落體,加速度計測得的加速度值為零。如果平台朝某個方向做加速度運動,各個軸向加速度值會含有重力產生的加速度值,使得無法獲得真正的加速度值。例如,安裝在60度橫滾角飛機上的三軸加速度計會測得2G的垂直加速度值,而事實上飛機相對地區表面是60度的傾角。因此,單獨使用加速度計無法使飛機保持一個固定的航向。
陀螺儀測量機體圍繞某個軸向的旋轉角速率值。使用陀螺儀測量飛機機體軸向的旋轉角速率時,如果飛機在旋轉,測得的值為非零值,飛機不旋轉時,測量的值為零。因此,在60度橫滾角的飛機上的陀螺儀測得的橫滾角速率值為零,同樣在飛機做水平直線飛行時,角速率值為零。可以通過角速率值的時間積分來估計當前的橫滾角度,前提是沒有誤差的累積。陀螺儀測量的值會隨時間漂移,經過幾分鍾甚至幾秒鍾定會累積出額外的誤差來,而最終會導致對飛機當前相對水平面橫滾角度完全錯誤的認知。因此,單獨使用陀螺儀也無法保持飛機的特定航向。
一言以蔽之,加速度計在較長時間的測量值(確定飛機航向)是正確的,而在較短時間內由於信號雜訊的存在,而有誤差。陀螺儀在較短時間內則比較准確而較長時間則會有與漂移而存有誤差。因此,需要兩者(相互調整)來確保航向的正確。
即使使用了兩者,也只可以用於測得飛機的俯仰和橫滾角度。對於偏航角度,由於偏航角和重力方向正交,無法用加速度計測量得到,因此還需要採用其他設備來校準測量偏航角度的陀螺儀的漂移值。校準的設備可以使用磁羅盤計(電子磁羅盤,對磁場變化和慣性力敏感)或者GPS。
GPS數據更新較慢(1Hz到10Hz),並且短時間內存在誤差。可以只用GPS就可在地磁平穩的時間內,在地面跟蹤較為穩定和慢速的飛行器。
慣性導航單元(IMU)組合(融合)來自兩個或以上的感測器(例如陀螺儀、加速度計、磁場計和/或GPS)信息用於飛機相對地球的航向矢量和速度矢量。這種融合演算法相當復雜,同時還需要對這些電子器件固有的測量雜訊進行特殊濾波,因此市場上具有還算過得去的參數,「廉價」的IMU的價格也要
1000至5000美元。
紅外水平感應輔助導航儀價格便宜,只要有水平清晰的視覺,它工作良好。不幸的是,山峰、雲層、煙霧和建築等會影響其水平視覺。
最後,用於UAV的導航器的設計技巧(設計方案)依賴於使用目的、經費預算和感測器數據融合計算、卡爾曼濾波的便利性等方面。(勁鷹無人機)
⑺ vivox21陀螺儀是虛擬的嗎
陀螺儀又叫角速度感測器,可感知手機各個方向的變化,可以對手機轉動、偏轉的動作做很好的測量,從而做相應的操作,主要應用有游戲、相機防抖、導航等,虛擬陀螺儀則是通過軟體演算法和其他相關感測器配合,來實現與陀螺儀相同的功能。
⑻ 輪船上穩定用的陀螺儀原理
陀螺儀就是根據陀螺儀的定軸性 和 進動性來控制姿態的,根據變化算出角速度。只不過應用環境不同,器件的精度 和 演算法的處理有所不同。原理都是這個。
⑼ 六軸陀螺儀如何判斷跌倒
加速度+陀螺儀 通過 濾波演算法 得出 3軸的角度 。 對陀螺儀積分,積分存在誤差, 用加速度修正 積分誤差 ,得出正確的角度
⑽ 陀螺儀ITG3200的使用問題,如何將陀螺儀的數據轉換成角速度,再如何積分成角度求高手解答!
我用的MPU6050,不過應該差不多。
你查datasheet,陀螺儀數據和真實的角速度有個對應關系,在datasheet里有寫,跟你自己設置的測量范圍也有關系。
乘以系數得到真實的角速度之後,然後乘以測量周期時間(可以示波器測,可以軟體模擬測),累加就行(這是最簡略的方法)。
在這種方法下,周期時間越短越好。
還有別的演算法可以提高精度,自己查查論文就行。