ページ

2017年4月2日日曜日

ロボットの世界大会、MBZIRC2017のドローン自律制御部門に出場してきました

ロボットの世界大会、MBZIRC2017のドローン自律制御部門に、社会人サークルProject C.G.Sとして出場してきました。


思い返せば、かれこれ1年半ほどこの大会に向けて開発を続けてきました。チームとしてもUAVの自動制御は初の試みだったのもあり、並みいる有名大学や企業に混じって何とか出場に漕ぎ着けるので精一杯で、チャレンジの結果は非常に悔いの残る結果になってしまいました。

技術的には突飛なものを使っているわけではなく、特筆するべきアルゴリズムもないので技術ブログしてはコンテンツ不足ではあるのですが、この1年半のけじめをつける意味でもここにまとめを残しておこうと思います。

もしこの記事がこれからドローンの自律飛行を始める方の助けになれば幸いです。

出場した大会について


MBZIRC 2017はMohamed Bin Zayed International Robotics Challengeの名の通り、UAEの首都Abu Dahbi首長国の皇太子が主催したロボット大会です。


大会はAbu DahbiのYas島にあるYas Marina Circuitにて行われました。
※正確にはサーキットの敷地内のCar Display Areaにネットで囲まれたアリーナが敷設され、そこでコンテストが行われました


各チームには電源、冷房完備のテントが割り当てられました。また、昼食や水の配布、ドラッグカーの余興付きのレセプションなど、参加費が無料なのにも関わらず非常に素晴らしい待遇を受けました。さすが石油王ですね!


大会は3つのチャレンジに分かれており、Project C.G.SはこのうちChallenge 1に出場しました。Challenge 1では、着陸ランドマークが描かれた鉄板を上に載せた自動車が8の字に走っており、その上にドローンを着陸させるまでの時間を競います。


大会としてはFPVなどを使った無線操縦も認められているのですが、我々のチームは得点の高い完全自律操縦にチャレンジしました。この場合、スタートの合図でロボットをスタートさせたあとは一切の手動オペレーションが認められず、ドローンは離陸、着陸ランドマークの探索、着陸アプローチ、着陸後にプロペラ停止までを全て自動で行います。

機体について


Project C.G.SではUAVの開発経験がなかったので、機体に関してはなるべく既製品を流用し、一般的な構成になるようにしました。

フレームBumblebee Carbon Fiber Quadcopter Frame 550mm
ランディングギア自作
フライトコントローラPixhawk (PX4 Flight Stack 1.4.4)
受信機Futaba R3008SB
ESCARRIS SIMONK 30A 2-6S OPTO
モーターSunnysky v2216 kv800
プロペラATG1238 (APC 12x3.8SF相当品)
高度センサLidarLite v3
GPSUblox Neo-M8N GPS with Compass
コンパニオンコンピュータOdroid (Ubuntu 16.04)
USBシリアル変換自作(PixhawkのTELEM2に接続)
USB無線LANELECCOM WDC-433DU2HBK
カメラoCam-1MGN-U
電磁石コントローラ自作(GPIOに接続)
電磁石ZYE1-P20/15
PDBPower Distribution Board with 2 x UBEC Output
DC-DCHobbyking HKU5 5V/5A UBEC
バッテリー x2Multistar LiHV 5200mAh 3S 10C x2 (2並列)

この構成で20分ぐらい飛びます。ただslowflyの大きいプロペラを小さめのモーターで使っているのもあって、機体の動きは緩慢であまり応答性はよくありません。また位置制御のゲインも小さめにしていて、風のある環境では結構ふらふらしていました。

我々のソフトウェアはすべてROS上のノードとして構成されており、OdroidのCPU上で動作します。さすがに画像関係の処理はOdroidにとってかなり辛いようで、1280x960のカメラ画像を320x240にbinningしてrectify、HOG識別器でターゲットを認識する処理を5 Hzで動かすので精一杯でした。

また、これらの機能が最初から全てあったわけではなく、すべての機能が搭載されたのはかなりギリギリになってからでした。
特にカメラについては紆余曲折があり、アブダビ出発の2日前にカメラを載せ替え、出発の日に3DプリンタでNDフィルタのマウントを刷ったりとかなり直前まで開発をしていました。

Progress Report 1


