Help us understand the problem. What is going on with this article?

Jetson NanoでORB_SLAM2を使う

最初に

自律移動ロボットを開発するために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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした