MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

ロボットのための慣性計測装置(IMU)入門

目次

Inertial Measurement Unit (IMU)とは?

Inertial Measurement Unit (IMU)は、

角速度と加速度を検出するための

センサ群を一つにまとめたセンサです。

Inertial Navigation Uni: INUや、

Inertial Guidance Unit: IGU

Inertial Rreference Unit: IRUとも

呼ばれることがあります。

 

一般的には、センサの直交する3軸に対して、

3つのジャイロセンサと

3つの加速度センサを取り付けた

ものを1つのセンサとして構成し、

そのようなセンサをIMUと呼ぶことが多いようです。

もしくは、ジャイロや加速度センサの

バイアス誤差を補正するために、

地磁気センサや傾斜センサ、

GPSを取り付ける場合もあります。

 

このIMUセンサは以前は非常に大きいものでしたが、

最近は、それぞれのセンサを小型化する技術

(Micro-Machined Electromechanical Systems:MEMS技術)

が向上したため、

IMUセンサの小型化と軽量化が実現されています。

 

IMUは、ジャイロセンサと加速度センサが搭載されているので、

3軸の角速度と加速度を取得することができます。

また、この値を上手く利用し、計算することで

センサの角度や速度、位置までも計算することができます。

このようにIMUのセンサのみを使って

センサの位置や角度を推定することを慣性航法といいます。

 

ジャイロセンサの原理

本章では、良く使用されるジャイロセンサの

基本的な原理について説明したいと思います。

 

振動ジャイロ(MEMS)の原理

現在、最も一般的なジャイロは、

Micro Electro Mechanical Systems:MEMS技術を使った

振動ジャイロです。

 

このジャイロは、MEMSのシリコン素子を振動させ、

その時にセンサに回転運動が加わると、

シリコン素子にコリオリ力が発生するため、

その力から逆計算をして、角速度を計算するセンサです。

f:id:meison_amsl:20180513171630p:plain

 

MEMSジャイロは下記のような特徴があるため、

現在、非常に広く使われるようになりました。

利点:

  • サイズが小さい

  • 軽量

  • 消費電力が少ない

  • 振動などに強い構造

  • 起動時間が短い

  • 大量生産により、製造コストが低くなる

  • メンテナンスがあまりいらない

  • 対環境性が高い

一方、下記のような欠点もあります。

欠点:

  • 光学式のジャイロと比べて、計測精度が低い

  • 経年劣化がある

近年、MEMSのジャイロの計測性能が向上したことにより、

広く使用されるようになっています。

 

ちなみに、大抵の場合、

ロボットの回転中心とジャイロセンサの測定中心は一致しませんが、

コリオリ力は、回転中心の位置に無関係なので、

問題なく角速度を測定できます。

また、ジャイロセンサに並進の加速度が付加されても、

観測値は影響をうけません。

 

Fiber Optic Gyro(FOG)の原理

Fiber Optic Gyroは下記のように

光ファイバーの中の光が、センサの回転により干渉する現象

(サニャック効果)を検出して、角速度を検出するセンサです。

サニャック効果 - Wikipedia

 

MEMSのセンサと比べて、

計測性能が高いですが、

センサとしてのコストが高いという問題があります。

 

慣性計測装置の名称の意味(IMU, VG, AHRS, GPS/INS)

慣性計測装置は様々な企業で製品化されていますが、

同じセンサを使っていても、それぞれの機能に応じて、

名称を変えていることが多いです。

メーカによりますが、

米国においては下記のような名前で統一されているようです。

 

IMU (Inertial Measurement Unit)

IMUは3軸の加速度計と角速度センサ(ジャイロ)のみで

構成されているセンサです。

下記で説明するストラップダウンによる姿勢情報は出力しないことが多く、

加速度と角速度のみを出力センサをIMUと呼ぶことが多いようです。

VG (vertical gyro)

VGはセンサの構成としては前述のIMUとしては同じですが、

