MATLAB始め

この記事は12月11日のアドベンドカレンダーです。

 個人用ライセンスもあるけれどマイクロマウス競技に参加予定のチームはMathWorks社よりMATLAB, Simulinkを含むライセンスを提供してもらえる。これは学生だけでなく社会人も個人も申請可能なので申請してみた。
 申請フォームは「 学生コンテストのソフトウェア」と書いてあって社会人が申し込んでいいのか不安に思うけれど(何度かニューテクノロジー振興財団に相談して)個人のメールアドレスと所属企業名の申請でライセンスを付与してもらうことができた。

 インストールしたもののMATLABは初めてなのでテキストにArduinoとMATLABで制御系設計をはじめよう! 第2版を買って勉強をはじめてみた。今は第3章まで終わってArduinoをMATLABやSimulinkで動かしている。
 来年度はSimulinkで作った制御でロボトレース競技に参加してみたい

ターン調整のルーティン

この記事はマイクロマウス Advent Calendar 2024の1日目の記事です。

マイクロマウスのターン調整のルーティンを紹介。
できるだけ実走行を少なくして曲がりにくいターンから調整を行う。ターンの曲がりにくさは、斜めから斜めへの90度(V90)≧直線から斜めへの45度侵入>>直線から斜めへの135度侵入>>>その他のターンなので、直線から斜めへの45度を曲がれればV90も曲がれる可能性が高いし、その他のターンはまず曲がれる。
step1
 ターンの目標速度を決める。マイクロマウス(ハーフサイズ)なら1セル吸引有りで1.3m/s、2セル吸引有りで1.4m/sくらいを狙える
step2
 ターンシミュレーター()を使って直線から斜めに入る45度ターンのパラメーターを決定する。
 シミュレーターはスリップ角を考慮するけれど、スリップ角は遠心力に比例すると仮定して、遠心力はF=m⋅v⋅ωなので、角速度に比例して機体の角度に対する進む角度を浅くするだけでそこそこ使える。
step3
 実際に加速用の直線と斜め45度侵入、減速用の斜め直線のみの組み合わせを走らせて、停止位置を測る。
 
step4
 実走行での停止位置とシミュレーションの停止位置が近くなるように、シミュレーターのスリップ角の係数を調整する
step5
 シミュレーター上で目的の停止位置になるようにパラメーターを調整する
step6
 調整したパラメーターで再び実走行を行い、停止位置を測る。
step7
 停止位置が目的の位置になるように、ターンの前後距離を調整する
step8
 走行ログを確認して、ターン中の角加速度と角速度が目標に追従しているかを確認する。乖離していればゲインを再調整する
 もし、ゲインを調整しても角加速度が間に合わない場合、あるいはモーターへの制御量が100%担っている場合には、そのターン速度は実現できないので、目標速度を下げてstep2からやり直す。
step9
 何度か実走行を繰り返して停止位置のバラつきを確認する。目標位置に対して各方向に±3mm程度に収まっていなければ、タイヤが不規則に滑っているので、step5に戻ってターンのパラメーターを振りなおす。シミュレーター上で別の角加速度と角速度の組み合わせを探す
step10
 ここまでで合わせた(step5とstep7)パラメータをつかって、シミュレーター上で斜めから直線への45度脱出のパラメーターを作成する
step11
 step4で求めたスリップ角の係数をつかって直線から直線の90度、180度のターンを作成する。
 また、直線から斜めへの135度の侵入のパラメーターを調整して、そのパラメーターをもとに斜めから直線への135度脱出のパラメータを作成する
step12
 シミュレータ上で斜めから斜めへの90度(V90度)のパラメーターを作成する。
step13
 3個程度連続するV90度の迷路を作って走らせる。ここでは機体をぶつけながらの調整になるが、走行中の軌道を天カメで撮影することで少ない施行で調整を収束させるように努める。

以上で調整終わり。実際の迷路を走行しながらのターンの調整は行っていない

明日はアライさんによる釈明会見です。どしたん?話聞こか?