忍者ブログ

マイクロマウスで考えるシステム設計

2019年12月02日
この記事はMice Advent Calendarの2日目の記事です。

昨日は kana_____s さんの2019年に買ってよかったものベスト5でした。
他の人の購入記事とかって、自分じゃ考えつかないようなものが乗っていたりして良いですよね。チェキ買うとかいう発想は私の人生にはなかったので非常に面白かったです。

また、kana_____s さんは今回のAdvent Calendarの主催者でもあります。
主催していただきありがとうございます。



さて、皆さんお久しぶりです。

前回記事が去年のAdvent Calendarで震えている鯉住です。
今年はマウスの大会にも出ていなかったので存在感かなり薄くなっている気がします。

何をしていたかというとETソフトウェアデザインロボットコンテスト(ETロボコン)という競技に取り組んでいました。
ETロボコンは、組込みシステム技術協会が主催している「組み込み技術者の教育」を目的としたロボコンです。
このロボコンでシステム設計的な内容を教えてもらったので、それを使って少しマウスのシステムを考えてみるみたいなことを書こうと思います。


ETロボコンとその感想(スキップ可能)

まずETロボコンに参加してみて他のロボコンと比べて特徴的だと思ったことこんな感じです。
 ①ロボット(ハード)は全員共通で改造なし(LEGOマインドストーム)
 ②走行成績だけでなく、ソフトの品質も評価される
 ③運営が技術教育をかなりしっかり行ってくれる

②はソフトのコードを提出するというわけではなく、自身の設計(モデル)をUMLで記述しポスターにまとめて提出します。
コレがなかなか面白くて、モデルが評価される都合上、"ロボットが速く動けばいい"ではなくて"目的に沿った設計をし第三者がわかるように記述する"ことができなければよい成績が取れないようになっています。
当然そんなうまくできるわけないので③でサポートという形をとっており、教育という目的を競技に落とし込んでいると感じました。

参加した感想は、いろいろ勉強になってとても楽しかったというのが一番です。
技術教育として月2回くらいのペースで勉強会開いてくれ、非常に勉強になりました。独学と違って有識者にその場で質問できる大きいです。(その分参加費も割高ですが。。。)
また、企業スポンサーが多くついており、企業の研修としても利用されているみたいです。
私の地区で約20チーム出場した中で所属が個人だったのは私たちのチームは1つだけでした。大半は企業の新人+少数の大学生といった構成です。この辺は結構マイクロマウスとは違いますね。
ただ、月2の勉強会で運営の審査員とかにモデルの相談とかはバンバンできるので個人勢が滅茶苦茶ハンデ背負ってるわけではなかったです。(それなりにはありますが。時間とか場所とか) 

自分のモデルを評価してもらう機会はなかなかないと思うのでぜひ皆さんも参加してみてはいかがでしょうか?



マイクロマウスのシステムを考える



ここからが本題です。ETロボコンで教わったことをマウスに適用してみます。
(私の理解で書いていくので間違っている可能性があります。マサカリ募集中です。)

※書きなぐってたら思ったより長くなってしまったので注意です。



モデルベース開発


ETロボコンではモデルベース開発を行うこと強く勧められました。
モデルベース開発とは、いきなりコーディングを始めるのではなくモデル※を用いてソフトウェアの設計・開発を行い、目的の機能を果たすモデルが完成したうえでそれをコーディングするという開発手法です。

※ここでいうモデルとは制御的な意味のモデルではなく、ソフトウェアの機能や構造・振る舞いを表現するものことを指します。UML(Unified Modeling Language)のモデルです。

モデルを使うことでソフトウェアの全体像が俯瞰でき複雑な構造・振る舞いを理解しやすくなります。
また、あとから機能を追加する際にも他部分への影響等を考慮しやすいという利点もあります。

マウス界隈では、ソフトの設計の話をしている人とか少なく[独自研究]、私含め動けばいいが先に来ていて設計はあまり気にしていない[要出典]印象があるため、この機会にモデルベース開発を学んでみてはいかがでしょうか。


