東大発の小型自律飛行ドローン「Phenox 2」を開発した天才エンジニアに聞く開発秘話!

スポンサーリンク

 

東大発の小型ドローンとして注目を集めている「Phenox 2」はオンボード上で自律制御ができるだけでなく、「空中アプリケーション」のプラットフォームとして、利用者がLinux(Ubuntu 13.04)を利用して自由に動作をプログラムできることでも大きな話題を集めています。FPGAを用いた高速画像処理が可能なため、リアルタイムで自己位置推定を行うこともPhenox 2の大きな特徴です。

今回はPhenoxを開発した東京大学大学院工学系研究科航空宇宙工学専攻の博士課程に在籍中の此村 領氏に株式会社CLUEのCEOである阿部がインタビューを行いました。

 

phenox 2

此村 領, チーフエンジニア

東京大学大学院工学系研究科航空宇宙工学専攻(知能工学研究室)博士課程に在籍。
2012年に東京大学工学部航空宇宙工学科
2014年に東京大学大学院工学系研究科航空宇宙工学専攻修士課程を卒業。

 

phenox2

開発中のPhenox 2

 

阿部:オンボード上で自律飛行制御できる小型のクワッドコプターだとPhenoxが世界初だということですが、研究開発していく初期に一番難しいと感じた部分はどんなところだったんですか?

此村:そうですね、そこはほぼ画像処理です。画像処理以外にも飛行制御の部分ももちろん難しかったのですが、画像処理の部分は僕が研究室に入る前からちょっとずつ準備してきていて、何年かかけて作ったものをようやく乗せることができたというくらい、開発期間は画像処理に注がれていたんじゃないかと思います。

 

阿部:画像処理というのは基本的に室内で飛ばすことを前提として、リアルタイムで周囲のオブジェクトを認識して避けるようなものですか?

此村:そこまではいかなくて、ほんとにもっとプリミティブな信号処理の部分です。画像を取ってくるところから始めて、その画像をどこに保存するのかというのが第一の課題でした。通常このような小さいコンピュータで画像を保存するというのは非常に難しくて、普通のマイクロコンピュータではできないですし、今は組み込みLinuxでウェブカメラで撮れるというのもあるんですが、そういうものよりももっと下のレベルでやらないとサイズがでかくなってしまうのと、やっぱり飛行制御するコンピュータというのはリアルタイム性が求められるので、そうするとLinuxが乗っているCPU以外に飛行制御をするCPUもセットで必要になるということで機体が大きくなってしまうんです。当初から小さくすることには徹底的にこだわってきていて、カメラの信号を直接読み取るという方法がなんとしてもやりたかったというのがありました。そこでようやくFPGAが登場してきて。FPGAを触り始めたのは画像処理がきっかけでした。

 

phenox2

研究室には開発のために様々な機材が並べられています

 

阿部:FPGAを触り始めたのは学部生の頃からですか?

此村:そうですね。大学二年生のころにFPGAを始めて、それも独学でやっていました。FPGAの専門家の先生がいるわけでもないですし、本を読んで自分で手探りでやっていました。いろいろやりながら覚えていくというのがずっと続いている感じでした。

 

阿部:FPGAという話が出てきたのでお聞きしたいのですが、Phenox 2ではXilinx社のZynq-7000 SOCを利用しているということですが、他の製品とはどのような違いがあるのですか?

此村:たとえばRaspberry Piとの違いですと、Raspberry PiはLinuxが乗っている組み込みのパソコンみたいな存在じゃないですか。IOポートとかを叩くときってたぶんLinux側から叩いているんですけど、ロボットとして使うことを想定した場合に、タイマーのサイクルですとか、センサーとかアクチュエータをいっぱい使いたいというときにやっぱりそのボードだけではできないというところで、Zynqであれば低レイヤーの信号が使えて、Linuxとは別のマイクロコントローラのようなユニットで扱えるものが必要になるなと。PhenoxのZyngではCPUが2つあるのですが、片方にLinuxを乗せていて、もう片方はマイコンボードのような使い方ができるので、一つのチップの中で役割を分けることができるんです。それぞれのCPUはチップの中なので簡単にお互いに通信ができるので、実世界のロボット向きのボードでかつRaspberry Piのような組み込みLinuxのボードよりもかなり小さくできるというのが大きな違いです。あと、FPGAが付いているので、信号処理ができるので、画像信号を読んできてメモリに保存するような処理をCPUを使わないで全部FPGAだけでできます。あとはPhenoxに限って言えば、画像特徴点というのがあるのですが、それを検出する処理をCPUではなく、FPGAでやることによって高速な自己推定ができるようになります。小さいボードでも自律飛行に必要な要素があります。

 

