ORIZURUの裏話 4回目「開発後記」
2016-10-07

こんにちは、Lazuriteの開発者1号です。今年もORIZURUは非常に多くの方に観ていただく事ができました。そして、多くの方に「昨年より進化したね」「安定したね」と声をかけていただき、嬉しい限りです。
さて、最終回は今回はじめてチャレンジした空を飛ぶ飛行体の制御プログラムについて苦労した話をまとめました。
飛ばせない…
さて、今回のORIZURUは第一回に記載したように四枚羽による推進力の強化と、テールモータによるピッチ角の制御が特徴です。まず最初に苦労した点はマニュアル操作で飛ばすのが非常に難しいという事です。組み立てた後に動作確認しようにも、正常に飛ばすことすらできませんでした。軽量化した機体に大きなエンジンを積んだということになります。初めてこの機体をマニュアルで操作したとき、成功するだろうかと不安になりました。
直ぐに墜落…
数m飛行したところで、今回の目玉である姿勢制御プログラムの開発に着手しました。昨年は電波をキャッチしたらモーターを制御するという単純なプログラムだったのに対して、今年は姿勢制御を織り込む必要があります。電波とセンサーからの情報が非同期にやってくるので、最初はセンサーの制御がうまく行かずに直ぐに墜落してしまう状態でした。そこでやむなく、新たにセンサーのドライバから新たに作り、それによってシステムが安定して動作するようになりました。
ピクッピクッ…
実際にセンサーからの値を取得してみると、センサーの情報は見事なまでにノイズに埋もれています。羽ばたきによるノイズを見たときには愕然としました。(ノイズ混じりのグラフはステージの時に見ることが出来る上から二番目のグラフになります。)この値をモーターにフィードバックすると、手に持って羽ばたきをさせるだけでモーターがノイズ信号に反応してORIZURUがピクッ、ピクッと動く状態でした。そこでフィルタを搭載して見たところ、簡単なLPFだと角度情報は正しく取得することができたものの遅延が大きく、リアルタイム制御が出来るような状態ではなくなりました。そこで神に祈る気持ちでKALMANフィルタを実装してみたところ、ようやく正しい角度情報が取れるようになりました。
摩擦の無い世界
センサーから正しい情報が取れるようになったら最後は飛行試験になります。ここで初めて摩擦がないモノを制御する難しさに直面しました。まず、動き始めるまでに時間がかかり、動き始めたら止まらないという事です。当然、止めようとしてもすぐには止まりません。当然なのですが、歩いたり走ったりしているときは地面との摩擦があるので方向転換は容易に行う事ができます。しかし、いま自分がやろうとしていることは空中でジャンプしている時に方向転換しようとしていることだということに気が付きました。
また、羽ばたきによる推進力は機体の向きに飛んでいくものだと思いましたが、実際は次のように横から下向きに力が働くようです。実はこれがマニュアル操作の時に操作を非常に難しくしている動きだったのは後から気が付きました。
そして、この下向に向かって働く力に負けない動きをテールモーターで出すことにより姿勢制御をするのですが、このように大きくノックダウンしてしまう状態から抜け出すのに非常に苦労しました。イメージはこのような動きです。
リアルタイム性を維持しつつ、安定飛行のためのモーターへのフィードバックするプログラムには非常に苦労しました。どうしたら良いのか分からず職人技をお持ちの超小形型飛行体研究所、宗像さんの手の動きを見ながら制御プログラムを開発し、ようやく今回のORIZURUの制御に成功することができました。
諸々のソフトウエアは確認が完了した時点で、ソースコードを公開していきたいと思います。
Lazurite Flyは11月に発売予定です。是非、皆様のチャレンジ貢献できたら幸いです。