LoginSignup
5
8

More than 5 years have passed since last update.

【Ubuntu16.04】ROS:KineticでLSD-SLAMを実装させる

Last updated at Posted at 2018-05-24

目標

ROS:Kineticをインストールして、LSD-SLAMをビルドする。

これをやりたくてめちゃくちゃ試行錯誤しました(大変だった...)。なかなかKineticでビルド成功したことについて、日本語でまとめられているサイトがなかったので自分でメモ的にまとめました。私のように苦しんでいる人の助けになれば嬉しいです。拙いところがあると思いますがご容赦ください。

手っ取り早く知りたい方は、LSD-SLAMのビルド手順まで飛ばして読んでください。
英語が得意な人は参考にしたサイトまで飛んでくと早いです。

環境

OS      Ubuntu16.04LTS 64bit 日本語版
メモリ    16GB
プロセッサ  Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
グラフィック msi GeForce GTX 1060 6GB (製品型番: GeForce® GTX AERO ITX 6G OC)
重要: OpenCVがインストールされていない

注意!!

LSD-SLAMを動かすのにOpenCVが必要みたいな記事を見て、前もってインストールを行わないでください。
あとで地獄のようなエラーに陥ります。もし、参考にしたい場合は下の方に載せたので見てみてください。
OpenCVがもう入ってしまっている方は、
・アンインストール
・OpenCVが干渉しないような仮想空間でビルド
するか、もしくはOpenCVが入っている環境でもうまく動くやり方を探してください(もし知っている人がいれば教えてください)。
私は、手っ取り早く済ませたかったのでUbuntu16.04をクリーンインストールしました。

LSD-SLAMのビルド手順

1. ROS:kineticのインストール

以下サイトの手順どおりにインストールを行ってください。
http://wiki.ros.org/kinetic/Installation/Ubuntu

英語が苦手だったり、サイトに飛ぶのが面倒な人は以下を一行づつ入力していってください。

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
sudo rosdep init
rosdep update
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
source /opt/ros/kinetic/setup.bash
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

これでROSはインストールできました。

2. LSD-SLAMをビルド

必要な依存環境などをインストールします。

sudo apt install libsuitesparse-dev libqglviewer-dev-qt4 ros-kinetic-libg2o
sudo ln -s /usr/lib/x86_64-linux-gnu/libQGLViewer-qt4.so /usr/lib/x86_64-linux-gnu/libQGLViewer.so

公式で配っているLSD-SLAMだとビルドできないので、
以下のようにしてこちらのサイトから、Ubuntu16.04用にコードが書き換えられたものをクローンします。

mkdir -p ros_workspace/src
cd ros_workspace
git clone https://github.com/kevin-george/lsd_slam.git src/lsd_slam  
catkin_make

これでビルド成功するはずです。

PythonがAnacondaの方は、lpthreadsがないだとか、Python Moduleの"em"がないと怒られたりするらしいですが

pip install catkin_pkg
pip install rospkg
pip install empy

で解決するみたいです。間違っても、empyではなくemをインストールしないでください。

3. セットアップ

これではまだパスが通ってないので、バッシュの中に書き込みます。

echo "source ~/ros_workspace/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

4. ためしに動かしてみる

rosrun lsd_slam_viewer viewer

としてうまく動けばオッケーです。

参考

LSD-SLAMのビルドで起きるエラー

私はROSの対象となる(LSD-SLAMをクローンした)ディレクトリでcatkin_makeや、rosmakeした時、だいたいこんな感じのエラーが起きました。

.....

collect2: error: ld returned 1 exit status
make[3]: *** [../bin/videoStitch] Error 1
make[3]: Leaving directory /home/userx/rosbuild_ws/package_dir/lsd_slam/lsd_slam_viewer/build' make[2]: *** [CMakeFiles/videoStitch.dir/all] Error 2 make[2]: Leaving directory/home/userx/rosbuild_ws/package_dir/lsd_slam/lsd_slam_viewer/build'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/yudi/rosbuild_ws/package_dir/lsd_slam/lsd_slam_viewer/build'

とか

.....

 /opt/ros/kinetic/share/mk/cmake.mk:7: ターゲット ‘all’ のレシピで失敗しました

のような感じです。これらは、どうもOpenCV関連で起こるエラーみたいで、CMakeFiles.txtやCMakeLists.txtにいろいろ書き込んでみたりしましたが直りませんでした。

ROSを入れなおした時のエラー

ここを参考にして解決しました。
ROSアンインストールして、その後再インストール時に、

$sudo rosdep init
  ERROR: default sources list file already exists:
    /etc/ros/rosdep/sources.list.d/20-default.list
    Please delete if you wish to re-initialize

のようなエラーが出ますが、sudo rm -rf /etc/ros/rosdep/sources.list.d/*と入力すれば、うまく行きました。

オマケ: 自分がトライしてみたが結果的に直らなかったサイト

自分はできなかったですが、誰かの参考になれば嬉しいです。

・github系
https://github.com/tum-vision/lsd_slam/issues
(LSD-SLAMをビルドする際などで出てきたエラーに対しての解決方法であったりいろいろな考察)

・個人ブログ系
https://medium.com/@j.zijlmans/lsd-slam-bc80ae01a1bb
(一応、Ubuntu16.04で動くようにコードを書き換えてくれたらしいが私はエラーが出た)
http://mohsaad.com/2017/07/17/Installing-ROS-With-OpenCV/ 
(違うversionのOpenCVならビルドできるかも?と思った)

5
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8