阿部:この制御ボードはPhenoxだけではなく、大型のマルチコプターや他のロボットにも汎用的に使えるんですか?

此村:はい、大型のマルチコプターに搭載して飛ばすこともできます。ボードとしての拡張性がありまして、クワッドコプターであれば、このボード一つで制御できます。あとはカメラとかマイクとか汎用的なセンサーも付いているので、何か別のロボットに転用することもできます。まだAPIの準備はしていませんが、アクチュエータポートが4つあるので、それらのポートを使って上手く拡張することもできます。また、汎用のシリアルも通信バスも用意しているので、そういうものを使って拡張することもできます。GPSボードを繋げるなどの使い方も想定しています。

 

phenox2

Phenox 2の制御ボードが搭載可能な大型のクワッドコプター

 

阿部:大きいクワッドコプターにも転用できるということですが、機体の直径やローターの個数が変わるとフライトコントローラーの姿勢制御の部分は小型のものとは異なる制御が必要になりそうですが、特に問題はないのでしょうか?

此村:ヘリコプターなどと比較すると、基本的にクワッドコプターの姿勢制御は簡単なんです。大きいクワッドコプターになると変わることとしては、姿勢制御のためのゲインが変わるのでゲインパラメータを調節するということは必要となるのですが、それさえ変更すれば、同じ運動モデルで動くので特に変なことはしなくても問題ありません。

 

阿部:別のメディアのインタビューで拝見したのですが、Linuxが搭載されているCPU0のほうで設定している初期パラメータを変更すれば問題ないということでしょうか?

此村:はい。あとは、大きいモノを搭載する場合にはホバーに必要な推力のパラメータは手作業で変えてもらう必要がありますが、ある程度のペイロードを乗せて飛ばすこともできます。

 

阿部:初期にハードウェアを開発するときは此村さんがお一人でやられていたとお聞きしたのですが、フライトコントローラーなどを含め開発にはどれくらいの期間がかかったのでしょうか?

此村:僕はいまドクターの2年生なので、修士1年から数えると3年と数カ月前にこの研究室に入ってきたのですが、当時はクワッドコプターというコンセプトすらなかった状況でした。こちらはZynqになる前の初期のボードです。

 

phenox2

開発初期のボード

 

この当時は真ん中に乗っているのがFPGAで、アームマイコンが乗っていて、初期のころはこういうボードでやっていました。この状態では当然クワッドコプターに必要なものは入っていないのですが、そこからこれとは別に最低限必要なマイコンボードとかを設計して、それからもかなり試行錯誤していました。今となれば当然なのかもしれませんが、当初は4つのプロペラに何も制御をかけずにモーターを回せば浮くものだとずっと思っていて、そういう時期が一度始まるとずっとそれが頭から離れなくて、なんか飛ばないなという時期がすごく続きました。半年くらいそんなことをやっていて、ちょっと制御をかけてみるかといってやり始めたんですが、やっぱり全然飛ばないみたいな時期が続いて、ようやく冬くらいになって何か分かってきて、要は制御パラメータが偶然合ってきたんです。なんかこれ、こうすると飛ぶのかなというところから、飛ぶかもしれないと思ってひたすらパラメータ調整をしていました。色々そういうことをやっているうちにM1の冬からM2の春くらいに飛ぶものができたという感じです。

 

阿部:制御系のパラメータは何個かの変数があると思うのですが、ちょうどいい値を見つける作業がかなり時間がかかったということですか?

此村:そうですね。あとは結構最初は壊れたりするんです。乱暴に扱うので、インターフェイスが整っていないのもあり、結構落としたりして、また材料を取り寄せたりする必要があったので、それを待つ時間もあり、ずっと作業をしていたという感じでもないです。

 

阿部:一個目のプロトタイプが完成するまでにどれくらいのコストがかかりましたか?

此村:100〜150万くらいかかったかもしれません。いろいろと試行錯誤をして、いろいろと無駄なことをやってという感じでした。

 

阿部:PhenoxではマイクロSDカードを使っていますね。Raspberry Piでも同じようにマイクロSDカードを使っていてOSをインストールしてソースコードを管理するために利用しているのですが、Phenoxの場合にはマイクロSDカードはどのような役割を果たしているのですか?

此村:Phenoxの中も同じで、Ubuntuのファイルシステムが入っています。1つのSDカードの中に2つのパーティションが切ってあって、bootファイルの中にCPU1の部分とFPGAの部分の非公開のバイナリーが入っています。またPhenoxライブラリもあってユーザーのプロジェクトが作れるような感じになっています。

 

阿部:Linuxのほうでは既存のライブラリを利用して、関数を呼び出すとクワッドコプターに動作を行わせることができるようになると。

