流れとしては 1. DSO本体インストール, 2. ROSパッケージインストール, 3. visual odometryを使ったAR, 4. 環境のpoint cloudを使ったインタラクションAR という感じになります.基本的な部分は省いていくので,ROSのインストールとかDirect visual odometryってなんぞやとかは書きません.
環境は Ubuntu 16.04 + ROS kinetic でPCはThinkpad25,カメラはそのへんに落ちてたwebカメラです.Direct系の手法はローリングシャッターに弱いのですが,それでもまあまあ動いてしまったりします.でも,グローバルシャッターカメラを持っている人はそっちを使うようにしましょう(そんな人はこんなブログ見ないか).
ではまず,DSO本体のインストールから行きましょう.
従来のvisual SLAM/odometryライブラリといえば導入がひたすらややこしいことが多く,導入段階で挫折してしまうことが多かったですが(?)最近のものはかなり簡単に導入できるようになっています.DSOも基本的には公式リポジトリの説明に従えばすんなりと導入できると思います.
まずDSOのvisualizationに必要なPagolinをインストールします.一応optionalですが,これがないと何も表示されないのでほぼ必須です.他のvisual SLAMライブラリでも頻繁に使用されているので入れておいて損はないです.
git clone https://github.com/stevenlovegrove/Pangolin.git apt-get install cmake libglew-dev mkdir Pangolin/build && cd Pangolin/build cmake .. cmake --build .
続いてDSO本体をインストールします.
git clone https://github.com/JakobEngel/dso.git apt-get install -y libsuitesparse-dev libeigen3-dev libboost-all-dev apt-get install -y libopencv-dev mkdir dso/build && cd dso/build cmake .. make -j
これだけDSO本体のインストールは完了です.ね,簡単でしょう?とりえあずEuRoCデータセットで動作確認しましょう.
cd wget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.zip unzip MH_01_easy.zip
mav0/cam0/sensor.yamlにカメラパラメータがあるので,これを基にDSO用のパラメータファイルを作成してmav0/cam0/camera.txtに置いておきます.フォーマットの詳細はここ.基本的にカメラ行列と歪み係数を並べているだけです.
RadTan 458.654 457.296 367.215 248.375 -0.28340811 0.07395907 0.00019359 1.76187114e-05 752 480 crop 752 480
あとは実行するだけです!(パラメータやプログラム引数の詳細は公式リポジトリを見てください)
cd dso/build/bin ./dso_dataset files=~/mav0/cam0/data calib=~/mav0/cam0/camera.txt preset=0 mode=1
こんな感じで推定された移動軌跡と環境の点群が見れるはず.
次:2. ROSパッケージインストール[:]
こんばんは。私は大学の研究で画像処理でARを行う研究をしており、DSOを実装してみようとしています。実装するにあたり、海外のサイトばかりで英語が多く意味の解釈を間違えてしまうことが多くあるので、このサイトにはすごく助かっています。
今、DSOのダウンロードまで終わったのですがそれ以降の↓
mav0/cam0/sensor.yamlにカメラパラメータがあるので,これを基にDSO用のパラメータファイルを作成してmav0/cam0/camera.txtに置いておきます.フォーマットの詳細はここ.基本的にカメラ行列と歪み係数を並べているだけです
の部分が私の勉強不足でわからないですが、詳しくわからないので教えてもらえませんか?
camera.txtのファイルの中身を見せてもらえるとすごくありがたいです。
こんにちは,
camera.txtにはカメラの内部パラメータ(焦点距離,画像中心,歪み係数)を並べて置いておきます.
OpenCVの記法(http://opencv.jp/opencv-2.1/cpp/camera_calibration_and_3d_reconstruction.html)で書くと以下のような感じです.
“`
RadTan fx fy cx cy k1 k2 p1 p2
input_width input_height
crop
cropped_width cropped_height
“`
最後の三行は入力画像サイズと,実際に処理に使う領域サイズです.
研究頑張ってください.