正確な位置を決定するIMU: パート2 – IMUソフトウェアを使用して精度を向上させる方法

著者 Steve Leibson氏

Digi-Keyの北米担当編集者 の提供

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

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

慣性測定ユニット(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)。

磁気センサを360°回転させて結果データを表示したグラフ

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

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

硬化鉄による歪みの影響で発生した磁気データのずれの画像

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

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

軟鉄による歪みの影響で発生した360°磁気データの歪みの画像

図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ソフトウェアを使用することを推奨します。

STMicroelectronicsのX-NUCLEO-IKS01A2拡張ボードの画像

図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)。

MotionFXのデモコードで使用される一連の手順を描写したフローチャートの画像

図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の公式な方針を必ずしも反映するものではありません。

著者について

Steve Leibson氏

Steve Leibson氏は、HPとCadnetixでシステムエンジニアを務め、EDNとMicroprocessor Reportで編集長として活躍し、XilinxとCadenceなどの企業では技術ブロガーを担当しました。また、同氏は、「The Next Wave with Leonard Nimoy」の2つのエピソードで技術専門家を務めました。同氏は、33年間にわたって、高速でかつ信頼性の高い優れたシステムを設計技術者が開発することを支援しています。

出版者について

Digi-Keyの北米担当編集者