全日本学生大会
今日は全日本学生大会でした、お疲れ様です。出走しましたが全然ダメでした、根本的な調整不足ですね!
ただ初めて大会迷路を走ったので去年よりはだいぶ進歩したのかなぁと。
正直後輩の高尾くんとたっぺーに進捗抜かされまくってて焦ってます。DCつらい。フレッシュマンでDCなんてやるんじゃなかった。回路ミス多すぎる、回路設計も機体設計も何もかもガバガバ。あかん。
ソースコード書いて3歩進んでもハードデバックで5歩ぐらい下がってる。もっと考えてから設計しような(戒め)
現在のマウス状況は
・壁制御できた
・左手法は入っている
・座標は一応認識できる
・マップは入っていない
ですね。
とりあえず忘れないうちに思ったことやら聞いたことやらをメモっておこうと思います。
もうなんか眠すぎて支離滅裂ですし他の人の参考にも全くならないような内容かとは思いますが、未来の自分に参考にしてほしい一心で書いときます。
・センサー値
センサーの値が会場ごとに違うので調整が厳しい。この間壁制御入れたばかりで調整方法ガバガバなので調整方法のメモと、私のマウスはお尻が丸いので固定するための何かがあると良さそうですね、と思いました
もしくはセンサーが外乱に影響されないようにするとか。
☆無理にセンサー値を調整せずにとりあえず走らせてみる
とりあえずこれかな、と思いました。あとコメントアウトで変数の詳細をメモるのはやはり大事。
・台形加速終わるときに止まれるようにするには?
(全部聞いた話です)
手段1.ブレーキかける
慣性で動くのでモータードライバーでブレーキをかける
手段2.Iの差分を初期化する
Iの成分が残ってると追従速度を0にしても動いてしまうことがあるのでIを初期化する。
手段3.宴会芸をする
宴会芸は「その場にその角度のまま機体を保持する」のでそれを利用して止める。
・タイヤ径あわせる
16区画走らせてもずれないようにタイヤ直径を合わせる。
・最初に置く位置
お尻が丸いので尻当て出来ない→置く位置に誤差が生じて壁を読めないこともある→どうしよう?(どうしよう)
・安定した走行をしたい!
したいです。
・モード選択を作ろう!
(何も作ってない)
・モーターの隙間に挟んでるリポがモーターの熱であったまる問題
正直何も考えてなかった。まだそこまで熱くなってるわけではなく、なんかあったかいなぁ(しみじみ)くらい。こえ〜〜
とりあえずこんな感じでしょうか。
来週の東北地区大会、再来週の東日本地区大会、さらにその次の週の九州地区大会とで毎週の進捗をお見せできたらと思います。
最後に一言、睡眠はいいぞ。
にゃーん
お久しぶりです。センサー回路にミスが発見されました。必殺UEW職人。集中力はないしUEWはどっかとんでくしでめっちゃ時間がかかりましたが何とかくっつけました。壁制御合宿中には完成させるぞい。
ところで餃子食べたい。
ではここでチュロスの作り方を説明します。
1.牛乳200ml(水でも可能)とバター10g, 若干の塩を鍋に入れて沸騰させます
2. 沸騰したら火を止めて小麦粉どばぁしてぐーるぐる混ぜます。この時粉はふるっておいたものを使うと少し幸せになれると思いますが私はめんどくさいので振るったことはありませぬ
3. 混ざったら生地が完成するのでテキトーに絞り袋と絞り口金を使って絞りだします。口金がまるだと生地を上げた時に爆発するので口金の形は星形が推奨されます。
4. ある程度絞ったら180℃の油できつね色になるまで上げましょう。
揚げたてのうちに砂糖をふるうといいゾ。
ちなみにおいしいチュロスは池袋の"チュロスター"というお店で食べれます。皆行こうね。
それでは、よいTwitterライフを。おやすみなさい。
全日本前!ピニオンくるりんぱ/デバッグ!
昨日からモーターのPI制御を行なっていました。データシート日本語なのに読めない事案が多発。なんということでしょう(^o^)/
はい。で、まぁ、設定も完璧!プログラムもおっけー!!でも…??
右は制御を感じるのに
左は
制御が
存在感薄い。
ってなってました。ゲインを上げても変わらず…
さらに、書き込めなくなりましたwww
デバッグおじさんに見せたところ、デバッグおじさんはまず書き込みピンソケが折れてることを発見。
「これピン折れてない?ういてるよ?」
「(´⊙ω⊙`)折れとるがな」
書き込みソケットなおしなおし。
モーター回すだけのプログラムを書き込み実行。
「モーター普通に回ってますよ?」
「ピニオン滑ってない?」
ピニオン滑ってました。
つらい。
(ここまでは昨日の私が書いたんです、寝落ちました。)
はい!!全日本直前ですね!!
ジャイロ死んでるしもうとりあえず台形加速ぅう!!うぉおぉ!!!
台形加速実装しました。(まっすぐ走れるとは言っていない)
超信地旋回、ダメです。
はい、ここから本題です。
最近先輩にデバッグとかを色々してもらったり、自分でしてて思ったんです。
デバッグ手順をメモしといて、その手順に沿ってデバッグすれば、自分だけでもパニクらずにプログラムをデバッグできるのでは???
というわけで
〜デバッグ手順〜
①再現性があるか確かめる。
再現性が高ければ大体人為的ミスですよね…プログラムのせいかハードのせいなのかはいまいちわからないですが。
②myprintfで挙動がおかしい値とそこに関係している値を出力する。
明らかに変な値が出てたらプログラムが悪いですが、変な値は出てないのに…って感じだったらハードの問題ですね。ジャイロ配線ハゲて導通とかピニオン滑りとか絶対に許さない。
あとforで回してるのに入れる変数間違ってて配列が全然0しか入ってないこともあったんです。私のバカ!><
③どの動作を入れたら挙動が怪しくなったのか、もしくはどの段階の動作が挙動が怪しいのかを調べる。
挙動がどこからか突然怪しくなってる感じだったらもう大体プログラムのバグですよね。つらい。普遍的におかしい場合はハードの不良か、もしくは初期設定が間違ってるとかですね。初期設定疑うの結構忘れるんです…今までやったことのない初期設定は特に疑った方がいいです。絶対何か忘れてます。
④プログラムのアルゴリズムが本当にあっているのかを確かめる。
アルゴリズムがあってるか、入れる変数はあってるのか、型はあってるのか、チェックチェックチェック!AD変換してる値はint,物理量はfloat型ですよ。とりあえず全部volatileつけとくと安心しますね。
⑤アルゴリズムがあってそうだったらオシロスコープで出力波形を見る。
アナログジャイロ、電源にノイズのっててクッソブレッブレでした。出力波形を見るとVddの電圧ノイズがそのまま来てたりしたんでほんと見た方がいいです。あとモーター駆動の波形見たら、周期がうなってたりしてた。設定がゴミだったんです。つらい。解決してよかった。
⑤までくるとハンダを温め直す、初期設定を疑う、とかそんな感じですね。
書いてて思ったんですけど、やっぱり今まで様々なバグに直面してきてる人の方がデバッグできると思うんで、先輩方これからもよろしくお願いします!!!
明日明後日、Miceだけではなく他の大学や海外の方々のマウスもとても楽しみにしております。
ちなみに明日の目標はスタートを切って2区画ぐらい走ったらいいなぁ、です。来年のフレッシュマンもよろしくお願いします(^o^)/
書いてるうちに明日が今日になっちまったぜ
というわけで今からカツ丼食います。おやすみなさい。
P.S.マウスの写真載せ忘れてました。ワロタ。かわいいでしょ?
リポ付きの重さ。
全日本大会前ですね
もうすぐ全日本大会ですね。進捗ダメです。
機体は完成してますが、初期設定も多分出来てるのですが、、、
なんと!!!道具が使えないィ!!!
はい。初期設定を無理やりしたはいいものの使い方が全くわからないわけです。
猿が神様から自転車を貰ったけどそれを使えないのと同じです。ワロタ。
というわけで、聞いても聞いても忘れる私のかわいそうなオツムのために色々書いておこうと思います。きっと何もかも忘れてる来年の私よ、感謝しろ。
初歩的すぎるし多分データシートをじっくりちゃーんと読めてればできることしか書いてませんので、本当に私みたいに初っ端からDCでプリント基板で飛ばして行こうぜー!!!Foooo!!でもでも〜??基礎 is very わからん\(^o^)/オワタみたいな人にしか役に立たないと思います
<SMDタイプの半田付け>
- 熱々のコテ先に糸半田を盛る
- パットに押し当てると半田がスッと流れる
- ピンセットでつけたいものをつけたいところから動かないように抑え、パットについた半田を温めて片足仮固定。
- もう片方の足をがっつり半田流して固定。
- 仮固定してた側にもちゃんと半田盛る。
簡単だね?簡単だよ?ニャーニャー!
表面実装用のICチップとかは、マステで固定すればいい感じです。
ちなみにケチらずにたーんとフラックスを塗りたくることをお勧めします。そうすれば幸せになれます(その分換気しようね)
<ハードウェア>
☆回路
RX631はPC7をプルダウンしないと書き込めません。つらい。
レギュレーター周りとかには電解コンを置くのが良いみたいです。電源の波形が乱れてると様々なところに影響を受けます。(特にアナログジャイロとかアナログジャイロとかアナログジャイロry) いい感じな値の電解コンつけとくととりあえずハッピーになれそうです。軽量化と適度にトレードオフしましょう。電解コンはいいぞ。
☆足回りやらシャーシやら
板マウスの人はモーターの置く位置を、板じゃなくてサンドウィッチみたいな形状(語彙力)の人はモーターマウントの高さをよーーーくかんがえましょう。
私はモーターマウント悩みまくった結果タイヤの接地とシャーシの干渉とか諸々を忘れ去り基板シャーシでしか接地できない上にネジがモーターと干渉しまくる設計になってしまいました
<ソフトウェア>
まずルネサスのホームページからRX631シリーズの初期設定例みたいなファイルを掘り出して来て、そこに入ってるヘッダファイル(<.h>のやつ)を自分のプロジェクトフォルダのところにぶち込んでインクルードしましょう。それで何GHz〜とか、これは64ピンLQFPだから〜、とか、弄ってみてください。
次。関数。
CMTとかAD変換のやつとかああいう関数は、まず最初にレジスタプロテクション解除
してから設定を始めよう。
次。レジスタ。
レジスタがめっちゃ連なってるやつは二進数ではなく16進で設定するらしい。でもただ単に00、01、10、11(2進数表記)とかは0〜3とからしい。変えてる基準がわけわからん(でもデータシートに16進で設定してください、とかちゃんと書いてあったはず)
まぁでもレジスタ7個一括設定せなあかんで〜みたいなやつは、2進16進変換ツールとかをggったり、あとはWindows内蔵の電卓を使って設定したい値を求めようね!!!!
設定したい値を打ち込んだのに出てこないでてこないってめちゃくちゃ悩んだのですが、0の数が一個違うだけでだいぶ悲惨な目に合いました
次。レジスタとかを設定したら、今度はそれを使うピンをMPCで設定しよう!
奥様、世の中には様々な機能を持つピンがございましてよ。というわけで、まず周辺可能か汎用I/Oポートか、入力ピンなのか出力ピンなのか、とかとか。H/Lはまぁ制御が始まってから気にしてくださいって感じですね多分。ちゃんと出来てるかどうかはLチカさせて確認してください。私だって流石にLチカはできるよ。forの遅延ループでLチカ出来たら、次はCMTで1秒周期で出来るかとかやるんだぜ。
センサー値、ジャイロ、エンコーダーはAD変換して使う(当たり前) この際AD変換出来るポートににこいつらが入ってくるピンを設定してないとダメだよ!一応確認してね!!
DCモーターはステッピングモーターと違ってエンコーダーの値からタイヤの1回転の長さ、分解能、そして正転逆転、…を色々どうにかこうにかして計算すると!!!なんと!!!速度が出る!!!!!幸せ!!!!!!という感じらしいです。ステッピングモーターは知らん。(使ったことないので)
モーターはMTUで制御しましょう。MTUからPWMを吐かせよう。コンペアマッチを設定して、コンペアマッチの比率からPWMのDuty比が決まるよ!これで速度を制御するのさ!!どうだすごいだろう!!!
え?
もしかして、猿以下じゃないかって?
わかる。
まぁ猿でいうところの車輪の回し方ぐらいがようやくわかって来ました。
はやくにんげんになりたいなぁ
というわけで今日は頭クラクラする(多分寝不足)なので寝ます。また進捗出たらスッゲー基礎的なところをメモみたいに書くかもしれません。というわけで今日はおやすみなさい。