IMUの最近のブログ記事

ポンコツの ICM-20948 を諦めて、BNO086 を試してみる事にした。

SparkFun ICM-20948 Arduino で、 DMP Fusion 9軸 がやっとOKになった。 の続きです。

中華製の安い BNO086 があったので、購入して、試してみる事にした。
当初、SparkFun の Arduino Library で試していたが、これがまるっきり使えない。
やはり、正規版の石でないとだめなのかと思ったが、
Adafruit の Arduino Library があったので、こちらを試してみた。
adafruit / Adafruit_BNO08x
こちらだと、安定して動くみたい。
しかも、こちらだと、RST、INT ピン接続が必要ないみたい。
もしかしたら、Chip のfirmware のバージョンの新旧の違いがあるのかも知れない。
中華製の Chip の firmware のバージョンが 旧で、それが、Adafruit の Arduino Library と一致したのかも?

SparkFun ICM-20948 Arduino で、 DMP Fusion 9軸 がやっとOKになった。 で実施した、Rviz2の長期テストでは、問題ないみたい。
あとは、草刈りロボットの実機で使ってみて、評価しないといかんぞね!!

SparkFun ICM-20948 Arduino で、 DMP Fusion 9軸 がやっとOKになった。

今まで、SparkFun ICM-20948 Arduino で、 DMP Fusion 9軸 がうまく動作しなかったが、 再度チャレンジしてやっと動き出した。

ただし、結論を先に言うと、
ICM-20948 DMP 6 、DMP 9 は、使い込んでみると、信頼性が低い石が、中にはあるのが判った。
使っている途中で、quaternion の Z値が取れなくなる。
これだと、実際のロボットでは使えない。
代替として、DMP を諦めて、ACC、Gyro 、Magnet + MadgwickAHRS があるが、こちらは安定はしているが、精度がいまいち。 by nishi 2025.4.1
どうしようもない。今は、BNO086 の評価待ち。あるいは、ICM-20948 も石に拠っては、問題ない場合もありそうなので、幾つか購入して、良いものを使うか?

SparkFun ICM-20948 用の DMP img ファイルが良くないのか?
最終的には、これを改変しなければ解決しないのかも?
下記 Dev kit board を使って自分でいじらないといかんのかも?
eMD_Software_Guide_ICM20948.pdf
yomuevans/DK-20948

開発環境
Board: ESP32
Platform I/O IDE
IMU: SparkFun ICM-20948
Arduino Library: SparkFun_ICM-20948_ArduinoLibrary
Sample Program: Example6_DMP_Quat9_Orientation
Interface: SPI

ROS IMU による移動距離(距離測定) と向き測定

ROS IMU による移動距離(距離測定) と 向き測定。

IMU 6軸フュージョンを使って、距離と向きを測定します。

このページは、自作 Turtlebot3 自立走行に向けたプログラム。#7 の、16. 再挑戦。 以降を、実際のやり方に向けて、改めて記述したものです。
今回のプログラムの考え方を書いているの、一度ご覧ください。

IMU(ICM-20948) 6軸センサー(加速度、ジャイロ)値を、ESP32で取り込んで、6軸フュージョン(MadgwickAHRS) で、
クオータニオンを算出して、それを元に、加速度センサーの読み取り値から、1G の影響をキャンセルした正味のAccを算出した、加速度と時間から速度、移動距離を出して、
ロボットの座標系から、ROS の基準座標系に変換した位置と姿勢データを、ESP32 Wi-Fi で、リモートPC 上のROS サーバーへ送って、
リモートPC上の Rviz を用いて、3D での姿勢と移動距離を見える化します。

良くYouTube で見かける、IMU を手に持って、空中で動かして、それに連れて、PCのモニターの中の物が3Dで動く、やつです。
注) 但し、あまり完成度は、高くありません。ぜひ、ご自分で完成度を上げっていてください。by nishi 2022.5.13
注2) 基準座標系: ロボットの開始時点の座標。ROS の TF で言えば、odom になります。

開発環境
1. 開発 PC
 Ubuntu Mate 18.04
 Visual Studio Code + Platform I/O IDE
   ESP32 Arduino Framework
 Arduino IDE ( こちらは、Tools -> Serial Plottter を使う為 )

2.実行環境
1) PC / ROS Server
 Ubuntu Mate 18.04
 WiFi 環境が必要です。
2) SOC
  ESP32
  Wi-Fi Ros Serial通信
  TTL-Serial : デバッグ用に使います。テストが終われば、不要です。
3) IMU
 Spark Fun ICM-20948
 SPI 接続

3. ハード構成
ESP32端子 SPI & TTL-Serial
IO1(TxD0) ---- Rx
IO3(RxD0) ---- Tx
IO23(MOSI) ---- MOSI(DA/SDA) and with 1K Pull Up
IO19(MISO) ---- MISO(ADO) and with 1K Pull Up
IO18(SCLK) ---- SCLK(CL/SCL) and with 1K Pull Up
IO5(CS) ---- CS(SS) and with 1K Pull Up
IO17 ---- LED

自作 Turtlebot3 自律走行に向けたプログラム。#7

自作 Turtlebot3 自律走行に向けたプログラム。#7
--- Turtlebot3 SBC(Jetson Nano 2G) で、rtabmap_ros で、色々試す。 ---

自作 Turtlebot3 自律走行に向けたプログラム。#5 の続きです。

14. たまに、IMU データの音信不通がありますが、それでも大夫安定して動く様になったので、 rtabmap_ros の使い込みをしています。
その中で、判った事を書いています。
注) IMU データの音信不通 の原因がわかりました。/odom_fox の出力を、camera_info に同期して出す
様に組み込んだ処理にバグがあるようです。
いまは、この機能を外して使用します。by nishi 2022.5.18

1)
RGBD/OptimizeMaxError=3.0(default) - 3.3
この値によって、tf-odom の補正の量が左右されるみたいです。
デフォルトの 3.0 より大きめの 3.3 にしています。動かしていて、ワーニングが出たので少しだけ大きくしました。
試しに、2.1 など、小さくして試しましたが、そうすると、tf-odom の補正がされなくなりす。
Rviz で見ていると、tf-odom が補正されると、黄色の線が表示されるようです。
tf-odom が補正されないと、2M 行って帰ってきた時、出発点から、随分ずれて止まります。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちIMUカテゴリに属しているものが含まれています。

前のカテゴリはGPSです。

次のカテゴリはJavaです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