ようこそゲストさん

マイクロマウス開発日誌

2014/10/20(月) 北信越大会2

B2 Akaoです。
kishimoto君が既に大会報告をしていますが、僕も書こうと思います。

最近はマウス以外にも活動していたのでどこの日記に書けばいいのかわからない状況です。
それぞれに書くのは面倒なのでまとめてマウスの日記に書いてしまおうと思います。

まず、昨日の10月19日はマイクロマウス・ロボトレースの大会だけでなく福井大学のきてみてフェアと
相撲班の北信越大会が重なって開催されました。

相撲班が全員、富山まで大会に行くということできてみてフェアの人員不足に悩まされましたが、
一年生やトレース班、4年生より上の先輩方にもお手伝いしていただき何とか人手はたりました。
昨日は一日おつかれさまでした。

さて、相撲班が大会に参加したということで相撲班の機体について
自分が知っていることを書きます。

今年の相撲ロボットは完全新作で一から作っていました。
僕が部に入部した時は動く相撲ロボットは一つもないと聞かされていたので、それを考えると
大きな進歩だと思います。
外枠は大学の施設に委託してレーザー加工してもらっていました。思ってたよりお金がかからなかったので
自分たちもCNCじゃできないことがあったら委託して作ってもらおうと思います。

相撲のハード完成に至るまでにはいろいろな困難がありました。
ユニバーサル基板に鏡面で配線したり、そのためにマイコンボードを新しく買ってきて裏向きで配線したり、
そのマイコンボードがショートで壊れて新たに普通の状態のマイコンボードのピンを抜いて裏向きでつけかえたりもしました。
ハードが完成したのは大会1週間ぐらい前のことでした。

自分は同じマイコンボードを使っていたのでプログラムを担当しました。
とにかく大会に出してもちゃんと動いてくれるように、基本的な相手の追従や白線を検知してのターンを実装しようと
プログラムを書いていくと、相撲ロボットのモータードライバーから火花が散るということが起きすっごく焦りました。
マウスやトレースで火花が散るということは早々ないので相撲はやっぱり怖いと感じました。
大会前々日までにはMAXスピードを出せるように調節もでき、最低限の相撲ロボットの動きはプログラムできました。
結局、大会では勝てなかったようですが昨年よりいろいろな技術力もあがっていたと思います。


次に自分の参加した北信越北信越大会ですが、結果から言うと

マイクロマウス クラシック 2位、3位
ロボトレース 2位、3位 

となりました。

自分のロボットについての考察を書いていこうと思います。

まずライントレースについて

ライントレースは中部初級者でも出した機体で参加しました。第一区画が加速しないバグがありましたが、北信越大会では問題なく
加速してくれていたと思います。あと、積分項の実装によりさらに安定した走行ができたと思います。
大会参加者の人からセンサーを増やして、直進判定をすれば直進がよくなるとのアドバイスをいただきました。
スピードを上げた時にコースアウトするのは蛸壺と直線なので、次の課題が見つかったと思います。

次にマイクロマウスについて

第一走行はスラロームで足立法の全面探索をしました。
危なそうな走行は何度もありましたが、全面探索は成功することができました。

第二走行、第三走行では直線優先の最短走行をしましたが、本当の直線優先経路を見つけることができませんでした。
ただの直線1カーブ2の重みづけの等高線じゃダメということが分かっただけでもいい成果だと思います。

第四走行ではタイム的に5走目ができないと思ったので斜め走行に挑戦しようかと思い走らせましたが、半分も進む前にこけてしまいました。

まず、探索スピードが自分の機体は遅いと思います。このままじゃ時間切れになってしまうのでまず探索スピードを上げたい。
それに伴ってスラロームスピードも上げていきたい。
斜め走行に関しては付け焼刃で作ったので全ての駆動モジュールを調整してさらに壁切れ補正を入れたい。
等高線マップの作製も本当の直線優先と斜め優先の2種類を新たにつくりたい。
「やりたい」ばっかりだけど全日本までに全部実装をめざしてガンバリマス。

2014/10/19(日) 北陸信越大会

B2 Kishimotoです。
北陸信越大会に行ってきました。

DSC_0680.JPG

結局RXでの出走はかなわず、H8で出てきました。
金曜日の段階ではMTUが動いてくれない状況で、モータが回らず。
色々いじってたらモータドライバから煙が。
予備は部室にあるものの時間は12時。
守衛さんに泣きついて部室棟を開けてもらって修理しました。

