同一階の異なる部屋への移動(ドアの通り抜け、通路の移動)/屋内でのドローン自律飛行テスト

※本飛行テストは、GPSが利用できない室内や地下でもドローンの自動巡回を可能にさせる方法として、マーカーを活用した画像処理による自律飛行の有効性を検証するために行ったものです。

飛行概要

  • 飛行日: 2019年04月03日 (2019年5月15日に再飛行を実施)
  • 飛行機体: Parrot Bebop 2
  • 飛行目的: 小型ドローンの屋内自律飛行テスト(異なる部屋への移動)の検証
  • 許可申請: 不要

マーカーについて

前回は、方向転換の位置は壁から一律0.5mと固定だったため、マーカーの役割は、単に方向転換の種類(実際には右回転と着陸の2種類のみ)を指示するだけでした。また、飛行ルートは最初に認識したマーカーをたどるという単純なものでした。今回は、ドローンに対して複雑な飛行ルート状況に応じた方向転換の位置や種類を与えることができるよう、マーカーの種類と役割を拡張しました。拡張したマーカーの種類と役割は次の通りです。

方向転換ポイント用マーカー

  • 順序指定マーカー:方向転換ポイントの順序(飛行ルート)を指定するために使用する
  • 距離指定マーカー:方向転換の位置を、方向転換ポイントごとに指定するために使用する
  • 動作指定マーカー:方向転換の種類を、方向転換ポイントごとに指定するために使用する

回避用マーカー

  • 回避マーカー:飛行ルート上にある障害ポイントを回避するために使用する

これらのマーカーの設置ルールは次の通りです。

方向転換ポイント用マーカーの設置ルール

順序指定マーカー

  • 飛行ルート上の方向転換ポイントに必ず設置する
  • 最初のマーカーは、離陸地点上の任意の高さと方向から認識可能な場所に設置する
  • 次のマーカーは、直前の方向転換ポイントでの方向転換中に認識可能な場所に設置する
  • 最初のマーカーから最後のマーカー(目的地点)までのマーカーIDは連番とする

距離指定マーカー

  • 順序指定マーカーと組み合わせて設置する
  • 設置は任意であり、未設置の場合はプログラムに登録されたデフォルト距離が使用される

動作指定マーカー

  • 順序指定マーカーと組み合わせて設置する
  • 最後の順序指定マーカー(目的地点)には、着陸用の動作指定マーカー必ず設置する
  • 目的地点以外の設置は任意であり、未設置の場合はプログラムに登録されたデフォルト動作が使用される

3種類の方向転換ポイント用マーカーの組み合わせ設置例

回避用マーカーの設置ルール

左右の回避マーカーを単独で使用する場合(下図左写真)

  • 衝突の恐れがある障害物の左または右側を安全な距離を確保して飛行させたい場合、ドローンを飛行させたいルートから規定距離(プログラムで設定)だけ離れた壁または柱に設置する
  • 飛行中に次の順序指定マーカーが同時に認識できるように設置する

左右の回避マーカーをセットで使用する場合(下図右写真)

  • ドアや通路などの空間の中央部分を安全に通過させたい場合、ドローンを飛行させたいルート両側の壁または柱に設置する(2つの回避マーカーの中央が飛行ルートになる)
  • 飛行中に次の順序指定マーカーが同時に認識できるように設置する

衝突の危険があるルート上への回避マーカー設置例

共通ルール

  • 順序指定マーカー、距離指定マーカー、動作指定マーカー、回避マーカーのIDが互いに重複することがないようにID範囲を規定し、マーカーのIDからマーカーの種別が判定できるものとする

飛行プログラムについて

飛行プログラムは、以下の手順で飛行制御を行うよう作成しました。

飛行制御の手順

1) 離陸~1番目マーカー検出:離陸地点の上空で方向転換(右回転)を行い、目標(1番目ID)の順序指定マーカーが正面に検出され次第、方向転換(右回転)を中断する
2) 方向転換ポイントの解析:目標の順序指定マーカーとともに設置された、距離・動作指定マーカーから方向転換ポイントまでの距離と方向転換動作の種類を解析する(距離・動作指定マーカーが未設置の場合は、予め決められた距離・動作を適用する)
3) 方向転換ポイントへの移動:目標の順序指定マーカーに対し正面を向くように姿勢を制御しながら、方向転換ポイントまで接近する
4) 衝突回避を優先にした飛行:方向転換ポイントまで移動する過程で回避用マーカーが設置されていた場合、設置ルールに基づいた回避動作を優先して行う
5) 方向転換~次IDマーカーの検出:方向転換動作の種類が「着陸」以外の場合、方向転換ポイントで指定動作を行い、目標(次ID)の順序指定マーカーが正面に検出され次第、方向転換を中断する(以降、 2) 方向転換ポイントの解析から繰り返し)
6) 方向転換ポイントでの着陸:方向転換動作の種類が「着陸」の場合、方向転換ポイントで着陸し、飛行を中断する