MBZIRC 2017では、エントリーから大会本番までに2回、中間審査がありました。Progress Report 1では小型の機体を作って自動制御のテストしました。


この時点では機体が小さいのでコンパニオンコンピュータを載せることができず、機体とノートPCをWifiで接続してノートPC側のROSからリモートで自動制御していました。GPSを載せずに室内環境で自己位置推定するのが難しく、px4flowをちゃんと動かすためにレジャーシートの上でしか飛行できませんでした…

機体はフレームからオリジナルで設計したものです。Wifiモジュールは日本の技適を通っているESP-WROOM-02にmavesp8266のファームを書き込んでノートPCと通信していました。

Progress Report 2


2回目のProgress Reportでは、本番と同じ機体フレームで機体を組み立て、自律飛行のテストをしました。


この時点では自動離陸、探索、自動着陸まで一通り自動で動作しています。

現地リハーサル


現地に入ってから大会本番まで、各チームには2回のリハーサルのチャンスが与えられました。1日あたり40分の時間が割り当てられ、時間が来たらテントからアリーナまでバギーで移動する形です。


現地に入ってからも開発に追われ、足りない機能の追加や改良など、なんだかんだギリギリまでコードを書いていました…
そのかいもあり、2回目のリハーサルの最後では着陸ターゲットにアプローチ、もう少しで着陸できるところまで行きました。この時点ではあわよくば賞金ゲットもありえるという空気がチーム内にありました。

ですが、現実はそう甘くなかったです…

大会本番


本番はリハーサルの2日間とはうってかわって曇り空、風速も5m/s程度あり、あまり良いコンディションではない中での開催となりました。

リハーサルではフィールドに出てテストをしていたのですが、本番はこのようなテントの中からロボットを見て操作します。


Project C.G.Sの機体は1回目のチャレンジで、着陸ターゲットを認識後に高度制御が不安定になり、機体高度が異常に上昇しました。
※後の調査で、機体の状態によっては高度制御が働かない(垂直方向速度を0にする制御のみで外乱による高度変化を打ち消さない)ケースがあり、上昇気流によって機体が大きく持ち上げられてしまった可能性が高いことがわかりました

またテントの中から機体を目視できなくなってからの対応が遅れ、POSCTLに切り替えてテントの外に出たときには既に機体高度は100mを超えていました。この後も上空の強風の影響でPOSCTLで高度を下げることができず、やむを得ずマニュアル飛行に切り替えて着陸を試みました。しかし、高高度の機体制御経験に乏しかったのもあり操縦がうまくできず、最終的に機体は南に大きく流された後に水路に墜落してロストしました。

1日目のチャレンジで機体がロストしてしまったので、2日目のチャレンジは棄権し、Project C.G.Sのスコアは0となりました。チャレンジの全スコアボードはここから参照できます。

他のチームも含めた大会全体のライブストリーミングはYoutube見ることができます。今回入賞したチームはどこも10秒以内での着陸をキメており、技術力の高さを伺わせました。


これからについて


チャレンジ結果は予想の遙か上を行く最悪の結果でしたが、人的被害がなかったのが不幸中の幸いでした。これは我々の空モノの制御に関する知識不足と操縦技術に関する慢心が招いた結果で、この結果を真摯に受け止め今後の改善に努めていきたいと思います。



ただ一方で、他のチームと比較しても我々のチームの技術力はそこまで劣っているわけではないようにも感じました。次大会までの2年間で経験をつみ最新の技術動向を積極的に取り入れていくことで入賞を目指したいです。個人的にはシミュレータの調査と、FPGAベースの画像処理あたりを開拓していきたいですかね…

あと忘れがちですが、ドローンの自動制御をやるには、マニュアルでドローンを安定して飛ばせる技術をもった人が必要です。自動制御プログラムが動作している最中には、バグなどでドローンが予期せぬ挙動をすることが往々にして起こります。また、自作の機体では製品の機体と比べてギリギリの構成で動作することも多く、FCU側のパラメータも調整不足なためPOSCTLがうまく働かないこともあります。その時に瞬時にマニュアル飛行に切り替え、安定してドローンを着陸させる人は絶対に必要です。

自動制御と操縦技術、少しずつではありますが両方とも精進していきたいと思います。

0 件のコメント:

コメントを投稿