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実装しました!
スポンサーサイト



ARDrone::move3D()の疑問

作ってる人が言うのもアレなんですけど、

結構テキトーですよね、move3D関数の中身って。

void ARDrone::move3D(double vx, double vy, double vz, double vr)
{
// AR.Drone is flying
if (!onGround()) {
const float gain = 0.4f;
float v[4] = {-vy*gain, -vx*gain, vz*gain, -vr*gain};
int mode = (fabs(vx) > 0.0 || fabs(vy) > 0.0);

// Send a command
if (mutexCommand) pthread_mutex_lock(mutexCommand);
sockCommand.sendf("AT*PCMD=%d,%d,%d,%d,%d,%d\", seq++, mode, *(int*)(&v[0]), *(int*)(&v[1]), *(int*)(&v[2]), *(int*)(&v[3]));
if (mutexCommand) pthread_mutex_unlock(mutexCommand);
}
}
gainって何でしょう?

そもそも並進・垂直・回転に同じゲインを使ってるとかちょっと変ですよね。

バッテリがすぐ無くなってしまうので、飛ばしてテストすることはあまりありませんでした。
めんどくさがりでごめんなさい。

CV Droneの完成度もだいぶ上がってきたことですし、これからは細かい作り込みをやっていこうかと思います。

現在は、ちゃんと速度指令の通りに動くかどうかを見ています。
固定ゲインではなくて、NavDataからフィードバックするような感じがいいかもしれません。

CV Drone 初期化の順番

「2.1.20でうまく初期化できない」という報告を受けて、ちょっと思い出しました。

開くポートの順番が悪いと初期化に失敗するようです。

2.1.20対応時
・バージョン情報 (5551)
・ビデオ (5555)
・ATコマンド (5556)
・Navdata (5554)

2.2.9対応時 (現在)
・バージョン情報 (5551)
・ATコマンド (5556)
・Navdata (5554)
・ビデオ (5555)

2.1.20では、ATコマンドのポートを開く前にビデオのポートを開かないといけなかったような、
そんな気がします。

FWのバグでしょうか?

BAYONETTAを遊んでみた

Bayonettaのエンジェルスレイヤーをクリアしました。

bayonetta_as.jpg

クリア時の装備はこんな感じです。
A: スカボロ、ドゥルガー
B: ピロウトーク、中佐
アクセサリ: 守護蝶、悪因悪果

百列中佐? やりますよ?もちろん。

ヘタクソなんです。
バグ技でも使わないとやってられんのです。

後半を守護蝶切らさないように逃げ回りながら、やっとの思いで最終Verseに着くも、
本物のベヨ姐さんにボコられて3回ぐらいリトライしました。

Mac・Win7・Ubuntuをトリプルブートしてみた

BootCampしてるMacに、更にUbuntu入れたくなった自分用メモ。

・用意するもの
 Mac PC (Mac OS X 10.5以降)
 Windows7 32-bit (8? 知らんな)
 Ubuntu 12.04
 rEFIt
 かっこいいアイコン

・手順
 1.普通にBootCampする
  BootCampアシスタントを使ってWindowsをインストール。
  HDD容量はとりあえず半分コに。
  Windowsが起動したらMacのインストールDVDを入れてドライバをインストール。

 2.rEFItのインストール
  Macで起動し直して、rEFItをダウンロードし、
refit.jpg

  HDDのルートに解凍。

  解凍したら「アプリケーション」→「ユーティリティ」→「ターミナル」でターミナルを起動して、
  "./efi/refit/enable.sh" を実行。

 3.rEFItの設定
  "./efi/refit/refit.conf"を開いて、タイムアウトやバナーの設定を行う。
  ※参考サイト: 「rEFIT講座③~インストール番外編

  また、起動アイコンをカッコいいやつに変更。
  私が使ってるものを置いておきます。こちらからダウンロードできます。

 4.パーティションの変更
  Ubuntu用のパーティションを作る。適当に40GBで。FAT32でフォーマットする。
  ※参考サイト: 「Macでハードディスクのパーティションを追加・削除する方法

 5.Ubuntuのインストール
  UbuntuのインストールCDを入れて再起動。
  rEFItの画面でUbuntuを選択して起動すると、Ubuntuを試すかインストールするか聞いてくるので、
  「インストールする」を選んでインストール画面に進む。
  さっきの40GBの領域をExt4でフォーマット、マウントポイントは「/」で。
  だが、このままだとスワップ用の領域がないと怒られるので、1GB削ってswapに回す。
  ブートローダーExt4でフォーマットした領域と同じところにインストールするよう設定してOKを押す。
  ※参考サイト: 「Mac/Windows/Linuxのトリプルブートを可能にする方法

・完了!
refit_boot.jpg



いっそのこと3台用意すればいいんじゃないのか?
結局MacにWin7入れてUbuntuはVirtualBoxで動かすようにしました。
プロフィール

puku

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

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

最新記事
最新コメント
最新トラックバック
検索フォーム
カレンダー
05 | 2013/06 | 07
- - - - - - 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 - - - - - -
月別アーカイブ
カテゴリ
スポンサードリンク
RSSリンクの表示
FC2カウンター
リンク
ブロとも申請フォーム

この人とブロともになる

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

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

FC2Blog Ranking

QRコード
QR