前回投稿で、LiDARについて書いたが、LiDARが最も定常的に利用される環境と予測するのが自動運転である。LiDARは、どのように自動運転に貢献しているのか?動作原理がレーダに似ているので、いわゆるサポカーの一部で利用されているミリ波レーダのような用途であろうか?実はSLAM(Simultaneous Localization and Mapping:スラム)と呼ばれる自己位置特定と周辺地図生成を同時に連続的に行うアルゴリズムで利用される。
自己位置と地図というキーワードを目にすると、GPSによるナビゲーションを思い出し、「それならもうすでにカーナビでできてる」と思うかもしれない。しかし、GPSによる位置情報は数メートル〜数10センチ単位で誤差があり、かつ、GPS衛星電波の受信状況によっては誤差が大きい、位置が特定されないなどの問題がある。また、カーナビで利用される地図は、道路、建物図であるが、それだけを見ていては運転操作はできないという問題がある。実際に車両を運転する場合には、まわりの状況や対抗車、歩行者など細部走行に適不適を判断するとともに、逐次変化していく状況を判断して、場合によっては1メートル以下の単位の精度で運転操作を人間は行っている。
SLAMは、建物以外の障害物と自動運転車との間の高精度な相対的位置認識を実現する技術として利用されている。対向車や歩行者などのような逐次変化する環境の把握につては、サポカーにあるようなミリ波レーダや、AIによって急速に進化している画像認識技術による物体認識アルゴリズム(YoLo,SSDなど)によって実現されるが、樹木や道路標識などの障害物、実際に走行可能な道路幅などが認識可能な地図を生成し、それに応じて自己位置を高精度に決定し、予測していくにはSLAMが必要になる。
詳細は触れないが、もともとはSLAMはロボット向けに15年以上前に考案されたアルゴリズムであり、ベイズ確率論に基づく確率論的モデリングによるアルゴリズムである。その理論を自動車に搭載し自動運転に応用したのがいわゆるGoogle Carである。同様に最近ではロボット掃除機にも搭載されつつある(2015年以降はルンバにもVisual SLAMが搭載されている)。このように応用範囲は広く、今後は自動運転車のみならず自律移動するすべての機器に搭載されていくと考えられる。
自己位置と地図を同時に生成していくとはどういうことであろうか。人間の行動を例にしたイメージ的な話になるが、ある既知の特定の場所から未知の場所に移動をしたとする。この時点では、その経路はまわりの景色も目印も初めてであるため道路地図を参考に不安を持ちながら走行し、風景の記憶は運転の記憶とともに記憶するだけである。しかし、次回からは道路地図だけでなく、こっちに行けばxxxの看板が見える、とか、高い建物が見えるとかの風景の記憶もあり、より細部がわかるので安心して移動ができる。もし、一本道を間違ったとしても、修正するように進行しその先に、「前にみた風景」が出現すれば、「あーここに出るんだー」という言葉とともに、想定していた道にでたことを理解し(SLAMではこれをLoop Closureと呼ぶ)、また安心な移動を継続するとともに、新たに経験した道の風景を記憶して移動の選択肢を増やしていくことになる。これが自己位置認識と地図生成を同時にするということである。参考に、以下に弊社の簡単な自動運転ロボットカーで室内を走行しSLAMで生成したMapの例を示す。図の紫色の線(曲線)が人間の指示によって走り回った軌跡であり、白色の部分が測定されSLAMによって空間と認識された領域であり、グレーの部分が障害物として認識された領域である。このように空間と障害物を詳細にMapとして認識することで、それ以降は自動的に自己位置からどれだけの方向、距離に障害物があるかということを自己位置とともに逐次認識しながら移動経路を決定することが可能になる。GPSによって大まかな位置を知り、SLAMによって高精度な自己位置と周辺の地図を認識し、カメラ画像による物体検出でリアルタイムの周辺移動物を認識することで、人間並み(以上?)の状況認識が可能となり自動運転が可能になる。
大別するとSLAMには、カメラなどの画像情報から周辺物の3次元情報(輪郭、位置)を推測するVisual SLAMと、LiDARによって3次元情報を計測する(LiDAR) SLAMがある。通常、両方区別なくSLAMと呼び、画像情報を用いるアルゴリズムを指す場合に限りVisual SLAMと呼ぶことが多い※1。2019年にテスラモータのCEOイーロン・マスクは自動運転の開発にあたり、人間は視覚情報を主として用い運転をしていることからLiDARは搭載せず自動運転を実現すると明言している※2。主な自動運転開発のプロジェクトではLiDARを利用することがそれぞれ示されている。現時点では、LiDARを用いた方が物体の3次元形状や相対距離を計測することが可能であり、そのデータをSLAMに入力すると高精度で自己位置と周辺地図を生成することが可能となる。Visual SLAMは人間同様に画像情報からの推定になるが、現時点では精度という面ではLiDARによるSLAMまでは達していない。Visual SLAMでは奥行きを含む3次元形状を2次元画像からどのようにして認識するかという課題があるが、従来はMicrosoftのkinectのような2つ以上のカメラの画像(ステレオカメラ画像)から奥行きを推定するSLAMが精度が得られるとされていたが、近年では単一のカメラの画像(monocular)から推定するSLAMも精度が高くなりつつある※3。
書きたいことはまだあるが、長くなったので今回はここまでとする。
※1 https://www.youtube.com/watch?v=NMFsEpVppZM
※2 https://jp.techcrunch.com/2019/04/23/2019-04-22-anyone-relying-on-lidar-is-doomed-elon-musk-says/
※3 Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unknown Cameras