0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IMU為嵌入式應(yīng)用提供更精細的定位分辨率

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2019-01-17 08:40 ? 次閱讀

全球?qū)Ш叫l(wèi)星系統(tǒng) (GNSS) 非常有用,能夠定位全球任意位置已正確啟用此功能的系統(tǒng),但僅僅使用 GNSS 接收器進行定位也存在一些問題。使用慣性測量裝置 (IMU) 對 GNSS 進行補充,則可以克服這些問題。

IMU 采用陀螺儀、加速計和磁力儀,基于初始起點測量位置。本文將討論它的嵌入式應(yīng)用,然后再介紹一些適當?shù)慕鉀Q方案示例以及使用方法。

IMU 如何補充 GNSS

GNSS 存在四個問題。首先,GNSS 信號具有很強的指向性,因此會被建筑物遮擋。其次,接收器有幾十秒到一分鐘甚至更長時間的熱啟動和冷啟動時間。接收器需要利用啟動時間采集并鎖定定位所需的多個衛(wèi)星信號。

第三,GNSS 的位置更新率被限制為每秒一次。這對追蹤緩慢移動的大型物體而言沒有問題,但對許多嵌入式應(yīng)用而言,啟動時間太長而且更新率太慢。第四,GNSS 精確到米,對于大多數(shù)嵌入式應(yīng)用而言不夠精確。這類應(yīng)用種類繁多,例如不涉及地面交通的機器人和虛擬現(xiàn)實等。

IMU 提供了許多嵌入式應(yīng)用所需的更精細的定位分辨率和更快的更新率。并且,和 GNSS 接收器提供絕對定位信息相反,IMU 提供距離已知起點的相對位置信息,因此這兩種位置傳感器可互為補充。

現(xiàn)代電子 IMU 以板安裝電子元件的方式提供,以微機電系統(tǒng) (MEMS) 技術(shù)為基礎(chǔ),因此體積小、重量輕且相對堅固。它們具有可變的自由度 (DOF) 能力,而且與 GNSS 接收器不同,IMU 不依賴無線電信號。IMU 的耗電量極低,可通過各種供應(yīng)源獲取具有廣泛分辨率和精度的產(chǎn)品。

借助這些特性,IMU 可用于增強 GNSS 接收器的定位信息。(請參閱“使用 GNSS 模塊快速設(shè)計位置跟蹤系統(tǒng)”。)

IMU 剖析

運動傳感器對物理運動做出響應(yīng)并進行檢測,包括加速度、移動速率或距離等參數(shù)。慣性傳感器是一種特殊的運動傳感器。IMU 將各種運動傳感器集成到一個器件中,可提供高精度定位信息。它們對傳感器自身的運動做出響應(yīng)。

IMU 整合了以下一種或多種運動傳感器類型:

陀螺儀傳感器測量角度位置變化,通常以每秒度數(shù)表示。隨時間進行角速率積分可測得行程角度,用于追蹤方向變化。陀螺儀傳感器提供一個、兩個或三個軸,分別對應(yīng)俯仰角、翻滾角和偏航角。陀螺儀追蹤與重力無關(guān)的相對運動,因此傳感器偏置或積分誤差會造成稱為“漂移”的位置誤差。

加速計傳感器測量線性加速度,包括設(shè)備運動造成的加速度分量和重力造成的加速度。加速度以 G 為單位,是地球重力(1 G = 9.8 米/秒2)的倍數(shù)。加速計提供一個、兩個或三個軸,分別定義 X、Y、Z 坐標系。通過計算測得的器件角度并進行重力補償,可使用加速計數(shù)據(jù)來測量靜態(tài)設(shè)備方向。復(fù)雜運動周期會令方向計算變得復(fù)雜。

磁傳感器測量磁場強度,通常以微特斯拉 (μT) 或高斯(100 μT = 1 高斯)為單位。移動電子設(shè)備中最常用的磁傳感器是三軸霍爾效應(yīng)磁力儀。根據(jù)地理位置,地球磁場幅度介于 25 到 65 μT 之間,且傾斜角度各不同。就美國大陸而言,強度介于 45 到 55 μT 之間,角度為 50 - 80 度。通過計算檢測到的地球磁場角度,并將此測量的角度與加速計測量的重力進行比較,即可非常精確地測量出設(shè)備相對于地磁北極的航向。要獲得正北航向,還需要根據(jù)當前經(jīng)緯度進行調(diào)節(jié)。

