Repolode
hijimasa

hijimasa/cxd5602pwbimu_localizer_arduino

ZUPTを用いたデッドレコニングでIMUから位置と姿勢を推定する、Sony Spresense向けArduino IDEプロジェクト。

スター
29
フォーク
6
未解決の Issue
1
最終コミット
昨日

これは何?

Sony Spresenseメインボードと拡張用IMUのCXD5602PWBIMUを使って、慣性航法による位置推定を行うプロジェクトです。加速度と角速度を1920 Hzで読み取り、地球固定のNWU座標系で姿勢、速度、位置を推定します。処理はSpresenseの2つのコアに分担されており、MainCoreがIMUデータを取得してシリアル出力し、SubCore1がFusion AHRSライブラリ、ゼロ速度更新(ZUPT)、バイアス学習、台形積分を実行します。

位置推定は、約15秒間の静止状態で行う起動時キャリブレーションをもとに構成され、その後は18個の値を含むCSV行を30 Hzで出力します。静止状態を検出すると速度をリセットしてドリフトを抑え、停止が確認されると、直前の移動中に蓄積した速度誤差を位置から差し引きます。アルゴリズムはArduinoに依存しないC++で実装されているため、合成データを使ってホストPC上でテストでき、デバイスの記録データも同じコードで再生できます。

リポジトリには、シリアル経由で行う6方向の加速度センサーのバイアスキャリブレーション、デバイスの生データを記録するツール、シリアル出力を標準的なROSメッセージに変換するROS 2ノードも含まれています。

主な機能

  • 01IMUデータを1920 Hzで読み取り、リングバッファを介して2つのSpresenseコア間で受け渡します。
  • 02Fusion AHRSライブラリで姿勢を推定し、加速度から重力を除去します。
  • 03分散と平均に基づくZUPTで静止状態を検出し、静止中は速度をリセットします。
  • 04静止中に加速度バイアスを学習し、ジャイロの地球自転を補正します。
  • 05停止が確認された時点で、蓄積した位置誤差を遡って補正します。
  • 06SPIフラッシュに保存する、6方向の加速度センサーキャリブレーション機能を備えています。

ユースケース

  • Spresenseボードで低コストな慣性デッドレコニングを試す。
  • Arduinoに依存しないC++によるZUPTやセンサーフュージョンの実装を学ぶ。
  • Spresense IMUのシリアル出力をROS 2に入力し、RVizで可視化する。

収録されている特集

トピック

#imu#sensor-fusion#localization#arduino#embedded#zupt#spresense#robotics

よくある質問

cxd5602pwbimu_localizer_arduino とは?
ZUPTを用いたデッドレコニングでIMUから位置と姿勢を推定する、Sony Spresense向けArduino IDEプロジェクト。 Sony Spresenseメインボードと拡張用IMUのCXD5602PWBIMUを使って、慣性航法による位置推定を行うプロジェクトです。加速度と角速度を1920 Hzで読み取り、地球固定のNWU座標系で姿勢、速度、位置を推定します。処理はSpresenseの2つのコアに分担されており、MainCoreがIMUデータを取得してシリアル出力し、SubCore1がFusion AHRSライブラリ、ゼロ速度更新(ZUPT)、バイアス学習、台形積分を実行します。
cxd5602pwbimu_localizer_arduino は無料で使えますか?ライセンスは?
cxd5602pwbimu_localizer_arduino は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
cxd5602pwbimu_localizer_arduino は今もメンテナンスされていますか?
活発にメンテナンス中。cxd5602pwbimu_localizer_arduino の最終コミットは 2026年11月6日 です。
cxd5602pwbimu_localizer_arduino は何に使えますか?
Spresenseボードで低コストな慣性デッドレコニングを試す。 Arduinoに依存しないC++によるZUPTやセンサーフュージョンの実装を学ぶ。 Spresense IMUのシリアル出力をROS 2に入力し、RVizで可視化する。
cxd5602pwbimu_localizer_arduino はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/hijimasa/cxd5602pwbimu_localizer_arduino

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト