BNO055 10か月いじって、ファームの不具合らしき現象が多発したので、改良版ないかとさがしたら、
CEVA社がBNO055のファーム改良シリーズBNO08xシリーズを製品化していました。
最初から、BNO08xを購入しておけばよかったのですが、日本国内では、あまりなくて、中華通販で購入するか、米国通販で購入するかです。私は、中華通販が嫌なので、高いけど安心な米国通販DIGIKEYを愛用してます。=>ひずみゲージアンプもマイコンもDIYデバイスは、欧米流通を使うようにしてます。珍しいデバイスだと、国内ではバカ高くて、輸入したほうが安いです。BNO086は、国内通販で6千円もします。中華通販で2-3千円米国通販3-4千円台です。
●BNO085の評判
VR関連業界では、VRのDIYをやる方達がIMUを評価されていて、BNO085が低価格IMUの中では良いと評価されてました。VRゴーグルの角度誤差なら5度くらいでても良いということなのだと思います。私の場合は、スキーの横滑り角なので5度では不足なので、RTKと組み合わせて3度以内をめざしてます。
●2024年から機械学習テーマを本格化させるのでRTKより応用が広いIMUを使って、機械学習テーマをやろうと企ててます。ですので、使えるIMU探しは2024年度も継続していきます。
●AdafruitのBNO085の解説ページ
https://www.adafruit.com/product/4754
The BNO085 by the motion sensing experts at CEVA Hillcrest Laboratories takes the familiar 3-axis accelerometers, gyroscopes, and magnetometers and packages then alongside an Arm Cortex M0 processor running CEVA’s SH-2 firmware that handles the work of reading the sensors, fusing the measurements into data that you can use directly, and packaging that data and delivering it to you. If the name and description of the BNO085 sounds strikingly similar to those of the BNO055 by Bosch Sensortec, there is a good reason why: they’re the same thing, but also they’re not. Thanks to a unique agreement between Bosch and CEGA, the BNO085 uses the same hardware as the BNO055 but very different firmware running on it.
“How different?” you might ask. Well my friend, pull up a chair and grab a box of popcorn because it’s quite a list. First lets list the similarities. The BNO055 and BNO085 can both deliver the following types of sensor data and sensor fusion products:
Thanks to the sensor fusion and signal processing wizards from CEVA, with the BNO085 you also get:
As if the above wasn’t enough, the BNO085 also provides an impressive suite of detection and classification products by further analyzing the measured motion:
More information about the various report types is available on the Report Types page |
chatGPTで翻訳してもらうと
|
ということで、改良具合を実感したく、さっそくDIGIKEYで2個ゲットしました。
来週くらいに届くので11月から12月にかけて評価レポート載せます。
1月からはスキーに実装して、昨年のBNO055の結果と比較してみます。
●注意:AdafruitのBNO85でI2Cを使う場合、ESP32は不適と書いてありますので、ESP32ユーザーはI2CでなくUARTかSPIを使うことになります。私は、Teensy4.1でARM のCPUなので大丈夫だと思います。
しかし、私も基礎実験用にESP32Dを使っているので、実際にI2C接続して破綻するか確認してみます。
The BNO08x I2C implementation violates the I2C protocol in some circumstances. This causes it not to work well with certain chip families. It does not work well with Espressif ESP32, ESP32-S3, and NXP i.MX RT1011, and it does not work well with I2C multiplexers. Operation with SAMD51, RP2040, STM32F4, and nRF52840 is more reliable. |
BNO08xのI2C実装は、いくつかの状況でI2Cプロトコルに違反します。そのため、特定のチップファミリーとうまく動作しません。Espressif ESP32、ESP32-S3、NXP i.MX RT1011ではうまく動作せず、I2Cマルチプレクサでもうまく動作しません。SAMD51、RP2040、STM32F4、nRF52840での動作はより確実です。
●仕様
CEVAの製品ページ
https://www.ceva-dsp.com/product/bno-9-axis-imu/
データシート
https://www.ceva-dsp.com/wp-content/uploads/2019/10/BNO080_085-Datasheet.pdf
●精度の記述
データシートの49ページにありました。
実際は、Rotationベクトルで5度前後 磁気ローテーションベクトルで10度発生する場合あると
正直に書いてあります。BNO055は、20度とか突然でるので、それが困るので、ローテーションで5度
くらいに収まってくれれば、RTKで補間すれば3度以下になるのでスキーで使えると踏んでます。
●以後
11月から12月で回転治具でBNO055と同様の実験評価して、ファーム改良の効果を確認します。
うまくいけば、1月以降はスキーのRTKシステムに搭載します。
1-2度は無理でしたが2σで±5度まで補正で追い込んできてます。
※8か月後の結果 yaw角ドリフトをGPSのピークで補正することで、大きなyaw誤差を半減することに成功しました。
=>オフセット補正なので、元々の全体のばらつきは変化しませんが、オフセットさせることで、精度の必要な範囲内の誤差を小さくすることができるというアルゴリズムです。
【STA24】BNO085yaw角ドリフトをGPSでキャリブレーションしてyaw誤差半減<タイミングがポイント>
BNO085関連の記事、大変参考になります。どうもありがとうございます。
さて「Teensy4.1はARMのCPUなので大丈夫だと思う」とありますが、Teensy4.1にはARM Cortex-M7@600MHzコアを採用したNXP i.MX RT1062チップが載っています。また不適だと例示されたNXP i.MX RT1011チップも、ARM Cortex-M7@500MHzコアを採用しています。型番は異なりますが同じi.MX RT1000シリーズのCPUなので、どういう問題が起こりうるのか、ちょっと心配です。
dorado様
コメント有難うございます。滅多にコメントいただけないので、うれしいです。
Adafruitの注意書きは、I2C周りの不具合があったからだと思います。I2C周りの不具合は、プルアップ抵抗値の僅かな相違で波形がGNDレベルに落ち切ってない
場合よく不具合がおきます。その現象は、ケーブルの長さとか、シールドの有無、シールドがあってもGNDを片GNDか両GNDとかで波形が違ってきますので
微妙な違いで、I2Cがコケるという現象があります。その現象にあたったので、注意書きを書いたのだと思います。ですので、I2Cを使う場合は、オシロで、プルアップ抵抗が大丈夫かを確認する必要があります。AdafruitのABNO085は、20kΩの抵抗が基板上に載ってしまっているので、それが原因で、不具合がでるのではないかと想像してます。私の場合通常4.7Kから10KΩのプルアップをつかいますが、20kだと大きすぎて波形が鈍るような気がします。 ということで、AdafruitのBNO085は、UARTで使うことにしてます。AdafruitのBNO085のライブラリーは、I2C,UART,SPIを使えるようになっています。UART-RVCモードは、ライブラリー無でバイナリー19バイトを受信するだけですので、簡単で具合よいです。BNO085の試運転は、UART-RVCモードをお勧めします。それから,UART接続で、レジスタの設定を試して十分制御できたのを確認してからI2Cをいじりだして、オシロとロジアナで波形と信号を見ながら接続すれば、不具合がおきても、原因がわかるので、対策がとれると思います。Adafruitは、超初心者向けのキットを目指しているので、汎用的な使い方までサポートしてない感じがします。中華BNO085のほうが何もしてないチップだけなので、慣れた方には、扱い易いかもしれません。私もはっきりしたことが分らないので、回答にはなりませんが、BNO085関係は、日本国内では、未だユーザーが少ない感じですので、一歩一歩開拓していく人が何人かでてこないと普及が進まないと思いますので、I2Cとマイコンの問題に挑戦していただければ幸いです。宜しくお願いいたします。
コメントありがとうございます。I2Cはたまに、気まぐれになりますよね。
AdafruitのWebページによると、BNO085ボードのI2Cプルアップは10kΩのようです。ただ基板上のプルアップ抵抗が大きすぎる分には、外部にプルアップ抵抗を追加すれば補えないでしょうか?
2023年4月末にBNO085/BNO086(後継?)のデータシートに「BNO086はいまのところI2Cのポーリングモードをサポートしていないので、もし必要ならBNO085を使ってね」という太字の注意書きが追記されています。「いまのところ」「太字の注意書き」「追記」なので、発売後に何か想定外のことが確認されたのかと思います。一方2023年8月に、SparkFunからBNO086ボードがアナウンスされました。このボードはQwiic(I2C)接続が基本ですが、特に注意喚起はないようです。チップが改良されたのか、何らかの方法で回避できたのか、あるいはSparkFunのライブラリでは使える部分だけを使っているのかは分かりません。BNO08XのI2Cは、とりあえず要注意かもしれません。
UART×8chが実験的に別の用途でフルに埋まる計画(!?)でしたので、UART-RVCモードは頭にありませんでした。アドバイス、どうもありがとうございます。いろいろと検討してみます。今後とも、よろしくお願い致します。
dorado様 ご回答有難うございます。プルアップ10Kオームでしたか、勘違いしていてすみません。よくお調べになられているようで、感心いたしました。
これからも新たな知見をコメントしていただけると、BNO085を見に来る読者様が助かると思います。
BNO085の投稿記事1か月で、300人以上来訪されてますので、注目のデバイスだと思います。dorado様のご使用体験を記事投稿していただけると皆さま大喜びすると思います。
時々熱心な読者様がいて、有益な情報をいただけたり、作品の投稿記事をいただいてます。
御目的のご用途がUARTが埋まっていて、I2Cを使わざる得ないので、ご心配だと存じます。私がI2Cを使えば状況が少しでもわかるかもしれませんが、
私の場合、BNO085を急いでスキー計測システムに組み込まないといけませんので、手間とリスクが少ないUART-RVCモードで使ってみます。とりあえず、初すべりまでは、UART-RCVモードで使ってみます。1月以降で他のモードをI2Cでいじってみようと思います。
宜しくお願いいたします。