Tag Archives: python

CompressedImageのcompressedDepthをデコードする

ROSで画像を扱うにはsensor_msgs/Imageがおなじみですが,画像容量とか通信帯域を節約したいときにはsensor_msgs/CompressedImageを使ったりすると思います.CompressedImageでは,普通のRGB画像はだいたいjpgとかpngとかで圧縮されているので,公式チュートリアルにあるみたいにOpenCVのimdecodeでデコードすればいいんですが,Depth画像の圧縮フォーマットを見ると”compressedDepth”とかいうよくわからないフォーマットになっていて,そのままではデコードできません.C++ならimage_transportパッケージを使うといいんだと思いますが,pythonには対応していないというのと,republishもなんだか微妙だったので”compressedDepth”の中身とデコードの仕方を調べてみました.

Continue reading

pythonでUnscented Kalman Filter実装

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

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

ukf

Continue reading

python3.4でmatplotlib

pythonでデータをプロットするのにmatplotlibを使っていたのですが,pythonのバージョンを3.4に上げたところ3.4には公式ではまだ対応していないらしく,インストールに非常に手こずりました.
半日GTKのライブラリを入れたりなんやら試行錯誤してもだめで諦めかけていたのですが,非公式ですが以下のサイトでpython3.4向けバイナリを配布していたので,試したところうまくいきました.
http://www.lfd.uci.edu/~gohlke/pythonlibs/

import numpy
import matplotlib.pyplot as pyplot

x = numpy.arange( -1, 1, 0.01 )
y = numpy.exp( x )

pyplot.plot(x, y)
pyplot.show()

exp_plot

なんか,無駄なことにかなり時間を消費してしまって疲れました.
そもそもなんでバージョンを上げたかったのかというと,以前まで使っていたpython2.6には誤差関数erfが定義されていなかったからなんですよね.
たしかC++でもerfはC++11まで無かったみたいで,VS2010で使えなくて驚いた記憶があります.