※本飛行テストは、GPSが利用できない室内や地下でもドローンの自動巡回を可能にさせる方法として、マーカーを活用した画像処理による自律飛行の有効性を検証するために行ったものです。
※本飛行テストの開発環境や実際に使用したArUcoマーカーについては、技術情報ページに詳しく記載しています。
飛行概要
- 飛行日: 2019年04月03日(2019年5月15日に再飛行を実施)
- 飛行機体: Parrot Bebop 2
- 飛行目的: 小型ドローンの屋内自律飛行テスト(異なる部屋への移動)の検証
- 許可申請: 不要
マーカーについて
STEP1では、方向転換の位置は一律壁から0.5mと固定だったため、マーカーの役割は、単に方向転換の種類(実際には右回転と着陸の2種類のみ)を指示するだけでした。また、飛行ルートは最初に認識したマーカーをたどるという単純なものでした。今回のSTEP2では、ドローンに対して複雑な飛行ルートと状況に応じた方向転換の位置や種類を与えることができるよう、マーカーの種類と役割を拡張しました。拡張したマーカーの種類と役割は次の通りです。
方向転換ポイント用マーカー
- 順序指定マーカー:方向転換ポイントの順序(飛行ルート)を指定するために使用する
- 距離指定マーカー:方向転換の位置を、方向転換ポイントごとに指定するために使用する
- 動作指定マーカー:方向転換の種類を、方向転換ポイントごとに指定するために使用する
回避用マーカー
- 回避マーカー:飛行ルート上にある障害ポイントを回避するために使用する
これらのマーカーの設置ルールは次の通りです。
方向転換ポイント用マーカーの設置ルール
順序指定マーカー
- 飛行ルート上の方向転換ポイントに必ず設置する
- 最初のマーカーは、離陸地点上の任意の高さと方向から認識可能な場所に設置する
- 次のマーカーは、直前の方向転換ポイントでの方向転換中に認識可能な場所に設置する
- 最初のマーカーから最後のマーカー(目的地点)までのマーカーIDは連番とする
距離指定マーカー
- 順序指定マーカーと組み合わせて設置する
- 設置は任意であり、未設置の場合はプログラムに登録されたデフォルト距離が使用される
動作指定マーカー
- 順序指定マーカーと組み合わせて設置する
- 最後の順序指定マーカー(目的地点)には、着陸用の動作指定マーカーを必ず設置する
- 目的地点以外の設置は任意であり、未設置の場合はプログラムに登録されたデフォルト動作が使用される
回避用マーカーの設置ルール
左右の回避マーカーを単独で使用する場合(下図左写真)
- 衝突の恐れがある障害物の左または右側を安全な距離を確保して飛行させたい場合、ドローンを飛行させたいルートから規定距離(プログラムで設定)だけ離れた壁または柱に設置する
- 飛行中に次の順序指定マーカーが同時に認識できるように設置する
左右の回避マーカーをセットで使用する場合(下図右写真)
- ドアや通路などの空間の中央部分を安全に通過させたい場合、ドローンを飛行させたいルート両側の壁または柱に設置する(2つの回避マーカーの中央が飛行ルートになる)
- 飛行中に次の順序指定マーカーが同時に認識できるように設置する
共通ルール
- 順序指定マーカー、距離指定マーカー、動作指定マーカー、回避マーカーのIDが互いに重複することがないようにID範囲を規定し、マーカーのIDからマーカーの種別が判定できるものとする
飛行プログラムについて
飛行プログラムは、以下の手順で飛行制御を行うよう作成しました。
飛行制御の手順
- 離陸~1番目マーカー検出:離陸地点の上空で方向転換(右回転)を行い、目標(1番目ID)の順序指定マーカーが正面に検出され次第、方向転換(右回転)を中断する
- 方向転換ポイントの解析:目標の順序指定マーカーとともに設置された、距離・動作指定マーカーから方向転換ポイントまでの距離と方向転換動作の種類を解析する(距離・動作指定マーカーが未設置の場合は、予め決められた距離・動作を適用する)
- 方向転換ポイントへの移動:目標の順序指定マーカーに対し正面を向くように姿勢を制御しながら、方向転換ポイントまで接近する
- 衝突回避を優先にした飛行:方向転換ポイントまで移動する過程で回避用マーカーが設置されていた場合、設置ルールに基づいた回避動作を優先して行う
- 方向転換~次IDマーカーの検出:方向転換動作の種類が「着陸」以外の場合、方向転換ポイントで指定動作を行い、目標(次ID)の順序指定マーカーが正面に検出され次第、方向転換を中断する(以降、2.方向転換ポイントの解析から繰り返し)
- 方向転換ポイントでの着陸:方向転換動作の種類が「着陸」の場合、方向転換ポイントで着陸し、飛行を中断する
また、順序指定マーカーと組み合わせて設置する距離・動作指定マーカーの設置可能エリアや設置ミス時の解釈ルールについては、プログラム側で以下のように対応させました。
距離・動作指定マーカーの認識条件
- 距離・動作指定マーカーの認識可能範囲:順序指定マーカーの4倍のエリアに含まれる距離・動作指定マーカーのみを認識する
- 同一種マーカーの複数設置:同じ種類の距離・動作指定マーカーが複数見つかった場合、最も大きなIDのみを認識する
さらに、今回のように複数のマーカーを組み合わせて使用する場合、方向転換ポイントへの接近とともに順序指定マーカーの周囲の距離・動作指定マーカーが視野から外れやすくなるため、次の対策を組み込みました。
距離・動作指定マーカーIDの認識とリセットのタイミング
- 認識のタイミング:一度認識された距離・動作指定マーカーは、それらのマーカーが視野から外れるなどし認識できなくなってもIDを維持し続ける
- リセットのタイミング:それまで維持していた距離・動作指定マーカーのIDは方向転換動作の開始時にリセット(破棄)する
今回も順序指定マーカーへの接近時に起きやすい壁への衝突を低減するため、STEP1と同様の飛行中の安全策を組み込みました。
飛行ルート設定とマーカー設置について
できるだけ様々な飛行条件での検証が一度にできるよう、ルート設定しました。
飛行ルート
検証項目
- 異なる部屋間の移動が可能であること
- ドアおよび通路を安全かつ確実に通過できること
- 直行する通路への侵入や突き当りを折り返す動作により、直線以外のルートも飛行可能であること
- 離陸から着陸までの一連の動作をすべて自動で行えること(自動巡回が可能であること)
各マーカーのIDと役割を以下の通り割り振りました。
動作・距離・順序指定マーカーのID割り振り
今回の飛行ルート上にはマーカーまでの距離が5mを超える場所があるため、25cm角用のマーカーも使用できるよう、IDの割り振りをしました。
実際に設置したマーカーの様子は次の通りです。
マーカー設置
距離・動作指定マーカーのデフォルト値が使用される方向転換ポイントでは、距離・動作指定マーカーの設置を省略しました。
- デフォルト動作:右回転(ID=7)
- デフォルト距離:0.35m(ID=11)
- 部屋A壁に順序指定マーカー(第1ターン:②へ誘導)
- 部屋Aドア枠の右に回避マーカー(ドア右枠との衝突回避)
- 廊下の壁に順序・動作・距離の指定マーカー(第2ターン:⑤へ誘導)
- 部屋B入り口の両側に回避マーカー(ドア両枠との衝突回避)
- 部屋B正面壁に順序・距離の指定マーカー(第3ターン:⑥へ誘導)
- 部屋B右奥のクローゼットに順序・距離の指定マーカー(第4ターン:⑦へ誘導)
- 部屋B左壁に順序・動作・距離の指定マーカー(第5ターン:⑩へ誘導)
- 部屋B出口の左に回避マーカー(ドア左枠との衝突回避)
- 廊下のトイレ側コーナーに回避マーカー(廊下壁との衝突回避)
- 廊下突当りの壁に25cm角の順序・距離の指定マーカー(第6ターン:⑪へ誘導)
- ベランダのガラスに順序・動作・距離の指定マーカー(着陸地点へ誘導)
検証結果
今回の検証では残念ながら第5ターンで失敗してしまいました。こちらにテスト飛行中の飛行データを記録した動画を掲載いたします。
※START(部屋A)~第5ターン(部屋B出口)までの映像です。
補足
解析中画面が時折モノクロ画像に替わるのは、マーカーの検出精度を上げるため一時的に2値化処理に切り替えた際の現象で、画像の転送エラーなどではありません。
追記
後日、問題箇所のプログラムを修正し再度撮影にチャレンジいたしました。(動画を本章の終わりに追加掲載しています)
マーカーの有効性について
STEP2での重要検証テーマである、ドアの通り抜けや狭い廊下での通行や方向転換についても、マーカーによる誘導で十分対応出来る可能性が見えてきました。残念ながら、間口の狭い扉越しに次のマーカーを発見させるためには、さらに第5ターンのターン位置の調整が不十分でした。
距離・動作指定マーカーを利用した、場所ごとの方向転換パターンの設定
- 狭い場所での方向転換では、距離・動作指定マーカーによって場所ごとの条件に合わせた動作をドローンに対して与えることができる
回避マーカーを利用した危険箇所の通過
- 回避マーカーを単体で使うことで、衝突の危険がある壁や柱など障害物と、一定の距離を保って飛行させることできる(下図左写真)
- 左右の回避マーカーをセットで使用することで、衝突や接触の危険が少ないスペースの中央を飛行させることができる(下図右写真)
安全な飛行のために
結果的に今回の実証用プログラムでは、移動のスピードを落とし、姿勢の制御を優先する方法を選びました。スピードを優先しようとするとドローンを目標となるマーカーに直線的に飛行させることになります。STEP1では同一室内で障害物が無かったことから、比較的この方法でも安全に飛行することが出来ました。STEP2でも最初はこの方法でスタートしましたが、多くの問題に直面することになりました。(そもそも安全な直進ルート上にマーカーを設置しているため)目論見通りにマーカーに対して正面から進んだ場合はこのような問題は起きませんが、その他の方向から進んだ場合に経験した飛行を失敗する可能性があるリスクを次に紹介します。
斜め方向から直線的に飛行した場合の問題点
- マーカー近くにある障害物が、ドローンがマーカーに近づくに連れドローンの視界を遮るリスクが高くなる
- 壁際を飛行している場合、マーカーが視野の中央に来るよう左右のポジションを調整した結果、移動した側の壁に接触するリスクが高くなる
- 斜め方向からマーカーに接近した場合、前進によりマーカーサイズ大きくなるだけでなく、横方向にもマーカーずれていくため、マーカーが急に視野からはずれるリスクが高くなる。結果的に接近しすぎていることすら判定できなくなってしまうため、壁との衝突が避けられない。
そこでプログラムに手を加え、マーカーに対する最短距離での飛行ではなく、できるだけマーカーの正面から接近させることにしました。STEP1から使用しているマーカーとの距離に応じたスピードコントロールと組み合わせ、次のような制御を行いました。
マーカーへの接近時におけるスピードコントロールと姿勢制御
- 前進、左右位置調整、上下位置調整、マーカーに対する角度調整の際のスピード(移動量)は、全て方向転換位置までの距離に応じて徐々に小さくなるよう調整し、方向転換位置での調整量が収束するよう配慮する
- 次の方向転換ポイントに向けて移動を行う際、ポイントまでの距離が遠いとき(4m以上)はマーカーに対する角度を優先に調整し、次に左右の位置調整を行う(前進、上下位置調整には影響しない)
- 次の方向転換ポイントに向けて移動を行う際、距離が極めて近いとき(1m以内)は左右の位置調整または相対角度調整が必要な場合、前進は行わない(上下位置調整には影響しない)
個体ごとの飛行特性への対応
GPSによる位置制御が利用できない場合、個体ごとに異なる回転時の飛行特性(右に流されやすいとか後方に流されやすいなど)が顕著に現れることがわかりました。今回も検証の直前で機体を新しいものに替えたため、旧機体で何度も行ってきたマーカーの貼付位置やターン位置の調整などが役に立たなかったようです。効果の程は確認出来ていませんが、今回の検証では交換後の機体用に簡易的に以下のプログラム修正を行いました。
交換した機体用に追加した制御
- ターン動作の前に一旦数秒間ホバリングさせ前後左右の動きを停止させてからターン動作を行う
- 右回転の終了間際には若干右側に、左回転の終了間際には若干左側に機体を移動させる
簡易的な手法による室内飛行制御の限界も感じられましたが、今後の展開に向けての貴重な体験となりました。
今後の計画について
今回は複数のマーカーを組み合わせることで、STEP2での目的を達成することができましたが、景観としてはあまり良いものとは言えませんでした。次のステップではより少ない設置枚数と設置スペースでも同じ効果が得られるような設置手法を検討していきたいと思います。
追記
2019年5月15日に問題箇所のプログラムを修正し、再度撮影にチャレンジいたしました。実際には本体側の設定ミスにより再チャレンジは成功しませんでしたが、問題がはっきりしていたためすぐに設定を見直し、再々チャレンジを行いました。なんとか成功にいたりましたので、よろしければ最後までご覧ください。