《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM-Linux的微慣性單元數據采集與處理
基于ARM-Linux的微慣性單元數據采集與處理
來源:微型機與應用2011年第4期
孫 凱,劉瑞華
(中國民航大學 新航行系統研究所,天津 300300)
摘要: 在Linux下通過串口編程對MEMS IMU數據采集和解算,實現了其高速實時采集。其中,設計的IIR低通濾波器有效消除了信號中的噪聲成分,并通過Qt編程設計了應用程序窗口將MEMS IMU的輸出數據動態顯示在ARM開發板上。該設計在小體積、低功耗、低成本的慣性測量中具有重要的工程應用意義,可廣泛應用于動態測量、動態控制、輔助導航等領域。
Abstract:
Key words :

摘  要: Linux下通過串口編程對MEMS IMU數據采集和解算,實現了其高速實時采集。其中,設計的IIR低通濾波器有效消除了信號中的噪聲成分,并通過Qt編程設計了應用程序窗口將MEMS IMU的輸出數據動態顯示在ARM開發板上。該設計在小體積、低功耗、低成本的慣性測量中具有重要的工程應用意義,可廣泛應用于動態測量、動態控制、輔助導航等領域。
關鍵詞: ARM-Linux;MEMS IMU;慣性測量;數據采集;IIR濾波器

    微機械慣性器件是集微型精密機械、微電子學、半導體集成電路等新技術于一身的世界前沿新技術。隨著微電子技術的發展,目前微機械慣性器件憑借其價格低、可靠性高、尺寸小、重量輕等特點引起了國內慣性技術及微電子技術領域的廣泛關注。以陀螺儀和加速度計為核心部件的慣性導航系統已成為現代飛機、大型艦只和潛艇的一種重要導航設備,在其他一些民用領域中也有著十分廣泛和重要的應用。以慣性系統為基礎發展起來的慣性測量和慣性定位系統,可以用于大地測量、地圖繪制、海洋調查、地球物理勘探、管道鋪設選線、石油鉆井定位和機器人等需要大范圍測量及精確定位的場合[1]。
    本文在嵌入式Linux環境下使用ARM9開發板實現了對IMU輸出數據的采集和動態顯示,為進一步的工程應用打下基礎。
1 微慣性測量單元IMU
    微慣性測量單元由6個傳感器組成,包括3個微機械陀螺儀和3個微機械加速度計,配置在立方體的3個正交平面上。其基本原理為古典的牛頓力學原理,由三根軸的陀螺確定載體的姿態,安裝在三根軸上的加速度計測出載體的加速度值,積分得到速度,再積分得到位移[1,2]。
    本文所采用的慣性測量單元為XW-IMU5200。它以DSP為核心處理器,采用16 bit高精度多通道并行A/D轉換。其A/D轉換器的采樣率至少是慣性傳感器帶寬的4倍,能夠保持慣性傳感器的固有頻率。6路并行采集通道可實時接收加速度計和陀螺儀以及溫度傳感器的信號,保證了數據采集的一致性。圖1所示為本文所采用的XW-IMU5200的外觀。


    XW-IMU5200內部有一個0.8 μs的計時器。計時器計數從0~216,然后開始新的周期(高位溢出后繼續)。每個數據周期中,在讀取內部計時器之前和之后,分別對兩組慣性測量數據進行采樣,然后將得到的數據做數字濾波并封裝;慣性測量數據、計時器數據、溫度數據通過XW-IMU5200的RS232口送出。
    如圖2所示,Ti是周期的起點。從Ti到Ti1為0.1 ms,實現第一組數據的采樣;從Ti1到Ti2為1 ms,讀取內部計時器;從Ti2到Ti3為0.1 ms ,實現第二組數據的采樣;從Ti3到Ti4進行濾波并封裝數據,對IMU為1.8 ms, 對IMU而言,最大數據輸出速率約為100 Hz,波特率為115 200 b/s。

    XW-IMU5200的測量數據包為19 bit,其定義如表1所示,數據為Little Endian格式,即低位(LSB)字節在先。