壓力傳感器測量差壓或絕對壓力,單位通常為百帕 (hPa) 或毫巴 (mbar),二者等效。海平面標準氣壓定義為 1013.25 hPa。海拔高度變化會導(dǎo)致檢測到的環(huán)境氣壓發(fā)生相應(yīng)變化,可用于追蹤垂直運動。

使用 IMU 的運動追蹤采用傳感器融合,根據(jù)已知的起點和方向,推導(dǎo)單一、高精度的相對設(shè)備方向和位置估計值。傳感器融合涉及使用 IMU 制造商或應(yīng)用開發(fā)人員開發(fā)的復(fù)雜數(shù)學(xué)算法來組合 IMU 的各種運動傳感器輸出。使用傳感器融合進行位置計算可得到以下測量結(jié)果:

重力 – 具體而言地球重力,且不含設(shè)備感應(yīng)到的由運動造成的加速度。當 IMU 靜止時,加速計測量重力矢量。當 IMU 運動時,重力測量需要融合加速計和陀螺儀的數(shù)據(jù),并減去運動造成的加速度。需要相對于地球來檢測方向的應(yīng)用可使用重力測量。

線性加速度 – 等于加速計測得的設(shè)備加速度,但要減去重力矢量。IMU 線性加速度可用于測量三維空間中的運動。該值的精度取決于重力矢量的追蹤精度。

方向(海拔高度)– 歐拉角集合,包括偏航角、俯仰角、翻滾角,測量單位為度。

旋轉(zhuǎn)矢量 – 由加速計、陀螺儀和磁力儀傳感器的數(shù)據(jù)組合得出。旋轉(zhuǎn)矢量表示圍繞特定軸的旋轉(zhuǎn)角度。

IMU 可用于各種應(yīng)用,包括消費品(手機)、醫(yī)學(xué)(成像)、工業(yè)(機器人)和軍工(航向跟蹤)。所需 IMU 精度取決于應(yīng)用要求。

六種自由度

自由度 (DOF) 指剛性物體在三維空間中的可能運動。3D 空間中只有六種 DOF:三個線性轉(zhuǎn)換 DOF(前/后、上/下、左/右)和三個旋轉(zhuǎn) DOF(偏航、仰俯和翻滾)。無論運動有多復(fù)雜,空間內(nèi)任何可能的剛性物體運動都能以六種基本 DOF 的組合來表示。

但在 IMU 領(lǐng)域內(nèi),有很多 9 DOF 甚至 10 DOF 傳感器的叫法??紤]到總共只有六種用于描述運動的 DOF,這種命名規(guī)則會造成相當?shù)睦_。9 DOF 這一數(shù)字命名源于累計 IMU 內(nèi)所含各種傳感器的 DOF。因此,如果 IMU 包含一個 3 DOF 加速計、一個 3 DOF 陀螺儀和一個 3 DOF 磁力儀,則稱之為 9 DOF IMU。再增加一個氣壓傳感器用于測量海拔高度,就會得到一個 10 DOF IMU。

市場上有各種價格和功能的 IMU。例如,DFRobot 的 SEN0140 10 DOF MEMS IMU 傳感器板是一種緊湊型 IMU 板,集成了一個 Analog Devices ADXL345 加速計、一個 Honeywell Microelectronics & Precision Sensors 磁力儀、一個 TDK Invensense 陀螺儀和一個 Bosch Sensortec 氣壓傳感器。

圖 1:DFRobot 的 SEN0140 10 DOF MEMS IMU 傳感器板集成了加速計、磁力儀、陀螺儀和氣壓傳感器。(圖片來源:DFRobot)

主流 SEN0140 傳感器的測量規(guī)格如下:

ADXL345 加速計:±16 g,13 位分辨率(在所有 g 量程內(nèi)保持 4 mg/LSB 的比例系數(shù))

Honeywell Microelectronics & Precision Sensors 磁力儀:±8 高斯?jié)M量程磁場

TDK Invensense 陀螺儀:滿量程 ±2000°/秒

Bosch Sensortec 氣壓傳感器:4.35 PSI 至 15.95 PSI(30 kPa 至 110 kPa)

所有這四個傳感器都連接到板上的單一 SPI 串口,這意味著嵌入式處理器必須單獨對每個處理器進行尋址和查詢。DFRobot 的 SEN0140 還采用低噪聲 LDO,為傳感器提供 3 至 8 伏穩(wěn)壓電源。