モデルの3視点 機能・構造・振る舞い



モデルはソフトウェアを記述するものですが、記述の観点として「機能」「構造」「振る舞い」の3つがあります。
それぞれ異なる視点である上記によって同じものを記述することで誤解なく伝えることができます。製図における3面図と同じような考え方だと思います。

「機能」
  システムがユーザに提供する働きやサービス。ユースケース図で記述。
  マウスであれば、”探索”、”最短経路導出”、”最短走行”など。

「構造」
  システムの構成。クラス図やオブジェクト図で記述。
  マウスであれば、”壁情報は迷路モジュールが管理"、”探索モジュールは迷路モジュールを経由しないと直接壁情報にアクセスはできない”など。

「振る舞い」
  システムの動きや処理の順番。シーケンス図やアクティビティ図で記述。
  マウスであれば、"まずLEDの反射値から壁を判断し、それをもとに次行く方向を決める"、”目標速度を決めた後にPWM指令値を決定する”など。



モデル設計フロー


ETロボコンで学んだ設計フローは下記の順です。
 ①要求分析(システムの目的)※
 ②機能決定(①のために必要な機能)
 ③シナリオ整理(②の機能がどのような流れで実現されるか)
 ④オブジェクト抽出(③に出てくる"部品"を整理し必要なオブジェクトを洗い出す)
 ⑤構造決定(④の類似品をまとめたり役割を整理しクラスとしてまとめる)
 ⑥部品のつながり整理(③を果たすために④がどうつながっているかを整理)
 ⑦振る舞い決定(時間軸に沿って⑥の動作を整理)

※システムの要求分析についてはあまり教わってなく正直よくわかっていません。有識者の方いらっしゃれば教えてください。

このフローの中で、②が機能、④⑤が構造、⑥⑦が振る舞いのモデルを設計することに対応します。
また、④~⑦はまず自然言語レベルで概念を明確にする基本設計を行い、そのうえでもう一度コーディングできるレベルで詳細を詰めていく詳細設計を行います。
基本/詳細 設計のイメージ)
 基本設計:迷路モジュールが壁情報を管理
 詳細設計:Maze クラスがprivateメンバ変数 wall[x][y] を保持

よって、正確なフローは
 ① ⇒ ② ⇒ ③ ⇒ ④~⑦(基本設計)⇒ ④~⑦(詳細設計)⇒ コーディング
となります。長いですね。


実際にやってみる


私が自身の整理がてら、マイクロマウスを対象に先のフローの⑤くらいまでやってみたので一つの例として紹介します。


①②③ 要求分析&機能抽出&シナリオ整理

まずはマウスに必要な機能を考えます。私は「最短走行」と「探索走行」だと考えました。
ただし、これではまだ粒度が大きすぎるので細かく分類します。
例えば、「探索走行」のシナリオを考えると、下記のような感じになりそうです。()内はそれぞれの処理に関連しそうな部品です。
 1. 壁情報を取得する(光センサ)
 2. 迷路データを更新する(迷路)
 3. 更新した迷路データから次行く場所を選ぶ(経路選択)
 4. 次の場所に向かって走行する(走行体)
 5. 目的地にたどり着くまで1~4を繰り返す

これを見ると1~4はまだまだ粒度が大きいのでもう少し分類します。
(正直、どのレベルまで分解するべきかはよくわかっていません。私の目安としては、設計フローの部品抽出や振る舞いを考えるときに苦労しないで済む(脳死でできる)くらいをイメージしています)

1をさらに分解すると
 1-1. 発光LEDを光らせる(LED)
 1-2. 受光素子のAD値を読む(受光素子)
 1-3. 閾値を超えていたら壁がある、超えていなければ壁がないと判断する
となり、ここまで細かくなればその後の部品抽出や振る舞い記述ができそうです。

他も同様に細かくした結果が下記のユースケース図です。




④ 部品抽出

続いて部品の抽出を行っていきます。
これは先ほど洗い出した機能を果たすうえで必要なモノを拾っていく作業です。
例えば、先ほどの「壁情報を取得する」機能ですと"発光LED"と"受光素子"が部品にあたります。
また、部品同士はどれが関連しているかわかるように線を結んでおきましょう。


これをひたすら行っていくわけですが、ここで注意することとしては抽象的な概念を部品として扱わないようにしましょう。

この作業を行っている 走行体を制御するモノ=制御部 みたいなことをしたくなるのですが、制御部なんてモノは現実には存在しません。抽象的な概念をいれてしまうとオブジェクト指向からブレてしまう、、、とのことです。
私の実体験としては、あいまいな概念が出てくるとその役割が大きくなりすぎて、あらゆる役割を押し付けるようになって大変なことになりました。
頑張ってセンサからデータを取得しモータに電圧をかけるみたいに分類した方がいいです。難しいところではありますが。。。

部品をまとめたものが下のオブジェクト図になります。


(Logが空なのは設計がまだできていないためです)

四角がそれぞれ部品です。部品だけ列挙すると何をするのかわからなくなるので、赤い付箋みたいなので部品の役割をメモしています。
例として出しといてあれなのですが、この後の構造整理をちょっと見越してクラスっぽく整理してあります。
発光素子と発光LEDが光学センサにまとめられていたり、モータが一つしかなかったりするのはそのせいです。(本来この段階では左モータ/右モータみたいに実体の部品に対応している)


⑤ 構造決定

続いて先ほどのオブジェクト図から重複する概念などをまとめて整理しクラス図にまとめていきます。
すでにある程度まとめてしまっていますが、本来は左モータ/右モータを1つのモータクラスとしてまとめたり、N個の発光LEDを1つのクラスにまとめたりします。

迷路回りを書いたクラス図が下記になります。



ところどころ、コーディングっぽくなってるのは私がさぼって詳細設計に一部突入しているからです。
本来はこの時点で具体的な型などまで決める必要はありません。


⑥⑦ 振る舞い

振る舞いでは、④で洗い出した部品が具体的にどのような流れで関連するかを記述します。
まず部品Aから部品Bにデータを渡し、それに応じて部品Bが部品Cに送るデータを決めて…みたいなイメージです。

例としてモデル図を出せればよかったのですが⑤までで力尽きてしまいました。。。申し訳ありません。
いつか書いた暁にはしれっと続きの記事とか書くかもしれません。こうご期待!!



まとめ


というわけで非常にざっくりしたモデルベース開発紹介でした。
説明というより、とりあえず書きなぐった感じになってしまって申し訳ないです。あんまり整理できなかった。。。
わからない点などはぜひお気軽に質問してください。
また、間違っている点とかあったらご指摘いただけると嬉しいです。


途中でも書きましたが、マイクロマウス界隈ではこの辺の話を全然聞かないです。
ハードウェアの工夫やノウハウもいいですが、ソフトウェア設計もいいぞ!!!! ということで今回の記事を書いてみました。何らかの助けになれば幸いです!

これを読んでくれている誰かに刺さってくれないかなぁ。もっとソフト設計の記事ふえないかなぁ。




明日はううさんの粘菌かポーランドの話です! (ううってなんだ・・・?)
研究内容的なことか旅行記なのかな?
ひと味違う感性を持つ彼の記事、楽しみですね!



PR

はじめてのエレファンテック

2018年12月14日
この記事はMice Advent Calendarの16日目の記事です。

昨日の記事はnanoさんのステッパハーフのススメでした。
非常に丁寧に書かれたステッパハーフ(現マイクロマウス競技)機体の紹介記事でした。
情報満載の良い記事ですね。リタイヤなしとかヤベーなって感じです。

いきなりDCよりは、まずスッテパで堅実に作って制御を固めたうえでDCに移るという戦術は非常に賢いと思います。
上手く走れないとマジでつらいし。


さて、そんな私はというと、堅実とは程遠いフレキシブル基板でエンコーダ部を作るということに挑戦していました。
※フレキシブル基板:やわらかい基板。ぐにゃぐにゃ曲げられる。
 一般的な固い基板はソリッド基板と呼び区別するらしい。

