[English Below]
ドローンやロボットシステムはどのように機能すると思いますか?
ドローンやロボットを動かす物理的な仕組み(オムニホイール、モーターとプロペラ、四肢四肢運動など)についてではなく、これらのシステムがさまざまなセンサーを通じて周囲の状況や移動できる場所、移動できない場所を視覚的に確認および認識できるようにする技術について詳しく説明します。その技術の名前はSLAM。
ドローンやロボットに欠かせない技術「SLAM」とは?
ドローンやロボットは、SLAMを搭載しているおかげで、スペースを移動することができるのです。
さて、SLAMとは一体何なのでしょうか。SLAMとは、Simultaneous Localization and Mappingの略。Localization(ローカライゼーション)とは、身の回りの環境に応じて自分の位置を定める能力のこと、Mapping(マッピング)とは、周囲にあるものと自分との関係性を把握するプロセスのことを指します。
あれ?自分と周囲環境の関係性を計算することと、環境に応じて自分の位置を計算することは、英語でいうところの「チキン&エッグ」問題を引き起こすのでは?と思われたみなさん(※チキン&エッグ問題とは、鶏が先か、卵が先かという意味。原因と結果で、どちらが先かわからない状況をいいます。たとえば、嬉しいから笑うのか、笑うから嬉しいのか、など)。
実はご察しの通りなんです。
ただ、この問題は意外と簡単に解決することができます。まず、ロボットが「目を覚ます」とき、ロボットはまったく動いていません。したがって、ロボットは起動時に周囲環境をスキャンして、相対的な空間のデータセットを得ます。これによって、ロボットは座標(0,0)と表される基準点を作成します。この基準点は、マップの作成およびロボットの位置追跡を始める起点となります。
ここで、SLAMの正式名称にもう1度注目してみましょう。SLAMのSは「Simultaneous(=同時)」の頭文字です。この「Simultaneous(=同時」は、ドローンやロボットのシステムを自律的に動かす上での重要なキーワードです。
ドローンやロボットは単独でマッピングおよびローカライゼーションすることができますが、この段階ではまだ自律的とは言えません。たとえば、マップがそれなりに大きくなったとき、あるいは完了したとき、ロボットがまずはマップして、その後にローカライズするとします。このマッピング状態では、ロボットは自ら動いて何かしらの目的を果たすことができません。ロボットはあくまでも障害物回避などの受動的なアプローチをとることしかできないことに加え、障害物が実際にどこにあるのかさえわかりません。しかし、マップが完成してローカライゼーションアルゴリズムが開始できるようになると、ロボットはマッピングされた環境において自身がどこにいるのかを把握できるようになります。残念ながら、何かしらの理由でロボットがマッピングされた範囲の外に出た場合、ロボットは迷子になってしまいます。
一方で、ロボットが最初にローカライズしようとすると、ロボットが迷子になってしまうことは明白です。
そのため、ドローンやロボットが一定の環境内を移動できるようにするための解決策として、SLAMシステムは重要な役割を果たしています。
SLAMで使用されているLIDARセンサーとカメラセンサー
SLAMシステムとは何か、なぜSLAMシステムが重要なのかについて理解したところで、SLAMシステムで一般的に使用されている2種類のセンサーを簡単にご紹介します。
まずご紹介するのはLIDARセンサー。
基本的に、LIDARテクノロジーの背後にある概念は、光が放射されてから受信コンポーネントで反射されるまでの、光の移動距離を計算することです。距離とは、光の速度に光が移動した時間の半分を掛けたもの(光が放射されてから反射されるまでにかかる時間を測定するため)。
次にご紹介するのはカメラセンサー。
カメラセンサーのコンセプトは「三角測量」です。三角測量とは、とある地点(=ここでは地点Aと呼ぶことにします)で画像を撮影し、次に一定距離Xだけ移動し、そこの地点(=ここでは地点Bと呼ぶことにします)で別の画像を撮影することを指します。地点A、地点B、および移動した距離Xを用いることで、地点Aと地点Bの両方が存在する環境における、ロボットカメラから特定のオブジェクトまでの距離を計算できます。
SLAMシステムと組み合わせてセットアップするにあたっては、どちらのセンサーを選んだとしても、最終的に実現できることは同じ。ロボットが特定の環境においてどの位置にいるのかを計算し、ロボットと相対して環境がどこにあるのかを計算することです。
したがって、ドローンシステムやロボットシステムにSLAMを使用することで、目的達成のために自ら環境を移動することが可能となるのです。SLAMは、ユニットを拡張してドローンやロボットがより高次レベルのタスクを実行できるようにするにあたって最適な技術なのです。
この記事を書いた人|ロバート
サイギグではエンジニアとビジネスの両方を兼任するロバート。ニュージーランドと日本のハーフで、オークランド出身。ニュージーランド最大の国立大学であるマッセイ大学でメカトロニクス(機械工学と電子工学の合成語)を専攻で、C言語が得意。趣味はSF小説からギターまで多岐にわたる。最近ではサイギグのYouTube立ち上げを任されている。モビリティIoT界のインフルエンサーとしてYouTubeでロバートを見かける日も近いかも?
[English Below]
So, What is SLAM?
How do you think a drone or robotic system moves through the environment?
We aren’t talking about the physical aspects that allow it to move such as omni-wheels, motors & propellers, or multi-limbed quadrupedal motion. I’m talking more about the higher cognition that these systems require, using various sensors, to visually see what’s around it and where it can or can’t move.
This system within these robots or drones use SLAM to allow it to move through the space they are placed in.
Some of you may be asking, what in the world is SLAM? To give you the direct answer, SLAM is an acronym for “Simultaneous Localization and Mapping” where localization is the ability to determine where you are in relation to your environment, and mapping is the process of determining what is where in the space around you in relation to you.
Wait, but doesn’t calculating the environment in relation to you and calculating where you are in relation to the environment produce a “chicken & egg” problem?
Unfortunately, it sort of does.
But on the bright side the solution to this isn’t as complex as it may first seem. When the robot first “wakes up”, it isn’t moving at all (Or at least it shouldn’t be!) and so, as the robot activates it can scan the environment to get a relative spatial set of data. Using this, the robot will create a reference point most often labelled as coordinate (0,0). This reference point is used as a starting point to begin creating the map as well as keeping track of where the robot is.
Now, back to the other letter in the acronym for SLAM that we briefly missed, which was “Simultaneous.” Although this may seem like a simple and obvious requirement it is still, nonetheless, an important part of making the system work autonomously.
A robot or drone can map and localize independently, but it wouldn’t be an autonomous unit in this state. For example, lets state that the robot will map first then localize second when the map is “decently” large (or when “finished”). In this “mapping” state the robot cannot move with any purpose and can only take on a passive approach such as obstacle avoidance, and further has absolutely no idea where it actually is. But as the map is “completed” and the localization algorithm is allowed to begin, the robot can do a decent job of knowing where it is in the environment that it mapped out. Unfortunately, if for some reason the robot strays outside the mapped bounds, it will become lost (because it isn’t mapping in the localization state).
On the other hand if the robot tries to localize first, I’m sure you can see that it is going to be lost before it even has a chance.
So for the solution to the robot being able to move through the environment, the SLAM system is a critical part of allowing the robot or drone to do so.
Ok, so now I believe that you the reader now has a good grasp of the concept of what a SLAM system is and why it is important.
Moving on, I will briefly cover two types of sensors that are commonly used with SLAM systems.
Firstly we have LIDAR sensors.
Essentially, the concept behind LIDAR technology is to calculate the distance that a light has travelled from when it was emitted up until when the reflection of the light is picked up in the receiving component. The distance is therefore, the speed of light multiplied by half the time that the light travelled (because you measure the time it took for the light to travel out and be reflected back.)
And secondly we have camera sensors.
The concept used for camera sensors is “triangulation.” Triangulation is when you first take an image at a given point, represented as point A for now, which you then move a fixed distance X, then finally you take another image (facing the same direction as that of point A) at position X which will be represented as point B. Using point A, point B, and the distance travelled X, we can calculate the distance from the robot camera to a given object in the environment that is common in both images at point A and point B.
Which ever sensor is set up in combination with SLAM systems, the final result is the ability to calculate where the robot is in an environment and to calculate where the environment is in relation to the robot.
Therefore, using SLAM in your robotic or drone system then allows it to begin actively moving in the environment with purpose, which is great for expanding the unit to do much more higher level tasks.