Madgwickフィルタで姿勢の演算を行う
環境
WIndows11
開発環境: VScode + PlatformIO + Docker
動作環境: WSL2(Ubuntu 22.04) + ROS2(Humble)
前回までのあらすじ
9軸センサLSM9DS1の値を読み取り、その値をROSのトピックに乗せて配信し、そのトピックを購読した結果、センサーの値がわたっていることが確認できた。
今回の話
Madgwickフィルタを使って、センサの値から現在の姿勢を演算し、トピック配信を試みる
Madgwickフィルタ
6軸あるいは9軸センサの値をもとにXYZ軸方向の傾きを計算するライブラリ
軽量でArduino系のマイコンでも動作する。
1. LSM9DS1 ライブラリを組み込む
ライブラリの詳細は以下のサイトへ
使い方をとりあえず簡単に・・・
1. ライブラリの組み込み
![](https://assets.st-note.com/img/1719573145481-Rj0OGnacvq.png)
2.セットアップ関係
![](https://assets.st-note.com/img/1719573191749-qN9IeNfW5I.png)
![](https://assets.st-note.com/img/1719573216119-q6FbWEvpMR.png)
![](https://assets.st-note.com/img/1719573259598-Rub4BdzWss.png)
100Hzなので10ms間隔で演算を行うようにする
![](https://assets.st-note.com/img/1719573327942-exAfNRliAx.png)
1. センサを読み取り
2. madgwick.filter()のコール
3. とりあえずVector3型のトピックに乗せて配信
2. 実行
ラズパイピコにソフトを書き込み、エージェントを起動すると・・・
ちなみにセンサを上向きにおいて動作させている
![](https://assets.st-note.com/img/1719573451346-Oe7JUExzre.png?width=1200)
別windowを開き、トピックを購読してみる
![](https://assets.st-note.com/img/1719573562794-PIo9cW7y9e.png)
やはりずれがあるなぁ・・・
Y軸方向を垂直においてみる
![](https://assets.st-note.com/img/1719573761656-ioxv2Cm8qx.png)
X軸方向もなんか大きく動いている…
ジャイロセンサのドリフト問題を解消しないといけないか?
この記事が気に入ったらサポートをしてみませんか?