今回の記事はエレファンテックという会社にフレキシブル基板を発注した際の注意事項やら感想やらを書きつくったものになります。


注文の背景


新作マウスの自作磁気式エンコーダ部をフレキシブル基板で実装しました。
多くの人は、エンコーダ基板を立てて実装しています。詳しくはエヌがのロボット製作日記を参照のこと。
フレキシブル基板でモジュール化することで以下の利点を狙いました。
 ・マウスが変わっても使いまわせる
 ・コネクタの位置を車軸から離せるため配線上の制約が小さくなる
 ・基板よりはフレキシブル基板の方が薄いため空間上の制約が小さくなる



この緑のぐにゃっとしてるとこがフレキシブル基板。

結論から言うと微妙な感じだったんですが、この辺りの話を始めるととっちらかるので、マウスが最短できるようになったら別途書きます。
今回のメインは発注の話です。




ここから本題


エレファンテックとは?

エレファンテックはプリンテッド・エレクトロニクス技術で世界をリードするスタートアップです。
インクジェットプリンタで銀ナノインクを印刷し、その上から無電解銅めっきを形成する独自技術でフレキシブル基板を製造しています。
エレファンテック公式サイトより。

エレファンテックは2014年に設立されたフレキシブル基板専門メーカーです。

エレファンテック株式会社
エレファンテック公式サイトより
ロゴは、おしゃれなぞうさん

インクジェット印刷と無電解銅めっきを利用した独自手法を用いることで、従来のフォトリソグラフィを用いる手法より、コストが低くリードタイムが短いことが売りだそうです。

ベンチマークとか取ったわけではないです。だれかお願いします。


エレファンテックに発注したきっかけ


2017年12月のマイクロマウス東工大杯にエレファンテックの方がいらっしゃっていて、そこで存在を知りました。

そこから、色々あって2018年8月にフレキシブル基板を発注し、今(2018年12月)に感想ブログを書くという流れです。(あふれ出る仕事の遅さ感)


発注するには?


ここからは実際に発注の流れをさらっていきます。
覚えている範囲で、私が行った順番で書きます。
発注するために必要な項目はこんな感じなはずです。
1. 作れる基板の仕様確認
2. 回路設計
3. 発注データ出力
4. 発注

エレファンテックは仕様書がわかりやすい


1. 作れる基板の仕様確認
何はともあれまずは頼むものの仕様を知らなくては話になりません。
エレファンテックのサイトから仕様書をダウンロードしましょう(リンク先の下の方)。
余談ですが、個人的に他社と比べて仕様が明確でわかりやすい気がします。
この仕様書読んでおけば間違いない(情報が散らばってない)というのが大きいのかも。

話を戻して、カタログやら仕様書やらたくさんありますね。
とりあえず、P-Flex 仕様書とP-Flex 設計ガイドライン読んでおけばいいと思います。
ちなみに、私が発注した8月にはP-Flex 設計ガイドラインはありませんでした


9月末にできたらしい

ざっと見た感じこれすごく便利ですね。
後述する技術ブログに書かれているような内容がまとまっていて嬉しいです。
日々良くなっていくのは1ユーザーとして嬉しい。

仕様書とか読む気しないんですけど


いくら仕様書がわかりやすいとはいっても、そもそもマニュアル類読む気しないという方もいるのではないでしょうか? (ホントか? そんな人間はフレキシブル基板を発注しようとか思わないのでは?)

そんな人には技術記事!
フレキシブル基板を中心に技術的な情報が記事として紹介されています。
1記事が短め(個人の感覚です)かつ画像もあって読みやすいです。
さらに仕様書の内容とかぶる部分もあるのでコレを読むことで仕様書が読みやすくなると思います。

また、中でもお勧めなのがフレックス基板にチャレンジシリーズです。
コレは東工大のロ技研に所属する学生の方がフレキシブル基板を作成するという体験記事のシリーズなのですが、作製の流れや陥りがちな過ち等とてもタメになります。

