AT*PCMD_MAGとか

AR.Drone 2.0から電子コンパスが追加されました。

これによってAbsolute Controlモードというものが使えるようになりました。

え?何それ?という人のための解説
Absolute Controlはユーザ視点でDroneを操作するモードで、いわゆるラジコン操作ではなく3Dゲームの操作に近くなるんだそうです。

absolute_control.jpg

AR.Drone2.0にはAT*PCMD_MAGというAbsolute Control用のコマンドが実装されており、

float v[4] = {roll, pitch, gaz, yaw, psi, psi_accuracy};
sprintf("AT*PCMD=%d,%d,%d,%d,%d,%d,%d,%d\r", seq++, 1, *(int*)(&v[0]), *(int*)(&v[1]), *(int*)(&v[2]), *(int*)(&v[3]), *(int*)(&v[5]), *(int*)(&v[6]));
電子コンパスが指す「北」の方位で、-1.0~+1.0で表されます。

キャリブレーション用のAT*CALIBというコマンドもあります。

そんなわけで次回のCV DroneにはAT*PCMD_MAGとAT*CALIBを実装しようと思います。
※07/11 AT*CALIB実装しました!
関連記事

コメントの投稿

非公開コメント

No title

はじめまして。
大学の研究でAR.Droneを使っています。

質問なのですが、CVDroneでAR.Droneの電子コンパスを使うことは出来るのでしょうか?

コンパス校正があるので使えると思ったのですが、それらしいものを見つけることが出来なかったので、よろしければご助言おねがいします。

Re: No title

kerosukeさん
コメントありがとうございます。

結論から言うと「可能」です。

ただ、CV Droneはコンパスの値を返すAPIを用意していないため、
ソースを少し変更する必要があります。

↓ARDroneクラスにこのような関数を追加しましょう(雑ですみません)
NAVDATA_MAGNETO ARDrone::getMagneto(void)
{
if (mutexNavdata) pthread_mutex_lock(mutexNavdata);
NAVDATA_MAGNETO m = navdata.magneto;
if (mutexNavdata) pthread_mutex_unlock(mutexNavdata);

return m;
}

main関数で使う場合はこのようにすると良いと思います。
NAVDATA_MAGNETO magneto = ardrone.getMagneto();
std::cout << magneto.mx << std::endl;
std::cout << magneto.my << std::endl;
std::cout << magneto.mz << std::endl;

No title

返信ありがとうございます。

早速ARDroneクラスに関数を追加してみたのですが「NAVDATA_MAGNETOを定義されていません」とエラーが発生し「ARDRONE_NAVDATA::NAVDATA_MAGNETO」に変えたところエラーが消えました。
しかしmxの値を見てみたところ南西、北西の2方向を0と表示しました。
磁気センサの故障かと思い、予備のAR.Droneで試したところ同様の結果でした。

「ARDRONE_NAVDATA::NAVDATA_MAGNETO」と変えたことが問題だったのでしょうか。
度々申し訳ありませんがご助言おねがいします。

Re: No title

kerosukeさん

あ、ARDRONE_NAVDATA::NAVDATA_MAGNETOで合ってます。

NAVDATA_MAGNETO内の他のメンバ、例えばmagneto_rawはどうでしょうか?
以前、他のユーザさんがmagneto_raw.v[0]やmagneto_raw.v[1]を使ってコンパス角度を求めていましたよ。

No title

度々申し訳ありません。

magneto_raw.v[0~3]やそれ以外に同メンバのX,Y,Zなど手当たり次第に試してみた結果、方向に差がありましたが2方向を0と表示したり、数値に変化がないといった結果になってしまいました。

ただ、heading_fusion_unwrappedのみ0が1方向で、その反対方向で絶対値が最大になり符号が変化しました。しかし、0方向が徐々に反時計回りにずれていき北方向を読み取ることができません。

何度も申し訳ありませんがご助言お願い申し上げます。
プロフィール

puku

Author:puku
暇な時はゲームかプログラミングしてる人だよ。
だいたい月1更新。
CV Drone はこちら(GitHub)

最近はQiitaでOnsenUI2で遊んでいる。

最新記事
最新コメント
最新トラックバック
検索フォーム
カレンダー
02 | 2023/03 | 04
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
月別アーカイブ
カテゴリ
スポンサードリンク
RSSリンクの表示
FC2カウンター
リンク
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
754位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
158位
アクセスランキングを見る>>
FC2ブログランキング

FC2Blog Ranking

QRコード
QR