2 Arm-linux環境下的MEMS IMU數據采集實現
2.1 交叉編譯環境的建立

    本設計所采用的ARM9開發板為S3C2440處理器,內嵌Linux系統。
    因嵌入式開發一般需要在PC機上進行,需要在宿主機建立交叉編譯環境,以下給出建立交叉編譯環境的步驟:
    (1)安裝linux環境;
    (2)下載交叉編譯文件包 cross-2.95.3.tar.bz2;
    (3)建立交叉編譯環境目錄  /usr/local/arm/;
    (4)復制安裝包到目錄下,在此目錄下解包文件,命令為:tar jxvf cross-2.95.3.tar.bz2;
    (5)配置環境變量,修改bashrc文件,在文件最后一行添加環境變量,代碼為export。
    PATH=/usr/local/arm/2.95.3/bin: $PATH,保存退出后重啟Linux。
    至此,交叉編譯環境建立完成。
2.2 串口通信的實現
    本設計所采用的微慣性單元數據通過RS232串口輸出,同時所使用的ARM開發板上也附有串口,因此完成數據采集必須通過串口通信。
    串口通信是儀器儀表設備通用的通信方式,它用于ASCII碼的字符傳輸,主要由地線、發送和接收數據線3根數據線完成,其他線用于握手。
    串口通信的最重要的參數配置是:波特率、數據位和奇偶校驗位,在進行串口通信時,必須正確設置參數。Linux中所有的設備一般位于/dev下,串口1和2的名稱分別為/dev/ttyS0和/dev/ttyS1.通過對struct termios結構體的各成員值的設置來進行串口設置,如下:
    #include<termios.h>
    Struct termio
    {
    unsigned short c_iflag; /*輸出控制模式標志*/
    unsigned short c_oflag; /*輸出模式標志*/
    unsigned short c_cflag; /*控制模式標志*/
    unsigned short c_lflag; /*本地模式標志*/
    unsigned char c_line;  /*行標志*/
    unsigned char c_cc[NCC; /*控制字符*/
    };
    其中,c_cflag包含對數據傳輸率、字符大小、數據位、停止位、奇偶校驗位和硬件流控的設置。
    串口配置主函數如下:
    int main(void)
    {
        int fd;
        int nread,i;
        char buff[512]="0";
        if((fd=open_port(fd,1))<0)
        {
          perror("open_port error");
          return;
        }
        if((i=set_opt(fd,38400,8,'N',1))<0)
        {
          perror("set_opt error");
          return;
        }
        printf("fd=%d\n",fd);
          while(1)
        {
          while((nread = read(fd,buff,sizeof(buff)))>0)
        {
          if(buff[i]==0xaa&&buff[i+1]==0x18);
          printf("header found\n ");
          }
        }
          close(fd);
          return;
    }
    串口波特率為9 600 b/s,數據位為8 bit,無奇偶校驗位,1 bit停止位。對于串口的操作同讀寫文件,使用read、write函數。如上串口調通后,根據產品的解碼進行數據的解算,其算法可表示為:
    IMU_meas.gyro[i]=IMU_data.gyro[i]*G_S/SCALAR;
    //陀螺儀輸出數據解算,i取值1、2、3分別代表正交方向三路陀螺儀
    IMU_meas.acc[i]=IMU_data.acc[i]*A_S/SCALAR;  //加速度計輸出數據解算,i取值1、2、3,分別代表三路加速度計
    本文忽略溫度信息只考慮6路傳感器信息,其中G_S為陀螺儀的角度范圍,A_S為加速度計測量范圍,scalar為常值215。
2.3 數字低通濾波
    低通濾波屬于經典濾波的范疇,它通過一定的運算關系改變輸入信號頻率成分的相對比例或濾除某些頻率成分,對MEMS IMU進行濾波的目的就是盡量濾除信號中的各種噪聲成分,因為MEMS IMU輸出信號的有用成分基本位于低頻段,加之實時性能的要求,這里只選擇相比FIR濾波器階次低得多的IIR濾波器[3]。
    隨機采集一組數據進行濾波說明,如圖3為轉臺靜止狀態下y軸MEMS陀螺儀輸出的5 000點數據,采樣頻率為100 Hz。

    為了確定濾波器的通帶截止頻率,對這組數據進行Yule Walker功率譜密度分析[5],為了獲得較高的精度,此處取AR模型的階數為30,功率譜密度分析結果如圖4所示。

    從圖4中可以看出陀螺儀輸出信號中存在兩個明顯的尖峰,分別位于14.6 Hz和28.5 Hz處,所以通帶的截止頻率必須小于14.6 Hz。這兩個尖峰是指陀螺儀輸出數據隨機誤差的正弦成分,由圖中可知它們對陀螺儀輸出數據的零點漂移起主導作用。考慮到過渡帶寬的因素,截止頻率的設置最大也應為7 Hz左右。但這一濾波器的任務除了要濾除正弦成分外,也應該濾除大部分的近似白噪聲統計特性的噪聲成分,并且在沒有噪聲情況下陀螺儀的輸出數據應為常數,所以截止頻率設得越低越好。
    設計IIR數字低通濾波器必須確定的另一個重要參數是濾波器的階數。階數低時,濾波時延較小,但過渡帶寬過大,濾波效果不明顯,階數高時,過渡帶寬較小,但濾波時延較大。為了既能獲得較好的濾波效果,又能夠最大限度地滿足實時應用,在選擇濾波器的階數時需要做折中考慮。基于以上分析,選擇具有單調下降幅頻特性的巴特沃斯濾波器。
    采用巴特沃斯直接型結構,系統函數為:
  
通過分析比較,當通帶截止頻率設為4 Hz左右、濾波器階數設為4時,能得到理想的綜合濾波效果。圖5所示為濾波后的數據。

    對濾波后的數據進行Yule Walker功率譜密度分析,結果如圖6所示。

    比較圖4和圖6可以看出,濾波后的功率譜密度原來的兩個尖峰完全消失了,除0 Hz附近整體變得十分平坦。這正是期望的濾波效果,說明設計的濾波器達到了預期的濾波目的。計算濾波前后的均值與方差,結果如表2所示。

    可以看出,濾波后的均值與濾波前的均值相比在誤差允許的范圍內可以認為是相等的,濾波后的方差比濾波前的方差小兩個數量級。這說明合理地選擇巴特沃斯數字低通濾波器的截止頻率和階數, MEMS陀螺儀輸出

的數據可產生較好的濾波效果。通過計算得出低通濾波器的權系數ak和br,便可根據差分方程編制C語言程序。
2.4 輸出數據基于Qt的界面顯示
    Qt是一個跨平臺的C++圖形界面庫,主要通過匯集C++類的形式來實現應用程序界面開發所需要的一切,包括Qt/X11、Qt Embedded、Qtdesigner和Qt linguist等[4]。Qt是基于面向對象的C++語言,它提供了signal(信號)和slot(槽)的對象通信機制,具有可查詢和設計的屬性以及強大的事件和事件過濾器。本文主要用到其面向嵌入式開發的Qt Embedded及其設計器Qtdesigner。
    Qt界面開發通常有以下步驟:
    (1)用Qt生成file.ui和main.cpp;
    (2)用uic生成file.h和file.cpp;
    (3)用qmake生成file.pro;
    (4)通過./setenv命令設置環境變量;
    (5)用tmake生成二進制代碼。
    主函數部分如下:
int main( int argc, char ** argv)
{
    QApplication a(argc, argv);
    IMU_display w;   
    QTimer *t = new QTimer(&w );
a.connect(t,SIGNAL(timeout()),&w,SLOT(imu()));
    t->start( 10, FALSE);
    w.show();
a.connect(&a,SIGNAL(lastWindowClosed()),&a, SLOT(quit()) );
    return a.exec();
}
    IMU數據輸出速率為100 Hz,將Qtimer定時器設置為10 ms刷新一次,保證數據輸出的完整性。IMU數據的具體輸出可以進行定制。在上位機開發完系統之后,可以利用虛擬幀緩存技術(qvfb)技術在PC機上測試Qt/Embedded 程序。經過反復的測試修改,測試成功之后制作圖標和桌面啟動器,通過minicom拷貝到ARM-Linux系統下的指定目錄,便完成了程序的開發工作,需要注意的是交叉編譯前需要將程序中上位機的串口名改為ARM開發板的指定串口名,否則程序將不會正常運行。
    本文實現了ARM-Linux環境下對于MEMS IMU的數據采集處理,功耗低、成本低、體積小,可廣泛應用到各種慣性測量領域。文中所述IIR數字低通濾波器,設計簡單,適合運用于有用信號和噪聲的頻帶不重疊的非高速變化運動的場合。其不足之處在于雖然可以取得較為理想的濾波效果,但同時產生了一定的延遲,所以不適合對于實時性要求很高的慣性測量場合,但可以通過改進濾波算法來實現。
參考文獻
[1] 劉俊,石云波,李杰.微慣性技術[M].北京:電子工業出版社,2005.
[2] 牛徐明,王田苗,梁建宏.基于ARM與MEMS器件的微慣性測量裝置設計[J].單片機與嵌入式系統應用,2007,7(3):62-64.
[3] 丁楊斌,王新龍,王縝,等.數字濾波在光纖陀螺數據處理中應用研究[J].傳感器世界,2005,11(11):13-16.
[4] 倪繼利.Qt及Linux操作系統窗口設計[M].北京:電子工業出版社,2006.
[5] 張賢達.現代信號處理(第二版)[M]..北京:清華大學出版社,2002.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
伊人成综合网伊人222| 99亚洲一区二区| 欧美视频不卡| 欧美精品一区视频| 欧美1区2区3区| 久热这里只精品99re8久| 久久精品一二三| 久久国产黑丝| 欧美在线亚洲综合一区| 午夜精品久久久久久久| 亚洲欧美国产制服动漫| 亚洲一区二区精品在线| 亚洲网站视频| 亚洲午夜视频| 亚洲欧美日韩区| 午夜久久资源| 香蕉国产精品偷在线观看不卡| 亚洲一区二区视频在线| 亚洲午夜精品一区二区三区他趣 | 亚洲一区二区在线| 亚洲综合色丁香婷婷六月图片| 亚洲免费影院| 欧美在线观看日本一区| 久久久成人网| 老鸭窝亚洲一区二区三区| 欧美成人免费网| 欧美日韩麻豆| 国产伦一区二区三区色一情| 国产一区二区黄色| 永久555www成人免费| 亚洲国产精品电影| 一区二区免费在线观看| 午夜精品999| 亚洲国产成人久久| 99国产精品视频免费观看| 亚洲一品av免费观看| 午夜在线一区| 玖玖综合伊人| 欧美日韩在线播放三区| 国产欧美日韩亚洲一区二区三区| 国产一区二区久久精品| 亚洲国产综合在线| 亚洲图片欧洲图片日韩av| 久久精品视频免费播放| 亚洲久久一区二区| 亚洲欧美色婷婷| 看片网站欧美日韩| 欧美涩涩网站| 韩曰欧美视频免费观看| 日韩午夜免费视频| 欧美影院成人| 99精品99久久久久久宅男| 午夜精品理论片| 免费观看亚洲视频大全| 欧美亚男人的天堂| 尹人成人综合网| 这里只有精品视频在线| 欧美在线影院| 亚洲午夜久久久久久久久电影院 | 亚洲国产精品视频| 亚洲小视频在线| 久久影院午夜论| 欧美午夜片在线观看| 国内自拍一区| 一区二区久久久久| 亚洲第一级黄色片| 老司机成人在线视频| 亚洲韩国精品一区| 亚洲一卡二卡三卡四卡五卡| 久久青草欧美一区二区三区| 欧美日韩亚洲高清| 狠狠爱综合网| 中文高清一区| 亚洲国产精品黑人久久久| 亚洲一区二区三区中文字幕 | 欧美片第1页综合| 国产一本一道久久香蕉| 日韩视频免费观看高清在线视频| 亚久久调教视频| 亚洲视频在线二区| 欧美波霸影院| 国产亚洲免费的视频看| 亚洲午夜激情免费视频| 日韩午夜av| 久久综合五月| 国产网站欧美日韩免费精品在线观看 | 中文久久精品| 亚洲美女毛片| 美国三级日本三级久久99| 国产精品专区第二| 亚洲视屏在线播放| 夜夜嗨av一区二区三区网页| 久久综合九色99| 国产欧美日韩精品专区| 亚洲最新在线| 日韩午夜电影av| 麻豆成人精品| 国产主播一区二区| 亚洲欧美日韩天堂一区二区| 亚洲字幕一区二区| 欧美日韩一区二区高清| 亚洲国产专区校园欧美| 亚洲国产一区视频| 久久嫩草精品久久久精品| 亚洲精选在线| 久久精品在这里| 国产麻豆精品视频| 亚洲视频一区在线观看| 日韩亚洲视频在线| 欧美国产日韩xxxxx| 在线观看欧美日本| 亚洲国产精品久久久久秋霞蜜臀| 久久久久久穴| 国内精品伊人久久久久av一坑| 午夜在线观看免费一区| 午夜激情一区| 国产精品视频免费在线观看| 中国女人久久久| 亚洲欧美国产精品专区久久| 国产精品捆绑调教| 亚洲视频专区在线| 午夜精品福利一区二区三区av| 欧美色视频一区| 日韩图片一区| 亚洲深夜福利视频| 国产精品av久久久久久麻豆网| 一区二区激情视频| 亚洲免费在线观看| 国产精品欧美久久| 亚洲尤物视频网| 欧美在线观看视频一区二区三区 | 亚洲黄色影院| 日韩一区二区精品视频| 欧美日韩国产区| 99精品国产在热久久婷婷| 一区二区高清在线| 欧美午夜电影在线观看| 亚洲天堂成人| 久久国内精品自在自线400部| 国产婷婷97碰碰久久人人蜜臀| 欧美一区在线视频| 久久只有精品| 91久久精品www人人做人人爽| 99视频精品在线| 国产精品极品美女粉嫩高清在线 | 99re成人精品视频| 亚洲欧美一区二区三区极速播放 | 日韩一本二本av| 午夜精品视频在线观看一区二区| 国产欧美一区二区白浆黑人| 亚洲成人在线视频播放| 欧美jjzz| 亚洲视频高清| 久久精品亚洲精品| 亚洲欧洲精品一区| 亚洲一区久久| 狠狠色丁香久久综合频道 | 亚洲香蕉网站| 国产一区二区三区高清在线观看| 最新国产精品拍自在线播放| 欧美日韩精品一本二本三本| 一本色道久久| 久久久av水蜜桃| 亚洲乱码国产乱码精品精98午夜| 性欧美xxxx大乳国产app| 狠狠色丁香婷婷综合影院| 夜夜嗨av一区二区三区四季av| 国产精品一区二区三区成人| 亚洲高清资源综合久久精品| 欧美日韩中文在线观看| 香蕉久久夜色精品| 欧美国产丝袜视频| 亚洲制服av| 嫩草国产精品入口| 亚洲小视频在线观看| 麻豆成人精品| 亚洲一级电影| 欧美xart系列在线观看| 亚洲图片自拍偷拍| 欧美电影在线播放| 亚洲欧美制服中文字幕| 欧美另类久久久品 | 亚洲国产mv| 国产精品日韩久久久久| 亚洲精品久久久久久下一站 | 亚洲毛片在线| 久久久爽爽爽美女图片| 99re亚洲国产精品| 久久久久91| 亚洲网友自拍| 欧美乱妇高清无乱码| 亚洲精品在线观看免费| 亚洲欧美日韩精品久久久| 欧美sm重口味系列视频在线观看| 亚洲一区二区三区中文字幕在线| 免费欧美网站| 欧美在线视频一区二区| 国产精品卡一卡二卡三| 日韩午夜激情av| 精品粉嫩aⅴ一区二区三区四区|