マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > 正確な位置を決定する慣性測定ユニット(IMU):IMUソフトウェアを使用して精度を向上させる方法

正確な位置を決定する慣性測定ユニット(IMU):IMUソフトウェアを使用して精度を向上させる方法 

著者 Steve Leibson 氏
Digi-Keyの北米担当編集者 提供
2019-01-24
マルツ掲載日:2019-04-29

 さまざまな組み込みシステムでは場所/位置および方位を追跡する必要がありますが、設計者は多くの場合、最初に全地球航法衛星システム(GNSS)を拠り所にします。ただし、いくつかの理由により、常にGPSを使用して位置および方位情報を取得できるわけではありません。その1つは、電力消費です。

 GPSシステムは、著しい量の電力を消費します。多くの組み込みシステム(特に電池駆動システム)は、GPSによる測位を常に維持するのに必要な電力バジェットに対応できません。さらに、GPSには信号の妨害や更新レートの遅さという問題もあります。1mという精度もアプリケーションによっては十分とは言えない可能性があります。

 慣性測定ユニット(IMU)を使用してGNSS位置データを補完することにより、これらの問題を克服できます。

 過去のIMU関連記事では、MEMS技術に基づく比較的安価なIMUを使用した位置と方位の決定について説明しました(「GPSでは不十分な場合にIMUを使用して正確な位置データを取得する方法」を参照)。ただし、IMUセンサのデータだけでは絶対位置を提供できません。GNSSレシーバは単に位置データを提供するだけですが、センサフィルタリング、融合、および二重積分を使用してIMUの相対モーションデータを絶対位置/方位に変換するには、膨大な量のソフトウェアが必要です。

 この記事では、IMUを組み込みで使用、各種IMUセンサから得られるデータの誤差の原因、IMUセンサから正確な位置/方位情報を計算するのに必要なソフトウェアについて説明します。さらに、この記事では、STMicroelectronicsのMotionFXライブラリと、このソフトウェアを使用して組み込みシステム内でIMUセンサデータを位置/方位に変換する方法について説明します。

IMUによるGNSSレシーバの補完方法

 GNSSには4つの問題点があります。

(1) GNSS信号は指向性が強く、建物によって簡単に妨害されます。したがって、屋内や都市部のコンクリートに囲まれた谷間では、GNSSの動作に問題が生じやすくなります。
(2) GNSSレシーバには、数十秒以上の単位で測定されるウォームスタートおよびコールドスタート時間があります。たとえば、省エネなどの理由でGNSSレシーバが連続動作していない場合は、新たに位置を読み取るたびに数秒かかります。
(3) GNSSの位置更新レートは、1秒に1回までに制限されます。この更新レートは、迅速な動作が関係する組み込みアプリケーションにとって十分な頻度ではありません。これらのアプリケーションは、バーチャルリアリティからマテリアルハンドリングおよびロボティクスに至るまでの広い範囲にわたっています。
(4) GNSS精度は、メートル単位で測定されます。そのような分解能では、粗すぎて多くの組み込みアプリケーションには使用できません。

 IMUは、多くの組み込みアプリケーションに求められる、より精密な位置決め分解能と、より高速の更新レートを実現します。また、GNSSレシーバからの絶対位置決め情報とは対照的に、IMUは既知の開始点からの相対位置データを提供します。これにより、2種類の位置センサが相互に補完できます。これらの特性により、IMUはGNSSレシーバから直接取得した位置決め情報を補完するときに非常に役立ちます(「GNSSモジュールを使用した位置追跡システムの迅速な設計」を参照)。

 IMUは、航空宇宙産業で数十年にもわたって活用されてきました。ただし、これらの高精度の航空宇宙用IMUは、高価なジャイロスコープや他の大型センサが基盤となっているため、コストが重視されるシステムへの応用は困難です。

 最新の電子IMUは高度に統合され、MEMS技術に基づいて複数のセンサ(加速度センサ、ジャイロスコープ、磁気センサ)を組み合わせることができるため、小型かつ軽量でしかも比較的堅牢になっています。これらの新世代IMUは基板実装可能なコンポーネントとして入手できるため、組み込みアプリケーションに理想的と言えます。

 IMUは、自由度(DOF)という点でもさまざまな機能を備えています。GNSSレシーバとは対照的に、IMUは位置データを取得するときに無線信号に依存しません。IMUは消費電力も少なく、広範な分解能と精度の仕様とともにさまざまな供給元から利用可能です。

 このような特性を備えたIMUを使用して、GNSSレシーバモジュールからの位置決め情報を補完することができます(「GNSSモジュールを使用した位置追跡システムの迅速な設計」を参照)。ただし、これにはIMUセンサデータのフィルタリング、IMU内の各種センサからのデータの融合、および二重積分を使用した融合センサデータからの位置計算のために膨大な量のソフトウェアが欠かせません。