この記事の後半で説明しているストラップダウンという方法で、

重力方向を基準としたロール角とピッチ角を出力します。

 

AHRS (Attitude Heading Reference System)

AHRS(エーハース)はIMUセンサに電子コンパスを搭載し、

VGで出力されるロール角とピッチ角だけでなく、

ヨー角(方位)も出力できるようにしたものです。

電子コンパスとヨー方向のジャイロセンサで、

真北を0度としたセンサの方位を計算するものが多いようです。

GPS/INS

最後に、GPS/INSは前述のAHRSにGPSを加えて、

3次元空間の位置(x,y,z)と姿勢(roll,pitch,yaw)のすべてを出力するシステムです。

前述のAHRSは加速度センサのみしか搭載されていないので、

無理やり位置を計算しても、

位置精度が発散してしまうという問題がありますが、

それをGPSの位置情報で補正することで、

位置をある程度の精度で推定することができます。

名称まとめ

上記をまとめると下記のようになります。

センサ名 ジャイロ 加速度センサ 電子コンパス GPS 角速度出力 加速度出力 ロール角・ピッチ角出力 ヨー角出力 位置出力
IMU
VR
AHRS
GPS/INS

 

ジャイロと加速度センサにおける性能評価項目

市販しているジャイロや加速度計のスペックを見ると、

様々な性能仕様値があります。

ジャイロや加速度計のスペックの内、

代表的なものを下記で説明します。

 

バイアス誤差

バイアス誤差は、

入力が0の時(センサが静止時)に、

出力される値のことです。

実際はセンサは動いていないのに、

出力が出るということは、計測誤差になります。

 

ジャイロの場合は、

このような誤差をドリフト誤差といい、

加速度センサの場合、

このような誤差をバイアス誤差と言うことが多いようです。

ちなみにオフセット誤差は、

センサの電源を入れた時のバイアス誤差のことを言うようです。

 

このバイアス誤差は、

どのような慣性センサにおいても少なからず発生するものであり、

温度変化や振動などにより発生します。

このバイアス誤差は大抵、deg/h(またはdeg/s)という単位で仕様化されます。

これはセンサを静止させた時に、

一時間角速度(or 加速度)を積算した場合の姿勢誤差を表します。

 

現在のMEMSセンサではバイアス誤差が

ジャイロ: 1~10deg/h

加速度センサ: 1-100 μg

であるものが多いようです。

 

直線性(リニアリティ)誤差

f:id:meison_amsl:20151109102530p:plain

スケールファクタ誤差は、

データから最小二乗法で計算した直線に対して、

直線と計測値の最大の差を検出範囲で割った値です。

 

上記の図のように、ジャイロは

ある角速度と出力電力を線形補完して出力しますが、

その近似直線と観測値の最大ずれの値を、

検出範囲で割った値(単位%FS)を性能値として評価します。

例えば、±100deg/sの検出範囲のジャイロで、

最大2deg/sの近似誤差がある場合、

スケールファクタ直線性誤差は、

2 ÷ 200 = 0.01= 1%FS

となります。

この値が良ければ良いほど、

様々な入力角速度を入れた場合でも、

精度が劣化しないことを意味します。

 

スケールファクタ誤差

スケールファクタ誤差(単位%)は、

近似曲線の傾きの振れ幅を表す性能値です。

1%の場合、近似曲線の傾きが1%の幅で変動することを意味します。

 

また、これらのスケールファクタの精度値は%ではなく、

ppm(Parts per million)という単位で表されることもあります。

ppm と % の解説 - 大東医療ガス Daitoh Medical Gas - 埼玉県越谷市で各種ガス販売

このppmは%が100分率である一方、

ppmは100万分率を意味します。

つまり、下記のような変換ができます。

0.0001 % = 1 ppm

 

ランダムノイズ(ホワイトノイズ)

特定の周波数特性を持たない出力値のバラつきを表します。

 

