2010年11月23日火曜日

ホバリング成功 (動画あり)

すっかり更新が遅くなりました.
先日の飛行で,姿勢のフィードバック制御を利用した自動ホバリングに成功しました.
まだ改善の余地がありますが,完成したら詳細な制御則と動画も公開したいと思います.

今後は水平飛行からホバリング状態へのスムーズな移行,ホバリングしながら前後左右に移動を目指したいと思います.

11/25 動画を公開しました
http://www.youtube.com/watch?v=3MC7nq-ewgw

この動画の撮影をはじめ,機体に関するアドバイス等でも藤前インドアクラブの皆様に
多くのご協力を頂いております.ありがとうございます.

2010年11月13日土曜日

飛行試験に向けて

明日はいよいよ制御ボードと垂直カナードを搭載した新生ラムダ号の初飛行です.
短時間の飛行ですが,まずは手動飛行で機体のデータを取得しつつピッチダンパなどの値をいじってみようと思います.

まずはスロットルを含む6つの操舵入力に対する機体の応答を調べます.
具体的には水平飛行から各舵にステップ入力を加え,加速度と角速度の応答をSDに保存し,
後からMATLABで解析してみます.この際にフゴイドや横滑りの影響が無視出来る程度の短時間で解析を行います.

というのも6自由度制御が可能な機体では並進運動と回転運動を分離できるので,
適切な制御を行えばフゴイドや横滑りを起こさずに角速度のみを変化させることが可能なはずで,それを実現するためにそれぞれの舵が機体に加える力とモーメントを知りたいわけです.

それらをもとに機体に任意の角加速度,あるいは加速度のみを加える新たな6つの入力を
設計しようと思います.当然横(ロール軸)と方向(ヨー軸)は横滑りがなくても干渉すると思われますので,(アドバースヨーやラダー,カナードの上下非対称性,慣性乗積Ixzの影響など)それらを補償する必要も出てくるでしょう.

またもちろんそれらは舵面に当たる流速の関数になるわけですが,現在搭載しているセンサでは速度のリファレンスが得られないためここで大きな問題となります.しかしインドア機は飛行速度が遅く,舵面の流速はプロペラ後流が支配的であると考えられるため,スロットルのコマンドから補償項を計算する方法でやってみようと思います.

それから姿勢の計算はやはりDCM(回転行列)を採用することにしました.
クオータニオンを使う方法もあるみたいですが(航空分野ではそのほうが一般的?),
卒研でロボットをやっていたのでDCMのほうが馴染みがあるので・・・

写真は機体のプログラミング風景です.

2010年11月11日木曜日

センサのお話

こんばんは.更新がすっかり遅れてしまいました.
機体はボードを搭載して一通りのデバッグは完了しており,
今度の日曜日には飛行試験を行う予定です.

今日はセンサの特性とデータ処理について書きたいと思います.
IMUには3軸ジャイロと3軸加速度センサが搭載されています.ジャイロは角速度を検出するセンサです.これらをdsPICのADコンバータでサンプリングし,移動平均フィルタで平滑化しておきます.
さらに加速度センサはまだノイズが見られたのでさらにローパスフィルタ(IIR)をかけています.

さて,今求めたいのは機体の姿勢です.一口に姿勢といっても表現方法はいろいろありますが,
ここではピッチ角,ロール角,ヨー角とします.また本来は機体固定座標系での角速度から機体の姿勢を求めるには非線形の微分方程式を数値積分して回転行列を求める必要がありますが,ここでは初期姿勢から大きく変わらないとし,姿勢角は近似的に角速度の成分を積分したものに等しいとします.

例として,ロール角を求める場合を考えます.これには以下の2通りの方法がありますが,どちらも欠点がありそのままでは実用的とはいえません.

1.ジャイロから得た角速度を積分する.
この方法は数値積分に頼るため誤差が時間とともにたまっていきます.またジャイロにはオフセットが時間とともにランダムに変動するドリフトという厄介な特性があるため単純な積分ではすぐに発散してしまい使い物になりません.