自分がやったことないことをする前に、体験ブログを探して情報集めたりすると思うんですが、公式でこの点がサポートされてるのはアツいです。
個人的にエレファンテックで最も感動した点です。


回路設計

2. 回路設計 
回路の設計に関してはあまり言うことはありません。
自分のお望みのデータを、お望みのCADで設計しましょう。
EagleかKicadを使っておくと、後述の発注データ出力のところでマニュアルを参照できるので、おすすめです。

注意すべき点としては
部品を乗せる部分には補強版を付ける必要があるため、部品実装部は近くにまとめておくと良いでしょう。補強版を付ける理由は基板が曲がったとき部品が取れてしまわないようにです。


参考までに今回発注した配線図です。

長い。
たしか、灰色の枠線が補強板を付ける部分、上部の塗りつぶされた部分がコネクタ部だからレジスト塗らないでエリアだったはずです。



発注データの形式は?


そんなこんなで気づけば仕様やらなんやらを理解し基板を設計したとなれば、発注が見えてきます。
P-Flex 注文仕様書に発注に必要な情報がまとまっているみたいなので、整理がてら埋めてみるのがよいでしょう。

3. 発注データ出力
ということで、ここからは発注データ形式の話をしよう。
発注に必要なデータは以下です。
  • アートワーク設計を含む場合
    • 回路図データ
    • 外形データ
  • アートワーク設計を含まない場合
    • 基板アートワークデータ(拡張ガーバー RS-274Xが標準のファイル形式)
      • パターン
      • レジスト
      • シンボル
      • 外形線
      • 補強板
      • 補強板指示(補強板IDと貼り付け位置が分かるもの)
  • 部品実装を含む場合
    • 部品表(部品調達代行の有無にかかわらず)
    • 実装指示


マイクロマウス界隈で主流のEagleとKicadに関してはガーバーファイルの出力方法が公式サイトにまとめてあります。ありがたい。
他のCADを触ったことないですが、今後情報を追加していく予定らしいです。
たぶん基本的には必要な情報をレイヤー別に分けてガーバー出力すればよいのではないかと思いますが。

いざ発注、その前に


さて、発注するために必要な項目について、振り返ってみましょう。
 1. 作れる基板の仕様確認 【済】
 2. 回路設計       【済】
 3. 発注データ出力    【済】
 4. 発注
3番まで修了しました。

次はいよいよ発注! 

と行く前に一回落ち着いてデータを確認しましょう。
ソリッド基板(よく使う固い基板)と違いフレキシブル基板はなかなかのお値段するので確認が大事です。

もう一度、先述のフレキシブル基板にチャレンジシリーズとかを見直すことをお勧めします。
参考までに私の経験から注意しておくことを書いておきます。
これさえチェックすればいいというものではないから必ず自分で確認するんだぞ!!!!

注意点
1. 部品実装部、コネクタ部には補強版を付ける(付けないと曲がって部品が取れるらしい)
2. コネクタ部の端子間にはレジストを塗らない(塗ると寸法精度と厚くなりコネクター装着が厳3. しい)
4. レジストの開口部からシンボル0.5mm開ける
5. はんだ付けするパッドやリード部はレジストを開口する(開口しないとはんだ付けできない)
6. レジストの開口部はわざと狭くしてパッドの浮きを防ぐ
浮きを防ぐにはできるだけ大きくレジストを被せる方が良いので、図の一番左の例のようにパッドの全周にレジストを被せる方法が最も有効です。
エレファンテック:フレキシブル基板 P-Flex™️ 設計のコツ「レジスト・シンボル・外形編」より

特に6番、ヤバいです。
驚くほど簡単に剥げていきます。
ちょっとはんだ付けに手間取っているとパッドがなくなってます。
皆さんは気を付けましょうね。


中央のQFNのパッドの白くなってる部分は全部取れました。笑える。

ちなみに、6番のリンク先には、今回紹介していないフレキシブル基板が切れないための工夫とかも書いてあるので是非一読ください。

