產品分類

      當前位置: 首頁 > 傳感測量產品 > 工業傳感器 > 慣性傳感器

      類型分類:
      科普知識
      數據分類:
      慣性傳感器

      慣性傳感器的工作原理:小米成立第二家汽車公司 法人代表為雷軍

      發布日期:2022-10-09 點擊率:107


      <a title=慣性傳感器的工作原理:小米成立第二家汽車公司 法人代表為雷軍 第1張" title="慣性傳感器的工作原理:小米成立第二家汽車公司 法人代表為雷軍 第1張-傳感器知識網"/>

      慣性傳感器的工作原理:小米成立第二家汽車公司 法人代表為雷軍

      近兩年來,車聯網、自動駕駛、無人駕駛、汽車智能化、網聯化等成為了汽車行業的熱點話題,未來汽車一定是朝著安全、可靠及舒適的方向發展。而這一切背后的發展都離不開傳感器的作用,今天我們就來聊聊用途越來越廣的慣性傳感器——IMU。
      一、慣性傳感器(IMU)簡介
      IMU全稱Inertial Measurement Unit,慣性測量單元,主要用來檢測和測量加速度與旋轉運動的傳感器。其原理是采用慣性定律實現的,這些傳感器從超小型的的MEMS傳感器,到測量精度非常高的激光陀螺,無論尺寸只有幾個毫米的MEMS傳感器,到直徑幾近半米的光纖器件采用的都是這一原理。
      最基礎的慣性傳感器包括加速度計和角速度計(陀螺儀),他們是慣性系統的核心部件,是影響慣性系統性能的主要因素。尤其是陀螺儀其漂移對慣導系統的位置誤差增長的影響是時間的三次方函數。而高精度的陀螺儀制造困難,成本高昂。因此提高陀螺儀的精度、同時降低其成本也是當前追求的目標。
      陀螺儀的發展趨勢:
      隨著微電子技術的發展,出現了新型的慣性傳感器微機械陀螺儀和加速度計。MEMS(Micro-Electro-Mechanical System,微機電系統/微電子機械系統)技術傳感器也逐漸演變成為汽車傳感器的主要部件。本文這里重點介紹MEMS的六軸慣性傳感器。它主要由三個軸加速度傳感器及三個軸的陀螺儀組成。
      二、MEMS慣性傳感器分級、組成及原理
      1、MEMS慣性傳感器分級
      目前不管是傳統汽車還是自動駕駛汽車用的慣性傳感器通常是中低級的,其特點是更新頻率高(通常為:1kHz),可提供實時位置信息。但它有個致命的缺點——他的誤差會隨著時間的推進而增加,所以只能在很短的時間內依賴慣性傳感器進行定位。通常在自動駕駛車輛中與GNSS(全球導航衛星系統)配合一起使用,稱為組合慣導。
      2、MEMS慣性傳感器組成及原理
      慣性傳感器是對物理運動做出反應的器件,如線性位移或角度旋轉,并將這種反應轉換成電信號,通過電子電路進行放大和處理。加速度計和陀螺儀是最常見的兩大類MEMS慣性傳感器。加速度計是敏感軸向加速度并轉換成可用輸出信號的傳感器;陀螺儀是能夠敏感運動體相對于慣性空間的運動角速度的傳感器。三個MEMS加速度計和三個MEMS陀螺儀組合形成可以敏感載體3個方向的線加速度和3個方向的加速度的微型慣性測量組合(Micro Inertial Messurement Unit,MIMU),慣性微系統利用三維異構集成技術,將MEMS加速度計、陀螺儀、壓力傳感器、磁傳感器和信號處理電路等功能零件集成在硅芯片內,并內置算法,實現芯片級制導、導航、定位等功能。
      (1)MEMS加速度計
      MEMS加速度計是MEMS領域最早開始研究的傳感器之一。經過多年的發展,MEMS加速度計的設計和加工技術已經日趨成熟。
      上圖為MEMS加速度計,它的工作原理就是靠MEMS中可移動部分的慣性。由于中間電容板的質量很大,而且它是一種懸臂構造,當速度變化或者加速度達到足夠大時,它所受到的慣性力超過固定或者支撐它的力,這時候它會移動,它跟上下電容板之間的距離就會變化,上下電容就會因此變化。電容的變化跟加速度成正比。根據不同測量范圍,中間電容板懸臂構造的強度或者彈性系數可以設計得不同。還有如果要測量不同方向的加速度,這個MEMS的結構會有很大的不同。電容的變化會被另外一塊專用芯片轉化成電壓信號,有時還會把這個電壓信號放大。電壓信號在數字化后經過一個數字信號處理過程,在零點和靈敏度校正后輸出。
      加速度計還有一個自測試功能。當它剛通電時,邏輯控制會向自測試電路發出命令。自測試電路產生一個直流電壓加載到MEMS芯片的自測試電路板上,中間可活動電容板就會因靜電吸引而下移。接下來的處理過程跟測試真的加速度一樣。
      目前,國外眾多研究機構和慣性器件廠商都開展了MEMS加速度計技術研究,如美國的Draper實驗室、Michigan大學、加州大學Berkley分校、瑞士Neuchatel大學、美國Northrop Grumman Litton公司、Honeywell公司、ADI、Silicon Designs、Silicon Sensing、Endevco公司、瑞士的Colibrys公司、英國的BAE公司等。
      其中,以Draper實驗室為代表的研究機構和大學的主要工作在于提升MEMS加速度計的技術指標。能夠提供實用化MEMS加速度計產品的主要廠家有ADI、Silicon Designs、Silicon Sensing、Endevco和瑞士的Colibrys公司。
      (2)MEMS陀螺儀角速度計
      自20世紀80年代以來,對角速率敏感的MEMS陀螺儀角速度計受到越來越多的關注。根據性能指標,MEMS陀螺儀同樣可以分為三級:速率級、戰術級和慣性級。速率級陀螺儀可用于消費類電子產品、手機、數碼相機、游戲機和無線鼠標;戰術級陀螺儀適用于工業控制、智能汽車、火車、汽船等領域;慣性級陀螺儀可用于衛星、航空航天的導航、制導和控制。
      上圖為MEMS陀螺儀角速度計(MEMS gyroscope),其工作原理是利用角動量守恒原理及科里奧效應測量運動物體的角速率。它主要是一個不停轉動的物體,它的轉軸指向不隨承載它的支架的旋轉而變化。
      與加速度計工作原理相似,陀螺儀的上層活動金屬與下層金屬形成電容。當陀螺儀轉動時,他與下面電容板之間的距離機會發生變化,上下電容也就會因此而改變。電容的變化跟角速度成正比,由此我們可以測量當前的角速度。
      據不完全統計,研究MEMS陀螺儀的機構如下:斯坦福大學、密歇根大學、加州大學伯克利分校、歐文、洛杉磯、中東技術大學、弗萊堡大學、南安普敦大學、首爾國立大學、根特大學、清華大學、北京大學、東南大學、上海交通大學、浙江大學、博世、ST、InvenSense、NXP、ADI、TI等。
      (3)慣性傳感器的誤差問題
      由于制作工藝的原因,慣性傳感器測量的數據通常都會有一定誤差。第一種誤差是偏移誤差,也就是陀螺儀和加速度計即使在沒有旋轉或加速的情況下也會有非零的數據輸出。要想得到位移數據,我們需要對加速度計的輸出進行兩次積分。在兩次積分后,即使很小的偏移誤差會被放大,隨著時間推進,位移誤差會不斷積累,最終導致我們沒法再跟蹤物體的位置。第二種誤差是比例誤差,所測量的輸出和被檢測輸入的變化之間的比率。與偏移誤差相似,在兩次積分后,隨著時間推進,其造成的位移誤差也會不斷積累。第三種誤差是背景白噪聲,如果不給予糾正,也會導致我們沒法再跟蹤物體的位置。
      三、慣性傳感器應用
      慣性傳感器能夠為車輛中的所有控制單元提供車輛的即時運動狀態。路線偏移,縱向橫向的擺動角速度,以及縱向、橫向和垂直加速度等信號被準確采集,并通過標準接口傳輸至數據總線。所獲得的信號用于復雜的調節算法,以增強乘用車和商用車(例如,ESC/ESP、ADAS、AD)以及摩托車(優化的曲線 ABS)、工業車輛和農用車的舒適性與安全應用,如下圖示。
      在無人車方面的應用多與GPS或者GNSS組合使用,如下圖示:
      四、MEMS慣性傳感器的發展
      未來MEMS慣性傳感器的發展主要有四個方向:
      1、高精度
      導航、自動駕駛和個人穿戴設備等對慣性傳感器的精度需求逐漸提高,精細化測量需求和智能化的發展也對傳感器的精度提出了越來越高的要求。
      2、微型化
      器件的微型化可以實現設備便攜性,滿足分布式應用要求。微型化是未來智能傳感設備的發展趨勢,是實現萬物互聯的基礎。
      3、高集成度
      無論是慣性測量單元還是慣性微系統都是為了提高器件的集成度,進而實現在更小的體積內具備更多的測量功能,滿足裝備小體積、低功耗、多功能的需求。
      4、適應性強
      隨著MEMS慣性傳感器的應用范圍越來越廣泛,工作環境也會越來越復雜,例如:高溫、高壓、大慣量和高沖擊等,適應復雜環境能夠進一步拓寬MEMS慣性傳感器的應用范圍。
      舉報/反饋

      慣性傳感器的工作原理:慣導

      #傳感器的原理
      加速度計:

      加速度計—我們可以把它想作一個圓球在一個方盒子中。

      假定這個盒子不在重力場中或者其他任何會影響球的位置的場中,球處于盒子的正中央。

      你可以想象盒子在外太空中,或遠在航天飛機中,離任何天體,一切東西都處于無重力狀態。

      在圖中你可以看到我們給每個軸分配了一對墻(我們移除了Y+以此來觀察里面的情況)。

      設想每面墻都能感測壓力。如果我們突然把盒子向左移動(加速度為1g=9.8m/s^2),那么球會撞上X-墻。
      然后我們檢測球撞擊墻面產生的壓力,X軸輸出值為-1g。

      加速度計檢測到力的方向與它本身加速度的方向是相反的。這種力量通常被稱為慣性力。
      在這個模型中,加速度計是通過間接測量力對一個墻面的作用來測量加速度的,在實際應用中,可能通過彈簧等裝置來測量力。
      這個力可以是加速度引起的,也不一定是加速度引起的。
      如果把模型放在地球上,球會落在Z-墻面上并對其施加一個1g的力。

      在這種情況下盒子沒有移動但我們任然讀取到Z軸有-1g的值。球在墻壁上施加的壓力是由引力造成的。
      在理論上,它可以是不同類型的力量 - 例如,你可以想象我們的球是鐵質的,將一個磁鐵放在盒子旁邊那球就會撞上另一面墻。引用這個例子只是為了說明加速度計的本質是檢測力而非加速度。只是加速度所引起的慣性力正好能被加速度計的檢測裝置所捕獲。

      雖然這個模型并非一個MEMS傳感器的真實構造,但它用來解決與加速度計相關的問題相當有效。
      實際上有些類似傳感器中有金屬小球,它們稱作傾角開關,但是它們的功能更弱,只能檢測設備是否在一定程度內傾斜,卻不能得到傾斜的程度。

      到目前為止,我們已經分析了單軸的加速度計輸出,這是使用單軸加速度計所能得到的。三軸加速度計的真正價值在于它們能夠檢測全部三個軸的慣性力。
      讓我們回到盒子模型,并將盒子向右旋轉45度。現在球會與兩個面接觸:Z-和X-,見下圖:

      0.71g這個值是不是任意的,它們實際上是1/2的平方根的近似值。我們介紹加速度計的下一個模型時這一點會更清楚。

      在上一個模型中我們引入了重力并旋轉了盒子。在最后的兩個例子中我們分析了盒子在兩種情況下的輸出值,力矢量保持不變。
      雖然這有助于理解加速度計是怎么和外部力相互作用的,但如果我們將坐標系換為加速度的三個軸并想象矢量力在周圍旋轉,這會更方便計算。

      請看看在上面的模型,我保留了軸的顏色,以便你的思維能更好的從上一個模型轉到新的模型中。
      想象新模型中每個軸都分別垂直于原模型中各自的墻面。矢量R是加速度計所檢測的矢量(它可能是重力或上面例子中慣性力的合成)。
      RX,RY,RZ是矢量R在X,Y,Z上的投影。
      請注意下列關系:
      ,R ^ 2 = RX ^ 2 + RY ^ 2 + RZ ^ 2(公式1)
      此公式等價于三維空間勾股定理。

      還記得我剛才說的1/2的平方根0.71不是個隨機值吧。
      如果你把它們代回上式,回顧一下重力加速度是1g,那我們就能驗證:
      1 ^ 2 =(SQRT(1/2))^ 2 + 0 ^ 2 +(SQRT(1/2))^ 2
      在公式1中簡單的取代: R=1, Rx = -SQRT(1/2), Ry = 0 , Rz = -SQRT(1/2)

      經過一大段的理論序言后,我們和實際的加速度計很靠近了。RX,RY,RZ值是實際中加速度計輸出的線性相關值,你可以用它們進行各種計算。

      在我們運用它之前我們先討論一點獲取加速度計數據的方法。
      大多數加速度計可歸為兩類:數字和模擬。
      數字加速度計可通過I2C,SPI或USART方式獲取信息,而模擬加速度計的輸出是一個在預定范圍內的電壓值,你需要用ADC(模擬量轉數字量)模塊將其轉換為數字值。
      我將不會詳細介紹ADC是怎么工作的,部分原因是這是個很廣的話題,另一個原因是不同平臺的ADC都會有差別。有些MCU具有內置ADC模塊,而有些則需要外部電路進行ADC轉換。
      不管使用什么類型的ADC模塊,你都會得到一個在一定范圍內的數值。例如一個10位ADC模塊的輸出值范圍在0 .. 1023間,請注意,1023 = 2 ^ 10 -1。
      一個12位ADC模塊的輸出值范圍在0 .. 4095內,注意,4095 = 2 ^ 12-1。

      我們繼續,先考慮下一個簡單的例子,假設我們從10位ADC模塊得到了以下的三個軸的數據:
      AdcRx = 586
      AdcRy = 630
      AdcRz = 561

      每個ADC模塊都有一個參考電壓,假設在我們的例子中,它是3.3V。要將一個10位的ADC值轉成電壓值,我們使用下列公式:
      VoltsRx = AdcRx * VREF / 1023
      小注:8位ADC的最大值是255 = 2 ^ 8 -1,12位ADC最大值是4095 = 2 ^ 12 -1。
      將3個軸的值代入上式,得到:
      VoltsRx = 586 * 3.3 / 1023 =~1.89V(結果取兩位小數)
      VoltsRy = 630 * 3.3 / 1023 =~2.03V
      VoltsRz = 561 * 3.3 / 1023 =~1.81V
      每個加速度計都有一個零加速度的電壓值,你可以在它的說明書中找到,這個電壓值對應于加速度為0g。
      通過計算相對0g電壓的偏移量我們可以得到一個有符號的電壓值。比方說,0g電壓值 VzeroG= 1.65V,通過下面的方式可以得到相對0g電壓的偏移量:
      DeltaVoltsRx = 1.89V - 1.65V = 0.24V
      DeltaVoltsRy = 2.03V - 1.65V = 0.38V
      DeltaVoltsRz = 1.81V - 1.65V = 0.16V

      現在我們得到了加速度計的電壓值,但它的單位還不是g(9.8m/s^2),
      最后的轉換,我們還需要引入加速度計的靈敏度(Sensitivity),單位通常是 mV/g。
      比方說,加速度計的靈敏度 Sensitivity= 478.5mV / g = 0.4785V /g。
      靈敏度值可以在加速度計說明書中找到。要獲得最后的單位為g的加速度,我們使用下列公式計算:
      RX = DeltaVoltsRx /Sensitivity
      RX = 0.24V / 0.4785V / G =~0.5g
      RY = 0.38V / 0.4785V / G =~0.79g
      RZ = 0.16V / 0.4785V / G =~0.33g

      當然,我們可以把所有的步驟全部放在一個式子里,但我想通過介紹每一個步驟以便讓你了解怎么讀取一個ADC值并將其轉換為單位為g的矢量力的分量。
      Rx = (AdcRx * Vref / 1023 – VzeroG) / Sensitivity (公式2)
      Ry = (AdcRy * Vref / 1023 – VzeroG) / Sensitivity
      Rz = (AdcRz * Vref / 1023 – VzeroG) / Sensitivity

      現在我們得到了慣性力矢量的三個分量,如果設備除了重力外不受任何外力影響,那我們就可以認為這個方向就是重力矢量的方向。
      如果你想計算設備相對于地面的傾角,可以計算這個矢量和Z軸之間的夾角。
      如果你對每個軸的傾角都感興趣,你可以把這個結果分為兩個分量:X軸、Y軸傾角,這可以通過計算重力矢量和X、Y軸的夾角得到。
      計算這些角度比你想象的簡單,現在我們已經算出了Rx,Ry,Rz的值,讓我們回到我們的上一個加速度模型,再加一些標注上去:

      我們感興趣的角度是向量R和X,Y,Z軸之間的夾角,那就令這些角度為Axr,Ayr,Azr。觀察由R和Rx組成的直角三角形:
      cos(Axr) = Rx / R , 類似的:
      cos(Ayr) = Ry / R
      cos(Azr) = Rz / R
      從公式1我們可以推導出 R = SQRT( Rx^2 + Ry^2 + Rz^2)
      通過arccos()函數(cos()的反函數)我們可以計算出所需的角度:
      Axr = arccos(Rx/R)
      Ayr = arccos(Ry/R)
      Azr = arccos(Rz/R)

      我們花了大段的篇幅來解釋加速度計模型,最后所要的只是以上這幾個公式。
      根據你的應用場合,你可能會用到我們推導出來的幾個過渡公式。

      加速度傳感器可以用來測量加速度,或者檢測傾斜、沖擊、振動等運動狀態,
      幫助實現工業、醫療、通信、消費電子和汽車等領域中的多種應用。
      根據不同的應用,加速度傳感器的測量范圍從幾g 到幾十g 不等。
      數字輸出的加速度傳感器還會集成多種中斷模式。
      這些特性可以為用戶提供更加方便靈活的解決方案。

      陀螺儀:

      接下來要介紹陀螺儀模塊。
      但在此之前,我們再介紹幾個很常用的公式:
      cosX = cos(Axr) = Rx / R
      cosY = cos(Ayr) = Ry / R
      cosZ = cos(Azr) = Rz / R
      這三個公式通常稱作方向余弦 ,它主要表達了單位向量(長度為1的向量)和R向量具有相同的方向。
      你可以很容易地驗證:
      SQRT(cosX ^ 2 + COSY ^ 2 + cosZ ^ 2)= 1
      這是個很好的性質,因為它避免了我們一直檢測R向量的模(長度)。
      通常如果我們只是對慣性力的方向感興趣,那標準化模長以簡化其他計算是個明智的選擇。

      陀螺儀的每個通道檢測一個軸的旋轉。
      例如,一個2軸陀螺儀檢測繞X和Y軸的旋轉。
      為了用數字來表達這些旋轉,我們先引進一些符號。首先我們定義:
      Rxz – 慣性力矢量R在XZ平面上的投影
      Ryz – 慣性力矢量R在YZ平面的上投影
      在由Rxz和Rz組成的直角三角形中,運用勾股定理可得:
      Rxz^2 = Rx^2 + Rz^2 ,同樣:
      Ryz^2 = Ry^2 + Rz^2
      同時注意:
      R^2 = Rxz^2 + Ry^2 ,這個公式可以公式1和上面的公式推導出來,也可由R和Ryz所組成的直角三角形推導出來
      R ^ 2 = Ryz ^ 2 + RX ^ 2

      相反,我們按如下方法定義Z軸和Rxz、Ryz向量所成的夾角:
      AXZ - Rxz(矢量R在XZ平面的投影)和Z軸所成的夾角
      AYZ - Ryz(矢量R在YZ平面的投影)和Z軸所成夾角

      陀螺儀測量上面定義的角度的變化率。
      換句話說,它會輸出一個與上面這些角度變化率線性相關的值。
      為了解釋這一點,我們先假設在t0時刻,我們已測得繞Y軸旋轉的角度(也就是Axz),定義為Axz0,之后在t1時刻我們再次測量這個角度,得到Axz1。
      角度變化率按下面方法計算:
      RateAxz = (Axz1 – Axz0) / (t1 – t0).
      如果用度來表示角度,秒來表示時間,那這個值的單位就是 度/秒。這就是陀螺儀檢測的東西。
      在實際運用中,陀螺儀一般都不會直接給你一個單位為度/秒的值(除非它是個特殊的數字陀螺儀)。

      得到一個ADC值并且要用類似公式2的式子將其轉換成單位為 度/秒的值。
      讓我們來介紹陀螺儀輸出值轉換中的ADC部分(假設使用10位ADC模塊,如果是8位ADC,用1023代替255,如果是12為ADC用4095代替1023)。
      RateAxz = (AdcGyroXZ * Vref / 1023 – VzeroRate) / Sensitivity 公式3
      RateAyz = (AdcGyroYZ * Vref / 1023 – VzeroRate) / Sensitivity
      AdcGyroXZ,AdcGyroYZ - 這兩個值由ADC讀取,它們分別代表矢量R的投影在XZ和YZ平面內里的轉角,也可等價的說,旋轉可分解為單獨繞Y和X軸的運動。
      Vref – ADC的參考電壓,上例中我們使用3.3V
      VzeroRate – 是零變化率電壓,換句話說它是陀螺儀不受任何轉動影響時的輸出值,對Acc Gyro板來說,可以認為是1.23V(此值通常可以在說明書中找到——但千萬別相信這個值,因為大多數的陀螺儀在焊接后會有一定的偏差,所以可以使用電壓計測量每個通道的輸出值,通常這個值在焊接后就不會改變,如果有跳動,在設備使用前寫一個校準程序對其進行測量,用戶應當在設備啟動的時候保持設備靜止以進行校準)。
      Sensitivity –陀螺儀的靈敏度,單位mV/(deg/s),通常寫作mV/deg/s,它的意思就是如果旋轉速度增加1°/s,陀螺儀的輸出就會增加多少mV。Acc_Gyro板的靈敏度值是2mV/deg/s或0.002V/deg/s

      讓我們舉個例子,假設我們的ADC模塊返回以下值:
      AdcGyroXZ = 571
      AdcGyroXZ = 323
      用上面的公式,在代入Acc Gyro板的參數,可得:
      RateAxz = (571 * 3.3V / 1023 – 1.23V) / ( 0.002V/deg/s) =~ 306 deg/s
      RateAyz = (323 * 3.3V / 1023 – 1.23V) / ( 0.002V/deg/s) =~ -94 deg/s
      換句話說設備繞Y軸(也可以說在XZ平面內)以306°/s速度和繞X軸(或者說YZ平面內)以-94°/s的速度旋轉。
      請注意,負號表示該設備朝著反方向旋轉。按照慣例,一個方向的旋轉是正值。一份好的陀螺儀說明書會告訴你哪個方向是正的,否則你就要自己測試出哪個旋轉方向會使得輸出腳電壓增加。最好使用示波器進行測試,因為一旦你停止了旋轉,電壓就會掉回零速率水平。如果你使用的是萬用表,你得保持一定的旋轉速度幾秒鐘并同時比較電壓值和零速率電壓值。如果值大于零速率電壓值那說明這個旋轉方向是正向。

      加速度計和陀螺儀的數據融合算法:

      注:具體的代碼實現和算法測試,請閱讀這篇文章:?

      融合加速度計和陀螺儀時,首先要做的就是統一它們的坐標系。
      最簡單的辦法就是將加速度計作為參考坐標系。
      大多數的加速度計規格書都會指出對應于物理芯片或設備的XZY軸方向。
      例如,下面就是Acc Gyro板的說明書中給出的XYZ軸方向:

      接下來的步驟是:
      - 確定陀螺儀的輸出對應到上述討論的RateAxz,RateAyz值。
      - 根據陀螺儀和加速度計的位置決定是否要反轉輸出值

      不要設想陀螺儀陀的輸出有XY,它會適應加速度計坐標系里的任何軸,盡管這個輸出是IMU模塊的一部分。最好的辦法就是測試。

      接下來的示例用來確定哪個陀螺儀的輸出對應RateAxz。
      - 首先將設備保持水平。加速度計的XY軸輸出會是零加速度電壓(Acc Gyro板的值是1.65V)
      - 接下來將設備繞Y軸旋轉,換句話說就是將設備在XZ平面內旋轉,所以X、Z的加速度輸出值會變化而Y軸保持不變。
      - 當以勻速旋轉設備的時候,注意陀螺儀的哪個通道輸出值變化了,其他輸出應該保持不變。
      - 在陀螺儀繞Y軸旋轉(在XZ平面內旋轉)的時候輸出值變化的就是AdcGyroXZ,用于計算RateAxz
      - 最后一步,確認旋轉的方向是否和我們的模型對應,因為陀螺儀和加速度的位置關系,有時候你可能要把RateAxz值反向
      - 重復上面的測試,將設備繞Y軸旋轉,這次查看加速度計的X軸輸出(也就是AdcRx)。如果AdcRx增大(從水平位置開始旋轉的第一個90°),那AdcGyroXZ應當減小。這是因為我們觀察的是重力矢量,當設備朝一個方向旋轉時矢量會朝相反的方向旋轉(相對坐標系運動)。
      所以,如果你不想反轉RateAxz,你可以在公式3中引入正負號來解決這個問題:
      RateAxz = InvertAxz * (AdcGyroXZ * Vref / 1023 – VzeroRate) / Sensitivity ,其中InvertAxz= 1 或-1
      同樣的方法可以用來測試RateAyz,將設備繞X軸旋轉,你就能測出陀螺儀的哪個輸出對應于RateAyz,以及它是否需要反轉。
      一旦你確定了InvertAyz,你就能可以用下面的公式來計算RateAyz:
      RateAyz = InvertAyz * (AdcGyroYZ * Vref / 1023 – VzeroRate) / Sensitivity

      如果對Acc Gyro板進行這些測試,你會得到下面的這些結果:
      - RateAxz的輸出管腳是GX4,InvertAxz = 1
      - RateAyz輸出管腳是GY4,InvertAyz = 1
      從現在開始我們認為你已經設置好了IMU模塊并能計算出正確的Axr,Ayr,Azr值(在第一部分加速度計中定義)以及RateAyz,RateAyz(在第二部分陀螺儀中)。

      下一步,我們分析這些值之間的關系并得到更準確的設備和地平面之間的傾角。
      你可能會問自己一個問題,如果加速度計已經告訴我們Axr,Ayr,Azr的傾角,為什么還要費事去得到陀螺儀的數據?答案很簡單:加速度計的數據不是100%準確的。
      還有幾個原因,還記加速度計測量的是慣性力,這個力可以由重力引起(理想情況只受重力影響),當也可能由設備的加速度(運動)引起。
      因此,就算加速度計處于一個相對比較平穩的狀態,它對一般的震動和機械噪聲很敏感。這就是為什么大部分的IMU系統都需要陀螺儀來使加速度計的輸出更平滑。
      但是怎么辦到這點呢?陀螺儀不受噪聲影響嗎?
      陀螺儀也會有噪聲,但由于它檢測的是旋轉,因此對線性機械運動沒那么敏感,不過陀螺儀有另外一種問題,比如漂移(當選擇停止的時候電壓不會回到零速率電壓)。
      然而,通過計算加速度計和陀螺儀的平均值我們能得到一個相對更準確的當前設備的傾角值,這比單獨使用加速度計更好。

      誤差或錯誤數據的卡爾曼濾波算法:

      我們要介紹一種算法,算法受卡爾曼濾波中的一些思想啟發,但是它更簡單并且更容易在嵌入式設備中實現。
      在此之前,讓我們先看看我們需要算法計算什么值。
      所要算的就是重力矢量R=[Rx,Ry,Rz],它可由其他值推導出來,如Axr,Ayr,Azr或者cosX,cosY,cosZ,由這些值我們能得到設備相對地平面的傾角值,這些關系我們在第一部分已經討論過。
      有人可能會說-根據第一部分的公式2我們不是已經得到Rx,Ry,Rz的值了嗎?

      是的,但是這些值只是由加速度計數據推導出來的,如果你直接將它們用于你的程序你會得到難以忍受的噪聲。
      為了避免進一步的混亂,我們重新定義加速度計的測量值:
      Racc – 是由加速度計測量到得慣性力矢量,它可分解為下面的分量(在XYZ軸上的投影):
      RxAcc = (AdcRx * Vref / 1023 – VzeroG) / Sensitivity
      RyAcc = (AdcRy * Vref / 1023 – VzeroG) / Sensitivity
      RzAcc = (AdcRz * Vref / 1023 – VzeroG) / Sensitivity
      現在我們得到了一組只來自于加速度計ADC的值。
      我們把這組數據叫做“vector”,并使用下面的符號:
      Racc = [RxAcc,RyAcc,RzAcc]
      因為這些Racc的分量可由加速度計數據得到,我們可以把它當做算法的輸入。
      請注意Racc測量的是重力,如果你得到的矢量長度約等于1g那么你就是正確的:
      |Racc| = SQRT(RxAcc^2 +RyAcc^2 + RzAcc^2),
      但是請確定把矢量轉換成下面的矢量非常重要:
      Racc(normalized) = [RxAcc/|Racc| , RyAcc/|Racc| , RzAcc/|Racc|].
      這可以確保標準化Racc始終是1。

      接來下引進一個新的向量:
      Rest = [RxEst,RyEst,RzEst]
      這就是算法的輸出值,它經過陀螺儀數據的修正和基于上一次估算的值。

      這是算法所做的事:
      -加速度計告訴我們:“你現在的位置是Racc”
      ? ? ? ? ?我們回答:“謝謝,但讓我確認一下”
      -然后根據陀螺儀的數據和上一次的Rest值修正這個值并輸出新的估算值Rest。
      -我們認為Rest是當前設備姿態的“最佳值”。

      讓我們看看它是怎么實現的。
      數列的開始,我們先認為加速度值正確并賦值:
      Rest(0) = Racc(0)
      Rest和Racc是向量,所以上面的式子可以用3個簡單的式子代替,注意別重復了:
      RxEst(0)= RxAcc(0)
      RyEst(0)= RyAcc(0)
      RzEst(0)= RzAcc(0)

      接下來我們在每個等時間間隔T秒做一次測量,得到新的測量值,并定義為Racc(1),Racc(2),Racc(3)等等。
      同時,在每個時間間隔我們也計算出新的估算值Rest(1),Rest(2),Rest(3),等等。

      假設我們在第n步。我們有兩列已知的值可以用:
      Rest(n-1) – 前一個估算值,Rest(0) = Racc(0)
      Racc(n) – 當前加速度計測量值
      在計算Rest(n)前,我們先引進一個新的值,它可由陀螺儀和前一個估算值得到。
      叫做Rgyro,同樣它是個矢量并由3個分量組成:
      Rgyro = [RxGyro,RyGyro,RzGyro]
      我們分別計算這個矢量的分量,從RxGyro開始。

      首先觀察陀螺儀模型中下面的關系,根據由Rz和Rxz組成的直角三角形我們能推出:
      tan(Axz) = Rx/Rz => Axz = atan2(Rx,Rz)
      你可能從未用過atan2這個函數,它和atan類似,但atan返回值范圍是(-PI/2,PI/2),atan2返回值范圍是(-PI,PI),并且他有兩個參數。
      它能將Rx,Rz值轉換成360°(-PI,PI)內的角度。更多信息請閱讀 atan2.
      所以,知道了RxEst(n-1)和RzEst(n-1)我們發現:
      Axz(n-1) = atan2( RxEst(n-1) , RzEst(n-1) ).

      陀螺儀測量的是Axz角度變化率,因此,我們可以按如下方法估算新的角度Axz(n):
      Axz(n) = Axz(n-1) + RateAxz(n) * T
      RateAxz可由陀螺儀ADC讀取得到。
      通過使用平均轉速可由得到一個更準確的公式:
      RateAxzAvg =(RateAxz(N)+ RateAxz(N-1))/ 2
      Axz(n) = Axz(n-1) + RateAxzAvg * T
      同理可得:
      Ayz(n) = Ayz(n-1) + RateAyz(n) * T
      好了,我們有了Axz(n),Ayz(n)。

      現在我們如何推導出RxGyro/RyGyro?
      根據公式1我們可以把Rgyro長度寫成下式:
      | Rgyro | = SQRT(RxGyro ^ 2 + RyGyro ^ 2 + RzGyro ^ 2)
      同時,因為我們已經將Racc標準化,我們可以認為它的長度是1并且旋轉后保持不變,所以寫成下面的方式相對比較安全:
      | Rgyro | = 1
      我們暫時采用更短的符號進行下面的計算:
      x =RxGyro , y=RyGyro, z=RzGyro
      根據上面的關系可得:
      x = x / 1 = x / SQRT(x^2+y^2+z^2)
      分子分母同除以SQRT(X ^ 2 + Z ^ 2)
      x = ( x / SQRT(x^2 + z^2) ) / SQRT( (x^2 + y^2 + z^2) / (x^2 + z^2) )
      注意x / SQRT(x^2 + z^2) = sin(Axz), 所以:
      x = sin(Axz) / SQRT (1 + y^2 / (x^2 + z^2) )
      將SQRT內部分式的分子分母同乘以z^2
      x = sin(Axz) / SQRT (1 + y^2 ?* z ^2 / (z^2 * (x^2 + z^2)) )
      注意 z / SQRT(x^2 + z^2) = cos(Axz), y / z = tan(Ayz), 所以最后可得:
      x = sin(Axz) / SQRT (1 + cos(Axz)^2 * tan(Ayz)^2 )
      替換成原來的符號可得:
      RxGyro = sin(Axz(n)) / SQRT (1 + cos(Axz(n))^2 * tan(Ayz(n))^2 )
      同理可得:
      RyGyro = sin(Ayz(n)) / SQRT (1 + cos(Ayz(n))^2 * tan(Axz(n))^2 )

      提示:這個公式還可以更進一步簡化。分式兩邊同除以sin(axz(你))可得:
      RxGyro = ?1 ?/ SQRT (1/ sin(Axz(n))^2 ?+ cos(Axz(n))^2 / sin(Axz(n))^2 ?* tan(Ayz(n))^2 )
      RxGyro = ?1 ?/ SQRT (1/ sin(Axz(n))^2 ?+ cot(Axz(n))^2 ?* sin(Ayz(n))^2 ?/ cos(Ayz(n))^2 ) ?
      現在加減 ? cos(Axz(n))^2/sin(Axz(n))^2 ? = cot(Axz(n))^2?
      RxGyro = ?1 ?/ SQRT (1/ sin(Axz(n))^2 ?- ?cos(Axz(n))^2/sin(Axz(n))^2 ? + cot(Axz(n))^2 ?* sin(Ayz(n))^2 ?/ cos(Ayz(n))^2 ?+ cot(Axz(n))^2 )
      綜合條件1、2和3、4可得:
      RxGyro = ?1 ?/ SQRT (1 ?+ ? cot(Axz(n))^2 * sec(Ayz(n))^2 ), ? ? 其中 ?cot(x) = 1 / tan(x) ?, sec(x) = 1 / cos(x)
      這個公式只用了2個三角函數并且計算量更低。
      如果你有Mathematica程序,通過使用 FullSimplify [Sin[A]^2/ ( 1 + Cos[A]^2 * Tan[B]^2)]你可以驗證這個公式。

      現在我們發現:
      RzGyro ?= ?Sign(RzGyro)*SQRT(1 – RxGyro^2 – RyGyro^2).
      其中,當 RzGyro>=0時,Sign(RzGyro) = 1 , 當 RzGyro

      ? {zeroflag=1001;? //確保zeroflag不會溢出

      //——————————————————————————————————————————-

      Acc_z = Acc_z - ;? //加速度計采集的AD值減去直立時的輸出值

      Gyro1_zero=zerosub/1000; //陀螺儀開機自檢累加1000次后取均值 得到陀螺儀零偏值

      Gyro1? = Gyro1?- Gyro1_zero;? //陀螺儀AD采集值減去陀螺儀零偏值

      Gyro_Data = Gyro1;?

      accelerometer_angle=? Acc_z*180/(.71-.7);? //加速度計計算出的角度 歸一化到-90 到+90

      gyroscope_rate = Gyro1*0.0235*0.005;? //0.0235 是轉換角度的比例值 0.005是控制周期

      gyroscope_rat =gyroscope_rat-Gyro1*0.0235*0.005; //積分角速度得到角度

      //卡爾曼五個公式的算法實現?

      ? NowData = RealData-gyroscope_rate;

      ? NowData_P = Q+RealData_P;

      ? Kg = NowData_P/(NowData_P+R);

      ? RealData = NowData +Kg*(accelerometer_angle - NowData);

      ? RealData_P =(1-Kg)*NowData_P;

      ? QingJiao =? RealData;?//將準確角度結果給QingJiao

      ? }

      }

      ?

      假如已經得到準確角度,自然是開始以此作為控制量,那我們要控制成啥樣?想一想也知道是要把這個角度值控制成0度(例如:將直立時定義為0度),那么自然使用常用的PID算法,偏差自然就是QingJiao-0=QingJiao,當然也可以反過來,這根據自己對方向的定義。我們來個最簡單的位置式PD算法:

      fValue = (float) P *QingJiao -(float) D*Gyro_Data;

      P就是PID的P參數 D就是PID的D參數,QingJiao反映幅度,Gyro_Data反映快慢。(這也需要不斷調試出來的。)再把fvalue值給平衡車的直流電機的控制調速PWM輸出就可以了。

      實際在做的時候,往往沒那么簡單,所以一定要一步一步做好之后再做后面的,假如你第二部沒做好,在第三部時你怎么也直立不起來,你不知道到底是PD參數不對,還是卡爾曼出來的角度本身不準。所以個人經驗:得到準確角度是整個過程至關重要的一步。平衡車的直立是一直是一個動態過程,即使最好的狀態一動不動,也是在動態控制中,只是看不出而已。這里只針對直立控制,即最基本的自平衡。

      參考:

      加速度計和陀螺儀指南?

      A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications. ? ? ? ? ? ? Posted on: December 29, 2009 by starlino

      6軸和9軸傳感器:慣性測量單元 和?航姿參考系統

      IMU(Inertial measurement unit?)和AHRS (Attitude and heading reference system)

      2016年2月19日

      在研究技術問題之前,我并不關心這些傳感器的細節,但要上新的產品、需要更新的技術的時候,市場上找人不是一件容易的事情。

      與其等工程師都會的時候,可能你的產品也沒什么競爭力了。無奈,自己跟著參與吧。

      就算少數人會使用新技術,你也需要有足夠的人際技巧,其實不能說是技巧,應該是一套方法論來團結你的盟友,比如共同的理想(對未來的預見)、協調一致的目標、價值觀及一致行動準則。這些遠遠要比編程設計復雜,有時候我在想馬云真的是非常厲害的人物,能團結18羅漢在相當長的時間里,聽他的”鬼話“,被他”忽悠“,這是需要怎樣的一套方法呢!想想當下,如果你要團結一批人,是非常不容易的。

      言歸正傳,不管什么IMU或AHRS對我來說都是傳感器數量和結構的問題,但要采用前人的成果,就得大家說一樣的話,就是這些專業術語。

      AHRS由加速度計,磁場計,陀螺儀構成
      AHRS的輸出中的絕對方向來自于地球的重力場和地球的磁場,尤其是磁場
      靜態終精度取決于對磁場的測量精度和對重力的測量精度 ,而則陀螺決定了他的動態性能。

      磁場和重力場越正交,則航姿測量效果越好;反之,如果磁場和重力場平行了,比如在地磁南北極,這里的磁場是向下的,即和重量場方向相同了。
      這時航向角是沒法測出的,這是航姿系統的缺陷。在高緯度的地方航線角誤差會越來越大。當然,在實際非航天級的應用中很少遇到這種情況,故此段只是為了”知其所以然“可略去。

      消費級陀螺儀和加速度計的噪聲相對來說很大,
      以平面陀螺為例用ADI的陀螺儀進行積分一分鐘會漂移2度左右,這種前提下如果沒有磁場和重力場來校正三軸陀螺的話,
      那么基本上3分鐘以后物體的實際姿態和測量輸出姿態就完全變樣了,所以,低價陀螺儀和加速度計的架構下必須運用場向量來進行修正。

      AHRS利用三維的陀螺儀來快速跟蹤被測物體的三維的姿態,它以陀螺儀為核心,同時也測量加速度和地磁場的方向為系統提供可靠的參考。

      具體測量載體三個方向的的絕對角速率、加速度以及磁場強度,并采用特定姿態解算方法和卡爾曼濾波信息融合得到載體的四元數、姿態數據等。

      需要實時的集成算法為系統提供準確,可靠,及時以及穩定的姿態輸出。

      從陀螺儀、加速度計、磁力計以及內部溫度傳感器得到的數據,全部被傳輸到嵌入式系統-MCU中。
      MCU依據特定的算法以及存儲在Flash存儲器中的標定數據處理來自傳感器的原始數據,
      作為其基本算法,航姿參考系統(AHRS)采用自適應卡爾曼濾波算法,自動調整并適應不斷變化的動態條件,無需外部人為的干預。
      產品均在特定的環境實驗條件下,參考已知溫度下的加速度、角速率和磁場進行全面的標定,并將標定數據輸入每個產品中。

      產品應用:
      船舶測控、工程機械、車輛、通訊天線和雷達、平臺穩定系統、
      機器人控制、無人機/直升機、虛擬現實、游戲、動畫、體育、醫療康復等。

      參考文獻:

      四元數與歐拉角之間的轉換?

      請教四軸AHRS算法的問題? ? ? ?

      STM32可以用的卡爾曼濾波,附帶AHRS姿態解算源碼 ? ? ?

      AHRS–APM飛控基于DCM算法的姿態及航向解算核心代碼 ?

      AHRS 姿態板首試 ? ?

      The Extended Kalman Filter: An Interactive Tutorial for Non-Experts ? ?

      捷聯慣導算法心得? ?

      9DOF姿態融合 四元數 歐拉角轉換 有代碼有內涵 ? ?

      陀螺儀就是內部有一個陀螺,它的軸由于陀螺效應始終與初始方向平行,這樣就可以通過與初始方向的偏差計算出實際方向。手機里陀螺儀實際上是一個結構非常精密的芯片,內部包含超微小的陀螺。
      加速計是用來檢測手機受到的加速度的大小和方向的,而手機靜置的時候是只受到重力加速度(這個高中學過)的.所以很多人把加速計功能又叫做重力感應功能。
      磁力計是測試磁場強度和方向的。

      陀螺儀測量是參考標準是內部中間在與地面垂直的方向上進行轉動的陀螺。通過設備與陀螺的夾角得到結果。
      加速計是以內部測量組件在各個方向上的受力情況來得到結果。
      磁力計的原理就是中學物理中涉及到的那個最簡單的指南針了(那記得那根被磁化的鋼針么)。

      它們分別有自己的強項:
      陀螺儀的強項在于測量設備自身的旋轉運動。對設備自身運動更擅長。但不能確定設備的方位。
      加速計的強項在于測量設備的受力情況。對設備相對外部參考物(比如,地面)的運動更擅長。但用來測量設備相對于地面的擺放姿勢,則精確度不高。
      磁力計的強項在于定位設備的方位。可以測量出當前設備與東南西北四個方向上的夾角。

      舉幾個例子:
      陀螺儀對設備旋轉角度的檢測是瞬時的而且是非常精確的,能滿足一些需要高分辨率和快速反應的應用比如FPS游戲的瞄準。而且陀螺儀配合加速計可以在沒有衛星和網絡的情況下進行導航,這是陀螺儀的經典應用。加速度計可用于有固定的重力參考坐標系、存在線性或傾斜運動但旋轉運動被限制在一定范圍內的應用。同時處理直線運動和旋轉運動時,就需要把加速度和陀螺儀計結合起來使用。如果還想設備在運動時不至于迷失方向,就再加上磁力計。

      對于一個發射出去的導彈來說,要想精確追蹤并調整導彈的軌道的話,下面幾組數據必不可少:
      GPS定位它的位置
      加速計測量當前加速度
      磁力計確定導彈頭的方向(只能知道東南西北四個方向上的夾角),陀螺儀知道導彈的角速度。這兩個儀器結合才能確定導彈的準確的立體運動方向。

      加速計得到的結果就是XYZ三個值,分別代表三個方向的加速度。關于XYZ三值的介紹,可以看這里:
      android 重力感應和屏幕旋轉關系

      用加速計和磁力計可以計算出orientation(方位計),orientation涉及到了三個概念:
      Roll:左右傾斜角度,也叫滾轉角
      Pitch:前后傾斜,也叫俯仰角
      Yaw:左右搖擺,也叫偏航角

      ?終于說到了正題,姿態解算這一部分很重要,主要的基礎就是慣性導航和多傳感器數據融合,很多公司都在招這方面的人才,如百度的無人駕駛在招傳感器數據融合,網易的人機交互工程師也在找這方面的人,因為它是信息流的源泉,準確的姿態信息需要靠他們解算出來才能進行后續的步驟。

      ? ? 鑒于加速度計低頻特性比較好,因為加速度的角度可以直接算出來,沒有累積誤差,所以長時間后也比較準。而陀螺儀長時間后由于積分誤差的累加,會造成輸出誤差比較大,甚至無法使用。所以用互補濾波法根據他們的特性取長補短進行姿態解算,每過一段時間就讓加速度計去校準一下陀螺儀。互補濾波就是在短時間內采用陀螺儀得到的角度做為最優值,定時對加速度采樣來的加速度值進行取平均值來校正陀螺儀的得到的角度。短時間內用陀螺儀比較準確,以它為主;長時間用加速度計比較準確,這時候加大它的比重,這就是互補了,不過加速度計要濾掉高頻信號,陀螺儀要濾掉低頻信號,互補濾波器就是根據傳感器特性不同,通過不同的濾波器(高通或低通,互補的),然后再相加得到整個頻帶的信號。互補是給他們不同的權重加權求和。

      ? ? 當然這里面還有一些問題:如加速度無法區分慣性加速度和運動加速度,在固定翼上這個問題更為顯著,再者磁力計準確的偏角怎么得到?

      ? ?下面融合的一些框架圖,先建立一個整體的概念:

      ? ? ? ?

      ? ? 下面這幅圖才是準確的闡述了互補濾波的過程。正常情況下用陀螺儀的數據就可以進行姿態的更新,但是由于陀螺儀的積分誤差,這里用acc和mag去校正,求出他們的誤差用PI去彌補。注意看看pid的公式和作用,pid是作用于誤差(實際個期望之間的差值),最終反復調節,讓實際值=期望值。

      ? ?下面先說點基礎內容,之后再貼源碼:

      ? ?下面介紹三部分內容:

      ? ? 1、姿態的表示方法,在源碼之中姿態的表示方法有DCM、四元數,歐拉角。歐拉角法在求解姿態時存在奇點(萬向節死鎖),不能用于全姿態的解算;方向余弦可用于全姿態的解算但計算量大,不能滿足實時性要求。四元數法,其計算量小,無奇點且可以滿足飛行器運動過程中姿態的實時解算。

      ? ?2、闡述一下姿態解算的原理。

      ? ? 姿態就是指飛行器的俯仰/橫滾/航向情況。在咱們地球上,就是指飛行器在地球坐標系中的俯仰/橫滾/航向情況。飛行器需要實時知道當前自己的姿態,才能夠根據需要操控其接下來的動作,例如保持平穩,例如實現翻滾。
      姿態是用來描述一個剛體的固連坐標系和參考坐標系之間的角位置關系,有一些數學表示方法。很常見的就是歐拉角,四元數,矩陣,軸角。

      地球坐標系又叫做地理坐標系,是固定不變的。正北,正東,正向上構成了這個坐標系的X,Y,Z軸,我們用坐標系R表示。四軸飛行器上固定著一個坐標系,我們一般稱之為機體坐標系,用坐標系r表示。那么我們就可以用歐拉角,四元數等來描述r和R的角位置關系。這就是四軸飛行器姿態解算的數學模型和基礎。

      ? ? 歐拉角的姿態表示方法最為直觀,可以看做飛機繞固定軸的三次旋轉達到現在的姿態。

      分解之后就是每次的旋轉:

      方向余弦矩陣是一個3*3階的矩陣,矩陣的列表示載體坐標系中的單位矢量在參考坐標系中的投影。

      這是一個總的旋轉的表達,分解為三次旋轉,可以理解為R=R3*R2*R1。

      ? ? 四元數姿態表達式是一個四參數的表達式。它的基本思路是:一個坐標系到另一個坐標系的變換可以通過繞一個定義在參考系中的矢量 的單次轉動來實現。四元數用符號q表示,它是一個具有4個元素的矢量,這些元素是該矢量方向和轉動大小的函數。定義 的大小和方向是使參考系繞 轉動一個角度 ,就能與載體坐標系重合。

      ? ? 他們三者都可以表示姿態,求出一個就相當于知道其他的了。具體用什么形式表達,可以按照你的要求自己去換算,他們的之間的關系如下:

      2、下面對姿態解算的原理進行闡述。

      ? ?姿態解算常用的算法有歐拉角法、方向余弦法和四元數法。 歐拉角法在求解姿態時存在奇點(萬向節死鎖),不能用于全姿態的解算; 方向余弦可用于全姿態的解算但計算量大,不能滿足實時性要求。 四元數法,其計算量小,無奇點且可以滿足飛行器運動過程中姿態的實時解算。

      ? ?姿態解算的原理:對于一個確定的向量,用不同的坐標系表示時,他們所表示的大小和方向一定是相同的。但是由于這兩個坐標系的旋轉矩陣存在誤差,那么當一個向量經過這么一個有誤差存在的旋轉矩陣后,在另一個坐標系中肯定和理論值是有偏差的,我們通過這個偏差來修正這個旋轉矩陣。這個旋轉矩陣的元素是四元數,我們修正的就是四元數,這樣姿態就被修正了。

      ? ?陀螺儀動態響應特性良好,但計算姿態時會產生累積誤差。 磁力計和加速度計測量姿態沒有累積誤差,但動態響應較差。因此他們在頻域上特性互補,所以采用互補濾波器融合這三種傳感器的數據,提高測量精度和系統的動態性能。

      3、四元數姿態解算的步驟:

      好了到這里姿態解算的四路已經比較清晰了,最后給大家一個“殺手锏”:

      ? ?看到這些之后再結合源碼,想必思路會清晰很多!

      慣性傳感器的工作原理:小米成立第二家汽車公司 法人代表為雷軍  第2張

      慣性傳感器的工作原理:慣性傳感器的原理_慣性傳感器構成

        慣性傳感器的原理
        慣性傳感器是一種傳感器,主要是檢測和測量加速度、傾斜、沖擊、振動、旋轉和多自由度(DoF)運動,是解決導航、定向和運動載體控制的重要部件。
        (1)科里奧利(Coriolis)原理:也稱科氏效應(科氏力正比于輸入角速率)。該原理適用于機械式干式﹑液浮﹑半液浮﹑氣浮角速率陀螺;撓性角速率陀螺;MEMS硅﹑石英角速率陀螺(含半球諧振角速率陀螺)等。Coriolis法國物理學家(1792年~1843年)。
        (2)薩格納(Sagnac)原理:也稱薩氏效應(相位差正比于輸入角速率)。該原理適用于光纖角速率陀螺;激光角速率陀螺等。Sagnac法國物理學家(1869年~1926年),居里夫婦的朋友。1913年發明薩氏效應。

        慣性傳感器構成
        慣性傳感器包括加速度計(或加速度傳感計)和角速度傳感器(陀螺)以及它們的單、雙、三軸組合IMU(慣性測量單元),AHRS(包括磁傳感器的姿態參考系統)。
        MEMS加速度計是利用傳感質量的慣性力測量的傳感器,通常由標準質量塊(傳感元件)和檢測電路組成。
        IMU主要由三個MEMS加速度傳感器及三個陀螺和解算電路組成。

        慣性傳感器分類
        慣性傳感器分為兩大類:一類是角速率陀螺;另一類是線加速度計
        角速率陀螺又分為:機械式干式﹑液浮﹑半液浮﹑氣浮角速率陀螺;撓性角速率陀螺;MEMS硅﹑石英角速率陀螺(含半球諧振角速率陀螺等);光纖角速率陀螺;激光角速率陀螺等。
        線加速度計又分為:機械式線加速度計;撓性線加速度計;MEMS硅﹑石英線加速度計(含壓阻﹑壓電線加速度計);石英撓性線加速度計等。

      慣性傳感器的工作原理:慣性加速度傳感器原理是什么?看完本文就能明白!

      對于運動圖物體的物理測量,目前存在著大量的市場需求。慣性加速度傳感器能夠被用來檢測并檢測出物體的振動、選擇、加速度,它可以高效地解決導航以及載體控制的重要部件,它充分利用傳感器的慣性力,對其進行測量。那么關于慣性加速度傳感器的原理,你都知道哪些呢?下面,就由傳感器愛好者帶您來了解一下!
      慣性加速度傳感器原理是什么
      慣性加速度傳感器通常包括有加速度計、也被叫做角速度傳感器、或加速度傳感器,下面我們來了解一下慣性加速度傳感器原理。
      慣性傳感一般包括加速度計,它也叫加速度傳感器和角速度傳感器,角速度傳感器也被叫做陀螺儀,在這里我們主要了解加速度計和陀螺儀的基本原理。
      加速度計一般是由檢測質量、支承、電位器、彈簧、阻尼器和殼體組成,但同時就是利用加速度的基本原理,即計算物體在空間運動的狀態,一開始加速度計只是感應地表垂直方向加速度,初期也只是應用在檢測飛機過載的儀表系統中。而后通過功能升級、優化,如今實際上可以認知到物體任意方向上的加速度主流的是3軸加速度計,測量的是物體在空間坐標系中X、Y、Z三軸上的加速度數據,可以全方面反映物體平移的運動性質。
      慣性傳感器怎么工作?
      與加速度計測量維度不同,我們按照陀螺儀的定義,可以理解到陀螺儀主要是通過測量空間坐標系中陀螺轉子的垂直軸與物體之間的夾角,如今的主流陀螺儀也是三軸,即測量物體在X、Y、Z軸上旋轉的數據,分別為縱搖、橫搖、垂搖。
      最早的陀螺儀都是機械陀螺儀,內置高速旋轉的陀螺,正因為陀螺在萬向支架上能夠保持高速穩定旋轉,因此最早陀螺儀是航海中用來辨別方向,確定姿態以及計算角速度,之后逐漸被應用在飛機儀表上。不過機械式的對加工精度要求很高,還非常容易受外界震動影響,因此機械陀螺儀的計算精度始終都不高。
      慣性加速度傳感器原理是什么?慣性加速度傳感器,通常可分為兩類,一種是角速率陀螺,而另一種是線加速度計。在工業上,引起穩定高效的運行機制原理,被應用得比較廣泛。慣性加速度傳感器有別于傳統的加速度傳感器,在使用上也有所區別,是解決定向、導航和運動載體控制的重要部件。

      下一篇: PLC、DCS、FCS三大控

      上一篇: 電氣控制線路圖控制原

      推薦產品

      更多
      主站蜘蛛池模板: 日本高清不卡一区| 国产激情一区二区三区 | 精品视频在线观看一区二区三区| 卡通动漫中文字幕第一区| 日韩一区二区三区免费播放| 无码一区二区三区爆白浆| 无码精品人妻一区二区三区人妻斩| 一区二区国产在线观看| 日韩一区二区三区射精| 国产成人精品日本亚洲专一区 | 一区二区三区免费视频观看| 精品国产一区AV天美传媒| 嫩B人妻精品一区二区三区| 日韩精品人妻av一区二区三区| 在线|一区二区三区| 久久精品国产AV一区二区三区| 亚州日本乱码一区二区三区| 久久无码精品一区二区三区| 麻豆精品一区二区综合av| 日韩在线视频不卡一区二区三区| 无码丰满熟妇一区二区| 亚洲AV无码一区二区大桥未久| 亚洲一区在线视频观看| 五月婷婷一区二区| 3D动漫精品啪啪一区二区下载| 国产精品分类视频分类一区| 蜜桃无码AV一区二区| 激情内射亚洲一区二区三区爱妻| 亚洲一区二区免费视频| 中文字幕在线一区二区在线| 亚欧在线精品免费观看一区| 精品亚洲AV无码一区二区| 亚洲AV无码一区二区三区网址 | 成人中文字幕一区二区三区| 精品无码一区二区三区爱欲九九| 国产福利91精品一区二区| 国产精品无码亚洲一区二区三区 | 免费无码一区二区| 中文字幕亚洲一区二区三区| 国产丝袜视频一区二区三区| 亚洲一区二区三区首页|