土曜日は朝7時に出発し12時頃に到着、新潟大学では学祭が行われていました。
我々が一番乗りだったので、そのまま迷路のセッティングを手伝いました。
さすがに北信越は歴史が古く、迷路の劣化もかなりのもので、
壁が変色しているのはまだいいほう、柱の隙間と壁の金属部分の大きさが合わず、その場で壁の補修をしていました。

DSC_0627.JPG
DSC_0629.JPG
DSC_0630.JPG

迷路が完成しいざ試走をしてみようと書き込みをしてみるものの接続エラー。
金曜日にパルスが出ているかどうかオシロでみたら波形が変だったのを思い出し
書き込み端子のGNDとベタGNDを導通チェックしてみると音が鳴らず。
見事にパターンが切れていました。(いつ切れたんだろう…?)

DSC_0626.JPG

試走会後は車中で相撲班のデバッグを手伝いつつ懇親会会場へ。
人数は少なめでしたがいろんな話を聞けました。
今回はホテルが高かったので漫喫で寝ました。

日曜日の朝にモード関連をいじって最短走行後に足立で探索しながら帰ってくるように変更したんですが、これが後々悲劇を生むことに。

1走目は足立でゴールしてから全面探索。コケそうな場面もありましたがなんとか戻ってこれました。
2走目は直線0.8m/sで最短。成功。15秒84
3走目は直線1.0m/sで最短。失敗。壁がテープの跡が汚く、しかも柱にはまらないのでテープで固定されていたのが原因か?探索して帰ってくる設定だったのでマップ情報が壊れました。
4走目はマップ情報が壊れているのに気づかず最短をさせて壁に向かって突進。
5走目は電源入れ直してマップ情報を消去。足立でゴールしてお茶を濁そうとしたら焦ってゴール位置の設定を忘れて1区画前進→180度ターン→1区画前進して無事(0,0に)ゴールしました。

というわけでタイム的には3位でしたが1,2位が同一人物だったので繰り上がりで2位入賞。
試走会では1.5m/sくらい出せるかな?という感じだったので個人的には不完全燃焼です。

classic2014+.png

矢印の壁がコケた壁です。
全面探索した時は緑色の経路を選択。足立で探索→足立で帰ってくる探索をした後だと青の経路を選択しました。(直進部分が長いので緑のほうが速い?)
が、真の直進優先は赤でした。
現在の重み付けは直進で1、ターンで2なので、
緑、青:49+26=75
赤 :53+24=77
となり南回りを走行したようです。長い直進があったら重みを減らす、みたいのも必要ですね。

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

2014/10/15(水) 大会まであと4日

B2 Kishimotoです。

トレース班と相撲班のブログの更新が止まりっぱなしなのでここでまとめて報告します。

19日には北信越大会と相撲の大会と来てみてフェアがかぶるというとんでもないことになっています。
自分は北信越大会にAkao君とTakayanagi君とYamada君と車を出してくださるKominami先輩で行ってきます。
現在クラシックの出走予定が6台ですが、これから増えるんでしょうか?

今日までにRXのマイコンボードは完成し、RX用のプログラムに書き換えた感じです。
が、HEW相手に四苦八苦しています。(gccのほうが良かったよ…)

トレース班ではKuriyama君とTakeichi君が来てみてフェアで展示するマシンのハードを作っています。
Kuriyama君はDCの一枚基板、Takeichi君はAkaoくんのマウス基板にステッピングモータを自分のと同じ物にした仕様です。
ふたりともCNCで加工していますがエンドミルが折れました。Takeichiくんのホイールは4mmでも加工できますがKuriyama君のモータマウントは厳しい感じです。
1年生のYamada君はエンコーダが反応しなくて長い間悩んでましたが、片方だけ信号が出るようになってました。

現在部室では相撲班を全力援護しつつ各自のロボットを作っている状況です。
特にAkao君は自分のマウスとトレースの調整をしつつ相撲のプログラミングをしています。
さすが部長。

相撲班は大会用の1台と来てみてフェアに出すミニ相撲の2台を同時制作しています。
ミニ相撲はNishiwaki先輩とTanaka君がそれぞれ作っていてモータが回ったりセンサの値が読めたり、という具合。
相撲ロボットは自分が基板のハンダ付けをしたのですが、誤って鏡面で作ってしまったのでマイコンボードが上下逆についています。

s_DSC_0610.JPG

白線を検知してバックしたり相手のロボットを見つけて突進したりできるまでになりましたが、マイコンボードとモータドライバがお亡くなりになりました。
果たして大会までにモータドライバが届くのか!?そして今あるモータドライバは大会まで壊れずに済むのか!?お楽しみに!