IMU誤差の原因

 センサの組み合わせによる精度の向上は、慣性航法システムで加速度センサとジャイロスコープが広範囲に使用される航空宇宙産業で、長年にわたり一般的に行われてきたことです。これらのシステムでは、ジャイロスコープが角速度の変化を通じて方向をセンスしますが、変化をセンスするだけで固定されたリファレンスフレームがないため、経時的にドリフトする傾向があります。加速度センサデータをジャイロスコープデータに追加することにより、ジャイロスコープのバイアスを最小限に抑え、より高精度の位置予測を実現できます。加速度センサは重力に対する方向の変化をセンスし、そのデータを使用してジャイロスコープを方向付けることができます。

 加速度センサの精度は、動的計算よりも静的計算のほうで優れています。ジャイロスコープは、システムがすでに動作しているときの方向検出に優れています。加速度センサは素早く反応するため、データを単独で使用すると加速度センサのジッタとノイズにより誤差が蓄積されます。さらに、加速度センサには重力などの外力により加速度が歪む傾向があり、これもシステム内でノイズとして蓄積されます。

 ジャイロスコープの長期的な精度と加速度センサの短期的な精度を組み合わせることにより、各センサの長所によって他方のセンサの短所が相殺されるか少なくとも軽減され、さらに高精度の方向読み取りが実現します。2つのセンサタイプが互いに補完し合います。

誤差の軽減に必要なフィルタリングの融合

 IMUソフトウェアは、フィルタを使用してIMUデータの位置決め誤差を最小化します。センサデータを融合するためのフィルタリング方法はいくつかありますが、それぞれ複雑さの程度が異なっています。

 相補的フィルタは、複数センサからのデータを結合するシンプルな方法です。相補的フィルタは、ハイパスのジャイロスコープフィルタとローパスの加速度センサフィルタを組み合わせた線形関数です。これにより、加速度センサデータ内の高周波数ノイズは短時間で除去され、ジャイロスコープデータにより平滑化されます。

 相補的フィルタは計算の観点ではシンプルですが、IMU用途ではカルマンフィルタなどの、より高い精度を達成できる複雑な技術のほうが好まれるようになっています。カルマンフィルタは、高精度の位置決めシステムの作成に多くの処理能力を必要としないため、非常に好評を得ている再帰的センサ融合アルゴリズムです。

 カルマンフィルタには、標準カルマンフィルタ、拡張カルマンフィルタ(EKF)、Unscented Kalman Filter(UKF)などのさまざまなタイプがあります。

 カルマンフィルタは、フィルタリングされたデータがガウス分布の形を取るという前提に基づいて複数の数学的方程式を使用し、値を予測します。このガウス分布に対して、フィルタは線形方程式を適用します。ただし、実際のモーションは、カルマンフィルタの前提ほどすっきりとはしていません。実際のモーションは非線形の正弦関数および余弦関数が関係することが多い方程式に従うため、EKFはテイラー級数およびガウス分布の単一点近似値を採用して、非線形関数を線形化します。これらの近似値は重大な誤差の原因になり得ます。

 UKFは、決定論的サンプリングアプローチを使用することにより、この誤差の問題に対処しています。このアプローチでは、EKFが使用する単一点近似値ではなく、予想されるデータのガウス分布を代表するために注意深く選ばれた標本点のセットを生成します。これらの標本点は、予想ガウス値の真の平均および共分散を完全にキャプチャすることにより、より正確なフィルタリングを実現します。