此村:はい。実メモリを割り当てて、画像だったらここの領域を最初に割り当てると決めて、そこでCPU1もどこのアドレスになにがあるというのを知っているので、そのアドレスを使ってFPGAが書き込んだ画像を呼び出すという処理ができるようになっています。ユーザーはあまりこれを知る必要はないのですが、結構更新はあるので、知っていてくれると助かるという感じです。実際のユーザーのプロジェクトはCやC++で書けるのですが、Phenoxの関数を利用して制御できます。あとはタイマー割り込みの中で周期的に呼び出される関数もあります。笛を吹いたときに飛び上がりなさいとか、もし飛んでいる状態なら下りなさいといった制御ができます。これらの関数を使うと、Linuxから飛行に必要なAPIを呼び出したり、生画像を呼び出したりとか音声を取得したりができますね。

 

 

阿部:マイクロSDカードが4GBというのは比較的小さいと思うのですが、特に問題はないんですか?

此村:1GBくらいは余りがあるので問題ないです。8GBとかは試したことがないのですが、たぶん大丈夫です。ファイルシステム自体はソースコードはクローズドですが、SDカードの環境構築はユーザーができるようになっているので、ユーザーが8GBのSDカードを用意して、パーティションを切ってもらってフォーマットして、そこにPhenoxのUbuntuを7GBくらい割り当てるといったこともできます。

 

阿部:SDカードの方に動画を保存しておきたいといったニーズがある場合には大きめのものを用意しておく必要があるんですね。

此村:はい、そうです。

 

阿部:Phenoxは室内で利用することを前提に作られているんですか?

此村:そうですね。僕の中でドローン自体が小さくなってくると、今後は屋内の可能性も開けてくると思っていて、屋内でいろんなことができるようなることが面白そうだなと思っています。

 

阿部:屋内利用であれば球体状のフレームを利用して、モノや人に当たっても事故が起こらないようにする取り組みも行われていますね。今後、フレームの形状自体を変えていくということも考えていらっしゃいますか?

此村:僕は回路のデザインがメインなので、フレームのデザインは熱心にはやっていないのですが、そういう可能性は普通にありますし、ぶつかっても大丈夫というのは大切な技術だと思います。

 

阿部:初期は軽量化のために中空のフレームを3Dプリンターで出力していたとお聞きしました。最近のPhenoxはかなり強度が上がってきたということで、従来のフレームと比較してもだいぶ進化してきたんですか?

此村:3Dプリンターというのはそもそも脆いので、現在のフレームがすごくなったというよりも、当たり前のことができるようになったという方が近いと思います。現在のフレームは3Dプリンターではなく業者さんに頼んでいるので折れないですね。ナイロン製でできています。

 

阿部:材料というと、軽量でかつ剛性が強いものだと、炭素繊維やガラス繊維のようなものを使うのもありなのかなと個人的には考えているのですが、コストの面で実現が難しいのでしょうか?

此村:フレームのデザインをする際に、僕の個人的な感覚では量産ができるかを頭の隅で意識しているので、作りやすい材料で作れるのが一番良いかなと思っています。軽さで性能を追求するのもありなのですが、軽さだけでは劇的に性能が変わるわけではないので、カーボンは手を出していないですね。

 

阿部:Phenoxの出荷は8月を目処に出荷する予定ですか?

此村:そうですね。8月に開始と書いていたのですが、8月にようやく基板製造が開始されるので、8月末に最初の人に出荷できるかなというタイミングです。

 

阿部:Phenox 2は全体では合計でいくつ出荷する予定なのでしょうか?

此村:今回は50台を募集していたので、50個作ろうかなと思っています。少量なので僕が手作りで組み立てます。ただ、ハンダ付けはやらなくて済むように全てネジ止めとコネクタ化するようにしたので、そういう意味ではユーザー自身もバラバラの状態から組み立てることができるようになりました。前のPhenox 1のときは1台作るのに2時間半くらいかかりました。ぎりぎりまでデバッグしていたので、カメラの基盤も自分で実装していました。モーターのケーブルも全部ハンダ付けするんですけど、ブラッシュレスモーターは回転方向が分からないので、一度回して、反対方向だったら3本から2本選んで入れ替えるといったことをしていたので、1台あたりの製造コストがすごかったんです。人件費をゼロにしたとしても赤字ギリギリくらいのラインで前はやっていました。

 

阿部:Phenox 1を出荷したときにユーザーさんからフィードバックなどはありましたか?