使用現(xiàn)有 Arduino 庫,DFRobot 的 10 DOF IMU 能直接兼容 Arduino 開發(fā)板。該器件還可用于具有 SPI 端口的任何微處理器微控制器系統(tǒng)。

以下是從 DFRobot 的 SEN0140 10 DOF 開發(fā)板提取傳感器數(shù)據(jù)的 Arduino 代碼示例(列表 1):

復(fù)制 #include #include #include #include #include float angles[3]; // yaw pitch roll float heading; short temperature; long pressure; // Set the FreeSixIMU object FreeSixIMU sixDOF = FreeSixIMU(); HMC5883L compass; // Record any errors that may occur in the compass.int error = 0; void setup(){ Serial.begin(9600); Wire.begin(); delay(5); sixDOF.init(); //init the Acc and Gyro delay(5); compass = HMC5883L(); // init HMC5883 error = compass.SetScale(1.3); // Set the scale of the compass.error = compass.SetMeasurementMode(Measurement_Continuous); // Set the measurement mode to Continuous if(error != 0) // If there is an error, print it out.Serial.println(compass.GetErrorText(error)); bmp085Calibration(); // init barometric pressure sensor } void loop(){ sixDOF.getEuler(angles); temperature = bmp085GetTemperature(bmp085ReadUT()); pressure = bmp085GetPressure(bmp085ReadUP()); getHeading(); PrintData(); delay(300); } void getHeading(){ // Retrive the raw values from the compass (not scaled).MagnetometerRaw raw = compass.ReadRawAxis(); // Retrived the scaled values from the compass (scaled to the configured scale).MagnetometerScaled scaled = compass.ReadScaledAxis(); // Values are accessed like so: int MilliGauss_OnThe_XAxis = scaled.XAxis;// (or YAxis, or ZAxis) // Calculate heading when the magnetometer is level, then correct for signs of axis.heading = atan2(scaled.YAxis, scaled.XAxis); float declinationAngle = 0.0457; heading += declinationAngle; // Correct for when signs are reversed.if(heading 《 0) heading += 2*PI; // Check for wrap due to addition of declination.if(heading 》 2*PI) heading -= 2*PI; // Convert radians to degrees for readability.heading = heading * 180/M_PI; } void PrintData(){ Serial.print(“Eular Angle: ”); Serial.print(angles[0]); Serial.print(“ ”); Serial.print(angles[1]); Serial.print(“ ”); Serial.print(angles[2]); Serial.print(“ ”); Serial.print(“Heading: ”); Serial.print(heading); Serial.print(“ ”); Serial.print(“Pressure: ”); Serial.print(pressure, DEC); Serial.println(“ Pa”); }

列表 1:這是從 DFRobot 的 SEN0140 10DOF 開發(fā)板提取傳感器數(shù)據(jù)的 Arduino 代碼示例。(代碼來源:DFRobot)

此 Arduino 代碼可生成圖 2 所示輸出。

IMU為嵌入式應(yīng)用提供更精細的定位分辨率

圖 2:上述 Arduino 代碼生成此輸出,顯示 SEN0140 傳感器的狀態(tài)。(圖片來源:DFRobot)

Digilent 的 410-326 9 軸 IMU/氣壓計基于 STMicroelectronics 的 LSM9DS1 iNEMU IMU,該 IMU 整合如下規(guī)格的 3D 加速計、3D 陀螺儀和 3D 磁力儀:

±2/±4/±8/±16 g 滿量程線性加速度(3D 加速計)

±245/±500/±2000°/秒滿量程角速率(3D 陀螺儀)

±4/±8/±12/±16 高斯?jié)M量程磁場(3D 磁力儀)

所有三種運動傳感器—加速計、陀螺儀和磁力儀—都集成到一個小型封裝中,并通過 LSM9DS1 的 I2C 接口進行連接。

圖 3:Digilent 的 410-326 9 軸 IMU/氣壓計使用 STMicroelectronics 的 LSM9DS1 iNEMU IMU,該 IMU 在一個封裝中整合了 3D 加速計、3D 陀螺儀和 3D 磁力儀。(圖片來源:Digilent)

Thales Visionix 的 NavChip 精密 6 軸 MEMS IMU 源自軍工技術(shù),可以 1 kHz 的速率進行位置數(shù)據(jù)采集和處理。然后,以用戶可選擇的低至 200 Hz(或更低)的速率處理并集成數(shù)據(jù)。它還使用工廠校準和嵌入式溫度傳感器進行補償,以糾正其他傳感器的偏置、比例系數(shù)和錯位。其加速計和磁力儀的規(guī)格如下:

加速計:滿量程角速率 2000°/s

磁力儀:滿量程加速度 ±16g

NavChip 模塊帶有 TTL UART 和 SPI 端口,并具有 1 個脈沖/秒的輸入,用于同步 GPS 模塊。提供 V14447-03-02 RS-422 評估套件,讓原型設(shè)計更加輕松。模塊有內(nèi)置測試 (BIT) 模式,可按指令測試,并提供連續(xù)診斷監(jiān)測。該裝置已進行工廠校準,并在 -40°C 至 +85°C 的工作溫度范圍內(nèi)提供溫度補償。

Thales 利用工廠校準和溫度補償,在 NavChip 模塊的規(guī)格書中增加了一系列穩(wěn)定性規(guī)格,這在其他大多數(shù)商用 IMU 規(guī)格書中是沒有的:

陀螺儀偏置運行穩(wěn)定性:5°/小時

角向隨機游走:0.18°/√小時

速度隨機游走:0.03 米/秒/√小時

軟件角度

有了本文所列的所有 IMU,編寫如以上 Arduino 代碼列表所示的提取原始傳感器數(shù)據(jù)的軟件并不困難。但是,將這些傳感器讀數(shù)集成為可用的導(dǎo)航數(shù)據(jù)才是更復(fù)雜的任務(wù)。一些開源程序包專門設(shè)計為將 IMU 數(shù)據(jù)整合到應(yīng)用中。

ArduPilot Mega (APM) 便是這樣一款專為自主式無人機而開發(fā)的程序。它支持駕駛和無人駕駛(完全自主)飛行,包括數(shù)百個 GPS 航點、攝像機控制、自主起飛和著陸。由于是開源程序,IMU 代碼可開放檢查,并能改用于其他類型的應(yīng)用。

來自 Open Source Robotics Foundation 的機器人操作系統(tǒng)ROS) 提供了編寫機器人軟件的靈活框架。它集合了眾多工具、庫和慣例,旨在簡化跨眾多機器人平臺創(chuàng)建復(fù)雜而強大的機器人行為的任務(wù)。ROS 包含多個 IMU 的接口代碼,以便為其導(dǎo)航模塊提供信息。

總結(jié)

許多嵌入式應(yīng)用需要能夠在全球任意位置實現(xiàn)系統(tǒng)定位。僅 GNSS 接收器是不夠的,但有了 IMU 的補充,則可實現(xiàn)更精準的定位和更快的更新率。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5104

    文章

    19278

    瀏覽量

    310121
  • mems
    +關(guān)注

    關(guān)注

    129

    文章

    3989

    瀏覽量

    191571
  • GNSS
    +關(guān)注

    關(guān)注

    9

    文章

    810

    瀏覽量

    48399
