#最初に
自律移動ロボットを開発するためにROSやVisualSLAMについて勉強し始めた筆者ですが、まだまだ何も分からない状態です。
今回は備忘録としてJetson NanoでORB_SLAM2使う方法を残しておきます。
#構成
Jetson Nano
Ubuntu 18.04LTS
Ros melodic
カメラRealsense r200,バッファローBSWHD06M
ORB_SLAM2をインストールする前に
##ROSインストール
ROSをインストールしましょう。
https://qiita.com/karaage0703/items/aa54e086f0a2f165d3e9
から揚げさんの記事通りにすればインストールすることが出来ます。
##スワップ領域を拡張
ORB_SLAM2をインストールする際にメモリ不足でビルドに失敗しますので、先にスワップ領域を確保しましょう。
$ git clone https://github.com/JetsonHacksNano/installSwapfile
$ cd installSwapfile
$ ./installSwapfile.sh
カメラのインストール
###realsense r200を使う場合
こちらを参考にパッケージをインストールします。
https://qiita.com/h_tajiri/items/3709333223778b749130
###USBウェブカメラを使う場合
以下を実行してください。
sudo apt install ros-melodic-usb-cam
ORB_SLAM2のインストール
こちらの記事を参考にさせていただきました。
基本的にはこの記事と同じようにやればインストールできます。
https://qiita.com/yamakentoc/items/1e340b238e215646cd84
##依存パッケージのインストール
$ sudo apt-get install python-rosinstall
$ sudo apt-get install libglew-dev
$ sudo apt-get install libeigen3-dev
$ sudo apt-get install cmake
$ sudo apt-get install libpython2.7-dev
$ sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
$ sudo apt-get install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
##Pangolinのインストール
$ cd
$ git clone https://github.com/stevenlovegrove/Pangolin.git
$ cd Pangolin
$ mkdir build
$ cd build
$ cmake ..
$ make -j
$ sudo make install
##ORB_SLAM2のインストール
まずクローンします。
mkdir ~/orb_slam2_ws
cd ~/orb_slam2_ws
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
次に以下のディレクトリのファイルに#include "unistd.h"
を加えます。
nanoやviやテキストエディタ等で加えましょう。
~/orb_slam2_ws/ORB_SLAM2/src/LocalMapping.cc ~/orb_slam2_ws/ORB_SLAM2/src/LoopClosing.cc ~/orb_slam2_ws/ORB_SLAM2/src/System.cc ~/orb_slam2_ws/ORB_SLAM2/src/Tracking.cc ~/orb_slam2_ws/ORB_SLAM2/src/Viewer.cc ~/orb_slam2_ws/ORB_SLAM2/Examples/Monocular/mono_euroc.cc ~/orb_slam2_ws/ORB_SLAM2/Examples/Monocular/mono_kitti.cc ~/orb_slam2_ws/ORB_SLAM2/Examples/Monocular/mono_tum.cc ~/orb_slam2_ws/ORB_SLAM2/Examples/RGB-D/rgbd-tum.cc ~/orb_slam2_ws/ORB_SLAM2/Examples/Stereo/stereo_euroc.cc ~/orb_slam2_ws/ORB_SLAM2/Examples/Stereo/stereo_kitti.cc ~/orb_slam2_ws/ORB_SLAM2/Example/ROS/ORB_SLAM2/src/AR/ViewerAR.cc
出来たらビルドしてインストールします。
$ cd ORB_SLAM2
$ chmod +x build.sh
$ ./build.sh
かなり時間が掛かりますが気長に頑張ってください。
##ORB_SLAM2のROSパッケージをインストール
~/orb_slam2_ws/ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeLists.txt
をnanoやviで開いて-lboost_systemを加えます。
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system
)
次に以下を実行してインストール
$ sudo ln -s /home/(自身のhomeの名前)/orb_slam2_ws/ORB_SLAM2/Examples/ROS/ORB_SLAM2 /opt/ros/melodic/share/ORB_SLAM2
$ chmod +x build_ros.sh
$ ./build_ros.sh
また少し時間が掛かります。
これでインストールが完了します。
ORB_SLAM2を起動する
##USBwebカメラの場合
ターミナル1
roscore
ターミナル2
rosrun usb_cam usb_cam_node /usb_cam/image_raw:=/camera/image_raw
ターミナル3
cd ~/orb_slam2_ws/ORB_SLAM2
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
##realsense r200の場合
ターミナル1
roscore
ターミナル2
roscd realsense_camera
roslaunch realsense_camera r200_nodelet_rgbd.launch
ターミナル3
cd ~/orb_slam2_ws/ORB_SLAM2
rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /camera/rgb/image_raw:=/camera/rgb/image_rect_color /camera/depth_registered/image_raw:=/camera/depth/image_raw
起動できれば画面が立ち上がります。
realsesneは色んなトピックがパブリッシュされているのですが、どれを使ったらよいのか正直よくわかっておりませんが、とりあえずrgbとdepthのトピックを使いました。
#参考文献
https://qiita.com/karaage0703/items/aa54e086f0a2f165d3e9
https://qiita.com/yamakentoc/items/1e340b238e215646cd84
https://qiita.com/h_tajiri/items/3709333223778b749130