2Dカメラの映像だけから自動飛行ロボットに位置認識させるSVO(Semi-Direct Monocular Visual Odometry)という仕組みが注目を集めているようです。既存の手法を組み合わせた高速で正確な位置認識が特徴になています。紹介動画がこちら。
SVO: Fast Semi-Direct Monocular Visual Odometry ...
というわけで今回はこのSVOを使ってみようと思います。カメラから画像を取得するのはまだ成功していないので、とりあえずサンプルを動かすところまで。以下の手順が全て必要かどうかは確認していないので、不要なライブラリをインストールしている可能性もあります。
動かした環境
Ubuntu 12.04.4 LTS
(ROSのバージョンをドキュメントと同じHydroにしたかった関係で12.04を使っていますが、最新版でも動く可能性はあります)
ROSのインストール
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list' wget http://packages.ros.org/ros.key -O - | sudo apt-key add - sudo apt-get update sudo apt-get install ros-hydro-desktop-full ros-hydro-cmake-modules ros-hydro-catkin ros-hydro-geometry-msgs ros-hydro-sensor-msgs ros-hydro-rqt-gui ros-hydro-rqt-gui-py echo "source /opt/ros/hydro/setup.bash" >> ~/.bashrc source ~/.bashrc
PPAを追加してからインストールするおなじみの手順ですが、最後に.bashrcに設定を足すのを忘れないようにしましょう(私はそれでハマりました)
OpenCVのインストール
新しめのバージョンが必要なので自分でコンパイルします。OpenCV | OpenCVからソースをダウンロードして解凍したフォルダに移動してから
sudo apt-get install build-essential pkg-config git cmake libgtk2.0-dev libeigen3-dev python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev mkdir release cd release cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. make sudo make install
Sophusのインストール
SVOを動かすのに必要なライブラリらしいです。workspaceを作りたいディレクトリに移動してから、
mkdir workspace cd workspace git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff mkdir build cd build cmake .. make
cmakeが良きに計らってくれるためインストールする必要はないようです。
Fastのインストール
カレントディレクトリが移動していない前提です。
cd ../../ git clone https://github.com/uzh-rpg/fast.git cd fast mkdir build cd build cmake .. make
vikitとSVOのインストール
cd ../../ mkdir catkin_ws mkdir catkin_ws/src cd catkin_ws/src git clone https://github.com/uzh-rpg/rpg_vikit.git git clone https://github.com/uzh-rpg/rpg_svo.git catkin_make catkin_make install echo "source /path to current directory/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
.bashrcに設定を足さないと動きません。
テストの実行
roslaunch svo_ros test_rig3.launch
新しい端末を開いて
cp src/rpg_svo/svo_ros/rviz_config.rviz ~/.rviz/default.rviz rosrun rviz rviz
もう一つ新しい端末を開いて
wget http://rpg.ifi.uzh.ch/datasets/airground_rig_s3_2013-03-18_21-38-48.bag rosbag play airground_rig_s3_2013-03-18_21-38-48.bag
これからやること
USBカメラから画像を取得したい
公式ドキュメント
ROSの知識が前提になっているようで、ここに書いてあることだけではできませんでした……
Run SVO with ROS · uzh-rpg/rpg_svo Wiki · GitHub