発 注 !


最終確認も終わり、いよいよ発注です!
エレファンテック、発注の仕方はわかりづらいです。
他社みたいにポチポチ情報を埋めていけば自然と発注できるみたいなページは存在しないみたいです。見つけられてないだけかも。

前回発注時は問い合わせフォームから
質問→見積もり→発注
と行いました。

ちなみに最初の返答はこんな感じでした。

注意:2018年8月時の情報です。
>1. P-Flex PI/PET は現在個人で注文可能でしょうか。 ⇒1枚からでもご注文可能です。(1個あたりの価格は割高にはなりますが)
 >2. 注文できるのであればPIとPETの値段の差は如何ほどでしょうか。⇒PETはデータ手直し無ければ、15000円~となります。オプション追加は別途料金・日程が加算されていきます。  PIは30000円~となります。こちらもデータ手直し無の場合です。同様にオプションで上記と同様価格が加算となります。

ここからやり取りを繰り返して最終的に発注までいった感じです。
この際、担当の方が非常に丁寧で、データのミス等を指摘くださいました。
この場を借りて感謝申し上げます。そして、ご迷惑をおかけし申し訳ありませんでした。

参考までに発注見積もりを書いておきます。

主注文:
  P-Flex™PET50μm(8x76mm) 
オプション:
  補強板(3枚以下)
  ⾦メッキ+ニッケルメッキ
  コネクタ部特殊仕様端⼦部精度処理(±0.07mm) 
枚数:
  10枚
値段:
  40000円+税
注意:2018年8月時の情報です。


余談
この記事書くためにサイトに確認しに行ったらワンストップサービス最低100枚からになってるけど、問い合わせればきっと10枚とかでも大丈夫だよね…? うん。きっとだいじょうぶだいじょうぶ。
ダメだったらこの記事が誰向けなのかよくわからなくなってしまう。

受注後


発注が無事完了すると、着工開始直前にメールが届くそうです。
私の時は忙しい時期だったからか不具合でメールが遅れましたが、本来ならこのメールで発送予定とかが知らされるものと思います。

データ受領から発送まで約2週間くらいでした。

基板は、紙で挟まれた状態で届きます。写真残し忘れました…。
 紙 基板 紙 基板 紙 ・・・ 紙 基板 紙
みたいな感じです。
私が注文した材質はPET(リフロー耐熱が200℃)でしたが、基板が溶けるため普通のはんだが使えないということで、低温はんだもついてきました。ありがたい…!

実装に当たっては、白光のFX600の最低温モードで実装しましたが、基板がみるみる溶けていくということもなく、問題はなさそうでした。


まとめ


フレキシブル基板というものに初めて挑戦したのでブログを書いてみました。
ぐにゅぐにゅ曲げられる基板というのは面白く、アイデア次第で色々新コンセプト打ち立てられそうです。
ただし、やっぱり安くない買い物なので設計ミスには気をつけましょう。


私は、先述のパッドが剥げる問題で基板ダメにしたので近いうちに再発注します。







明日は、アブノーマルさんの「お酒っておいしよね2018」です。
個人的にはまったく共感できないんですが、もしかしたら明日の記事でお酒の魅力に気づくのかもしれません。楽しみにしてます。わくわく。

北信越:完走の感想

2017年09月26日
こんにちは
前回のブログから早3カ月、月日が過ぎるのは早いものですね。


北信越大会

去る9月18日北信越大会がありました。

これまで、北信越大会には参加してこなかったのですが、前回参加者から
 やれ鯖が上手いやら、
 やれ酒が旨いやら、
 やれ楽しい!最高!!!やら
(主に観光面重視の)良い評判を聞いていたものの、これまではマウスが動かず見逃してきました。
今年はそれなりに動くので参加してみることに。



何が目的か明確なLineグループアイコン


いつものようにMiceメンツで車を借りて出発
運転手の方々、まことにありがとうございました。


道中は様々なことがありました。