今後の課題
  • センサーチェックが簡単にできるモードを搭載する
    • マウスだけで閾値を変えられるように(最初に閾値を自動で取得するようにした)
  • センサーの取り付け角度の調整(あまり効果が感じられない)
  • ジャイロセンサを載っけた上でスラローム走行(スラロームだけ)
  • 探索アルゴリズムの改善
    • 足立でとりあえずゴールしてから全面探索?
    • 袋小路に入らないよう、仮想壁を立てる
    • 探索済み区間は加速
  • モーターの換装(pi:coには勝ちたい)
    • 加速度テーブルも変更(台形加速に変更)
  • EEPROMの搭載(RXのデータフラッシュを使うか?)
  • LCDの搭載
  • 壁切れ補正
  • RXに載せかえる(あともう少し)
  • 袋小路での位置調整
  • 斜め走行(Akao君に先を越された)

2014/10/01(水) スラロームと全面探索

B2 Kishimotoです。

スラローム走行ができるようになりました。
シミュレータを作って加速度と角速度加速区間、定角速度区間、角速度減速区間の角度を求めました。
現在は重心速度0.4m/sで安定しています。

また、直進優先の最短走行を実装したはいいものの、足立でゴール→足立で別ルートを探索しながら帰ってくるという状態だと直進優先の最短を見つけてくれない場合があったので、全面探索を実装してみました。(スラロームのおかげで探索がめちゃ速い)

RTのブログで紹介している方法をそのまま実装しました。

等高線用の配列を255で初期化して、未探索区間だけ0を入れれば簡単に出来ました。
現在位置の等高線が255のままだったら探索終了です。

ほかにも、コの字型の袋小路を見つけたら入らないようにもしてみました。
袋小路と分かれば、たとえ壁があり侵入不可であってもその地点には用はないので、
仮想壁で袋小路を閉じつつ探索済みにするだけです。
コの字型の判定は仮想壁を含めてやっているので、
___
|_____|
みたいなのにも対応出来ます。
左の区画に仮想壁を立てると右区画がコの字型になるので右区画にも仮想壁が立ちます。
あまり機能してない感じですが。

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

2014/09/09(火) 中部初級者大会

B2 Kishimotoです。

中部初級者大会に出てきました。

s_DSC_0484.JPG

金沢草の根大会でモータの力不足を感じ、28mm角のモータに変えようと決意し、ハードが完成したのが大会の1週間前。
エンドミルを折ったりバッテリをショートさせて煙が出たりいろいろありました。

一週間で必死こいて足立法を実装してましたが、
半区画前進→壁情報取得→等高線作成
という順で処理すると前進距離が長くなるという有り様でした。(時には半区画進むはずが2区画分前進したり…)
場当たり的な対処として半区画の距離を短くしたり前壁との距離が半区画以下になったらモータを停止させたりむちゃくちゃなことをしてましたが、
条件によって等高線の処理にかかる時間が異なることもあり惨憺たる状態で名古屋入りしました。
BasicMouseはH8でありながら、足立法を実現しているので、どうやってるんだろうと確認してみたら
半区画走行中に等高線作成→壁情報取得
という順で処理していて、これならイケると思い試走会後、徹夜で実装してみました。が、付け焼き刃ではきちんと動かず結局拡張左手で探索することに。

さらに、試走会で金沢草の根大会でも出た壁の読み間違えが発生。
センサの値を見てみると時々MAX値になっていることが判明。
壁がないときにしか発生しないので、MAX値のときは無視することにしました。

本番では探索はコケずにきちんと走ってくれましたし、徹夜で実装した最短の直進優先もちゃんと動いてくれました。(1秒しか縮まらなかったけど)

今後の課題
  • センサーチェックが簡単にできるモードを搭載する
    • マウスだけで閾値を変えられるように(最初に閾値を自動で取得するようにした)
  • センサーの取り付け角度の調整(あまり効果が感じられない)
  • ジャイロセンサを載っけた上でスラローム走行
  • 探索アルゴリズムの改善
    • 足立でとりあえずゴールしてから全面探索?(全面探索は未実装)
    • 袋小路に入らないよう、仮想壁を立てる
    • 探索済み区間は加速
  • モーターの換装(pi:coには勝ちたい)
    • 加速度テーブルも変更
  • EEPROMの搭載
  • LCDの搭載
  • 壁切れ補正