プログラミング」カテゴリーアーカイブ

pythonでUnscented Kalman Filter実装

[:ja]pykalmanで新しく書き直しました.

最近,全然ブログの更新をしていないのに何故か毎月アクセス数が増えていて,なんだか申し訳ない気持ちになったので久々の更新です.アクセス数の多いページの傾向から察するに,かなりマニアックな人たちが見に来てくれている(このへんの記事[1][2][3]のアクセスが多い)ようなので,今後も一般人には媚びず,マニア向けの(?)内容を書いていこうかと思います.

ということで今回は非線形カルマンフィルタの一種のUnscented Kalman Filterを実装しました.
UKFでは状態の正規分布の平均周りの数点(シグマ点と言います)をサンプリングしてきて,それらの点を実際にシステムを表す非線形関数で変換してやり,変換後の点列から平均・分散を計算することで状態の更新を行います.ヤコビアンの計算が必要ない上に,共分散の変換も二次近似になるため推定精度が良くなるといういいこと尽くめです.詳細は山北先生の論文[1]をどうぞ.丁寧な説明でわかりやすいです.
以前にIMUを使った姿勢推定でも使っていましたが,今回はpython用に書き下してみました.ソースを置いておくので欲しい人は持っていってください.

ukf

続きを読む

ORB特徴,FlannBasedMatcher,solvePnPRansacを使ったAR

3年位前にSURF特徴量を使ってARっぽいことをやってたんですが,最近見返してみたら直したいところが結構あったので作り直してみました.
ついでに,アクセス解析を見るとsolvePnPRansacについて検索してきている人が多いようなので,知っている範囲でこの関数などについて書いておこうと思います(といってもほぼ本家の英リファレンスのままですが).
3年前の記事:SURFとSolvePnPRansacで拡張現実

今回はマーカの画像とカメラから得られた現フレームの画像のそれぞれのORB特徴を抽出した後,FlannBasedMatcherでそれらの対応付けを取り,solvePnPRansacでカメラの位置・姿勢を推定しています.

orb_flann_pnpransac

続きを読む

UKFによる加速度・角速度を使った姿勢推定

[:ja]IMUの姿勢推定がちょっと必要になりそうな気配があったので,試しにスマートフォンの姿勢を加速度・角速度からUnscented Kalman Filterを使って姿勢を推定するプログラムを作成しました.スマートフォンからPCに加速度・角速度データを送信し,Unscented Kalman Filterを使い,PC側で姿勢を推定・表示しています.

pose

続きを読む