また、順序指定マーカーと組み合わせて設置する距離・動作指定マーカーの設置可能エリアや設置ミス時の解釈ルールについては、プログラム側で以下のように対応させました。

距離・動作指定マーカーの認識条件

1) 距離・動作指定マーカーの認識可能範囲:順序指定マーカーの4倍のエリアに含まれる距離・動作指定マーカーのみを認識する
2) 同一種マーカーの複数設置:同じ種類の距離・動作指定マーカーが複数見つかった場合、最も大きなIDのみを認識する

さらに、今回のように複数のマーカーを組み合わせて使用する場合、方向転換ポイントへの接近とともに順序指定マーカーの周囲の距離・動作指定マーカーが視野から外れやすくなるため、次の対策を組み込みました。

距離・動作指定マーカーIDの認識とリセットのタイミング

1) 認識のタイミング:一度認識された距離・動作指定マーカーは、それらのマーカーが視野から外れるなどし認識できなくなってもIDを維持し続ける
2) リセットのタイミング:それまで維持していた距離・動作指定マーカーのIDは方向転換動作の開始時にリセット(破棄)する

今回も順序指定マーカーへの接近時に起きやすい壁への衝突を低減するため、前回と同様の飛行中の安全策を組み込んでいます。

飛行ルート設定とマーカー設置について

飛行ルートについて

できるだけ様々な飛行条件での検証が一度にできるよう、ルート設定しました。

飛行ルート

検証項目

  • 異なる部屋間の移動が可能であること
  • ドアおよび通路を安全かつ確実に通過できること
  • 直行する通路への侵入や突き当りを折り返す動作により、直線以外のルートも飛行可能であること
  • 離陸から着陸までの一連の動作をすべて自動で行えること(自動巡回が可能であること)

各マーカーのIDと役割を以下の通り割り振りました。

動作・距離・順序指定マーカーのID割り振り

今回の飛行ルート上にはマーカーまでの距離が5mを超える場所があるため、25cm角用のマーカーも使用できるよう、IDの割り振りをしました。

実際に設置したマーカーの様子は次の通りです。

マーカー設置

距離・動作指定マーカーのデフォルト値が使用される方向転換ポイントでは、距離・動作指定マーカーの設置を省略しました。

  • デフォルト動作:右回転(ID=7)
  • デフォルト距離:0.35m(ID=11)

※数字は上図丸付き数字に対応
(1) 部屋A壁に順序指定マーカー(第1ターン:(2)へ誘導)
(2) 部屋Aドア枠の右に回避マーカー(ドア右枠との衝突回避)
(3) 廊下の壁に順序・動作・距離の指定マーカー(第2ターン:(5)へ誘導)
(4) 部屋B入り口の両側に回避マーカー(ドア両枠との衝突回避)
(5) 部屋B正面壁に順序・距離の指定マーカー(第3ターン:(6)へ誘導)
(6) 部屋B右奥のクローゼットに順序・距離の指定マーカー(第4ターン:(7)へ誘導)
(7) 部屋B左壁に順序・動作・距離の指定マーカー(第5ターン:(10)へ誘導)
(8) 部屋B出口の左に回避マーカー(ドア左枠との衝突回避)
(9) 廊下のトイレ側コーナーに回避マーカー(廊下壁との衝突回避)
(10) 廊下突当りの壁に25cm角の順序・距離の指定マーカー(第6ターン:(11)へ誘導)
(11) ベランダのガラスに順序・動作・距離の指定マーカー(着陸地点へ誘導)

検証結果

今回の検証では残念ながら第5ターンで失敗してしまいました。こちらにテスト飛行中の飛行データを記録した動画を掲載いたします。

※START(部屋A)~第5ターン(部屋B出口)までの映像です。

補足)解析中画面が時折モノクロ画像に替わるのは、マーカーの検出精度を上げるため一時的に2値化処理に切り替えた際の現象で、画像の転送エラーなどではありません。

追記)後日、問題箇所のプログラムを修正し再度撮影にチャレンジいたしました。(動画を本章の終わりに追加掲載しています)

マーカーの有効性について

今回の検証テーマである、ドアの通り抜け狭い廊下での通行や方向転換についても、マーカーによる誘導で十分対応出来る可能性が見えてきました。残念ながら、間口の狭い扉越しに次のマーカーを発見させるためには、さらに第5ターンのターン位置の調整が不十分でした。