研究に追われる人がいたり、
やっぱり鯖がおいしかったり、
日本酒試飲会場に吸い込まれる皆を見送って一人お土産を買いあさったり、

話は尽きませんが、きっとみんなも感想ブログを書いてくれると思うのでバッサリ割愛します。


大会本番

まず、結果はこちら


クラシックは
各々多種多様な方法でMice勢が悲しみを背負ったり。
まさかのピーコが優勝したり。
小学生マウサーが誕生していたり。

なかなかのドラマが生まれていて見ていて楽しかったです。


そして、ハーフはというと。


斜めしてくださいと言わんばかりの迷路。
1位のシン・ウムオは斜め連続を駆け抜けていてかっこよかったです。すごい

そして、僕はといえば…

鯉住:記録 00:18.467:順位5位

そう!! 完走していたのです!!!



何を隠そうこの私、フレッシュマンの「かに☆かま」以降一度も完走すらできていませんでした。
つまり3年前の全日本以来の完走です!!!
当然、ハーフも初完走!!

嬉しい!!


おまけに、直線速だけあげた最短走行も成功して、5位に滑り込みました。
ポイントも貰えて、Bustersもバスターできて嬉しいこと尽くしですね!


そして、その証拠となる認定状がこちら!
  
(ま.に預けているのが帰ってき次第差し替えます)
当人のツイッターから投げつけられてきました。





最後に、北信越大会に初めて参加させていただきましたがスムーズな運営により非常に楽しむことができました。
大会運営に携わった方々へ、この場を借りてお礼申し上げます。
ありがとうございました。

謝罪会見、あるいは見苦しい言い訳

2017年06月27日
こんにちは

もう6月も終わりかけ、気温も暑くなり梅雨も明け夏を感じさせますね。
アトピーの自分にはつらい季節の到来です。


ところで、先週の日曜日はMiceプチ大会でした。

とても楽しませていただきました。
来てくださった皆様ありがとうございました。
運営を担当した現役生の皆さんお疲れ様です。

例年よりもはるかに多くの大学が参加しており、Mice自体の規模が大きくなったことを差し引いても、部長の人脈の広さにただ感服するばかりです。




マウスの話

今年は就活があったので、無理に新作に挑まず制御やらアルゴリズムやらを詰めていくことを選択しました。
というわけで、去年の機体である鯉住をひっさげハーフ競技に参戦してきました。

結果から言うと、前壁読み間違えて惨敗しました。Ω\ζ°)チーン

就活終わってからここまで制御をきれいにすることに集中しており、速度や角速度のログはだいぶきれいになってきました。
しかし、代わりに犠牲にしたもの(スラロームや壁制御の調整)も大きく、もはや彼は迷路を走れる状態ではなかったんですね。
無念。。。

とはいえ一歩ずつ進んではいるはずなので、いつかゴールできる日が来ると信じて頑張りたいです…!

とりあえずはカルマンフィルタあたりから。



迷路の話

さて、本題です。


どうやらプチ大会のクラシックでは、
「フレッシュマンに優しい良い迷路を作りました!」と豪語しておきながら大半のフレッシュマンをなぎ倒し、エキスパートすらも殺しまくった鬼迷路を出したクソ野郎がいるらしいですね?


ま.さんのTwitterから。忍者ブログでTwitter埋め込みってどうやるんすか)





はい僕です、ごめんなさい。猛省します。



でもでも!
ドラマチックな因縁の対決を演出したので、大目に見てください!












……えっ、むり?





ここから言い訳タイム

今回のコンセプトとか何を思って作ったとか勝手にグダグダ話します。


まずやらかした迷路。


(7,7)(7,8)(8,7)(8,8)の中央4マスゴール


で、なぜフレッシュマンに優しいとか言っていたのか



単純な歩数最短を走る足立法ならこの経路を通ると想定していました。
このルートなら、壁も多く、階段の連続もなく、袋小路で尻当てして姿勢も直せるはずだったんです。


実際に多くのフレッシュマンたちが通ったルート



こんなスラロームの連続、そりゃあこけますよね…。


