IMUとセンサーフュージョン入門——加速度・ジャイロ・地磁気を統合して姿勢推定する仕組み(相補フィルタから拡張カルマンフィルタまで)
はじめに——スマホはどうやって「自分の傾き」を知っているのか
スマートフォンの画面が端末の傾きに合わせて自動で回転する。ドローンが風に煽られても水平を保ち続ける。ロボット掃除機が自分の向いている方角を把握しながら部屋を走る。これらの裏には、共通する小さなセンサの働きがあります。それがIMU(Inertial Measurement Unit:慣性計測ユニット)です(本記事では、厳密にはIMU=加速度計+ジャイロ、磁力計を加えたものは9軸IMU/MARGと区別して扱います。詳しくは次節)。
しかし、ここで不思議に思いませんか。スマホの中の加速度計は「どちらが下か」しか分からず、ジャイロスコープは「今どれだけ回っているか」しか測れない。どちらの単体データからも「端末が今、世界の中でどの方向を向いているか(姿勢)」は直接得られないのです。それを可能にするのがセンサーフュージョン——複数センサの情報を統合して、どの単一センサよりも優れた推定値を導く技術です。
本記事では、これら3種類のセンサ(加速度計・ジャイロスコープ・磁力計)の原理から、相補フィルタ、Madgwick/Mahonyフィルタ、拡張カルマンフィルタ(EKF)まで、姿勢推定アルゴリズムの全体像を体系的に解説します。読み終える頃には、「どの用途でどのアルゴリズムを選ぶべきか」を自分で判断できるようになります。
なお、本記事はエッジAIの潮流とも深く関わります。エッジデバイスでリアルタイムにセンサ処理を行うアーキテクチャについては、2026年のローカルLLM・エッジAI最新トレンドもあわせてご覧ください。
IMUとは何か?——加速度計・ジャイロ・磁力計、3つのセンサがそれぞれ見ている世界
スマホの画面回転、ドローンの姿勢保持、ゲームコントローラのモーション操作——これらを支えているのがIMU(Inertial Measurement Unit:慣性計測ユニット)です。厳密に言うと、IMUの中核は「加速度計」と「ジャイロスコープ」の2センサ(この構成を6軸IMUと呼びます)です。ここに「磁力計」を加えた3センサ構成は、一般に9軸IMUやMARG(Magnetic, Angular Rate, and Gravity)、あるいはセンサフュージョン込みならAHRS(Attitude and Heading Reference System)と呼ばれて区別されます。近年はMEMS(Micro Electro Mechanical Systems)技術の進化により、数mm角のシリコンチップの中に機械的な可動部を微細加工で作り込み、これらを低価格で実現できるようになりました。
まず加速度計です。これは「今、どの方向にどれだけの力がかかっているか」を検出します。MEMS加速度計の内部には微小なおもり(ムービングマス)がバネで支えられた構造があり、加速が生じるとおもりが変位し、その変位を静電容量の変化として電気信号に変換します。ポイントは、静止している状態でも地球の重力(約9.8 m/s²)を感じ取れることです。つまり「下方向」が分かるため、デバイスがどれだけ傾いているかを静的に知る手がかりになります。ただし、等速直線運動と静止の区別はできませんし、振動や衝撃のノイズにも弱いという弱点を抱えています。
次にジャイロスコープ(角速度センサ)です。MEMSジャイロは「コリオリ力」を利用します。チップ内部で振動する微小な質量体に回転が加わると、振動面に垂直な方向へ力が発生します。この力による変位を検出することで、「今、1秒あたり何度の速さで回転しているか」という角速度を測定します。ジャイロの優れた点は、瞬間的な角速度の変化を高感度に捉えられることです(ただしMEMSジャイロも振動・衝撃・g感度・温度の影響を受けます。あくまで加速度計との相対的な特性差として理解してください)。ただし測定するのはあくまで「角速度」であり、姿勢(角度)そのものではありません。角度を得るには角速度を積分する必要があり、センサの出力にはわずかなバイアス誤差が含まれるため、積分誤差が時間とともに蓄積していく「ドリフト」が避けられません。
3つ目が磁力計(地磁気センサ)です。地球は巨大な磁石であり、磁力計はホール素子やMR素子(磁気抵抗素子)を用いて地磁気の3軸成分を測定します。コンパスと同じ原理で、地磁気の向きから「北」の方向、すなわちヨー軸(水平面内の回転)の絶対的な基準を得られます。これは加速度計やジャイロでは原理的に代替できません。ただし、周囲の鉄骨・磁石・モーター・スピーカーなどによる磁気歪み(ソフト・ハードアイアン歪み)に敏感で、屋内環境では大きく狂うことがあります。
この3センサの組み合わせ方には2つの代表的な構成があります。「6軸IMU」は加速度計+ジャイロスコープの構成で、姿勢推定の主力ですが、ヨー角の絶対基準を持たないため時間とともにヨーの基準がずれる可能性があります。一方「9軸IMU」(MARG:Magnetic, Angular Rate, and Gravity)は磁力計を加えた構成で、ヨー軸にも絶対基準を与えられます。センサごとに長所と弱点が異なるからこそ、次節以降で解説する「センサーフュージョン」——複数センサの情報を統合して長所を引き出し、弱点を補い合う技術——が不可欠になるのです。
以下の図は、9軸IMUにおける各センサの構成と、姿勢推定へ至るデータフローの全体像を示したものです。
flowchart LR
subgraph IMU["9軸IMU(MARG)"]
A["加速度計<br/>3軸:重力方向を検出"]
G["ジャイロスコープ<br/>3軸:角速度を検出"]
M["磁力計<br/>3軸:地磁気で北を検出"]
end
A -->|"傾きの絶対基準<br/>(静的だがノイズ大)"| F
G -->|"高応答の角速度<br/>(ドリフトあり)"| F
M -->|"ヨー軸の絶対基準<br/>(磁気歪みに弱い)"| F
F["センサーフュージョン<br/>相補 / Madgwick / Mahony / EKF"]
F --> O["姿勢推定出力<br/>ロール・ピッチ・ヨー(クォータニオン)"]
O --> APP["応用先<br/>ドローン / ロボット / ウェアラブル / 自動運転"]
要するに、加速度計は「重力から見た傾き」、ジャイロは「回転の速さ」、磁力計は「北の向き」と、それぞれ異なる情報を見ています。3つの視点を統合することで、単独では得られない安定した姿勢推定が実現します。次の節では、なぜ1つのセンサでは姿勢推定が完結しないのか、その理由を詳しく掘り下げます。
なぜ1つのセンサでは姿勢を推定できないのか?——ドリフトとノイズのトレードオフ
各センサの弱点を整理すると、次の表のようになります。
| センサ | 得られる情報 | 長所 | 弱点 |
|---|---|---|---|
| 加速度計 | 重力方向(ロール・ピッチ) | ドリフトしない絶対参照 | 振動・衝撃でノイズ大 |
| ジャイロスコープ | 角速度 | 短時間の角速度変化に高応答(振動・温度の影響は受ける) | 積分でドリフトが累積 |
| 磁力計 | ヨー(方位) | 絶対方位が分かる | 磁気歪み・局所磁場の影響 |
ジャイロだけに頼れば、数秒〜数分で推定姿勢が実際から大きくずれてしまいます。かといって加速度計だけでは、ドローンのプロペラ振動やロボットの加減速が重力と区別できず、姿勢が暴れます。
ここで重要な観察は、誤差の性質が周波数領域で補完的だということです。ジャイロの積分値は短時間(高周波)では正確で、長時間(低周波)ではずれる。加速度計は逆に、短時間の変動にはノイズだらけでも、長時間平均すれば正確な重力方向を示します。この補完性こそが、次節のフュージョンアルゴリズムの出発点です。
センサーフュージョンの基本idea——相補フィルタはなぜ動くのか
相補フィルタ(Complementary Filter)は、前節の「周波数領域で補完的」という性質を最も素直に実装したアルゴリズムです。高周波成分はジャイロの積分を、低周波成分は加速度計(と磁力計)からの絶対参照を採用します。
まず、理解しやすいロール・ピッチなどの単一角度θで書くと1行で済みます(オイラー角ごとに独立適用する簡略化モデル。クォータニオンで実装する場合は四元数積・正規化・誤差姿勢による補正が必要です。詳細は参考文献2を参照):
θ_hat = α × (θ_hat + ω・Δt) + (1 − α) × θ_accel
θ_hat + ω・Δt: 前回の角度にジャイロ角速度の積分を加えた予測値(高周波側)θ_accel: 加速度計・磁力計から直接求めた角度(低周波側)α(0.95程度が典型的): ジャイロをどれだけ信頼するかのゲイン
擬似コードにすると、これだけです:
angle = alpha * (angle + gyro_rate * dt) + (1 - alpha) * accel_angle
直感的には「速い動きはジャイロに任せ、ゆっくりした平均方向は重力計に任せる」ハイパス+ローパスの組み合わせであり、その意味で「相補(complementary)」と呼ばれます。理論的には、カルマンフィルタの定常ゲインを固定値にした近似とみなすこともできます。
ArduinoやESP32のようなマイコンでも余裕で動く計算量であり、姿勢推定に入門する最初の一歩として最適です。
Madgwickフィルタ/Mahonyフィルタ——組込み用途の二大定番はどう違うのか
相補フィルタを理論的に精緻化したものが、MadgwickフィルタとMahonyフィルタです。どちらも2008〜2011年頃の論文発表以降、ドローン・ロボット・ウェアラブルなど組込み分野の定番となっています(原論文・実装は参考文献5〜6を参照)。
Madgwickフィルタ(2010)は、姿勢をクォータニオン(四元数)で表現し、ジャイロ角速度による予測に加えて、「加速度計・磁力計の観測方向」と「推定姿勢から予測される方向」の誤差が最小になるよう勾配降下法で反復補正する構造です。調整パラメータは実質βゲイン1つ(ジャイロの測定ノイズを表す意味を持ちます)で、比較的低いサンプルレートでも良好な精度が得られることが報告されています。オープンソース実装が広く流通し、Arduinoライブラリとしても入手可能です(参考文献9〜10)。
Mahonyフィルタ(2008)は、姿勢誤差を比例・積分(PI)フィードバックで補正する明示的な制御器構造を持ちます。比例項が姿勢誤差を即座に修正し、積分項がジャイロバイアスの推定を兼ねます。パラメータはKp・Kiの2つで、機体の物理特性に合わせたチューニングがしやすい構造です。ドローンの姿勢制御系での採用例が多く、オープンソースのPX4にもMahony系フィルタが実装されています(参考文献15)。
両者の共通点は、(1)クォータニオン表現によりオイラー角の特異点(ジンバルロック)を回避できる、(2)EKFと比べて計算量が大幅に軽くマイコンでのリアルタイム動作に向く、の2点です。ドローンのように「高速で回転し、振動が大きい」環境では、まずこの2つのどちらかを試すのが実務的な定石です。
拡張カルマンフィルタ(EKF)はいつ選ぶべき?——精度と計算コストのトレードオフ
相補フィルタやMadgwickフィルタは手軽ですが、多次元の状態や外部センサの情報を本格的に統合するには限界があります。そこで登場するのが拡張カルマンフィルタ(EKF)です。
EKFの基本構造は「予測」と「更新」の2ステップに集約されます。予測ステップではジャイロの角速度を使って姿勢を力学モデルに基づき前進させ、更新ステップでは加速度計・地磁気などの観測値と予測値の差(残差)を使って推定を補正します。ここで特徴的なのが、各センサのノイズを「ノイズ共分散行列」として明示的にモデリングする点です。信頼できるセンサには大きな重みを、ノイズの多いセンサには小さな重みを、理論的に与えられるのがEKFの強みです。
さらに、EKFでは状態ベクトルを拡張できます。代表的なのがジャイロバイアスを状態に含める構成です。相補フィルタやMadgwickフィルタではドリフトを「外から補正する」だけですが、EKFはバイアスそのものを推定対象にできるため、温度変化によるドリフト変動にも追従できます。GPS速度や気圧高度計など、他のセンサとの統合も自然に記述できる点は大きな魅力です。
一方でコストも無視できません。姿勢は回転という非線形系なので、EKFはヤコビ行列の計算と小行列の積・逆行列演算を毎サンプル実行します。60Hzなら軽微でも、1kHz制御のドローンでは小規模マイコンにとって厳しい負荷になることがあります。また、ノイズ共分散Q・Rのチューニングは「暗黙の職人芸」になりやすく、不適切な値を設定すると発散することもあります。さらに非線形性が強い場面では、線形化の誤差により推定が崩れるリスクも抱えています。
では、いつEKFを選ぶべきか。指針はシンプルです。
- 相補フィルタ: 学習・試作・制御周期が緩い用途。まずはここから。
- Madgwick/Mahonyフィルタ: マイコン1個で高精度な姿勢だけ欲しい場合。実用ドローンやウェアラブルの定番。
- EKF: GPS・気圧計など複数センサやバイアスを状態として扱う必要がある場合の有力な候補。自動運転やロボットのナビゲーションで採用例が多い。
4手法を比較すると次のようになります。
| 手法 | 計算負荷 | 精度 | 調整項目 | 適用分野 |
|---|---|---|---|---|
| 相補フィルタ | 極小(数行で実装可) | 低〜中(調整次第) | 係数αの1つ | 学習・試作・簡易姿勢表示 |
| Madgwickフィルタ | 小 | 中〜高(低サンプルレートでも良好) | βの1つ | ドローン・ウェアラブル・ヒューマンモーション計測 |
| Mahonyフィルタ | 小 | 中〜高 | Kp・Ki(PIゲイン) | 組み込み姿勢推定・フライトコントローラ |
| 拡張カルマンフィルタ(EKF) | 大(行列演算が必要) | 高(センサ統合で最大化) | ノイズ共分散Q・R、状態設計 | 自動運転・ロボット・GPS/IMU統合ナビゲーション |
つまりEKFは「重く、調整が難しい一方で、複数センサ統合に最も柔軟」な選択肢です(精度はセンサ構成・モデル・チューニング次第で、EKFが常に最高精度とは限りません)。プロジェクトの要求精度・計算資源・チューニング体制を見極めたうえで選択するのが賢明です。まずは軽量なフィルタで土台を作り、精度の壁にぶつかったらEKFへ進む——この段階的なアプローチが実務上の近道といえるでしょう。
ROS 2と実世界での使い方——ドローン・自動運転・ロボットでの姿勢推定
理論を理解したら、次は実際のロボット開発環境でIMUを動かしてみましょう。ロボットOSSの事実上の標準であるROS 2には、姿勢推定まわりの豊富なパッケージが揃っており、センサーフュージョンを「車輪の再発明」なしに試せます。
ROS 2での実践フロー
典型的な開発の流れは「ドライバ→キャリブレーション→フィルタ→可視化」の4ステップです。
- ドライバ(センサデータの取得): IMUハードウェアに対応したROS 2ドライバでデータを
/imu/dataなどのトピックとして配信します。チップごとの対応状況はROSディストリビューションやメンテナンス状況によって変わるため、ROS Index(参考文献13・14)で自分のボードに対応するドライバの公式リポジトリを確認してください。 - キャリブレーション(誤差の把握): ジャイロのバイアス(静止時にゼロでない出力)や加速度計のスケール誤差、地磁気のハードアイロン/ソフトアイロン補正を測定して設定します。
imu_calibration系ツールや、静止状態での平均値測定だけでも大幅に精度が変わります。特に磁気センサは金属やモーター近傍の磁気歪みの影響が大きいため、設置場所でのキャリブレーションが不可欠です。 - フィルタ(センサーフュージョン):
imu_filter_madgwickパッケージを使えば、前節で解説したMadgwickフィルタがそのままROS 2ノードとして動きます。さらにrobot_localizationパッケージのekf_nodeを使うと、IMUに加えてホイールオドメトリやGPSなど複数のセンサを統合した拡張カルマンフィルタが構成できます。どのセンサのどの成分(姿勢・速度・角速度)を融合するかはYAML設定で柔軟に指定可能です。 - 可視化(結果の確認): RViz2の
Imu表示で姿勢を3D確認したり、PlotJugglerでロール・ピッチ・ヨーの時間変化をグラフ化したりします。静止時にドリフトしていないか、急激な動きに追従できているかを確認しながらパラメータを調整するのが定石です。
実世界での応用例
- ドローン(マルチコプター): PX4やArduPilotといったオープンソース飛行制御ファームウェアが、高レートIMUとEKF(PX4ではEKF2)による姿勢推定を搭載しています。数ms周期のジャイロデータから姿勢を推定し、モーター出力を制御する姿勢レートループがホバリング安定性の要です。実機では複数IMUによる冗長化と、センサ間のクロスチェックで故障を検知する仕組みも一般的になっています。
- 自動運転: GPSがトンネルやビル街で遮断されたとき、IMUによるデッドレコニング(推測航法)で自車位置を補間します。ジャイロ・加速度・車速パルスをEKFで統合し、GNSS復帰までの位置ドリフトを抑える構成が知られています(ROS 2でGNSSを
robot_localizationに統合する場合は、navsat_transform_node等による追加構成が必要です)。車載級IMUは民生品より数桁高精度(バイアス安定性で評価)が求められます。 - ロボットアーム・移動ロボット: 二輪倒立振子(バランスロボット)の姿勢制御や、脚ロボットの足底接地推定(ゼロ速度更新)にIMUが使われます。移動ロボットではホイールオドメトリの滑り誤差をIMUで補正するのも定番の組み合わせです。
最新MEMSセンサの動向
かつて姿勢推定は高価な戦術級IMUの専有物でしたが、MEMS技術の進歩で状況は一変しました。TDK InvenSenseのICM-42688-PやBoschのBMI270クラスの民生用6軸IMUは、ゼロレートオフセット±2°/s以下、ゲロスコープノイズ密度も大幅に低減され、ドローンやロボットのD級安定飛行に十分な性能を備えています。さらに近年は、工場出荷時に個体のバイアス・感度誤差をフラッシュに保存した「ファクトリーキャリブレーション済み」品が主流になり、開発者はキャリブレーション負担から大きく解放されました。AIコプロ搭載IMU(BMI323のフィーチャーエンジン等)によるタップ/フォール検知のオフロードや、9軸センサフュージョンをチップ内で完結させるファームウェア内蔵品も登場しています。
こうした流れにより、「手のひらサイズのロボットに載る数百円のIMU」でも、適切なフィルタと組み合わせれば数年前の中級製品と同等の姿勢推定が可能になっています。まずは安価なブレークアウトボードとROS 2のフィルタパッケージから始めて、手を動かしながらセンサーフュージョンの挙動を掴むのが、実世界応用への最短ルートと言えるでしょう。
よくある質問(FAQ)
Q: 6軸と9軸IMU、どちらを選ぶべき?
A: 用途次第です。ヨー角(水平面内の回転)まで正確に知りたいなら地磁気センサを含む9軸(MARG構成)が有利ですが、磁気歪みの影響を受けやすくなります。ドローンの姿勢制御やロボットのナビゲーションのようにヨーが重要な用途では9軸、傾き検出が中心の簡単な用途では6軸で十分です。選び方の基準は「絶対方位が本当に必要か」「磁気環境は安定か」です。屋内やモーター・鉄構造物の近くで使うなら磁気センサは役に立たないことも多く、その場合はGNSS・視覚・オドメトリなど磁気以外の外部観測でヨーを得る構成が適します。
Q: ジャイロのドリフトは完全に消せる?
A: 残念ながら完全には消せません。ドリフトはセンサのバイアス誤差が時間積分で増大するもので、フィルタで他のセンサと融合すれば外部参照(加速度・地磁気)によって長期的には補正されます。ただし加速度・地磁気だけでは重力方向と磁北しか分からないため、ヨー角の絶対精度は地磁気の品質に依存します。EKFでジャイロバイアスを状態として推定すると、特に安定した結果が得られます。
Q: 磁気歪み(磁気干渉)への対処法は?
A: 代表的な対策は3つあります。まずキャリブレーションによるソフトアイアン/ハードアイアン補正(球状に分布するはずの測定値を楕円フィッティングで補正)を実施すること。次にモータや電源ケーブルなど発生源からIMUを物理的に離す配置を検討すること。最後に、地磁気の信頼度が低下した場面では磁気センサへの重みを下げる、あるいはEKFで外れ値として棄却するといったフィルタ側の対策が有効です。
Q: スマホの画面回転にも同じ技術が使われている?
A: はい、同じセンサーフュージョンです。スマホには加速度計・ジャイロ・地磁気センサが搭載され、OSがソフトウェアフィルタで姿勢を推定しています。画面回転は静的な傾き検出が中心なので加速度計だけで実現可能ですが、ゲームやAR/VRのヘッドトラッキングではジャイロとの融合による高速・高精度な姿勢推定が不可欠です。
Q: 学習の第一歩として、どのフィルタから手を付けるのがおすすめ?
A: まずは相補フィルタです。数行の数式(θ = α・ジャイロ積分 + (1−α)・傾き角)で済み、安価な9軸センサモジュールとArduinoがあればすぐ試せます。動作が掴めたらMadgwickのオープンソース実装(Arduinoライブラリあり)に移り、最終的に本格的なマルチセンサ融合が必要になったらROS 2のrobot_localizationでEKFを体験する、というステップアップが効率的です。
まとめ——今日から始める3つのアクション
IMUのセンサーフュージョンの本質は、「ジャイロは高周波に強いが低周波でドリフトする」「加速度計と地磁気は絶対参照になるが高周波ノイズが乗る」という得意・不得意を互いに補い合わせることです。その発想はシンプルながら、相補フィルタからMadgwick/Mahony、そして拡張カルマンフィルタ(EKF)まで、計算コストと精度のトレードオフに応じて幅広い選択肢が用意されています。
最後に、読者が今日から実際に手を動かせる3つのアクションを示します。
- 安価な9軸IMUモジュール+Arduinoで相補フィルタを動かす MPU-9250やBMX055などの9軸モジュール(数百円〜数千円)をArduinoにつなぎ、加速度計からの傾き角(arctan2)とジャイロ積分を係数αで融合する、わずか10行程度の相補フィルタを実装してみましょう。手で装置を傾けながら姿勢角がスムーズに追従する様子を確認できれば、センサーフュージョンの直感が身につきます。
- Madgwickのオープンソース実装を試す x-io.co.ukが公開するMadgwickアルゴリズムはArduinoライブラリとしても入手可能です。自前実装の相補フィルタと並べて比較し、クォータニオン表現によるジンバルロック回避や、パラメータβ1つの調整だけで得られる高精度さを体感してください。回転運動を加えてもロール・ピッチ・ヨーが破綻しにくい様子が実感できるはずです。
- ROS 2のrobot_localizationでEKF体験 より本格的な環境に興味があれば、ROS 2の
robot_localizationパッケージを導入し、IMU・オドメトリ・GPSをEKFノードに投入してnav_msgs/Odometryとして姿勢・速度・位置が推定される流れを体験しましょう。RVizで可視化すれば、ドローンや自動運転で使われる実践レベルのマルチセンサフュージョンの全体像が見えてきます。
「まず軽いフィルタで手を動かし、必要に応じて高度な手法へ進む」——これがIMUとセンサーフュージョン習得の最も近い道です。
センサを搭載するロボット側の全体像については、フィジカルAI(Physical AI)とは何か?もあわせてご覧ください。
参考文献
- Wikipedia – Inertial measurement unit: https://en.wikipedia.org/wiki/Inertial_measurement_unit
- ahrs (Python AHRS library) – Complementary Filter: https://ahrs.readthedocs.io/en/latest/filters/complementary.html
- ahrs – Madgwick Orientation Filter: https://ahrs.readthedocs.io/en/latest/filters/madgwick.html
- ahrs – Extended Kalman Filter: https://ahrs.readthedocs.io/en/latest/filters/ekf.html
- x-io.co.uk – Madgwick 原典 "An efficient orientation filter for inertial and inertial/magnetic sensor arrays": https://x-io.co.uk/downloads/madgwick_internal_report.pdf
- x-io.co.uk – Open Source IMU and AHRS Algorithms: https://x-io.co.uk/open-source-imu-and-ahrs-algorithms/
- Qiita – Madgwick Filterを読んでみた: https://qiita.com/fumiya_sato/items/df28dff5ccc653183235
- nobita-rx7.hatenablog.com – MARGセンサーから三次元姿勢推定 (Madgwickフィルター): https://nobita-rx7.hatenablog.com/entry/28481934
- Qiita – MadgwickフィルタのライブラリをArduinoで使う: https://qiita.com/Ninagawa123/items/9520bad3c78ee40194fc
- imo Lab. – ArduinoのMadgwickライブラリの使い方: https://garchiving.com/how-to-madgwick-library-of-arduino/
- おびやまロボット研究所 – Madgwickフィルタを使ってみよう その3: https://cpu4edu.net/cafe/archives/art/00060.html
- docs.ros.org – robot_localization: https://docs.ros.org/en/rolling/p/robot_localization/index.html
- ROS Index – imu_complementary_filter: https://index.ros.org/p/imu_complementary_filter/
- ROS公式: https://www.ros.org/
- PX4公式ドキュメント(EKF運用): https://docs.px4.io/
- I-PEX – MEMSとは何か: https://www.i-pex.com/ips/ja-jp/article/what-is-mems
- stockmark Aconnect – MEMS(メムス)とは?市場規模・用途例: https://aconnect.stockmark.co.jp/coevo/mems/
- 日経BP SBbit – MEMSとは何か: https://www.sbbit.jp/article/cont1/47642
- 産総研 – MEMSとは?: https://www.aist.go.jp/aist_j/magazine/20260603.html
- Wikipedia – MEMS(日本語): https://ja.wikipedia.org/wiki/MEMS
- DJI公式(ドローン姿勢制御の応用例): https://www.dji.com/jp