きっかけ
卒論でvSLAMをFPGA使って高速化する研究をするために、LSD-SLAM のプロファイリングをしようと思ったのですが、LSD-SLAM が古いこともありビルド方法があまり見当たらなかったので自分用のメモ程度にビルドの手順を残してます。
環境
PC:ThinkPad-x13
OS: Ubuntu 20.04 focal
Kernel: x86_64 Linux 5.11.0-051100-generic
CPU: 11th Gen Intel Core i5-1135G7
ROS_DISTRO: noetic
LSDーSLAM
LSD-SLAMについてはこちらを確認してください。
ビルド
上のREADMEに書かれているとおりに進めると問題なく進むと思います。ただ、ROSを理解していること前提での案内なので、ここのROSパッケージのビルドのチュートリアルを確認することをおすすめします。特にビルド後のパスを通すコマンドはgithubでは紹介がないので確認が必要です。
$ cd
$ mkdir catkin_ws
$ cd catkin_ws
$ mkdir src
$ git clone https://github.com/mstampa/lsd_slam.git ./src
$ cd ..
$ catkin_make
$ catkin_make install
$ source devel/setup.zsh #zsh 使っているshellに合わせてください
オリジナルはROSのバージョンも、Ubuntuのバージョンも古くビルドが通りませんでした。QtのライブラリのバージョンやROSの仕様なんかも変わっていたり、OpenCV周りでもエラーを吐いていました。このときにQtのライブラリのリンクをいじった可能性があり1度目はビルドが通りませんでした。
$ sudo unlink /usr/lib/x86_64-linux-gnu/libQGLViewer.so
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libQGLViewer-qt5.so /usr/lib/x86_64-linux-gnu/libQGLViewer.so
を実行しQGLをqt5へのリンクに変更すると無事ビルドが通りました。
実行例
ビルドが通ったので https://vision.in.tum.de/research/vslam/lsdslam?redirect=1 で公開されているdatesetで実行を行いました。
ターミナルを3つ開き、1つ目で
$ roscore
を実行し2つ目で
rosbag record /lsd_slam/graph /lsd_slam/keyframes /lsd_slam/liveframes -o file_pc.bag
を実行し3つ目で
$ rosrun lsd_slam_core dataset _files:=<files> _hz:=<hz> _calib:=<calibration_file>
を実行します。<files>
, <hz>
, <calibration_file>
は適宜置き換えてください。
項目 | 説明 |
---|---|
<files> |
画像ファイルのリストか、フォルダ(アルファベット順になっている必要がある) |
<hz> |
フレームレート |
<calibration_file> |
キャリブレーションファイル |
結果
rosbag
コマンドで出力されているファイルを対象に下記を実行してください。
$ rosrun lsd_slam_viewer viewer <rosbagコマンドで出力されたファイル>