Swarm
Swarm制御について
複数のロボットやドローンをコントロールするSwarm制御には、大まかに分けて2つの方式があります。
- 外部の機器で各個体の位置を把握、制御する方式。
- 各個体が自律制御しつつ、連携する方式。
1. 外部の機器で各個体の位置を把握、制御する方式。
GPSや赤外線モーションキャプチャーカメラを使うものはほとんどこちらのタイプです。
メリット:
- 自立制御が必要なく、複数のPCで並列処理ができ、計算リソース的に自由がきき、集中的に管制で多くの機体を同時に正確にコントロール可能。
- 以下のような複雑かつ緻密な振る舞いがリアルタイムで制御可能。
デメリット:
- 屋外ではGPS、屋内ではモーションキャプチャーカメラが必須。
- 台数が増えると処理的にスケールし難い。
2. 各個体が自律制御しつつ、連携する方式。
メリット:
- 自律制御なので、数百〜数万台までスケールできる可能性がある。
デメリット:
- 現時点では技術的に緻密な制御は不可能。(例:隣接機と一定の距離を保ちながら、おおよそ指定された方向にふわふわ移動する、等)
- 個体の正確な位置や振る舞いが重要なアプリでは使えない。
- 機体側に処理能力のあるFCが必須。
自律制御方式
- 測距センサーを使うもの
- 画像処理(コンピュータービジョン)を使うもの
1. 測距センサーやビーコンを使うもの
- 衝突回避性能のみを求めるのなら、画像処理よりも赤外線(1mの範囲)、ソナー(数m)、レーザー(~数十m)等を使った測距センサー(Proximity Sensor/Rangefinder)を使用するほうがCPUの負荷は比較にならない程抑えられ、また反応速度も上げられるので、安全性も高まる。
- iBeaconはBluetooth4.0互換で、到達距離もロングレンジのもので最大450m程度で、標準で100ms間隔で発振するが、取得出来る位置情報はあくまでも相対(10m以上、数m以内、数cm以内)なので、ビーコンとして使うためには、複数のビーコンを設置したとしても、上空を旋回しながら着陸地点を絞り込むような振る舞いが必要になると思います。また、現時点では機体制御にiOSやAndroid端末を載せる必要もあります。
2. 画像処理(コンピュータービジョン)を使うもの
- 画像処理の方が汎用性は高いが、機体側の処理能力が必要。
- 消費電力が増えるため、フライトタイムが大幅に減少する。
ボトルネックは通信にあり
自立型、集中管制型、どちらも多数のロボットを連携させて同時にコントロールするためには、相互通信が必須となりますが、メッシュトポロジーのネットワークでは、機体数が増える度にノード間のリンク数が指数関数で増えてしまい、通信量、計算量のどちらもあっという間に限界が来てしまいます。
また、同時に飛ばせる機数は基本的に電波帯域がボトルネックになります。現時点ではWifi、Bluetooth、ZigBee、RC送信機を含むほぼ全ての機器が2.4GHz帯を使い、さらにオープンスペースで見物人のスマホのWifiやBTもONになっている環境ではさらに厳しくなります。
通信規格的な制限としては、Wifiの場合、通常一つのルーターにぶら下げられるノードは最大255ですので、これが一つの目安になるかと思います。スペクトラム拡散方式で対混信性能を売りにしているSpektrumでも同時通信数は100程度までしかテストしていないようです。
ZigBeeのような低レート規格の場合、最大数は1,000ですが、実際に1,000ノードのZigBeeネットワークを組んだ時にレイテンシーやスループットがどうなるかは未知数です。
いずれにせよ既存の通信技術を使った場合、現時点では1,000ノードあたりに天井があると思われます。
1,000を超える機体の制御は、完全に自立コントロール(タイマーとセンサー制御のみ)か、電波ではなく、赤外線、レーザー、大型ディスプレイ等、なんらかの光源をコントロールシグナルとして各機に一斉にブロードキャストしつつ、自立制御と併用しながら運用するような、ハイブリッド方式にしないと難しいと思われます。
スワーム制御機材
オンボードコンピューター
現時点では各種SoCが出回っていますので、これらを利用するのが現実的です。
- BeagleBone + PXF
- Raspberry Pi + PXF2
- Qualcomm SnapdragonFlight
- Intel Aero
これらのLinux系シングルボードコンピューターは、USBかSPIバス経由でカメラを接続できるか、初めからカメラが搭載されており、OpenCV等のライブラリを使ってリアルタイムに画像解析出来ますので、AprilTagなどのマーカーを認識させて自機の位置を検出することは比較的容易です。
ただし、どこまで精度(解析するピクセル数と頻度に依存)が上げられるかは、解像度、CPU/GPUの性能、カメラの台数等によります。このあたりは実機でチューニングしてみないと何とも言えないのが実情です。