2.加速度センサの値から重力の方向を求めて計算する.
この方法はiphoneなどで使われています.しかし手の平で使うiphoneとちがって空間を飛び回る飛行機には重力以外にも機体自身の加速度や姿勢の変化に伴う遠心,コリオリ力も加わり,当然加速度センサはこれらをすべて拾ってしまうため誤差が大きくなりあまり良くありません.

そこで,1と2のいいとこ取りを考えるわけです.センサフュージョンというやつですね.それを実現するアルゴリズムが,カルマンフィルタといわれるものです.詳しく説明すると長くなるので参考サイトのURLを貼っておきます.書いてる本人も詳細な理論はまだまだ勉強中ですが・・・.

実際に適用した結果は下の画像の通りです.青が方法1,赤が方法2,緑がカルマンフィルタを用いた結果です.なお,参考サイトではゲインを毎回計算していますが,ここではオフラインで良さそうな値を求めて固定しています.(チューニングは他のメンバーの人たちがやってくれました)

 
 前半の全てのグラフが振動している部分は機体を左右にロールさせています.後半の赤いグラフだけが振動している部分は,機体を水平にしたまま左右に動かしています.また最初と最後はどちらも水平に静止させた状態です.赤のグラフは平行移動も検出してしまい,また青のグラフは積分誤差のため最後に水平に戻っていませんが,緑のグラフはロール運動のみを検出し,かつ最後はきちんと水平に戻っていることがわかります.

参考URL: Kalman filtering of IMU data
http://tom.pycke.be/mav/71/kalman-filtering-of-imu-data

2010年11月5日金曜日

制御回路と今後の方針

Lambda-Xで使用する制御ボードを紹介します.
基板のサイズは一辺49.5mmの正方形で,重量は13.3gです.

使用部品,機能
・マイコン:dsPIC33FJ128GP804(16bit 40MIPS)
・IMU: Sperkfun 6DOF Razor
  (3軸加速度計+3軸ジャイロ)
・受信機インターフェース6ch
・サーボ出力最大7ch
・MicroSDカードスロット
・UARTによりPCとシリアル通信可能
・LED×2,スイッチ×1, 半固定ボリューム×2搭載


これらが大会終了直後に届いた(笑)厚さ0.8mmの基板上に表面実装されています.細かいはんだ付けが大変でした.1608サイズのチップLEDなんて米粒の3分の1くらいの大きさです.

さて,今後の方針としてはこれを機体に搭載して飛行試験を行うわけですが,
まずはピッチ,ロールの安定性増大制御による手放し水平飛行を実現したいと思います.
(ラムダ号は固有安定性を小さく設計したためそのままでは手放しは困難です.エレベータから手を放すと3秒も持ちません)それが出来た後は6自由度をフルに使った挙動を研究していきます.

なお,この研究では姿勢制御による飛行特性の可変と従来のラジコン機にはない挙動を目標としており,オートパイロットやナビゲーションは今のところ特に考慮していません.

制御則の実装については今後詳しく書きますが,現段階ではピッチ,ロールは線形化して計算しています.この方法では姿勢が大きく変わると不正確になるので現在DCMによる方法を準備中です.

2010年10月31日日曜日

~コンセプト~ CCVとは何ぞや

飛行ロボコンの熱い戦いから早くも1週間が経過し,
外は冬の気配が近づく今日この頃.皆様いかがお過ごしでしょうか?

さて,このブログでは大会で実現できなかった飛行制御について,
個人的に少しずつ研究していきたいと思います.
機体名の"X"は性能が未知数の研究機という意味を込めています.

間違ったことは書かないように気をつけますが,航空力学に関しては独学のため,
記述に間違いがありましたらご指摘をお願いします.

・CCV (Control Configured Vehicle) とは?

ごく簡単に言えば,制御技術を駆使して運動性を向上させた航空機のことです.

中でも,右の図(Wikipediaより)のように,機体の姿勢と飛行経路を独立に制御可能なものを指すことが多く,Lambda-X もこのような機体を目指しています.



・要素技術
このような高度な制御は人間の能力のみでは困難であり,センサとコンピュータによるフィードバック制御が必要になります.最近では小型,低価格なセンサ,マイコン,サーボが入手可能になっており,それらを活用すれば室内ラジコン機でもCCV機が実現できるのではないか?と考えています.