ようこそゲストさん

マイクロマウス開発日誌

メッセージ欄

分類 【ステッピングマウス】 で検索

一覧で表示する

2014/11/25(火) 2014年全日本大会終了

B2 Akaoです。

全日本大会が終了しました。
大会の様子を報告したいと思います。

まず木曜夜、22時にバスが出発ということで21時まで部室でデバックしてからバスで東京に向かいました。
部室では最後まで壁切れ補正がうまくいかずに悩んで、結局わからず部室を出ることになりました。
バスが出る福井駅に向かっている途中に、バグの原因に気付きさっそくバスの中でデバック開始。
簡単なバグだったのでちょちょいと直しました。夜行バスは2階建てのバスで初めて乗りました。

金曜はお昼からだったので少し東京を観光してから本厚木に向かいました。
会場入りしたら試走会はすでに始まっており結構な人がいました。
試走会では16×16のコースでも全面探索成功し、MAXパラメーターでも完走できました。
昨日の壁切れのバグもちゃんと直りました。

試走会時になぜか5回目に斜め走行を入れるということに急きょなり、古いプログラムから斜めを移植しました。
1時間ぐらい調整をして何とか走るようにはなりました。

トレーサーのほうは正直中部初級者大会からほぼいじっていないのでヤバイとは思っていましたが、試走をして
けっこうやばいことに気づきました。プログラムを簡単にしか書いていないので区画ごとにカーブかストレートしか判定しません。
ですので、曲率の大きいカーブでもゆっくりと走ってしまいます。ホテルで急きょプログラムを書こうと思い、ホテルの床にテープを
張ってみましたが、床の反射率が高かったためキャリブレーションしてもデバックできませんでした。
結局マウスもトレーサーもデバックをあきらめ本番にむかいました。

予選
マウスのほうは
第一走 全面探索失敗
第二走 足立行き帰り 成功
第三走 MAXパラメーターでの最短 成功

予選4位での通過となりました。
第一走目、全面探索失敗の原因は後で動画で見てみると壁の読み間違えだとわかりました。
最後のほうで右壁を読み間違えたせいでその区画を探索にはいりました。
今思えば、最短には全く関係ない区画なので2回目で電源切らずに最短走行をしておけばよかった。

3走目の最短走行では2走目の記録で決勝はいけるだろうと思ったのでMAXパラメーターで行きました。
ゴールはしましたが途中直進で左右に振れかなり危ない走行でした。ゴール手前だったので何とかゴールにねじ込んだ形で
普通のパラメーターのほうが早くゴールできたと思います。

トレーサーのほうは、
1走2走3走とタイムを上げていきました。
3走とも完走はできましたが、頭のよくないプログラムで課題が多く残りました。
プログラムは頭の中にはあるのに実行にできてないことがたくさんあるので時間のある時にいろいろ追加したいと思います。

フレッシュマン決勝

1走目 全面探索 失敗
2走目 足立行き帰り 成功
3走目 最短走行 パス2 失敗
4走目 最短走行 パス1 成功
5走目 最短走行 斜め 失敗

今回の全面も失敗してしまいました。バグを疑いましたが、今まで部室ではバグが起きていないのでまた壁の見間違いかと思います。
試走会の時はこんなことが起きてなかったのでこれがマイクロマウスの怖いところです。
焦っていたので急所普通の足立法で行き帰りしました。
問題なく探索はできましたが、最短経路が見つけれなかったのが最短走行のタイムに影響してきました。
自分は最短走行を4種用意してました。4がMAX1が一番下。
3走目で2を試しましたが直進でこけてしまいました。これが一番の謎です。
あえなく1のパラメーターで最短走行成功。5回目の走行ではもっと早さを上げたパラメーターで挑戦してみたかったのですが、
斜め走行を選びました。いま思えばなぜそんなことをしたのやら。

まとめると、決勝においては自分の判断ミスが大きく響きました。残り時間も十分残っていたので全面探索をもう一度すべきだったとも思います。

結果はフレッシュマン6位でした。予選から順位は落ちましたが、入賞もできてよかったです。
この結果に満足はしていないので、来年のクラシックエキスパートでいい成績が出せるよう努力していきます。

2014/11/24(月) 全国大会

B2 Kishimotoです。

全国大会について書こうと思います。

まず東京に行くまで。
前回の更新では大回りターンを実装したと書いてありますが、
壁切れを仕込もうにももうROMがきつきつな感じでした。
というわけでプログラムをダイエット。
4つあった直線関数を1つにまとめたりif文を4つ並べていたところをforループを4回にしたり。
2kBくらい減らせました。特に関数を減らすのがいい感じ。

そのあと壁切れを実装し始めたのが15日くらい。
小回りの方を実装して次は大回りの壁切れや!と息巻いていたらまさかの最短にバグが発生。
180°ターンをして欲しいのに90°ターンをするバグ。
等高線を見て次の方向を返す関数の返り値を見たら変な値を出していました。
しかも2回連続でその関数を呼ぶと返り値が異なるという意味の分かんないバグ。
大会前の貴重な数時間を潰しましたが、結局等高線作成関数がバグっていました。

ss.png

隣り合った区画に同じ値が入っていました。
このせいで次の方向を返す関数の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位でした。
来年のフレッシュマンは斜めと時間ベースの最短経路選択ができないと優勝できないと思います。

