はじめに
GPSの届かない室内でもドローンの自律飛行が可能となるよう、GPSに変わるドローンの誘導方法を確立することを目的とし、できるだけ安価で簡易的な手法で、どの程度きめ細かな自律飛行制御が可能なのかを検証を通して確認していきます。
そこで、GPSに代わってドローンに位置情報を提供するためのツールとして簡易マーカーを壁に貼り、ドローンに搭載されたカメラからそのマーカーが指示する内容を受け取り、飛行制御に利用することにしました。
マーカーを用いた室内自律飛行のイメージ
開発環境について
本検証のテーマからはずれないよう、各種条件を以下の通り規定しました。
ハードウェア条件
- ドローン:屋内での飛行を考慮し、墜落に伴う危険リスクの少ない小型で軽量なものを使用する
- カメラ:可能な限り、追加の費用や重量が発生しないよう、ドローンに搭載済みのもので対応する
- マーカー:すぐに入手できる汎用的なものか、オリジナルの場合であっても容易に作成できるものとする
ソフトウェア条件
- できるだけドローンの機種やハードウェアに依存しないもの
- 最終的に、ドローンに直接搭載させることが可能な、小型PC上でも軽快な動作が可能なもの
開発環境については、上記条件と各種実績を踏まえ、以下のものを選択しました。すべて無料で利用可能なオープンソース・ソフトウェアでの構成です。
開発環境
- OS:Linux(Ubuntu 16.04)
- 開発言語:Python
- フレームワーク:ROS(Robot Operating System)- Kinetic(※)
- 画像処理ライブラリー:OpenCV 3.0
※ROS (Robot Operating System)はロボット・アプリケーション開発のための多くのライブラリを含んだ開発環境です。詳しくはこちらをご参照ください。
マーカーの役割について
飛行ルートの指示
障害物に衝突せずに目的地まで到達させるために、事前に安全が確保されたルートを経由し飛行する必要があります。マーカーを使ってドローンの進むべき進路を提供します。
壁との衝突回避
マーカを壁に直接設置することで、壁との距離が確認できます。壁に近いほど移動速度を抑えたり、壁に近づきすぎないようにするなど、壁との衝突をマーカーによって回避することが可能になります。
補足:機体の水平のバランスや回転中の状態については、GPSがなくてもドローン自体が自律的に認識しコントロールが可能です。しかし、室内で機体がどの方向を向いているのか(壁に対する相対角度など)はわからないため、マーカーの活用が重要になります。
マーカーを使った飛行ルートの誘導イメージ
離陸から着陸までの制御ステップの例
- ①:右旋回用マーカー
- ②:上昇用マーカー
- ③:右旋回用マーカー
- ④:着陸用マーカー
- A:離陸後、マーカー①が見つかるまでその位置で上昇
- B:マーカー①が正面に来るよう機体を制御しながら図左側の壁に接近
- C:右方向にマーカー②が見つかるまでその位置で旋回
- D:マーカー②が正面に来るよう機体を制御しながら図中央の壁に接近
- E:上方向にマーカー③が見つかるまでその位置で上昇
- F:マーカー③が正面に来るよう図中央の壁との距離を保ったまま機体を制御
- G:右方向にマーカー④が見つかるまでその位置で旋回
- H:マーカー④が正面に来るよう機体を制御しながら図右側の壁に接近
- I:図右側の壁に接近後、その位置で着陸
マーカーの選定について
自作マーカーや汎用マーカーの比較検討
選定に当たり、複数の自作マーカーや汎用コードを用意し、飛行に必要なマーカーとしての条件を満たせるのかを調べました。
単純なマーカーは比較的遠くにあっても認識しやすい特長がある一方、棚や掲示物またはそれらの影、そして壁の模様などと誤認識しやすくなり飛行中に想定外の事態に陥ることが分かりました。また、バーコードやQRコードのような汎用コードをマーカーとして使用した場合は、カメラ側の解像度の影響を受けないよう、ある程度の入力画像サイズが必要となり、簡易的に使用することが困難であることが分かりました。
ArUcoマーカーを採用
汎用ARマーカーであるArUcoマーカーは、コード部分が縦横4~8ピクセルからなる正方形の2次元マーカーです。検証では最もシンプルなArUcoマーカーの場合、縦横それぞれが10ピクセル程度の入力サイズがあればほぼ確実に正しく認識されることがわかりました。単純なマーカーの欠点である「影や模様との誤認識」、多くの汎用コードの欠点である「必要入力サイズ」の問題を同時にクリアーできました。本来はARマーカーとして利用するものですが、結果的に安定飛行に必要な「壁とドローンとの相対角度」も同時に取得する事ができるため、飛行制御用のコードもシンプルになるなど、想定外のメリットも見つかりました。
ARマーカーとは
AR(Augmented Reality:拡張現実)システムにおいて、実在する風景にバーチャルの視覚情報を合成する際に必要となる、「空間認識」のために使用されるマーカーです。
ArUcoマーカーとは
OpenCVのArUcoモジュールで提供されるARライブラリーにより、ArUcoマーカーの生成、検出等が行うことができます。
ドローンの選定について
現在も交換部品が入手可能で、比較的安価なものであること。そして外部と飛行データ等のやり取りが可能であることなどを考慮し、以下のドローンを選択しました。
Parrot BEBOP2の紹介
- わずか500g。安全性を最優先した超軽量設計。
- 2750mAhバッテリーにより、約25分間フライト可能。
- 内蔵の魚眼レンズカメラは最高1080-30fpsの映像が撮影可能。
- 機体の傾きや揺れに関わらず、画像は水平を保つように3軸方向でデジタル補正。
Parrot Bebop 2 https://www.parrot.com/jp/doron/parrot-bebop-2
検証計画について
制御の複雑さと飛行の難易度に合わせ、以下のステップで段階的に検証を行っていきます。
- STEP1:狭い室内空間での飛行
- STEP2:異なる部屋への移動(ドアの通り抜け、通路の移動)
- STEP3:異なるフロアーへの移動(階段の上下移動)