« Visual Studio 2005 で NUnit を使おうと思ってトラぶった | トップページ | バッテリの持ち具合 »

2009年11月 5日 (木)

カルマンフィルタのチューニング

ロボットの自己位置推定を行うためのカルマンフィルタを実装して、11/3はフィルタのチューニングに必要なデータ収集を行いました。そして今日はそのデータの解析を行いました。

まず、ジャイロ(STL Japan 司21)は静止状態で5分間×4回計測した結果をみるとADコンバータの1~2ビット程度のバラつきが出る程度でバイアスドリフトを起こしていません。20分もあれば1km走行するには十分なので、その間バイアスドリフトを心配する必要が無いことがわかりました。ちなみに、ジャイロの計測ノイズの分散は、角速度を[rad/s]で表した場合で 1.81×10^-5(10の-5乗の意味)程度でした。

続いてGPS単体測位で得られた緯度経度をUTM座標系に直してXY座標(単位はm)で分散を計算してみたところ、静止状態で5分間×4回を通算してX座標の分散が0.5078、Y座標の分散は0.7406でした。もう少し直感的に分かりやすく表現すると、(Y座標の標準偏差が0.86なので)半径0.86mの円内に68%入るくらいの精度ですね。2σ(すなわち95%)の精度まで考えるなら、半径 1.72mの円になります。直径に直せば3.44mなので、SBASなしの単体測位だったのにSBASを使ったのではないかと思うくらい(単体測位にしては)バラつきが少なかったようです。

一方、エンコーダについてはプログラム設計のまずいところが発覚してしまい、プログラムを修正してデータを取り直さないとまずい状態だとわかりました。具体的には、センサデータのログをみると100ms周期で計測しているつもりのタイムスタンプが115msを中心にして76~154msの幅でサンプリング周期がばらついていることがわかりました。サンプリング周期がばらつくと走行速度の算出に大きな影響がでるだけでなく、速度を積分して得られるロボットの位置にも大きな影響が出ます。まずいです、これは。うかつでした。Windows上で .NET Frameworkを使っているので、タイマの精度が当てにならないということをすっかり忘れていました。

こんな調子なので、今週末までに自律走行は無理そうです。どうやて間に合わせよう?

« Visual Studio 2005 で NUnit を使おうと思ってトラぶった | トップページ | バッテリの持ち具合 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/167990/46677449

この記事へのトラックバック一覧です: カルマンフィルタのチューニング:

« Visual Studio 2005 で NUnit を使おうと思ってトラぶった | トップページ | バッテリの持ち具合 »

最近の写真