2014/11/10(月) 大回りターン実装

B2 Kishimotoです。

今日はTakayanagi君もAkao君もブログを更新してるので自分も更新します。

前回の記事で作っていたスラロームを最短関数に組み込みました。
大回りターンは半区画前から開始するので、実装が面倒でした。
大回り180°なんかは次の次の区画まで読みに行きます。
そんなことを走りながらはできないので先に配列に直進かスラロームかを入れておいて、
走行時は読みだすだけ、という風にしました。
やたらめったら複雑なif文になってしまいましたが、気にしないことにします。

結局これを実装してるとROMが足りなくなったので最高速度を2m/sまで落としましたが、
実装し終わったらROM使用量が32K超えてました。どうしよう。

現在90°大回りが不安定で、スラロームが連続する迷路だと完走率が5割を下回ります。
速度を落とすか、スラロームの加速度を上げるか…

今後の課題
  • センサーチェックが簡単にできるモードを搭載する
    • マウスだけで閾値を変えられるように(最初に閾値を自動で取得するようにした)
  • センサーの取り付け角度の調整(あまり効果が感じられない)
  • ジャイロセンサを載っけた上でスラローム走行(スラロームだけ)
  • 探索アルゴリズムの改善
    • 足立でとりあえずゴールしてから全面探索?
    • 袋小路に入らないよう、仮想壁を立てる
    • 探索済み区間は加速
  • モーターの換装(pi:coには勝ちたい)
    • 加速度テーブルも変更(台形加速に変更)
  • EEPROMの搭載(たぶん無理)
  • LCDの搭載(たぶん無理)
  • 壁切れ補正(必須)
  • RXに載せかえる(諦めました)
  • 袋小路での位置調整
  • 斜め走行(諦めました)
  • コケた時の対策
  • 最短経路の直進優先の改善(実装したが未確認)
  • 最短走行に180°スラロームを組み込む

2014/11/05(水) 進捗

B2 Kishimotoです。

直進の壁補正は一旦置いといて最近はスラロームの調整をしています。
180度ターンを追加して、大回りと小回りとで何種類か作っていたらシミュレータのバグを発見。
深刻なバグではなかったものの気持ち悪かったので直しました。

とりあえず現在作ってるスラロームは
  • 90°小回り
  • 90°大回り
  • 180°小回り
  • 180°大回り
の4つ
180°のは速度を上げると膨らんでぶつかるので、大回りということにしてスラローム開始位置を半区画手前にずらします。

どうやらモータ的に重心速度0.8m/s以上は無理っぽい。
大回り180°は0.7m/sですけど不安定なので、本番用パラメータはもう少し下げます。

タイヤを変えたのでこれまで安定してたスラロームも調整し直し…
最短関数も作り直しです。
あ、あと斜めは諦めました。

今後の課題
  • センサーチェックが簡単にできるモードを搭載する
    • マウスだけで閾値を変えられるように(最初に閾値を自動で取得するようにした)
  • センサーの取り付け角度の調整(あまり効果が感じられない)
  • ジャイロセンサを載っけた上でスラローム走行(スラロームだけ)
  • 探索アルゴリズムの改善
    • 足立でとりあえずゴールしてから全面探索?
    • 袋小路に入らないよう、仮想壁を立てる
    • 探索済み区間は加速
  • モーターの換装(pi:coには勝ちたい)
    • 加速度テーブルも変更(台形加速に変更)
  • EEPROMの搭載(たぶん無理)
  • LCDの搭載(たぶん無理)
  • 壁切れ補正(必須)
  • RXに載せかえる(諦めました)
  • 袋小路での位置調整
  • 斜め走行(諦めました)
  • コケた時の対策
  • 最短経路の直進優先の改善(実装したが未確認)
  • 最短走行に180°スラロームを組み込む

2014/11/02(日) 全日本大会まであと3週間

B2 Akaoです。

タイトルにも書きましたが、気が付いたら全日本大会まで3週間を切っていました。
残りの3週間でなにが実装できるかを考えて、行動したいと思います。

最近の進捗は既探索区間の加速を実装しました。
第一走行で全面探索を行うので、既探索区間加速で時間をなるべく短縮できればいいなと思います。

現在の探索は 未探索区画 400mm/s
既探索区画 900mm/s
加速度 2300mm/s^2
です。

今のところはバグもなく探索してくれているので大丈夫だとは思いますが、たくさん迷路を走らせて
ちゃんと実装されているかチェックしたいと思います。

他には最短走行を大回りターンで走行できるようにルートの生成を行いました。
大回りターンを入れるだけでタイムが劇的に変わったので重要性がよくわかりました。
しかし、大回りターンの調整が甘いので途中でこけてしまうことが多くみられるので
今週中に調整を済ませたいと思います。
(できれば壁切れ補正も実装できたらいいな。)


現在のマシンのマイナーチェンジ版の基板が届きました。
モーターマウントをCNCで切削して基板とモーターに取り付けてみると
いい感じにはまってくれてよかったです。
問題はマイコンがまだ届いていないので、機体のはんだ付けを一切行えてません。

「早く機体を完成させたいな」(゜-゜)

別件ですが、最近サークルに妖怪が出るそうです。
とある同輩の証言ではモータードライバーをいくつか燃やしていくとかいかないとか....
とある先輩の話では機体の調子を悪くするとかしないとか...