磁気センサによる誤差の原因

 一般的なIMUには、3種類の異なるセンサ(角速度を測定するジャイロスコープ、直線加速度を測定する加速度センサ、磁界強度を測定する磁気センサ)が含まれています。より具体的には、IMUの磁気センサは地球の磁界強度を測定して、地球の磁北を基準にした相対的な方位を決定します。ナビゲーションアプリケーション用に設計されたIMUには、3本の直交運動軸に対応するために、通常3種類のセンサすべてが搭載されています。

 ただし、磁気センサには硬化鉄や軟鉄による歪みの影響を受けやすい性質があります。外部磁気の影響による地球の磁界の歪みは、一般に硬化鉄または軟鉄の影響として分類されます。歪みの影響がない場合、磁気センサを360°回転させて結果データを表示すると、データは(0、0)を中心とする円を形成します(図1)。



図1:周辺の鉄が引き起こす局所的な磁界の歪みがない場合、磁気センサを360°回転させて結果データを表示すると、データは(0、0)を中心とする円を形成します。(画像提供:sensorsmag.com)

 硬化鉄または軟鉄の影響により、円が歪む場合があります。硬化鉄の影響により、中心位置(0、0)からのずれが発生します(図2)。



図2:硬化鉄による歪みの影響により、磁気データが中心位置(0、0)からずれます。(画像提供:sensorsmag.com)

 軟鉄の影響により、円が変形して楕円になります(図3)。



図3:軟鉄による歪みの影響で、360°磁気データが歪み、円から楕円へと変形します。(画像提供:sensorsmag.com)

 硬化鉄と軟鉄による影響は、いずれも同時に発生する場合があることに注意してください。軟鉄による歪みを補償するための計算は、硬化鉄による歪みの補償に必要な計算よりも計算集約型です。したがって、軟鉄の材料をIMUの磁気センサから遠ざけるだけでも、効率性と費用効果が向上します。ただし、多くの場合は選択の余地がないため、補償の計算が必要になります。

積分してからさらに積分する

 最後に、加速度センサとジャイロスコープは物体に加わる加速力(直線および回転)に関する情報しか提供しないため、そのデータを二重積分して位置を生成する必要があります。これは、加速とは物体の速度の変化率であり、速度とは物体の位置の変化率だからです。つまり、IMUのジャイロスコープと加速度センサのデータは、物体の絶対位置についての二階微分になります。

 二重積分だけでもかなり多くの処理が必要ですが、3D位置決めの場合は重力による加速効果をヌルアウトする必要もあります。重力は加速度センサから見ると定常的な加速のようなもので、データ内にずれを生じさせます。通常は、IMUおよびIMUを搭載した物体の静止中に、システムに対して重力の加速効果を較正する必要があります。

 サンプリングの誤差により、この二重積分でも誤差が発生することに注意してください。サンプルレートが遅いほど、誤差も大きくなります。

IMUソフトウェアの設計に関する考慮事項

 このようなアルゴリズムを実際のIMUソフトウェアに実装する場合は、次の手順と推奨事項を考慮してください。

