▼ 2014/11/24(月) 全国大会
B2 Kishimotoです。
全国大会について書こうと思います。
まず東京に行くまで。
前回の更新では大回りターンを実装したと書いてありますが、
壁切れを仕込もうにももうROMがきつきつな感じでした。
というわけでプログラムをダイエット。
4つあった直線関数を1つにまとめたりif文を4つ並べていたところをforループを4回にしたり。
2kBくらい減らせました。特に関数を減らすのがいい感じ。
そのあと壁切れを実装し始めたのが15日くらい。
小回りの方を実装して次は大回りの壁切れや!と息巻いていたらまさかの最短にバグが発生。
180°ターンをして欲しいのに90°ターンをするバグ。
等高線を見て次の方向を返す関数の返り値を見たら変な値を出していました。
しかも2回連続でその関数を呼ぶと返り値が異なるという意味の分かんないバグ。
大会前の貴重な数時間を潰しましたが、結局等高線作成関数がバグっていました。
隣り合った区画に同じ値が入っていました。
このせいで次の方向を返す関数のif文にヒットせず、変な値を返していました。
時間がなかったのでこのバグは放置。
次の方向を返す関数の条件文を変えて対処しました。
そんなこんなで大回りの方も壁切れを実装。
壁切れは簡易なもので、指定距離を走り終わっても壁切れしてなかったら走り続けるというものです。
そもそも自分のマウスは直進安定性がなく、速度を上げると蛇行してスラローム開始位置が手前にズレてしまうので、これを防ぐための壁切れです。
結果は良好。壁にぶつかって位置がずれてもスラローム開始地点まで走ってくれました。
このあたりで時間切れ。
深夜バスで東京へ向かいました。
会場に着いて試走用のフル迷路を走らせたらまさかの探索でコケました。
こりゃヤバイとスラロームテストさせてみたらものすごいズレ。
部室と違って迷路を独占して調整なんてできないので、調整に時間がかかりました。
さらに保険として、スラローム開始時に前壁センサが閾値より大きかったらスラロームせずに超信地旋回に切り替えるように変更。(Takayanagi君ありがとう)
土曜日はフレッシュマンの予選と決勝。
会場に着いて最終調整をしていたらまさかの超信地旋回が時々90°曲がりきらなくなっていました。
右モータが調子が悪く、引っかかるような動きをするようになってました。
ホテルで調整中もこんな動きをしていたのですが、床のフローリングの溝が原因と思っていたら迷路でも出てビックリ。
いまさらモータドライバ交換なんてしたくなかったので、本番で出ないように祈ることにしました。
oさん曰くバッテリの劣化ではないかと。劣化したリポは電流を引っ張ると瞬間的に電圧が落ちるそうです。
バッテリ交換したら発生頻度が減ったので無理やり自分を納得させて予選を待ちました。
予選は3分3回。
1走目:全面探索。成功。
2走目:最低パラメータ。成功。
3走目:真ん中辺りのパラメータ。失敗。
大回りターンをかなり手前から開始して、ターン後の直線で姿勢を崩しました。
壁切れが発動してないようだったので、予選後に壁切れのチェックを行いましたが、問題なし。
原因不明でした。
予選結果がI.Sys2年生組は上位だったので、決勝まで時間あるわーと余裕ぶっこいていたらマウスを預けることを忘れていて失格になるところでした。(ありがとうございますoさん)
決勝は7分5回。
1走目:全面探索。失敗。
スラローム直後に壁に吸い寄せられるようにぶつかり、座標がズレました。
観客席とは逆側に曲がっていったので、観客のカメラの赤外線がセンサに入ったか?
原因不明です。
2走目:足立でゴールして全面。成功。
3走目:最低パラメータ。成功。12秒713
4走目:中の下パラメータ。成功。10秒993
5走目:上の下のパラメータ。この時点の1位が10秒910だったので、冒険はせず安定していたパラメータを選択。成功。10秒497
これで暫定1位に。
まぁ暫定でしたが。
そのあとは9秒台8秒台7秒台とフレッシュマン詐欺の方々が記録を塗り替え、最終順位は4位でした。
来年のフレッシュマンは斜めと時間ベースの最短経路選択ができないと優勝できないと思います。
全国大会について書こうと思います。
まず東京に行くまで。
前回の更新では大回りターンを実装したと書いてありますが、
壁切れを仕込もうにももうROMがきつきつな感じでした。
というわけでプログラムをダイエット。
4つあった直線関数を1つにまとめたりif文を4つ並べていたところをforループを4回にしたり。
2kBくらい減らせました。特に関数を減らすのがいい感じ。
そのあと壁切れを実装し始めたのが15日くらい。
小回りの方を実装して次は大回りの壁切れや!と息巻いていたらまさかの最短にバグが発生。
180°ターンをして欲しいのに90°ターンをするバグ。
等高線を見て次の方向を返す関数の返り値を見たら変な値を出していました。
しかも2回連続でその関数を呼ぶと返り値が異なるという意味の分かんないバグ。
大会前の貴重な数時間を潰しましたが、結局等高線作成関数がバグっていました。
隣り合った区画に同じ値が入っていました。
このせいで次の方向を返す関数のif文にヒットせず、変な値を返していました。
時間がなかったのでこのバグは放置。
次の方向を返す関数の条件文を変えて対処しました。
そんなこんなで大回りの方も壁切れを実装。
壁切れは簡易なもので、指定距離を走り終わっても壁切れしてなかったら走り続けるというものです。
そもそも自分のマウスは直進安定性がなく、速度を上げると蛇行してスラローム開始位置が手前にズレてしまうので、これを防ぐための壁切れです。
結果は良好。壁にぶつかって位置がずれてもスラローム開始地点まで走ってくれました。
このあたりで時間切れ。
深夜バスで東京へ向かいました。
会場に着いて試走用のフル迷路を走らせたらまさかの探索でコケました。
こりゃヤバイとスラロームテストさせてみたらものすごいズレ。
部室と違って迷路を独占して調整なんてできないので、調整に時間がかかりました。
さらに保険として、スラローム開始時に前壁センサが閾値より大きかったらスラロームせずに超信地旋回に切り替えるように変更。(Takayanagi君ありがとう)
土曜日はフレッシュマンの予選と決勝。
会場に着いて最終調整をしていたらまさかの超信地旋回が時々90°曲がりきらなくなっていました。
右モータが調子が悪く、引っかかるような動きをするようになってました。
ホテルで調整中もこんな動きをしていたのですが、床のフローリングの溝が原因と思っていたら迷路でも出てビックリ。
いまさらモータドライバ交換なんてしたくなかったので、本番で出ないように祈ることにしました。
oさん曰くバッテリの劣化ではないかと。劣化したリポは電流を引っ張ると瞬間的に電圧が落ちるそうです。
バッテリ交換したら発生頻度が減ったので無理やり自分を納得させて予選を待ちました。
予選は3分3回。
1走目:全面探索。成功。
2走目:最低パラメータ。成功。
3走目:真ん中辺りのパラメータ。失敗。
大回りターンをかなり手前から開始して、ターン後の直線で姿勢を崩しました。
壁切れが発動してないようだったので、予選後に壁切れのチェックを行いましたが、問題なし。
原因不明でした。
予選結果がI.Sys2年生組は上位だったので、決勝まで時間あるわーと余裕ぶっこいていたらマウスを預けることを忘れていて失格になるところでした。(ありがとうございますoさん)
決勝は7分5回。
1走目:全面探索。失敗。
スラローム直後に壁に吸い寄せられるようにぶつかり、座標がズレました。
観客席とは逆側に曲がっていったので、観客のカメラの赤外線がセンサに入ったか?
原因不明です。
2走目:足立でゴールして全面。成功。
3走目:最低パラメータ。成功。12秒713
4走目:中の下パラメータ。成功。10秒993
5走目:上の下のパラメータ。この時点の1位が10秒910だったので、冒険はせず安定していたパラメータを選択。成功。10秒497
これで暫定1位に。
まぁ暫定でしたが。
そのあとは9秒台8秒台7秒台とフレッシュマン詐欺の方々が記録を塗り替え、最終順位は4位でした。
来年のフレッシュマンは斜めと時間ベースの最短経路選択ができないと優勝できないと思います。
- TB-URL http://usamimi.info/~isys/cgi-bin/adiary/adiary.cgi/mouse/0146/tb/