距離・動作指定マーカーを利用した、場所ごとの方向転換パターンの設定

  • 狭い場所での方向転換では、距離・動作指定マーカーによって場所ごとの条件に合わせた動作をドローンに対して与えることができる

回避マーカーを利用した危険箇所の通過

  • 回避マーカーを単体で使うことで、衝突の危険がある壁や柱など障害物と、一定の距離を保って飛行させることできる(下図左写真)
  • 左右の回避マーカーをセットで使用することで、衝突や接触の危険が少ないスペースの中央を飛行させることができる(下図右写真)

安全な飛行のために

次のマーカーまで最短距離を選択、さらに前進のスピードをアップすることで目的地までの移動時間は短縮できるわけです。しかし、GPSが利用できない室内の飛行では、必ずしも常に設定したポイントでターンをしているとは限りません。もし想定からズレた位置でターンを始めてしまい、上手く目的のマーカーが見つけられたとしても、その後の接近の過程で失敗するケースが何度かありました。ほとんどがマーカー正面からの角度差が大きいルートになってしまった場合でした。

マーカー正面からの角度差が大きいルートを飛行した場合の危険性

  • マーカーから遠方にある場合は影響がなくても、マーカーに接近するほど、手前にある障害物が急激に大きくなり、マーカーが隠れてしまう可能性がある(最初離れていた両者が、次第に近づき重なるイメージ)
  • マーカーに接近するほど、左右方向の機体の移動が画面内のマーカーには大きく影響するため、マーカー喪失の可能性が大きくなる
  • マーカーに接近するほど、マーカーが設置されている壁と機体との距離が近づき、壁への接触の可能性が大きくなる

以上のことから、非GPS環境下においては、いかなる場合もスピードより確実性を優先させるべきであること実感しました。できるだけ本来想定していたルートに戻してから前進させることが大切です。最終的にマーカーとの距離に応じたスピードコントロールも組み込み、前回と似たような制御を行いました。

マーカーへの接近時におけるスピードコントロールと姿勢制御

1) 前進、左右位置調整、上下位置調整、マーカーに対する角度調整の際のスピード(移動量)は、全て方向転換位置までの距離に応じて徐々に小さくなるよう調整し、方向転換位置での調整量が収束するよう配慮する
2) 次の方向転換ポイントに向けて移動を行う際、ポイントまでの距離が遠いとき(4m以上)はマーカーに対する角度を優先に調整し、次に左右の位置調整を行う(前進、上下位置調整には影響しない)
3) 次の方向転換ポイントに向けて移動を行う際、距離が極めて近いとき(1m以内)は左右の位置調整または相対角度調整が必要な場合、前進は行わない(上下位置調整には影響しない)

補足)今回の検証では、 3)のロジックが影響し、第3マーカーへ接近する途中の回避モードでなかなか前進できない状況に陥りました。回避モードではこのロジックが適用されないようにするなどの条件設定が必要だったと思われます。

個体ごとの飛行特性への対応

GPSによる位置制御が利用できない場合、個体ごとに異なる回転時の飛行特性(右に流されやすいとか後方に流されやすいなど)が顕著に現れることがわかりました。今回も検証の直前で機体を新しいものに替えたため、旧機体で何度も行ってきたマーカーの貼付位置やターン位置の調整などが役に立たなかったようです。効果の程は確認出来ていませんが、今回の検証では交換後の機体用に簡易的に以下のプログラム修正を行いました。

交換した機体用に追加した制御

  • ターン動作の前に一旦数秒間ホバリングさせ前後左右の動きを停止させてからターン動作を行う
  • 右回転の終了間際には若干右側に、左回転の終了間際には若干左側に機体を移動させる

簡易的な手法による室内飛行制御の限界も感じられましたが、今後の展開に向けての貴重な体験となりました。

今後の計画について

複数のマーカーを組み合わせることで、今回の目的であったドアの通り抜けや通路の移動といった複雑な飛行を達成することができましたが、景観としてはあまり良いものとは言えませんでした。次のステップではより少ない設置枚数と設置スペースでも同じ効果が得られるような設置手法を検討していきたいと思います。

再チャレンジしました

2019年5月15日に問題箇所のプログラムを修正し、再度撮影にチャレンジいたしました。実際には本体側の設定ミスにより再チャレンジは成功しませんでしたが、問題がはっきりしていたためすぐに設定を見直し、再々チャレンジを行いました。なんとか成功にいたりましたので、よろしければ最後までご覧ください。


実績紹介
マーカーを用いたドローンの屋内自動制御を行ったテスト事例を以下に紹介しています。