ジャイロコンパスの問題点を考える
ジャイロコンパスを使ってみると、左右の回転角に誤差があることがわかりました。
右90度、左90度とクランク走行させてみると、左回転の角度が足りないようです。この原因はなんでしょう。
まず、考えられるのが、ソフトの問題です。
試作ソフトでは回転角度は現在の進行方向に対しての相対角度で与えられます。つまり、回転直前の姿勢がずれていれば、その分旋回角度もずれるわけです。
クランク走行では、動画でもわかるよう、進行方向に対してフィードバックがかかっているため、頭を振りながら進行します。そのため、旋回直前にぴったり進行方向に向いているかどうかは怪しいものです。
次に考えられるのは、ジャイロセンサへのノイズの混入です。
モーターを駆動していないときには問題ありませんでしたが、モーターを駆動してみると、数マイクロ秒くらいの細かいパルスがたくさん入ります。
思っていたより相当多い。これは問題です。200mV/div 1mS/divで測定するとこんな感じです。デジタルオシロなのでノイズの幅が相当広いように見えますが、実際は数マイクロくらいです。
サンプリング周期が2msなのですべてのノイズが読み込まれるわけではありませんが、ノイズの電圧が大きいのは問題です。ADは直近8回分の信号の平均を計算しているので、大きなノイズは16msにわたって影響を及ぼします。ちょっとまずいですね。アルゴリズム的に測定値のフィルタリングの必要がありそうです。
本来は、センサの回路にノイズが混入しないよう、電気的なデカップリングの必要がありますが、ブレットボードのバラック配線では、きちんとしたノイズ対策はできません。とりあえず、ADコンバータの入力にパスコンを入れてみるつもりです。
さらにもうひとつ悪いことが。このノイズはモーターから出ているのですが、電流が想定よりずっと多く、モーター二つをデューティ70%位で駆動すると600mA位も電流を食っているようです。かなり発熱していてサーマルシャットダウンがかかり気味という感じです。
コレはまずい。モーターをもっと電流の少ないものに変えるか、ドライバをパラで使うほうかいいでしょう。
さしあたりソフトPWMをモーターON→ブレーキからモーターON→モーターOFFに切り替えました。ブレーキ分の発熱がないだけよさそうです。
なお、PWMは64mS周期で分解能200uS、32段階でソフト的に作成しています。おもちゃのモーターなのでコレくらいでうまくいきます。
サンプリングや相対角度の問題は、もうすこし考えてから対策してみようと思います。
« とりあえずジャイロで動かしてみます | トップページ | ジャイロコンパスのノイズはどこから? »
「ロボット作ろう」カテゴリの記事
- Raspberry Pi3でturtlebotを動かしたいのだけど(2016.06.11)
- STM32F4のAD変換トラブル(その2)(2013.03.29)
- TrueSTUDIOからEclipseへ乗り換える(拾遺)(2012.07.14)
- TrueSTUDIOからEclipseへ乗り換える(その3)(2012.07.13)
- TrueSTUDIOからEclipseへ乗り換える(その2)(2012.07.07)
コメント