なぜ、こんな悲劇が起こってしまったのか

実は、というかよく見てもらえばわかるんですが、想定のルートと実際に通ったルートが食い違う分岐点って歩数的にはどっちに行っても同じなんですね。

僕のアルゴリズムでは、同歩数の場合には直線になる方向を優先することになってるので真っすぐ行きます。
シンプルな足立法では、東西南北の優先順位(IFの順番とか)に従って決まりますね。


もし東より北の優先順位が高いと??

おめでとうございます、見事スラローム連続ルート突入です!!!!



どうするべきだったか

歩数が同数というわかりやすい分岐は両方検証しておくべきでした。
というか、単純にもっと壁を増やしておけば良かったですね。。。

あと段差に思いをはせる必要もありました。
ごめんね、段差先輩。もうMiceからは卒業したものだと思ってたよ。



コンセプト(最短ルートと最速ルート)


最後に、コンセプトというか、みんなにやってほしかったことを話して言い訳は終わりにします。




緑のルートが単純に歩数最短のルートのはずです。
これは、最初の方に、俗に言う桂馬飛びが多く、更には最後に180度×2があり、あまり速度が出ないはずです。

一方、優勝者であるnocheさんが通ったのが青い経路です。
歩数的には緑より長いんですが、直線が多く速度が出しやすくなっています。
狙ってかわかりませんが、nocheさんは重ね探索せず迷路の左側を見なかったことで緑の経路を避けていました。


今回やりたかったことっていうのは、まさにコレで、歩数的に不利だけれども、走行時間は短い経路を探しに行けますか? ということを考えてほしかったです。流石優勝者。

もちろん、エキスパートの皆さんはそんなことは百も承知だとは思いますが、まだそこまでやってない人はこの機会にぜひ考えてみてはいかがでしょうか。
って大会で言いたかったなぁ


ちなみに、僕が想定した最速ルートは別にあります。
もちろん走行パラメータに依りますが。
mazeにも挙げておきましたので、良かったら検討してみてください(ばればれな気もしますが)。



あとはゴールの斜め突っ切りも観たかった。


最後に

Miceプチ大会運営お疲れ様です。
参加した皆さまありがとうございました。

クラシックでこけた方は、どうぞ気を落とさず、クソ迷路だと思って忘れてください。

そして、nocheさん、赤子さん、最短感想おめでとうございます。
ありがとうございます、あなた方のおかげでレジェンドクソ野郎にならずに済みました。

スラロームによる移動距離近似、その5

2017年04月26日
第5回です。
今回はいよいよ、これまでに求めてきた要素を組み合わせてスラロームとしての移動距離を求めていきます。
これまでの記事は1回目の目次からどうぞ。



スラロームの移動距離

スラロームの模式化


第2回からスラロームは各要素の移動距離を長方形として表すことで模式的に表すことができました。



また、これまで(第3回第4回)に円弧とクロソイドの移動距離は求めていました。
円弧の移動距離をX方向とY方向でAx,Ay、クロソイドの移動距離をX方向とY方向でCx,Cyと置きます。
先ほどの図を少し変えます。



この図をもとに、Sx,Syについて考えていきます。


スラロームの移動距離を求める



まず、X方向の移動距離について考えます。


同様にY方向の移動距離についても考えていきます。



よって、Sx,Syを求めることができました。

このSx,Syは
「パラメータとして与える加速角度とターン角度」×「スラロームの軌跡を決める曲率半径」
となっており、変数分離できています。

つまり、スラロームの移動距離(始点と終点)とパラメータを与えることで、通るべき軌跡を決める(曲率半径を求める)ことができるようになったのです!


まとめ

近似を用いてスラロームの移動距離を求めることができました。
 

また、この式の形より
スラロームの移動距離(始点と終点)とパラメータを与えることで、通るべき軌跡を決める(曲率半径を求める)ことができる
ことがわかりました。


タイトルも回収し、これで一件落着…かと思いきやまだ問題が残っています。
それについては次回。

 | HOME | 次のページ »