読者です 読者をやめる 読者になる 読者になる

kivantium活動日記

プログラムを使っていろいろやります

SVO with ROS

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

すると、RVIZのウィンドウに飛行機の軌跡が表示されます。

これからやること

USBカメラから画像を取得したい

公式ドキュメント

ROSの知識が前提になっているようで、ここに書いてあることだけではできませんでした……
Run SVO with ROS · uzh-rpg/rpg_svo Wiki · GitHub