Jetson Nano(4GB) でOpenVSLAMを試してみる(1/3)ではDesktop環境にそのままOpenVSLAMの実行環境を作りましたが、ここではDockerコンテナを作ってそこに環境を構築してみます。
使うのはjetpack4.5.1に実装されているNVIDIAコンテナです。
参照するのはOpenVSLAMのマニュアル(PDF版)の6.2 Instructions for SocketViewe と 6.3 Bind of Directoriesです。
OpenVSLAMのDockerイメージを作成
Jetson Nano(4GB) でOpenVSLAMを試してみる(1/3)で、リポジトリからクローンしたドッカーファイル(Dockerfile.socket)を使います。
ユーザーホームで作業します(jetsonの部分はご自分の環境によって適宜書き換えてください)。
ディレクトリ構成についてはJetson Nano(4GB) でOpenVSLAMを試してみる(1/3)参照
1 |
cd /home/jetson/openvslam |
2つのイメージを作成します。
1つは、openvslam-socketというイメージ(2時間半くらいかかります)
1 2 |
cd ~/openvslam sudo docker build -t openvslam-socket -f Dockerfile.socket . |
Jetson Nano は1CPU 4Core で1Core/1 thread なので以下のコマンドが有効かも。
1 |
sudo docker build -t openvslam-socket -f Dockerfile.socket . --build-arg NUM_THREADS=4 |
2つ目はopenvslam-serverというイメージ(1分もかかりません)
1 2 |
cd ~/openvslam/viewer sudo docker build -t openvslam-server . |
Socket Viewerを使ってみます
コンテナからホスト側のデータセットを使うので、ファイルをまとめたフォルダーを作ってマウントしておきます。
/home/jetson/data-vslam というフォルダーを新規に作成
以下のディレクトリーとファイルをコピーしておきます。
/home/jetson/openvslam/build/aist_living_lab_1
/home/jetson/openvslam/build/aist_living_lab_2
/home/jetson/openvslam/build/orb_vocab.fbow
/home/jetson/openvslam/example/aist/equirectangular.yaml
こんな感じです。
2種類のコンテナを作成します。
openvslam-serverイメージから、 my_openvslam-serverという名前のコンテナを作成
1 |
sudo docker create -it --name my_openvslam-server --network host openvslam-server |
openvslam-socketイメージから、my_openvslam-socketという名前のコンテナを作成
コンテナ内の/workからデータセットを参照します。
1 2 3 |
sudo docker create -it --name my_openvslam-socket --network host \ --volume /home/jetson/data-vslam/:/work:ro \ openvslam-socket |
ターミナルを開いてserverコンテナを起動します。
1 |
sudo docker start -i my_openvslam-server |
ブラウザーを開いて、http://127.0.0.1:3001にアクセスしてSocketViewer を開きます 。
こんな感じ。
もう一つターミナルを開いて、my_openvslam-socketコンテナを起動。
1 |
sudo docker start -i my_openvslam-socket |
サンプルのaist_living_lab_1のvideo.mp4を使って環境地図を作成します。
./run_video_slam -v /work/orb_vocab.fbow -m /work/aist_living_lab_1/video.mp4 -c /work/equirectangular.yaml --frame-skip 3 --no-sleep --map-db map.msg
Localization は以下のコマンド実行
aist_living_lab_2のvideo.mp4を使って自己位置を推定してみます。
./run_video_localization -v /work/orb_vocab.fbow -m /work/aist_living_lab_2/video.mp4 -c /work/equirectangular.yaml --frame-skip 3 --no-sleep --map-db map.msg
my_openvslam-serverは以下のコマンドで停止
ホスト側からコンテナ自体を停止させます。
1 |
sudo docker stop my_openvslam-server |
Leave a Reply