ひーちーのつぶやき

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

Hobby Mac用アプリ Windowsアプリ マルチコプター

CC3D Revo miniを開発中最新版ファームアップデート後OSDが一部動作しない件、解決法わかった。

2016/02/26

CC3D Revo miniを開発中最新版ファームアップデート後OSDが一部動作しない件、解決法わかった。BN-880CC3D Revolution miniに接続してBN-880内蔵の電子コンパスをつかって
機体重量200g未満のクワッドの動作するとこまではできていたんだけど、
CC3D Mini OP OSDでのOSD表示でGPS衛星捕捉数とロック状態それとアラーム表示が
おかしくて実飛行時に怖くて使えない状態だった。

LibrePilotのフォーラムをみても解決法が書いてなく「UAVO」の変更を数種類やったから
その影響でOSD表示がおかしくなってるねという簡単なコメントだけ投稿されてた。

このコメントで解決法がわかる人は実際に開発している人ぐらいじゃないの?って思いつつ
自分なりに一つ一つ調べてなんとか不具合の原因にたどり着いた。
これじゃ、まるで会社で仕事しているのと変わらない状態だよ・・・

っで、何がどうなっているのか自分なりに理解した順番で整理する。

OSDのファームのソースからCC3Dのファーム版数にあわせ手を加えているっぽい。

CC3D Mini OP OSDのファームのソースファイル(ここにあります)をみるとCC3Dの
ファームの版数により各種情報を取得する部分のオブジェクトIDが異なっている。
また、オブジェクトIDはダブっていない。

このことからオブジェクトIDというものがCC3Dのファーム変更で何らかの情報が
変化し、それに追従して変更されていると推定。

Parallels DesktopScreenSnapz024

こんな感じでOBJIDがファーム版数で異なっている。

んじゃ、オブジェクトIDってなんだろう?

ここで、悩んだ。
オブジェクトIDって何を示していてどこに情報があるのだろう?

っで、話を戻してLibrePilotのフォーラムでの「UAVO」ってのがヒントなので調べた。
どうも、CC3Dはテレメトリー(OSDもテレメトリー情報を表示している)等のやり取りを
UAVTALKってやつでやってるって事がわかった。

なので、CC3D Mini OP OSDのファームのソースにもuavtalk.hなどがあるんですね。
そう、先ほどファーム版数でオブジェクトIDが変わるってわかった時に開いていたソースが
uavtalk.hだったですね。

さらに調べるとUAVOBJECTSというXMLファイルが存在することもわかった。
これは、LibrePilotGCSをBuildするとできるuavobjectgeneraterというアプリでCC3Dの
各種情報をXML形式で書き出せる。

なので、CC3D Revolution miniの各情報・・・GPS設定やMAG設定なども全て書き出せ
Systemタブに載っている全ての情報がXML形式で書き出せる。

最初は、このXMLファイルにIDが記載してあるのか?って思ったがハズレだった。

んじゃ、どこにUAVOBJECTSのIDがあるんだろう

ここまで来たら意地になってきて探しまくった。
っで、見つけましたよ!!

build/uavobject-syntheticsにCC3D Mini OP OSDのファームのソースに記載してある
オブジェクト名のC言語ファイルが沢山あった。

それを開いてみると、

XcodeScreenSnapz001

一番下の行にobjidという文字があり、オブジェクト名も記載されている。
その右側の青い16進数がオブジェクトIDなんです!!

さっそくOSDのファームのソースファイルを修正だ。

CC3D Mini OP OSDのファームのuavtalk.hの中で15_9専用ってコメントされている部分の
オブジェクトIDを先ほどのC言語のファイルの最下行に記載してある16進数に書き換える
作業を数カ所やってコンパイルして書き込んだ。

その結果、ちゃんとOSD情報が表示されるようになった。

うーん・・・メカ屋でも頑張ればなんとかなるものだ。

気分爽快です!!

-Hobby, Mac用アプリ, Windowsアプリ, マルチコプター
-, , , ,