今回は前の記事
【10g】自作クアッドコプター"Quadruptor"ができるまで・前編
の続きをお送りします.
前回は,クアッドコプターを構成する各要素の動作チェックの流れと,機体の姿勢推定について書きました.
今回は,クアッドコプターを制御して飛ばすまでの流れを見ていきます.
制御の基本的な考え方については,部長の記事を参考にしてください.
また,詳細は私の個人技術Wikiに書いてありますので,そちらも確認してみてください.
Quadruptor - マシン情報 - Tokoro's Tech-Note
制御工学の最も基本的な考え方というのは,
目標との差が小さくなる方向に動かす
ということに尽きると思います.
ロボットの制御では,だいたい1/200秒〜1/50秒程度の時間(制御周期と呼ぶ)ごとに,次のような処理を行います.
- センサから情報を取ってくる(加速度,距離など)
- 自分の今の状態を計算する(位置や角度など)
- 目標値とそれを比べる(基本的には引き算)
- 比べた結果をもとにして,モータなどの出力を決める(制御則というルールを使って計算)
- 実際にモータなどに出力する
クアッドコプターの場合にもこれと同様の考え方を使います.
つまり,目標とする姿勢角に近づくようにプロペラを回すという動作を,とても細かい時間ごとに行うことになります.
私は制御工学のうち,制御理論と呼ばれる分野を専攻しているのですが,これの担当範囲はここでいう4番にあたります.
数学(微分・積分・行列・ベクトルなど)と物理を駆使して制御を行うためのルールを構築していくのです.
余談になりますが,このルールには「これが絶対に正しい」というものはありません.
10人の人がルールを作ると,おそらく10通りのルールが出来上がるでしょう.
性能の差はあるとは思いますが,これのうちどれかが絶対に正しい,正解だということはありませんし,逆に全部間違っているというわけでもありません.
よく,「理系的な学問は正解が1つに決まる」などという言葉が飛び交うのを見かけますが,それは間違いです.
理系,特に工学というのは,正解のない問題に対してどうアプローチするか,どうデザインしていくかというところがポイントになってきます.
正解が1つなら,飛行機の形だって全部同じなはずでしょう?
(余談終わり)
クアッドコプターの場合,プロペラを適当に回しただけではどっかに吹っ飛んでいってしまいます.つまり,狙ったとおりに飛ばすためには制御することが重要になります.
これをプログラミングして,マイコンに書き込んで動かすと下の動画のように飛ばすことができるようになります.
後編では,制御の考え方とマイコンの中でどのような処理を行っているのかについて書きました.
前編後編通して,ロボットを作るにあたってどのようなステップを踏むのかということについて,少しでも興味を持ってもらえたら幸いです.