收藏 人收藏

    評論

    相關(guān)推薦

    采用高分辨率位置插值的Sin/Cos編碼器工業(yè)接口

    或 12 位版本,從而可優(yōu)化性能和成本。此外,TIDA-00176 還允許通過 SPI 和 QEP 接口以輕松連接到外部處理器,同時允許使用可選、嵌入式 ADC。實現(xiàn)快速評估,該設(shè)計提供了適用于
    發(fā)表于 11-09 17:04

    ADC的噪聲、ENOB及有效分辨率

    ?! 「?b class='flag-5'>分辨率  過去,一只12位SAR ADC通常就足以測量各種信號與電壓輸入。如果某個應(yīng)用需要更精細的測量,設(shè)計者可以在ADC前加一個增益級或PGA(可編程增益放大器)。對于16位設(shè)計,設(shè)計者
    發(fā)表于 11-26 16:48

    峰峰值分辨率與有效分辨率的區(qū)別

    低帶寬、高分辨率ADC的分辨率16位或24位。但是,器件的有效位數(shù)受噪聲限制,而噪聲則取決于輸出字速率和所用的增益設(shè)置。有些公司規(guī)定使用有效分辨率來表示該參數(shù),ADI則規(guī)定使用峰峰值
    發(fā)表于 12-15 07:56

    分辨率嵌入式視頻監(jiān)控設(shè)備的設(shè)計

    提出一種高分辨率嵌入式視頻監(jiān)控設(shè)備的設(shè)計。以工業(yè)級32-bit嵌入式處理器、ASIC視頻編碼器硬件平臺,嵌入式linux v3.0
    發(fā)表于 08-21 09:22 ?7次下載

    什么是分辨率

    什么是分辨率      液晶電視的分辨率(resolution)是關(guān)乎面板顯示圖像格式的的重要指標。通常我們所指的分辨率是指面板的物理分辨率,即畫面顯示的點數(shù),
    發(fā)表于 05-24 21:56 ?1222次閱讀

    打印機分辨率/輸出分辨率

    打印機分辨率/輸出分辨率              打印機分辨率又稱
    發(fā)表于 12-23 14:16 ?3699次閱讀

    什么是屏幕分辨率

    什么是屏幕分辨率 屏幕分辨率是指沿著屏幕的長和寬排列象素的多少。由于LCD的顯示特性,LCD有所謂的原始分辨率,而它的最佳分辨率就是它的原
    發(fā)表于 01-23 10:09 ?3116次閱讀

    峰峰值分辨率與有效分辨率

    簡介 低帶寬、高分辨率ADC的分辨率16位或24位。但是,器 件的有效位數(shù)受噪聲限制,而噪聲則取決于輸出字速率和 所用的增益設(shè)置。有些公司規(guī)定使用有效分辨率來表示該 參數(shù)。A
    發(fā)表于 03-28 17:11 ?0次下載

    快速設(shè)定分辨率

    快速設(shè)定分辨率快速設(shè)定分辨率快速設(shè)定分辨率快速設(shè)定分辨率
    發(fā)表于 04-28 11:45 ?4次下載

    如何使用高分辨率面陣CCD設(shè)計圖像采集系統(tǒng)的論文說明

    本文主要研究了面向高分辨率面陣CCD的一種新型信號采集系統(tǒng)的軟硬件設(shè)計和實現(xiàn)。該系統(tǒng)可用于數(shù)碼相機以及對分辨率要求較高的圖像處理場合,其研究平臺NIOSII SOPC嵌入式系統(tǒng)。 因
    發(fā)表于 12-03 15:54 ?8次下載
    如何使用高<b class='flag-5'>分辨率</b>面陣CCD設(shè)計圖像采集系統(tǒng)的論文說明

    分辨率的峰值分辨率和有效分辨率概念

    低帶寬、高分辨率ADC的有效位數(shù)計算方法因公司而異,而器件的有效位數(shù)受噪聲限制。有些公司規(guī)定使用有效分辨率來表示有效位數(shù),ADI則規(guī)定使用峰峰值分辨率。峰峰值分辨率是指無閃爍位數(shù),計算
    的頭像 發(fā)表于 10-19 15:40 ?4078次閱讀

    AN5324_基于STM32F334單片機嵌入式分辨率定時器實現(xiàn)太陽能轉(zhuǎn)換器

    AN5324_基于STM32F334單片機嵌入式分辨率定時器實現(xiàn)太陽能轉(zhuǎn)換器
    發(fā)表于 11-21 08:11 ?13次下載
    AN5324_基于STM32F334單片機<b class='flag-5'>嵌入式</b>高<b class='flag-5'>分辨率</b>定時器實現(xiàn)太陽能轉(zhuǎn)換器

    如何有效匹配鏡頭分辨率和相機分辨率

    在機器視覺中,分辨率作為衡量鏡頭和相機的重要參數(shù),已被大家熟知。但是,在實際組合應(yīng)用中,大家知不知道要如何有效匹配鏡頭分辨率和相機分辨率呢?
    的頭像 發(fā)表于 01-07 11:56 ?2861次閱讀

    伺服編碼器分辨率越高越快嗎?

    伺服編碼器分辨率指的是編碼器能夠提供的位置或運動信息的精度或精確度,具體表現(xiàn)為編碼器能夠?qū)⑦\動轉(zhuǎn)換為脈沖或位置信號的精細程度。通常以線數(shù)(Lines)或脈沖數(shù)(Pulses)來表示編碼器的分辨
    的頭像 發(fā)表于 03-21 08:43 ?1321次閱讀
    伺服編碼器<b class='flag-5'>分辨率</b>越高越快嗎?

    什么是高分辨率示波器?它有哪些優(yōu)勢?

    分辨率示波器是一種在信息與系統(tǒng)科學(xué)相關(guān)工程與技術(shù)領(lǐng)域中廣泛應(yīng)用的科學(xué)儀器,其設(shè)計旨在提供更高的信號分辨率更精細的信號分析能力。以下是對高分辨率
    的頭像 發(fā)表于 08-08 11:49 ?1338次閱讀