・IMUセンサ信号はノイズフリーではないため、デジタルフィルタが必要になります。一般に、ある種のカルマンフィルタがIMUアプリケーションで使用されます。
・フィルタリングにおいても、IMUに関連した機械ノイズ、前述の硬化鉄および軟鉄による歪みなど、さらに誤差の原因になるものが存在します。こうしたノイズはフィルタで除去するか、データから削除する必要があります。
・アプリケーションの起動時には、IMUの静止中に実行される較正ルーチンが必要です。これは、可能な限り精度を向上させるには、物体の静止中にソフトウェアがセンサの読み取り内容を把握する必要があるからです。動作中の物体の真の加速度値は、加速度センサから取得した現在のサンプルから較正値を減算したものです。
・較正後に、センサ値は正または負のどちらかになります。したがって、これらの値を保持する変数を使用する必要があります。
・センサデータ用のサンプリング周波数を高速化することにより、さらに正確な結果が生成されます。ただし、サンプルを増やすと、より多くのコスト、より厳密なタイミング要件だけでなく、ハードウェアに関する他の考慮事項も必要になる可能性があります。
・サンプリング期間は完全に同じにする必要があります。サンプリング期間が一致しないと、データ誤差の原因になります。
・サンプル間(補間)の線形データ近似値はさらに正確な結果を生成しますが、処理時間がさらに長くなります。

 上記の説明により、IMUデータから方位、位置、モーションを決定するのに必要な計算が決して単純でないことは明らかです。したがって、多くの場合、IMUベンダーは自社の製品用にこれらの計算を実行するためのソフトウェアアプリケーションパッケージを提供しています。たとえば、STMicroelectronicsは、IMU機能を対象として同社のダウンロード可能なX-CUBE-MEMS1ソフトウェアの機能を拡張するMotionFXライブラリを開発しました。

 このライブラリ内のソフトウェアは、加速度センサ、ジャイロスコープ、および磁気センサからデータを取得し、IMUを含むSTMicroelectronicsのMEMSセンサ用にリアルタイムのモーションセンサデータ融合を提供します。MotionFXフィルタリングおよび予測ソフトウェアは、高度なアルゴリズムを使用して、環境条件にかかわりなく複数のMEMSセンサからの出力をインテリジェントに統合します。このライブラリはSTMicroelectronicsのMEMS IMU専用に設計されているため、他のベンダーのIMUを使用した場合は、ソフトウェアの機能と性能が保証されません。

 MotionFXライブラリは、Arm Cortex-M0+、Cortex-M3、およびCortex-M4プロセッサコアに基づくさまざまなSTMicroelectronicsのマイクロコントローラ上で動作します。STMicroelectronicsのX-NUCLEO-IKS01A2拡張ボード(図4)を、以下のボードに実装した場合のサンプルが入手可能です。

・Arm Cortex-M4コア内蔵のSTM32F4 MCUベースのNUCLEO-F401RE開発ボード
・Arm Cortex-M4コア内蔵のSTM32L4 MCUベースのNUCLEO-L476RG開発ボード
・Arm Cortex-M3コア内蔵のSTM32L1 MCUベースのNUCLEO-L152RE開発ボード
・Arm Cortex-M0+コア内蔵のSTM32L0 MCUベースのNUCLEO-L073RZ開発ボード

 STMicroelectronicsのMotionFXライブラリは、IMUの加速度センサ、ジャイロスコープ、および磁気センサから取得したデータを管理および融合します。ライブラリは、以下のルーチンを提供します。

・リアルタイム、9軸、モーションセンサデータ融合(加速度センサ、ジャイロスコープ、磁気センサ)
・リアルタイム、6軸、モーションセンサデータ融合(加速度センサ、ジャイロスコープ)
・回転、4元数、重力、および直線加速度データの計算
・ジャイロスコープバイアスの較正
・磁気センサの硬化鉄の較正

 STMicroelectronicsは、100Hzのセンサデータサンプリング周波数でMotionFXソフトウェアを使用することを推奨しています。


図4:STMicroelectronicsのX-NUCLEO-IKS01A2拡張ボードは、同社のIMU用MotionFXソフトウェアでサポートされています。(画像提供:STMicroelectronics)

 MotionFXライブラリは、空間内の3D方向を予測するセンサ融合アルゴリズムを実装します。MotionFXライブラリは、複数のセンサからのデータをフィルタリングおよび融合し、IMUの個々のセンサの制限を補償します。

 リスト1は、STMicroelectronicsのIMUを稼働させるのに何が必要かを示すデモコードです。

