ひーちーのつぶやき

Macいじり,3DCG,デジカメ,ドローンを楽しんでます。

Hobby マルチコプター

突然、LibrePilotで外部電子コンパスのキャリブレーションが出来なくなった。

突然、LibrePilotで外部電子コンパスのキャリブレーションが出来なくなった。先日、LibrePilotのファームウェアをアップデートしたら外部電子コンパスの
キャリブレーションが効かなくなり設定値を書き出し、そのあとに消去して再度書き出した
設定値を読み込むことで復旧したって書いた。

その後、再度ファームウェアのアップデートが発生して再度同じ現象が発生した。
ただ、今回は同様の手順でやっても復旧しなかった。

細かく書くと、北方向と南方向はNG。
なぜか、天地逆さまにして方位を変えるとどの方位も問題無し。
キャリブレーションを天地逆さまにして実施しても変化無し。
もう、お手上げ状態。



そんなわけで、先週末のモータ断線でガックリ状態から今日まで試行錯誤の連続でした。
フォーラムに同じような現象の方がいらっしゃったので設定値消去再読み込みで直ったと
僕の経緯をかいたけど返事はなかったな。直ったのかな?

ただ、その方は外部電子コンパスがDJI方式のGPS受信器をつかっていて
GPS受信器の取付角度がズレていたのでもしかするとそちらが原因かもしれない。

そのスレッドの中で一旦、外部電子コンパスとCC3D revolutionのオンボード電子コンパスを
両方使用する"Both"モードでキャリブレーションを行いそれぞれの数値を確認すべき
ってアドバイスがあったので実際にやってみた。

まぁ、結果はわかっていたけど
CC3D Revolution miniのオンボード電子コンパスは完璧にキャリブレーションされ
GPS受信器BN-880に搭載の外部電子コンパスはなーんにもキャリブレーションされていない。
複数回やるとバラツクが、まぁ・・・常に7%〜18%ぐらいの数値になる。
本来は、この数値が5%未満じゃなきゃダメなのでまったくダメな結果だった。

つまり、CC3D Revolution miniのオンボード電子コンパスはキャリブレーションされ
GPS受信器BN-880に搭載の外部電子コンパスはキャリブレーションされていない。

これから推測すると

  • 外部電子コンパスを認識しているがキャリブレーションはされない。
  • 外部電子コンパスを認識しキャリブレーションもされているが内部コンパスのみ有効。
  • ホントに外部電子コンパスが異常だ。

の3つを原因と仮定してみた。
まずは最悪状態である外部電子コンパスがホントに異常か否か検証。

LibrePilotのScopeタブで外部電子コンパスの出力をプロットして方位と出力を確認したが
XYZ方向とも-400〜+400の出力がでており電子コンパスは正常。
次に、BN-880の電子コンパス搭載部のシールドケースが確実にGNDに接続されているが
テスターで導通チェックをしたがGPSアンテナ側のシールドケースともにOK。

たぶん、外部電子コンパスが異常って事はなしと判断した。

残り2つはファームウェアかLibrePilotGCS側の問題なので
開発中最新版のソース変更のコミット内容を確認してみたが特に外部電子コンパスに
限定の修正は入っていない。(DJI方式対応追加ぐらい)

よって、最新版をmake packageしてみた。

Parallels DesktopScreenSnapz011

今は3/15版をいれているので3/21版をいれてキャリブレーション確認をやってみた。

Parallels DesktopScreenSnapz012
なるべく電化製品がない場所がよいので2階の寝室で実施!!
結果・・・何も変わらずで原因不明。

迷宮入りはいやなので、というか飛ばせないので再度マニュアルを確認してみた。
外部電子コンパスの接続手順をマニュアルに沿ってやり直してみることにした。

  1. 外部電子コンパスのケーブルは挿入しない。
  2. USBケーブルをCC3D revolutionに接続する。
  3. LibrePilotGCSのConfigurationタブのHardwareでFlexポートをI2Cに変更し保存。
  4. SystemタブのSettingでAUXMAGをFlex PortにしAUX Only設定にし保存。
    ボードのローテーション(Pitch180°も忘れずに指定しておく)
  5. CC3D revolutionを必要に応じてRebootする。
  6. USBケーブルをCC3D revolutionから抜く。
  7. 外部電子コンパス(GPS受信器)のコネクターを接続する。
  8. クワッドコプターにバッテリーを接続する。(FCに電源供給)
  9. USBケーブルをCC3D revolutionに挿す。

ここまでの手順をCC3D Revolution miniBN-880でやってみた。
すると・・・・あれあれ?電子コンパスの状態表示の数値がCC3D Revolution mini
オンボード電子コンパス側が悪化しBN-880側の外部電子コンパスが正常値になった。

キャリブレーションをしていないのに数値が変化してビックリ。
ただ、この状態では方角によってはNG状態になるのでキャリブレーションは必要なので
再度キャリブレーションをやってみた。

すると・・・2階の寝室でキャリブレーションして最悪なパソコン前環境に持ってきても
こんな感じに・・・

Parallels DesktopScreenSnapz010

グリグリと方位を変化させても外部電子コンパスは正常だ!!

この外部電子コンパス接続手順を再度やり直す前は2階寝室で何回キャリブレーションしても
外部電子コンパスのキャリブレーションはできなかったので大きな進歩。
あとは屋外で再確認するだけ。

でも・・・既に夕方なので来週末のお仕事としてとっておこう。

ちなみに、再度外部電子コンパス接続手順を行う前後での設定値の変化は

外部電子コンパス

<object name="AuxMagSettings" id="0xC380EF60">
<field name="mag_bias" values="-53.4226227,20.172451,-32.8001175"/>
<field name="mag_transform" values="0.962987959,0,0,0,0.936864316,0,0,0,1.00458407"/>

<object id="0xC380EF60" name="AuxMagSettings">
<field name="mag_bias" values="-117.784454,40.184082,-56.8815269"/>
<field name="mag_transform" values="0.906889915,0,0,0,0.867250979,0,0,0,1.00515997"/>

オンボード電子コンパス

<object name="RevoCalibration" id="0x9A5BA08">
<field name="mag_bias" values="-33.5917549,-7.08960772,-3.91666579"/>
<field name="mag_transform" values="1.01452446,0,0,0,0.919328988,0,0,0,1.05725121"/>

<object id="0x9A5BA08" name="RevoCalibration">
<field name="mag_bias" values="0.0293536652,-128.941467,-7.5597744"/>
<field name="mag_transform" values="0.95035702,0,0,0,0.953338623,0,0,0,0.986704469"/>

異常にバイアス値が変化している。
これってキャリブレーションで変化するものなのかなぁ・・・
mag_transformがキャリブレーションで変化するんだと思うんだけどなぁ。

 

-Hobby, マルチコプター
-, , , ,