SVOをWindows上のVirtualBoxのUbuntuで動かす(その1:オフライン編)
SVOがPTAMよりも凄いらしい、のでテストしてみたいと思います。
も一緒に参考にしてください。
環境は、Windows7 64bit日本語版の上にVirtualBoxを入れてUbuntu12.04LTSのイメージで動かします。動作に影響があるかもしれませんが、とりあえず手持ちのUSB2.0カメラ(ローリングシャッター)を使うことにします。
1.VirtualBoxのインストール
からDownloadsに進み、
をダウンロードします。VirtualBox本体の方を先にインストールします。
ExtensionPackは、本体インストール後にインストールします。
2.Ubuntuの仮想ハードディスクイメージのダウンロード
https://www.ubuntulinux.jp/download/ja-remix-vhd
から、Ubuntu12.04LTSをダウンロードします。
3.VirtualBoxで仮想PCとUbuntuのシステム設定
a.新規
→名前:Ubuntu1204LTS(適当)
タイプ:Linux
バージョン:Ubuntu64bit
→メモリーサイズ: 実メモリの半分ぐらい
→ハードドライブ: すでにある仮想ハードドライブファイルを使用する
さっきダウンロードした ubuntu-ja-12.04-desktop-i386.vhd を指定
b.追加されたUbuntu1204LTSアイコンを右クリックして,設定
設定
→一般
→高度: クリップボードの共有 双方向
ドラッグ&ドロップ 双方向
→システム
→プロセッサー: 実プロセッサー数の半分ぐらい
→USB
→USB2.0(EHCI)コントローラーを有効化にチェックを入れる
4.Ubuntuの起動と初期設定
Ubuntu1204LTSアイコンをダブルクリックするとOSが起動します。
OSが起動したら、最初にVirtualBox拡張の設定をしておきます。
デバイス→GuestAdditionsのCDイメージを挿入
→Autorunで起動してインストール、その後再起動
5.ROSのインストール
カメラの接続と可視化のために、ROSをインストールします。GUIの無いSVOをテストデータで動かすだけならROSは不要なのですが、文字が出てくるだけでよくわかりません。
英語版ROSのinstallページに行って、順に実行します。
http://wiki.ros.org/hydro/Installation/Ubuntu
1.1 Configure your Ubuntu repositories
Ubuntuのリポジトリをいじって、"restricted," "universe," and "multiverse." を有効にしろ、と書いてありますが、これをやるとエラーメッセージがたくさん出てきてしまったので、無視します。もしやるなら、
sudo update-manager -d
で立ち上げて、左下の設定ボタン、タブの左側2番目、でmainの横にそれぞれを追加します。
1.2 Setup your sources.list
-
Ubuntu 12.04 (Precise)
-
-
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
-
-
を端末開いて、普通に実行します。端末の開き方は、Dashホームでtermとか打って検索すると出ます。
1.3 Set up your keys
-
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
- を普通に実行します。
1.4 Installation
sudo apt-get update
に時間がかかりますが、ゆっくり待ちます。
rvizを使いますので、Desktop-Full Install
-
-
sudo apt-get install ros-hydro-desktop-full
-
1.5 Initialize rosdep
そのまま実行します。関係ない話ですが、Cubox-i4ProにROSをインストールしようとしたら、ここで躓きました。
sudo rosdep init rosdep update
1.6 Environment setup
echo "source /opt/ros/hydro/setup.bash" >> ~/.bashrc source ~/.bashrc
そのまま実行。
1.7 Getting rosinstall
sudo apt-get install python-rosinstall
6.SVOのインストール
https://github.com/uzh-rpg/rpg_svo/wiki/Installation:-ROS
を参考に必要なライブラリをインストールします。
a.ホームディレクトリに、2つの空ディレクトリを用意します。
cd
mkdir workspace
mkdir catkin_ws
b.Sophus
cd workspace
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build
cd build
cmake ..
make
c.Fast
cd workspace
git clone https://github.com/uzh-rpg/fast.git
cd fast
mkdir build
cd build
cmake ..
make
d.g2o
依存ライブラリを先にインストールしておきます。
sudo apt-get install cmake libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake libqglviewer-qt4-dev
cd workspace
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make
sudo make install
e.vikit
cd catkin_ws
mkdir src
cd src
git clone https://github.com/uzh-rpg/rpg_vikit.git
catkin_wsに移って実行します。catkinは柳の木で、ウィローガレージ社の近くにあったイメージツリーかなんかだそうです。wsは単にワークスペースの略。
f.ROS dependences
sudo apt-get install ros-hydro-cmake-modules
g.SVO
cd catkin_ws/src
git clone https://github.com/uzh-rpg/rpg_svo.git
g2oをインストールしたので、cmakeオプションを適当なテキストエディタで修正
HAVE_G2O
in svo/CMakeLists.txt をTRUE
cd rpg_svo
nano svo/CMakeLists.txt
書き換えたら、CTRL-XでYで保存して抜ける。
cd
cd catkin_ws
catkin_make
その後、忘れちゃいけない、
source devel/setup.bash
これはそのままだと端末を立ち上げるたび、cd catkin_wsの後に実行する必要があります。
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
を一度、設定しておくことにします。
7.SVO with ROSの実行
https://github.com/uzh-rpg/rpg_svo/wiki/Run-SVO-with-ROS
を見ながら進めます。
1.オフラインテスト用データのダウンロードと実行
rpg.ifi.uzh.ch/datasets/airground_rig_s3_2013-03-18_21-38-48.bag
をダウンロードします。1.7GBytesもあるので時間がかかります。また、WindowsからVirtualBoxへのドラッグアンドドロップではうまく受け渡しできないので、Ubuntu側のFirefoxなどからダウンロードしておきます。
SVOのページには、ROSの使い方等の説明はほとんどありませんので、少し不親切な書き方になっています。
.bagファイルというのは、ROSの実行記録で、rosbagというコマンドで取り扱います。この場合、著者のグループがカメラで撮影した画像データがroscoreを通してメッセージ配信される
また、すべてのrosプログラムはroscoreというメッセージ管理してくれるプログラムを介してデータをやり取りすることになっているので、これを常時立ち上げておく必要があります。なので、起動順序を整理すると、このようになります。
端末を3つ開く。
端末1: roscore
端末2: rosbag play airground_rig_s3_2013-03-18_21-38-48.bag
端末3: cd ~/catkin_ws/src/rpg_svo/svo_ros/launch
roslaunch svo_ros test_rig3.launch
実行すると、何かのメッセージは出てくるので動いているっポイのですが、よくわかりませんので可視化してみましょう。もう一枚、端末を開いて、
端末4: rosrun rviz rviz
ここで、VirtualBoxの設定を欲張って3Dアクセラレーション有効化していたりすると、うまく動かない場合があります。
rvizの窓の設定を自分でするのは面倒くさいので、バックアップもいらない場合は、
cp rpg_svo/svo_ros/rviz_config.rviz ~/.rviz/default.rviz
しておきます。
すると、
こんな感じの画面が表示されて、ようやくどうやらオフラインでは正しく動いているらしいことがわかります。
[1]SVO: http://rpg.ifi.uzh.ch/software_datasets.html