pythonでカルマンフィルタを扱えるpykalmanというライブラリがあるんですが,使い方をよく忘れるので簡単にメモしておきます.
コメントを残す
[:ja]DSOでAR ~ 3. visual odometryを使ったAR[:]
[:ja]カメラ姿勢が得られれば単純なARを表示するのは非常に簡単です.基本的には表示したい3次元物体を,推定されたカメラ姿勢を基にカメラ座標系へ変換し,カメラ内部パラメータを使って画像上へ投影するだけです.
ただ,一つ問題になるのはスケールの推定です.原理的に単眼のvisual SLAM/odometryにおいては画像情報だけから環境のスケールを推定することができません.例えば,大きな箱を遠くから見ているのと,小さな箱を近く見ている場合には同じような絵が得られてしまうため大きさの区別がつきません.そのため,ARにおいて物体の大きさを指定して特定の場所に置くというのは少し難しい話になります(大きさ10cmの立方体をカメラから100cm前に置く!みたいなことを正確に行うのは難しい).今回はカメラの動きに非常に単純なアドホックな過程を置いてスケールの推定を行ってみます.
[:ja]DSOでAR ~ 2. ROSパッケージインストール[:]
[:ja]
dso_ros
DSO本体に続いて,DSOをラップするdso_rosパッケージをインストールします.基本的にはDSO本体のパスを指定してパッケージをcloneするだけですが,デフォルトだとcatkinが使えないのでブランチを切り替えておきましょう.
[:ja]DSOでAR ~ 1. DSO本体インストール [:]
[:ja]昨年末にいろいろあってお蔵入りしていたARのチュートリアルを今更ながら上げておこうと思います.ARの基礎的なところから書いていたのですがブログにそんな簡単なこと書いても仕方ないので,最新のvisual odometryライブラリであるDSO(Direct Sparse Odometry)を使った応用的な部分だけ公開しておこうと思います.
流れとしては 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系の手法はローリングシャッターに弱いのですが,それでもまあまあ動いてしまったりします.でも,グローバルシャッターカメラを持っている人はそっちを使うようにしましょう(そんな人はこんなブログ見ないか).