cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

SVOをWindows上のVirtualBoxのUbuntuで動かす(その1:オフライン編)

SVOがPTAMよりも凄いらしい、のでテストしてみたいと思います。

http://kivantium.hateblo.jp/

も一緒に参考にしてください。

環境は、Windows7 64bit日本語版の上にVirtualBoxを入れてUbuntu12.04LTSのイメージで動かします。動作に影響があるかもしれませんが、とりあえず手持ちのUSB2.0カメラ(ローリングシャッター)を使うことにします。

 

1.VirtualBoxのインストール

http://www.virtualbox.org/

から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

を端末開いて、普通に実行します。端末の開き方は、Dashホームでtermとか打って検索すると出ます。

1.3 Set up your keys

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

しておきます。

すると、 

f:id:cvl-robot:20140703162612p:plain

こんな感じの画面が表示されて、ようやくどうやらオフラインでは正しく動いているらしいことがわかります。 

  

[1]SVO: http://rpg.ifi.uzh.ch/software_datasets.html