全日本前!ピニオンくるりんぱ/デバッグ!
昨日からモーターのPI制御を行なっていました。データシート日本語なのに読めない事案が多発。なんということでしょう(^o^)/
はい。で、まぁ、設定も完璧!プログラムもおっけー!!でも…??
右は制御を感じるのに
左は
制御が
存在感薄い。
ってなってました。ゲインを上げても変わらず…
さらに、書き込めなくなりましたwww
デバッグおじさんに見せたところ、デバッグおじさんはまず書き込みピンソケが折れてることを発見。
「これピン折れてない?ういてるよ?」
「(´⊙ω⊙`)折れとるがな」
書き込みソケットなおしなおし。
モーター回すだけのプログラムを書き込み実行。
「モーター普通に回ってますよ?」
「ピニオン滑ってない?」
ピニオン滑ってました。
つらい。
(ここまでは昨日の私が書いたんです、寝落ちました。)
はい!!全日本直前ですね!!
ジャイロ死んでるしもうとりあえず台形加速ぅう!!うぉおぉ!!!
台形加速実装しました。(まっすぐ走れるとは言っていない)
超信地旋回、ダメです。
はい、ここから本題です。
最近先輩にデバッグとかを色々してもらったり、自分でしてて思ったんです。
デバッグ手順をメモしといて、その手順に沿ってデバッグすれば、自分だけでもパニクらずにプログラムをデバッグできるのでは???
というわけで
〜デバッグ手順〜
①再現性があるか確かめる。
再現性が高ければ大体人為的ミスですよね…プログラムのせいかハードのせいなのかはいまいちわからないですが。
②myprintfで挙動がおかしい値とそこに関係している値を出力する。
明らかに変な値が出てたらプログラムが悪いですが、変な値は出てないのに…って感じだったらハードの問題ですね。ジャイロ配線ハゲて導通とかピニオン滑りとか絶対に許さない。
あとforで回してるのに入れる変数間違ってて配列が全然0しか入ってないこともあったんです。私のバカ!><
③どの動作を入れたら挙動が怪しくなったのか、もしくはどの段階の動作が挙動が怪しいのかを調べる。
挙動がどこからか突然怪しくなってる感じだったらもう大体プログラムのバグですよね。つらい。普遍的におかしい場合はハードの不良か、もしくは初期設定が間違ってるとかですね。初期設定疑うの結構忘れるんです…今までやったことのない初期設定は特に疑った方がいいです。絶対何か忘れてます。
④プログラムのアルゴリズムが本当にあっているのかを確かめる。
アルゴリズムがあってるか、入れる変数はあってるのか、型はあってるのか、チェックチェックチェック!AD変換してる値はint,物理量はfloat型ですよ。とりあえず全部volatileつけとくと安心しますね。
⑤アルゴリズムがあってそうだったらオシロスコープで出力波形を見る。
アナログジャイロ、電源にノイズのっててクッソブレッブレでした。出力波形を見るとVddの電圧ノイズがそのまま来てたりしたんでほんと見た方がいいです。あとモーター駆動の波形見たら、周期がうなってたりしてた。設定がゴミだったんです。つらい。解決してよかった。
⑤までくるとハンダを温め直す、初期設定を疑う、とかそんな感じですね。
書いてて思ったんですけど、やっぱり今まで様々なバグに直面してきてる人の方がデバッグできると思うんで、先輩方これからもよろしくお願いします!!!
明日明後日、Miceだけではなく他の大学や海外の方々のマウスもとても楽しみにしております。
ちなみに明日の目標はスタートを切って2区画ぐらい走ったらいいなぁ、です。来年のフレッシュマンもよろしくお願いします(^o^)/
書いてるうちに明日が今日になっちまったぜ
というわけで今からカツ丼食います。おやすみなさい。
P.S.マウスの写真載せ忘れてました。ワロタ。かわいいでしょ?
リポ付きの重さ。