[…]#define VERSION_STR_LENG 35
#define MFX_DELTATIME 10
[…]/*** Initialization ***/
char lib_version[VERSION_STR_LENG];
char acc_orientation[3];
MFX_knobs_t iKnobs;
/* Sensor Fusion API initialization function */
MotionFX_initialize();
/* Optional: Get version */
MotionFX_GetLibVersion(lib_version);
MotionFX_getKnobs(&iKnobs);
/* Modify knobs settings */
MotionFX_setKnobs(&iKnobs);
/* Enable 9-axis sensor fusion */
MotionFX_enable_9X(MFX_ENGINE_ENABLE);
[…]/*** Using Sensor Fusion algorithm ***/
Timer_OR_DataRate_Interrupt_Handler()
{
MFX_input_t data_in;
MFX_output_t data_out;
/* Get acceleration X/Y/Z in g */
MEMS_Read_AccValue(data_in.acc[0], data_in.acc[1], data_in.acc[2]);
/* Get angular rate X/Y/Z in dps */
MEMS_Read_GyroValue(data_in.gyro[0], data_in.gyro[1], data_in.gyro[2]);
/* Get magnetic field X/Y/Z in uT/50 */
MEMS_Read_MagValue(data_in.mag[0], data_in.mag[1], &data_in.mag[2]);
/* Run Sensor Fusion algorithm */
MotionFX_propagate(&data_out, &data_in, MFX_DELTATIME);
MotionFX_update(&data_out, &data_in, MFX_DELTATIME, NULL);
}
リスト1:デモコードは、MotionFXライブラリを使用して、同社のX-NUCLEO-IKS01A2拡張ボード上のIMUコンポーネントから情報を抽出する方法を示しています。(コード提供: STMicroelectronics)

 デモソフトウェアのフローチャートも示されています(図5)。



図5:このフローチャートは、STMicroelectronicsのX-NUCLEO-IKS01A2拡張ボードからデータを抽出して3D空間の方向へと融合させるために、リスト1のMotionFXのデモコードで使用される一連の手順を描写しています。(画像提供:STMicroelectronics)

 ジャイロスコープのデータは、ドリフトにより3D空間方向の予測機能を低下させる場合があることに注意してください。MotionFXソフトウェアは、絶対方向情報を提供する磁気センサデータを使用することにより、この劣化を補償できます。また、磁気センサは方位データを高速では生成せず、磁気の乱れの影響を受けます。ただし、ジャイロスコープのデータにより、これらの磁気センサの弱点を補償できます。

 MotionFXソフトウェアの9軸センサ融合計算は、加速度センサ、ジャイロスコープ、および磁気センサのデータを使用して、方位(磁北に対する相対的方位)を含む3D空間の絶対方向を提供します。

 MotionFXソフトウェアの6軸センサ融合計算は、加速度センサとジャイロスコープのデータだけを使用します。この動作レベルに必要な計算的要件は低く、絶対方向に関する情報は提供されません。ただし、ルーチンの実行は9軸ルーチンよりも高速です。6軸センサ融合は、ゲーミングや固定ロボットなどの場合の高速移動の測定に適しており、絶対方向が必要でない場合にも使用できます。

結論

 IMUは、位置および方位情報を自己提供する組み込みアプリケーションで高い有用性を発揮します。IMUは、さらに高い精度や更新レートが必要なときにGNSSレシーバ情報を補完するために使用した場合も役立ちます。ただし、IMUを組み込みシステムに統合するには膨大な量のソフトウェアが必要なため、IMUプロバイダがこれらのデバイスの実際の用途に役立つソフトウェアを高頻度で供給しています。


免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
   


Digi-Key社の全製品は 1個からマルツオンラインで購入できます


※製品カテゴリー総一覧はこちら



ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】

毎月一定額をご購入予定のお客様や、量産部品としてご検討されているお客様には、マルツ特別価格にてDigi-Key社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。


ページトップへ