ORB_SLAM2をros2+ubuntu18.04で動かしてみた話。
ORB_SLAM2をubuntu18.04で動かした記事が一番参考になる。 ros2でORB_SLAM2を動かしてみたので動かし方を残す。
環境
ROS2 dashing Ubuntu 18.04 Intel® Core™ i7-6600U CPU @ 2.60GHz × 4 メモリ 16G
ros2のインストール
ここを参考にする。
Pangolinのインストール
昔インストールしていたので、特に何もしていない。 ここに記載の方法と同じで良い。
ORB_SLAM2のインストール
ここに記載の通り。
cd ~/ros_dev
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh
usleepのエラーが出るので対処する。 個人的にはこの対処法が好きなので、 自分のリポジトリに取り込む。 もう一度build.shを実行し、待つ。 libORB_SLAM2.soと各種exampleが出来上がる。
ORB_SLAM2を試す
特に何も考えずにTUM1を使用する。 ダウンロードはここから。 fr1がTUM1に相当している模様。 .tgzがSEQUENCEファイルのようなので、解凍したパスを覚えておく。 サンプルの実行は以下の通り。
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml PATH_TO_SEQUENCE_FOLDER
実行結果は以下の通りであった。トラッキングにかかる時間が33msec程度ってことのように見える。 論文だと他の処理時間も計測しているみたいだけど、どうやっているんだ?
median tracking time: 0.0328202
mean tracking time: 0.0341189
ros2_ORB_SLAM2のビルド
ここを使用する。 書いてあるとおりにビルドする。特に問題は出なかった。
ros2_ORB_SLAM2のテスト1
書いてある通りに実行すると画面が立ち上がる。 カメラのキャリブレーション方法は別途確認する。 image_toolsはid=0のvideoデバイスのみをpublishするので、 所望の結果を得るにはデバイスの認識順をどうにかするか、 image_toolsのソースを変更するかが必要。
ターミナル1
source <path-to-ros>/dashing/setup.sh ros2 run image_tools cam2image -t camera
ターミナル2
cd <path-to-ros2_ORB_SLAM2> source install/setup.sh export LD_LIBRARY_PATH=~/Pangolin/build/src/:~/ORB_SLAM2/Thirdparty/DBoW2/lib:~/ORB_SLAM2/Thirdparty/g2o/lib:~/ORB_SLAM2/lib:$LD_LIBRARY_PATH ros2 run ros2_orbslam mono ~/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/ORB_SLAM2/Examples/Monocular/TUM1.yaml
ros2_ORB_SLAMのテスト2
テスト1同様にros2_orbslamを起動しておくが、購読するtopicは/cameraではなく、/camera/rgb/image_colorなので、ソースを修正して再ビルド。 (ros2にtopic_toolがあればそれを使っても良いが。それか知らないだけで実行時に変更できたりするのかも) 変更はsrc/monocular/monocular-slam-node.cpp内のcamera => camera/rgb/image_colorとすれば良い。 再ビルドして同じように実行する。
2020/11/10追記
実行時にremapオプション付加するのが正解みたい。
(ros2 run ros2_orbslam mono ~/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/ORB_SLAM2/Examples/Monocular/TUM1.yaml --ros-args -r camera:=camera/rgb/image_color
)
次はrosbagを使用してTUM1を流す。 リンク先でbagファイルを入手すること。
rosbag2のインストールは以下の通り。 ros1のbagイメージを再生するにはros1_bridgeが必要で、これのインストールにはmelodicのapt設定が必要(dashingの場合)
sudo su -
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
apt update
apt upgrade
apt install ros-dashing-ros2bag ros-dashing-rosbag2*
TUM1のデータは以下の通り再生可能。そのままだと再生できないのでここを参考にした。
source /opt/ros/melodic/setup.sh
source /opt/ros/dashing/setup.sh
ros2 bag play -s rosbag_v2 rgbd_dataset_freiburg1_xyz.bag -r 1000000
テスト1と同じように動作が確認できる。
その他
ros2_ORB_SLAM2から各種topicが出ていないようなので調べてみると、 どうも/cameraでイメージをsubscribeだけして動作させるだけの模様。 元のORB_SLAM2のros1向けのノード実装も同じ動作だったようなので、これの移植かと思う。 本格的には多分これのros2ブランチを使用する必要があるかも。 これは後で試してみる。
カメラの動作確認メモ
対象:logicool c270
cheeseで動作しない。
fswebcamでは動作確認できた。
qv4l2では動作確認できた。
http://joe.ash.jp/program/ros/tutorial/tutorial_camera.htm https://qiita.com/naoppy/items/74bdfa8216c7223f584b
0 件のコメント:
コメントを投稿