2014年10月11日土曜日

バグ発見!

ついに見つけた.

以前から前壁が読めなかったり前壁で位置を取得するとずれたりしていたが,一方で停止状態では前壁を使った距離測定でピタッと位置制御されるという状態であった.

フォトセンサは1kHzでサンプリングしてバッファに過去の計測値を蓄積している.これはフィルタをかけることで外乱を除去したり,壁切れを検出するためである.リングバッファになっているにもかかわらず,どうやらFIFOバッファとして処理している箇所があったようで,タイミング次第で最新の値が使われたり古い計測値が使われたりする.バッファは32個あるので最大約30ms前のデータを使うことになり,上記の現象が起きていたらしい.停止時の位置制御では30msの遅れは問題にならないのでOKだったようである.

今年偶然気が向いて必要でもないのに書き換えたところである...

ちなみに,バッファは32個も必要ないし,16個くらいしか使っていない.

0 件のコメント:

コメントを投稿