2017年3月15日水曜日

Raspberry Pi と Arduino で楽器作り(15) - 角度検出難航中

2軸ジャイロによる角度検出ですがあんまりうまくいっていません。経過をメモします。


1. 環境によって変わる出力

前回の投稿のように、ジャイロセンサに角度を読み込ませることはできました。しかし実際のプログラムに組み込むと、角度検出があまりうまくいっていません。何が要因かはよくわかっていないのですが、一番大きい理由はプログラムを変えると出力される角度の値も変わることです。printする文字の多さによって値が変わっている気がします。気がするだけなんですけど。また、Raspberry Pi 接続時にも初期値や出力がけっこう変わりました。初期値は開始時に計測することでなんとかなりましたが、出力が変わるとどこで角度変化を読み取るかも変わってきてしまうので、出力に応じて変化するような閾値をプログラム上で設定しなければなりません。これがどうにも難しいです。

2. 現状と課題

Arduino とノートパソコンをつないでいる際にも、うまくいったりいかなかったりというのが現状です。なのでまずこれを完璧に動くようにしてから Raspberry Pi 上で調整するという形にしようと思っています。
うまくいったりいかなかったり
上の図では、二回連続で同じ動きを加えたのですが、まったく違う角度が出てしまっています。角速度は正しく読めているので、角度として出力する際にさまざまな工夫が必要だと思います。青いグラフのように角度が戻らないことの対策として、角速度が0付近で安定していれば角度をリセットするようにしました。橙のグラフのように角度が変わらないのは実はけっこうよくあって、リセットのための閾値の設定を厳しくしすぎているのが原因と思われます。調整が必要です。
素早く動きを加えると検知してくれなくなるという不具合もあります。これの調整のため、連続で同じ方向にひねりを加えてみる試験を行いました。
×詰み→〇積み
こちらはプログラムの変更前と変更後の比較をしています。だいたい想定通りの検出をしてくれるようになりましたが、角度が0まで戻らないことがあるのが問題点です。しかし、角度リセットの条件設定がなかなか思いつかないため難しいです。
こちらは上下方向への連続ひねり試験です。負方向が上ひねり、正方向が下ひねりなのですが、上にひねったあと下にひねって初期位置で静止しても負方向への角速度が出てしまっています。このために角度も大きい谷の後小さい谷がでてきてしまっています。これの原因がわからず悩んでいる状況です。バウンドしてしまうこと自体に問題はないのですが、バウンド中に再度センサを動かすことで誤動作の原因になりかねないので……。
進展があったらまた更新します。

0 件のコメント:

コメントを投稿