此村:実はほとんどフィードバックがなくて、逆にこっちが不安になってくるという感じでした。たぶん飛ばすところまでみんなやっていないんじゃないじゃないかなと思っています。Linuxを立ち上げて、画像を撮るところまでやって、飛ばすのはちょっと難しいという感じだったと思います。ドキュメントがあまり充実していなかったので。今回はそこも反省点なので、できれば飛ばすところまでやっていただきたいと思います。普通に動画とかを配信するのも面白いんですが、やっぱり飛んでいるのが楽しいですし。

 

阿部:Phenoxはプラットフォーム志向で開発者の方にアプリケーションを作って欲しいという方向だと思うので、アプリケーションを公開するような手段があると面白いと思うのですが、現状はそのへんは整備なさっていますか?

此村:そのへんはまだ整えていないので、これからやりたいと思っています。下地はあるので、あとはどういうシステムでやるのかというのが現状の課題ですね。

 

阿部:設計思想としてはアプリがフライトコントローラーに全く影響を与えないようなアーキテクチャになっていて、開発者がアプリケーションを作るときにも安心して作れるのが良いですね。デプロイするときにもかなりやりやすいのかなと。海外ではFlyverというAndroid端末を利用したドローンのアプリプラットフォームもあるのでそれに近いのかなと思います。

参考:ドローン用のアプリ開発・販売プラットフォームを構築するスタートアップ「Flyver」

参考:ドローン用アプリ開発プラットフォームの「Flyver」がドローンに進化をもたらす

 

また、Phenoxの将来の展望についてお聞かせください。

此村:基本的に研究の中で、実用的な飛行ロボットの技術レベルを高めたいというところがあります。そのために、屋内環境で自律的に、人の手を介さずに室内の情報を収集するというところをロボットだけの力でできるようにしたい。そうするとデータが集まるので、集まったデータからやりたいことも出てくると思います。たとえば、一時間おきにフロントカメラから撮った画像を利用することもできると思いますし、まずは情報を集めるというベースの部分を整えたいと思います。そういう意味で自己位置推定の精度をもっと上げていきたいです。充電プラットフォームみたいなものも作らないといけないですし、屋内環境で実用的な用途として利用できるようにしたいです。

 

阿部:千葉大学の野波先生は「sense and avoid」の研究を進めていますが、CPUの集積度が課題だとおっしゃっています。ムーアの法則によると5〜6年程度しないとドローンの自動回避は実現しないのではとおっしゃっていますが、Phenoxでも同様の課題はありますか?

此村:野波先生のところは原発などの実用的なところを本気で目指していらっしゃると思うので、きっちりと細かいものも見分けられないといけないというのが前提なんだと思います。3次元でモノを認識することはできるようになってきているのですが、物体から自分までの距離や位置を同時に構築しないといけないんですが、そのプロセスは計算コストが非常にかかります。モノを避けるだけであれば、なんとなく避ければ良いんですが、その中で自分の計画が最初にあるので、その計画に従いつつ、未知の障害物があったときにそれを避けつつ、また計画を立て直すというところに計算コストがかかります。地図と自己位置の同時復元と計画という要素の課題というのがありますね。あとは、センサー自身が非常に重いので、特にレイザーレンジファインダーなどを使うと非常に重くなってしまいます。Object avoidanceはとてもチャレンジングな課題で、さすがにPhenoxのような小さい機体では実現できないのですが、ただ将来的にはできるようになるかなと思っています。

 

阿部:ドローンのObject avoidanceの課題については、アルゴリズムで解決できる問題なのか、それともCPUの計算速度の問題なのか、どちらなのでしょうか?

此村:僕の小型化のドローンについてはセンサーですね。センサーがもっと小さくなったりして欲しいというのはあります。CPUの集積度がもっと上がることに越したことはないです。FPGAで実装するのも良いのですが、やっぱりCPUで実装するほうが圧倒的に実装しやすいんです。

 

阿部:此村さんは今は博士課程にいらっしゃいますが、将来的には大学の先生になるとか、起業するとか、企業の研究所に入るとかの選択肢があると思うのですが、どのような将来を考えていらっしゃいますか?

此村:やりたいことをやるというのを一番優先したいと思っています。やりたいことというのは自分の好きな研究を続けることで、商品の開発も良いのですが、そういうのをやっていると自分の研究をやりたくなってしまうので、自分でゆっくり時間をかけて考える時間が確保できる出口があると良いなと思っています。

 

 

Phenox 2は実際に目の前に置いてみると、驚くほど小さな機体で、オンボードで自律制御できてしまうという技術力の高さはさすがの一言です。今後もPhenoxを通じて研究を進めていくという此村氏の活躍に大注目です。

いいね!をして
最新ニュースをチェック

Twitter でDRONE BORGを

▼ドローンの最新情報を知りたい方はDRONE BORGのFacebookページに「いいね!」をお願いします。

スポンサーリンク


You may also like