OpenVSLAM - eiichiromomma/CVMLAB GitHub Wiki
OpenVSLAM
国産VSLAM環境
dockerを使った一番楽な環境構築
これ がOpenVSLAMのビルドに完璧な環境なので有り難く使わせてもらう。
前提としてはUbuntuのX環境だが,WSL2+VcXsrvでも動いた。
sudo docker run --name opvslm --net=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -it matt0001/openvslam-desktop:v1.1
で,既にPangolinも入ってたりするのでcloneしてビルドするだけで良い。再開する場合は
sudo docker start -i opvslm
別のターミナルで複数roscore, rosrun, roslaunch等を使うときは
sudo docker exec -it opvslm /bin/bash
で繋がる。
また,コンテナ内でのrosの設定は
source /ros_entrypoint.sh
で整う。
cd
git clone https://github.com/xdspacelab/openvslam
cd openvslam
mkdir build && cd build
cmake \
-DBUILD_WITH_MARCH_NATIVE=ON \
-DUSE_PANGOLIN_VIEWER=ON \
-DUSE_SOCKET_PUBLISHER=OFF \
-DUSE_STACK_TRACE_LOGGER=ON \
-DBOW_FRAMEWORK=DBoW2 \
-DBUILD_TESTS=ON \
..
make -j4
あとはテストの通り動かしてみる
# download an ORB vocabulary from Google Drive
FILE_ID="1wUPb328th8bUqhOk-i8xllt5mgRW4n84"
curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=${FILE_ID}" > /dev/null
CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
curl -sLb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=${FILE_ID}" -o orb_vocab.zip
unzip orb_vocab.zip
# download a sample dataset from Google Drive
FILE_ID="1d8kADKWBptEqTF7jEVhKatBEdN7g0ikY"
curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=${FILE_ID}" > /dev/null
CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
curl -sLb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=${FILE_ID}" -o aist_living_lab_1.zip
unzip aist_living_lab_1.zip
# download a sample dataset from Google Drive
FILE_ID="1TVf2D2QvMZPHsFoTb7HNxbXclPoFMGLX"
curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=${FILE_ID}" > /dev/null
CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
curl -sLb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=${FILE_ID}" -o aist_living_lab_2.zip
unzip aist_living_lab_2.zip
# run tracking and mapping
./run_video_slam -v ./orb_vocab/orb_vocab.dbow2 -m ./aist_living_lab_1/video.mp4 -c ./aist_living_lab_1/config.yaml --frame-skip 3 --no-sleep --map-db map.msg
で動けば成功。
ROS packageのビルド
これもマニュアル通り。
cd ~/openvslam/ros
git clone --branch ${ROS_DISTRO} --depth 1 https://github.com/ros-perception/vision_opencv.git
cp -r vision_opencv/cv_bridge src/
rm -rf vision_opencv
catkin_make \
-DBUILD_WITH_MARCH_NATIVE=ON \
-DUSE_PANGOLIN_VIEWER=ON \
-DUSE_SOCKET_PUBLISHER=OFF \
-DUSE_STACK_TRACE_LOGGER=ON \
-DBOW_FRAMEWORK=DBoW2
で,別のターミナルから
source ~/openvslam/ros/devel/setup.sh
roscore
また別のターミナルから
source ~/openvslam/ros/devel/setup.sh
cd ~/openvslam/build
rosrun publisher video -m aist_living_lab_1/video.mp4
更に別のターミナルから
source ~/openvslam/ros/deve/setup.sh
rosrun image_transport republish raw in:=/video/image_raw raw out:=/camera/image_raw
もう一つ別のターミナルから
source ~/openvslam/ros/devel/setup.sh
cd ~/openvslam/build
rosrun openvslam run_slam -v ./orb_vocab/orb_vocab.dbow2 -c ./aist_living_lab_1/config.yaml
でさっきのテストと同じ動きになれば成功。
publisherでvideoを出して,image_transportで/camera/image_rawに変換し,openvslamで拾っているので,Jetson nano上のカメラからpublishしたnodeを同じように/camera/image_rawにして送れれば良い。