ジャイロにおいては、

このランダムノイズをdeg/hr/√Hzという単位で表すことが多いようです。

これは、ランダムノイズが各周波数によって変化することを意味しており、

√Hzで割ることによって、すべての周波数領域において正規化しています。

 

例えば、ランダムノイズの値が1deg/hr/√Hzのジャイロの場合、

1000Hzの周波数帯域では、

1×√1000=31.6deg/h

1Hzの周波数帯域では、

1×√1 = 1deg/hr

のランダムノイズが発生することを意味します。

 

加えて、

角度のランダムノイズのことをランダムウォークといいます。

角速度のランダムノイズの単位はdeg/hr/√Hzですが、

角度のランダムウォークの単位はdeg/√Hzで表されます。

(角速度を時間積分すると角度になるため)

センサによっては、ランダムウォークの方で性能値を表す場合もありますが、

下記の式で変換することができます。

1deg/√hr = 60 deg/hr/√hr

 

ジャイロ性能の総合的な評価方法であるアラン分散について

前述のように、ジャイロには様々な種類の計測誤差がありますが、

それらの情報を一つのグラフで表現する方法があります。

それがアラン分散です。

 

アラン分散という考え方は、元々周波数安定性を評価するために発明されたのですが、

ジャイロの性能を表すのに便利だったため、ジャイロの性能を表すのに広く使われています。

 

下記の図は、あるジャイロセンサのアラン分散を表したグラフです。

f:id:meison_amsl:20151111174425p:plain

アラン分散は横軸がデータの平均を取る時のサンプリング区間を表しており、

縦軸はサンプリングされたデータによる分散を表しています。

つまり、左に行けば行くほどサンプリング区間が短いため、

瞬間的なデータの分散になります。

前述したジャイロの誤差を考えると、

短い時間ではバイアス誤差は殆ど発生しないため、

グラフの左側の領域の分散値はランダムノイズやスケールファクタ誤差を表します。

 

一方、右側はサンプリング時間が長いため、

沢山のデータの平均を取っていると考えると、

先ほどのランダムノイズなどの誤差の影響は小さくなります。

しかし、長いサンプリング時間を取るとバイアス誤差による影響が大きくなるため、

グラフの右側の分散はバイアス誤差による分散を表しています。

 

上記のアラン分散のグラフを見ると、

左から分散値が下がっているのは、時間平均を取ることによりランダムノイズの影響が小さくなり、

分散の減少が止まって、増大に向かうのは、サンプリング時間が長くなったことで、

バイアス誤差が与える影響が大きくなり分散が大きくなったと考える事ができます。

殆どのジャイロは同じようなアラン分散の形をしているようです。

 

上記のアラン分散のグラフを各ジャイロセンサ同士で比較することにより、

各ジャイロのランダムノイズの影響やバイアス誤差の影響などを

一つのグラフで比較することができます。

 

下記のサイトではジャイロのデータからアラン分散を計算するソフトウェアが公開されています。

Allan Variance Software

 

IMUに使用する三次元幾何学・運動学の基礎知識

IMUは3次元空間での運動や姿勢を観測するものなので、

IMUを使いこなすためには、

3次元空間における幾何学や運動学が重要になります。

そこで、IMUの基本的なロジックに使用する

三次元幾何学・運動学の基礎知識について説明したいと思います。

3次元空間におけるの回転行列 

IMUを使用する場合、

三次元空間におけるベクトルの回転が重要になります。

回転行列の詳しい説明に関しては、下記の記事を参照下さい。

myenigma.hatenablog.com

 

IMU(6軸)センサにおける状態方程式

下記の記事が非常にわかりやすいです。

hamachannel.hatenablog.com

  

IMUによるストラップダウン方式 の姿勢計測

ストラップダウン方式による姿勢計測は、

大きくわけて2つの計測モードで計測されます。

一つ目は姿勢角を初期化するアライメントと、

ジャイロセンサによる姿勢更新を実施するレート積分です。

これらについて簡単に説明します。

 

アライメント(レベリング)

IMUが取り付けられた物体が静止(または定速運動)している時に、

加速度センサや傾斜センサで、姿勢の角度を初期化することを指します。

傾斜センサの場合は、傾斜センサの出力値(またはその時間平均値)をそのまま、

ロール角やピッチ角とすればOKです。

 

一方、加速度センサを使う場合は、

3軸の加速度センサの情報を使えば姿勢を計算できます。

地球上にいる限り、常に物体には重力加速度(9.80665 m / s2)が

地球の中心方向にかかります。

停止中は、IMUにはこの重力加速度のみがかかると仮定できるため、

3軸の加速度センサの値から、重力方向を計算し、

その値からセンサの姿勢(ロール角とピッチ角)を計算することができます。

 

x軸が物体の進行方向と同じ方向に

IMUを取り付けたとすると、

x,y,z軸に沿った加速度値ax,ay,azから、

物体のロール角は下記の式で、

ピッチ角は下記の式で計算することができます。

加速度の生データにはノイズが含まれることが多いため、

大抵は先程の式の結果を時間平均値して、姿勢を求めることが多いようです。

 

上記の方法で、停止時のロール角とピッチ角は計算できますが、

ヨー角(方位角)は加速度センサでは初期化出来ません。

大抵は磁気コンパスや、2GPSにより方位を初期化することが多いですが、

実は、IMUのジャイロのみを使用して方位角を推定することができます。

それがジャイロコンパスです。

 

ジャイロコンパスは、地球の自転を観測することにより、

センサの方位を計算する手法です。

センサが真北を0度として、θの角度を向いている時、

地球の自転と公転によるロール角速度(x軸)とピッチ角速度(y軸)、ヨー角速度(z軸)は、

下記の式で表されます。

ここで、Ωは地球の自転 (15deg/h)と公転 (0.04deg/h)を加えた

Ω=15.04deg/hを意味します。

またλはセンサの緯度です。

上記の計算式から、下記の式で方位を計算することができます。

また、一定速度で回転することができれば、ωxやωyの変化の極値を取ることで方位を計算することもできます。

 

しかし、上記のジャイロコンパスを使って方位を求めるためには、

15.04deg/h = 0.00417deg/sであることから、

0.001deg/s以下の分解能と精度を持つジャイロでなくては、

方位を計算することは難しいという問題もあります。

 

レート積分

前述した加速度計を使った姿勢推定や、

傾斜計を使った姿勢推定は、

加速度が無い静止状態か等速運動をしている時以外は

精密に姿勢を求めることができません。

なぜなら両方とも重力加速度以外の加速度は無いことを仮定しているからです。

もし、物体が加速している場合には、

これらの姿勢推定の結果は精度が悪いものになってしまいます。

 

そこで静止状態以外では、

各軸のジャイロによる角速度を積分することで、

姿勢を推定するのが一般的です。

これをレート積分といいます。

 

下記のように角速度情報を離散積分して角度を推定します。

 

上記のレート積分はジャイロの誤差が積算してしまうので、

適度にセンサが停止した際に、前述の方法でアライメントを実施し、

姿勢情報を補正する必要があります。

 

カルマンフィルタのアルゴリズム

一般的に上記のIMUのストラップダウンなどの計算を

安定的に行うためには、カルマンフィルタが利用されます。

カルマンフィルタの詳細については下記の記事を参照下さい。

myenigma.hatenablog.com

 

その他のロボティクスアルゴリズムのサンプルコードや関連資料

その他のロボティクス関連のアルゴリズムについては、

下記のリポジトリにいくつかサンプルコードを置いているので、

こちらを参照下さい。

github.com

github.com

 

また、その他ロボティクスに関連する資料は下記を参照下さい。

myenigma.hatenablog.com

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com