机上の空論主義者

-♰- 有言不実行の自身をブログ名で戒めろ -♰-

群ロボットの位置取得方法【10/31記事目】

こんにちは :)

群ロボットでは、集合したり隊列移動したり、分離・結合をしたりする目的を達成するために、位置情報の取得は1つの重要な要素となると考えられます。 そのため、今回は既存の群ロボットで使われている位置推定技術に、どのようなものがあるのか調査してまとめてみました。

f:id:ume-boshi:20210510221628p:plain
今回取り上げた手法一覧


分散処理にも使えそう

近接センサ

最も群ロボットらしい手法だと思います。近隣にあるユニットとの距離をセンシングして相対的な位置を取得します。使用するセンサは赤外線測距センサや、超音波測距センサ、ToFセンサなどが用いられている模様。この手法を用いる場合は相対位置しかわからないため、Kilobotという群ロボットでは距離を一定に保ちながらメッシュを構成していきます。メッシュ的に管理して、メッシュ外側にあるユニットだけが動く制限を設けることで、位置構成が複雑に変化することなく変形が可能なようです。

youtu.be

群ロボットのシミュレーションでも、この手法が採用されていることが多い気がします。
// この論文の"2.2.1. Collective Localization"の項目がアルゴリズムの参考になりそうです。(この論文によると、kilobotは初期状態として4つの位置関係がわかっているユニットがあるそうです。相対位置と呼んでよいのだろうか。)

カメラ

処理が重そうだとは思いますが、カメラを搭載している群ロボットも少なくないです。S-BOTやmROBerTOなどの位置取得方法は多分これ。ただ、論文をパッと見てもどんな処理が行われているか見当たらないので違うのかもしれません。。。少なくとも小型の群ロボットではvisual SLAMとかではなく、近くにユニットがあるか程度のことしか検出していないんじゃないかなぁ。

mROBerTOという群ロボットには大量のセンサが搭載されています。その中でも主なセンシングモジュールはカメラと近接センサだと論文中で述べられています。
論文:http://asblab.mie.utoronto.ca/sites/default/files/mROBerTO_iros2016%20final.pdf

youtu.be

S-BOTや、生物のフェロモンの仕組みを応用した群ロボットにもカメラが搭載されています。

outside-inな手法

ここ2ヶ月、VIVE trackerの位置取得方法について個人的に勉強しており、この手法を群ロボットに応用できそうだと考えていたのですが、実際に利用されていました。

VIVE trackerでも使われているoutside-inな手法では、外部からプロジェクターを用いて一定のパターンで赤外線を点滅させ、そのパターンを各ロボット側に取り付けられたPhotoDiodeで受光することで位置が取得できます。ロボット側で受光できる時間的パターンは座標によって異なるため、その時間を分析してあげることで位置を算出することが可能です。

オープンソースの群ロボットであるzooidsやその派生は、この手法を用いているようです。プロジェクタにはDLPLCR4500EVMというのを用いているらしい。
// ちなみにVIVE trackerはBaseStationがプロジェクタの役割を果たしています。

github.com

youtu.be

特殊なマット

これは我らが日本のSONYが販売するToioで使われている方式です。特殊なパターンが描かれている専用マットを、toioの裏側にある光学センサで読み取ります。マット上の絶対位置が取得でき、各ユニットごとの位置関係が容易に取得できます。

toio.io

自分で買うお金がないので、toioの紹介動画を見ながら絶対座標を取得できている理由を考えてみたのですが、正直わかりませんでした。ただ、toioから赤外線光が発されているようには見えず、マットに不可視マーカが描かれているわけでは無さそうです。その他分かるのは、真っ白な専用マットでも絶対位置を取得できているため、色のパターンだけで見ているわけではないということです。
パターンマッチングを用いると計算量が莫大になるので、O(n)ぐらいで算出できるSONYの謎技術があるんでしょうね。

GPS

広範囲に移動する群ロボットで採用されているようです。例えば、空中/水中ドローンを用いたのはGPSで位置取得しています。まさに地球における「絶対座標」が取得できるため、既存のマップデータなどと組み合わせて大規模なサービスを作り上げられそうですよね。

biomachineslab.com

群ロボットは開発のしやすさのためか小型化が進んでいますが、実用する際にはGPSで位置取得するような大型のロボットに真っ先に応用されるはずです。 なのでGPSは群ロボットの主流じゃないと侮ってはいけなさそう。


中央集中制御がメインそう

群ロボット自身がセンサを用いて位置を取得するのではなく、別のデバイス(サーバ)から位置情報を取得する仕組みの方法です。この場合、中央集中制御であろうと分散制御であろうとサーバを持つ必要があるため、中央制御のほうが合理的そうです。

ARマーカ

各ロボットの上部にARマーカを張り付け、それを天井に取り付けたカメラで読み取る手法です。室内で絶対座標を取りたいのであれば、これが一番手っ取り早く実装できそうです。上部からカメラで撮影して群ロボット以外のPCが位置を取得するため、中央集中制御が適していそうと判断しました。 サッカー系のロボコンであるロボカップでも、この手法が使われているはずです。

gigazine.net

ShapeBotsという群ロボットでは、ArUcoマーカを底面に貼り付けて、机の裏からカメラ撮影しているみたいです。おしゃれ。

youtu.be

OptiTrack

ほとんど見たことがないですが、モーショントラッキングの世界で有名なOptiTrackで位置取得する方法があります。
OptiTrackとは、トラッキングしたい対象物に赤外線を反射するマーカをいくつか取り付け、それを(超高級な)赤外線カメラで撮影して位置取得する方法です。位置取得には2台以上の専用カメラが必要になり、100万円近くは軽く超えるんじゃないでしょうか。。。専用カメラには赤外線光が(パルスで?)発されており、トラッキングしたいモノに取り付けたマーカがその光を反射します。マーカは、スニーカーとかについているような再帰性反射する素材でできています。 位置取得をするためには、事前にキャリブレーションされた複数台のカメラを用意し、対称点に向かうRayとカメラ姿勢を基に座標を算出しているようです。

mocap.jp

この方式を用いる場合、サーバが赤外線カメラの情報を用いて位置を算出するため、ロボット制御もサーバで行うような中央集中制御の採用が理にかなっていると判断しました。 もし分散制御をする場合でも近接ユニットとの通信においては、位置取得のために赤外線プロジェクタがノイズとなりかねないので赤外線通信が使えず、BluetoothWiFiによる手法に限られそうです。


Teraflop swarmという群ロボットでは、マーカの配置パターンがユニットごとに異なっているため、個体を256個まで識別できるみたいです。通信手法については書かれていないので、中央集中制御なのかは不明。。。

論文:https://onlinelibrary.wiley.com/doi/10.1002/aisy.201900031

youtu.be


おわりに

手法が多すぎて迷うかもしれませんが、個人開発で使える手法は限られています。OptiTrackを用いる場合は100万円近くするし、Toioの絶対座標の算出手法は企業秘密になっているし、室内開発でGPSを使っても誤差がひどそうで使えません(ちょっとセンサが高いし)。さらに、Outside-in方式は実装方法がネットにあまり上がっていないので、難しいでしょう。
したがって、個人開発では距離センサか、カメラでのSLAM、ARマーカを用いた手法に落ち着きそうです。

群ロボットを勉強している途中の人間なので、もし間違っていましたら気兼ねなくご指摘お願いします!