エンジニアのSです。
SLAMという技術を試す機会がありましたので今回はそちらを紹介します。
SLAMというのは、Simultaneous Localization And Mappingの略で、日本語だと自己位置推定と地図作成を同時に行うことを言います。
カメラやセンサーを使って取得した情報から地図を作成し、また自分がその地図のどこにいるかを推定する技術となります。
身近なところではお掃除ロボットなどに活用されているそうです。
SLAMには位置推定の方法や使うセンサなどによっていろいろな手法が考案されています。
またその手法の実装方法も多く公開されているのですが、多くがLinux環境によるものでした。
私の環境がWindowsでしたので、WSLという機能を利用してLinuxのUbuntu16.04の環境を構築することにしました。
WSLというのは、Windows Subsystem for Linuxというwindowsの機能の1つです。
ざっくりいうとwindowsでアプリケーションとしてLinuxを使うようなイメージかと思います。
通常WSLは有効になっていないため、有効化、インストールが必要になりますので下記を参考に進めました。
https://qiita.com/Aruneko/items/c79810b0b015bebf30bb
今回SLAMのWSLでの動作が公式で公開されていたOPEN-VSLAMという手法を試してみましたのでそちらを紹介いたします。
公式ページは下記になります。
https://github.com/xdspacelab/openvslam
ここでWSLという機能は、コンソールのみとなっており操作はほとんどコマンドによるものになります。
いわゆる画面表示であるGUIがないため、操作には多少慣れが必要かもしれません。
また、GUIがないと、この後の操作でカメラや地図の画像を表示することができなくなってしまうため
画像を表示するときはWindowsの画面を使うように設定が必要です。
今回は下記のリンクを参考にVcXsrvをインストールしました。
https://www.atmarkit.co.jp/ait/articles/1812/06/news040.html
これでUbuntu16.04の準備ができましたので早速OPEN-VSLAMの準備を進めます。
インストール手順
https://openvslam.readthedocs.io/en/master/installation.html
基本的には公式の手順通りに進めていけばいいのですが、
インストールする際にrootユーザにしていない場合適宜sudoを頭につける必要がありました。
また表示するViewerがPangolinViewerとSocketViewerの2種類から選ぶようになっているのでどちらかを選択する必要があります。
私はPangolinViewerを選択したのでそちらの手順で進めました。
選んだViewerによって最後のBuildの引数が違うので注意が必要です。
Buildができて最後の手順でヘルプが表示することができたら次のチュートリアルに移ります。
チュートリアル
https://openvslam.readthedocs.io/en/master/simple_tutorial.html
チュートリアルもインストールと同様に順にコマンドを打っていけばOKです。
video_slamコマンドを実行するとカメラの画像とマッピングの様子が表示されます。
マッピングが終わったら、マッピングしていた画面の[Terminate]のボタンを押すと終了します。
video_slamコマンドで地図データが生成されたので最後にrun_video_localizationコマンドを実行するとローカライズ(位置推定)が行われます。
生成されたマップの上をカメラ動画に合わせて動いていることが確認できると思います。
この手順で使った動画以外にもサンプルとして使える動画ファイルが同じページで公開されているのでそちらも試すことができると思います。
今後は自分で撮影した映像を使って地図作成ができるか試してみたり、ほかの手法も調査していく予定です。