<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" >
  <channel>
  <title>徒然なるままに書きつくれば</title>
  <link>https://tenpura.sugo-roku.com/</link>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://tenpura.sugo-roku.com/RSS/" />
  <description>ろぼっとつくったりしてます
ボードゲームが好きです
</description>
  <lastBuildDate>Sat, 30 Nov 2019 10:12:43 GMT</lastBuildDate>
  <language>ja</language>
  <copyright>© Ninja Tools Inc.</copyright>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />

    <item>
    <title>マイクロマウスで考えるシステム設計</title>
    <description>
    <![CDATA[<div>この記事は<a href="https://adventar.org/calendars/3991" title="" target="_blank">Mice Advent Calendar</a>の2日目の記事です。</div>
<div><br />
昨日は kana_____s さんの<a href="https://nemuineko.wixsite.com/nemuineko/home/2019%E5%B9%B4%E8%89%B2%E3%80%85%E8%B2%B7%E3%81%A3%E3%81%9F%E3%82%88%E3%81%A3%E3%81%A6%E8%A9%B1" title="" target="_blank">2019年に買ってよかったものベスト5</a>でした。</div>
<div>他の人の購入記事とかって、自分じゃ考えつかないようなものが乗っていたりして良いですよね。チェキ買うとかいう発想は私の人生にはなかったので非常に面白かったです。<br />
<br />
また、kana_____s さんは今回のAdvent Calendarの主催者でもあります。</div>
<div>主催していただきありがとうございます。<br />
<hr /><br />
<br />
さて、皆さんお久しぶりです。</div>
<div><br />
前回記事が去年のAdvent Calendarで震えている鯉住です。</div>
<div>今年はマウスの大会にも出ていなかったので存在感かなり薄くなっている気がします。</div>
<div><br />
何をしていたかというと<a href="https://www.etrobo.jp/" title="" target="_blank">ETソフトウェアデザインロボットコンテスト</a>（ETロボコン）という競技に取り組んでいました。</div>
<div>ETロボコンは、組込みシステム技術協会が主催している「組み込み技術者の教育」を目的としたロボコンです。</div>
<div>このロボコンでシステム設計的な内容を教えてもらったので、それを使って少しマウスのシステムを考えてみるみたいなことを書こうと思います。<br />
<br />
<br />
</div>
<h2>ETロボコンとその感想（スキップ可能）</h2>
<div></div>
<div>まずETロボコンに参加してみて他のロボコンと比べて特徴的だと思ったことこんな感じです。</div>
<div>　①ロボット（ハード）は全員共通で改造なし（LEGOマインドストーム）</div>
<div>　②走行成績だけでなく、ソフトの品質も評価される</div>
<div>　③運営が技術教育をかなりしっかり行ってくれる<br />
<br />
</div>
<div>②はソフトのコードを提出するというわけではなく、自身の設計（モデル）をUMLで記述しポスターにまとめて提出します。</div>
<div>コレがなかなか面白くて、モデルが評価される都合上、"ロボットが速く動けばいい"ではなくて"目的に沿った設計をし第三者がわかるように記述する"ことができなければよい成績が取れないようになっています。</div>
<div>当然そんなうまくできるわけないので③でサポートという形をとっており、教育という目的を競技に落とし込んでいると感じました。<br />
<br />
</div>
<div>参加した感想は、いろいろ勉強になってとても楽しかったというのが一番です。</div>
<div>技術教育として月2回くらいのペースで勉強会開いてくれ、非常に勉強になりました。独学と違って有識者にその場で質問できる大きいです。（その分参加費も割高ですが。。。）</div>
<div>また、企業スポンサーが多くついており、企業の研修としても利用されているみたいです。</div>
<div>私の地区で約20チーム出場した中で所属が個人だったのは私たちのチームは1つだけでした。大半は企業の新人＋少数の大学生といった構成です。この辺は結構マイクロマウスとは違いますね。<br />
ただ、月２の勉強会で運営の審査員とかにモデルの相談とかはバンバンできるので個人勢が滅茶苦茶ハンデ背負ってるわけではなかったです。（それなりにはありますが。時間とか場所とか）&nbsp;<br />
<br />
自分のモデルを評価してもらう機会はなかなかないと思うのでぜひ皆さんも参加してみてはいかがでしょうか？<br />
<br />
<br />
<br />

<h2>マイクロマウスのシステムを考える</h2>
<br />
<br />
ここからが本題です。ETロボコンで教わったことをマウスに適用してみます。<br />
（私の理解で書いていくので間違っている可能性があります。マサカリ募集中です。）<br />
<br />
※書きなぐってたら思ったより長くなってしまったので注意です。<br />
<br />
<br />
<br />

<h2>モデルベース開発</h2>
<br />
ETロボコンではモデルベース開発を行うこと強く勧められました。<br />
モデルベース開発とは、いきなりコーディングを始めるのではなくモデル※を用いてソフトウェアの設計・開発を行い、目的の機能を果たすモデルが完成したうえでそれをコーディングするという開発手法です。<br />
<br />
※ここでいうモデルとは制御的な意味のモデルではなく、ソフトウェアの機能や構造・振る舞いを表現するものことを指します。UML(Unified Modeling Language)のモデルです。<br />
<br />
モデルを使うことでソフトウェアの全体像が俯瞰でき複雑な構造・振る舞いを理解しやすくなります。<br />
また、あとから機能を追加する際にも他部分への影響等を考慮しやすいという利点もあります。</div>
<div><br />

<div>マウス界隈では、ソフトの設計の話をしている人とか少なく[独自研究]、私含め動けばいいが先に来ていて設計はあまり気にしていない[要出典]印象があるため、この機会にモデルベース開発を学んでみてはいかがでしょうか。</div>
<div><br />
<br />
</div>
<h2>モデルの3視点　機能・構造・振る舞い</h2>
<br />
<br />
モデルはソフトウェアを記述するものですが、記述の観点として「機能」「構造」「振る舞い」の3つがあります。<br />
それぞれ異なる視点である上記によって同じものを記述することで誤解なく伝えることができます。製図における3面図と同じような考え方だと思います。<br />
<br />
「機能」<br />
　　システムがユーザに提供する働きやサービス。ユースケース図で記述。<br />
　　マウスであれば、&rdquo;探索&rdquo;、&rdquo;最短経路導出&rdquo;、&rdquo;最短走行&rdquo;など。<br />
<br />
「構造」<br />
　　システムの構成。クラス図やオブジェクト図で記述。<br />
　　マウスであれば、&rdquo;壁情報は迷路モジュールが管理"、&rdquo;探索モジュールは迷路モジュールを経由しないと直接壁情報にアクセスはできない&rdquo;など。<br />
<br />
「振る舞い」<br />
　　システムの動きや処理の順番。シーケンス図やアクティビティ図で記述。<br />
　　マウスであれば、"まずLEDの反射値から壁を判断し、それをもとに次行く方向を決める"、&rdquo;目標速度を決めた後にPWM指令値を決定する&rdquo;など。<br />
<br />
<br />
<br />

<h2>モデル設計フロー</h2>
<br />
ETロボコンで学んだ設計フローは下記の順です。<br />
　①要求分析（システムの目的）※<br />
　②機能決定（①のために必要な機能）<br />
　③シナリオ整理（②の機能がどのような流れで実現されるか）<br />
　④オブジェクト抽出（③に出てくる"部品"を整理し必要なオブジェクトを洗い出す）<br />
　⑤構造決定（④の類似品をまとめたり役割を整理しクラスとしてまとめる）<br />
　⑥部品のつながり整理（③を果たすために④がどうつながっているかを整理）<br />
　⑦振る舞い決定（時間軸に沿って⑥の動作を整理）<br />
<br />
※システムの要求分析についてはあまり教わってなく正直よくわかっていません。有識者の方いらっしゃれば教えてください。<br />
<br />
このフローの中で、②が機能、④⑤が構造、⑥⑦が振る舞いのモデルを設計することに対応します。<br />
また、④～⑦はまず自然言語レベルで概念を明確にする基本設計を行い、そのうえでもう一度コーディングできるレベルで詳細を詰めていく詳細設計を行います。<br />
基本/詳細 設計のイメージ）<br />
　基本設計：迷路モジュールが壁情報を管理<br />
　詳細設計：Maze クラスがprivateメンバ変数 wall[x][y] を保持<br />
<br />
よって、正確なフローは<br />
　① &rArr; ② &rArr; ③ &rArr; ④~⑦（基本設計）&rArr; ④~⑦（詳細設計）&rArr; コーディング<br />
となります。長いですね。<br />
<br />
<br />

<h2><span style="font-size: x-large;">実際にやってみる</span></h2>
<br />
私が自身の整理がてら、マイクロマウスを対象に先のフローの⑤くらいまでやってみたので一つの例として紹介します。<br />
<br />
<br />
<span style="text-decoration: underline; font-size: large;">①②③ 要求分析＆機能抽出＆シナリオ整理</span><br />
<br />
まずはマウスに必要な機能を考えます。私は「最短走行」と「探索走行」だと考えました。<br />
ただし、これではまだ粒度が大きすぎるので細かく分類します。<br />
例えば、「探索走行」のシナリオを考えると、下記のような感じになりそうです。（）内はそれぞれの処理に関連しそうな部品です。<br />

<div>　1. 壁情報を取得する（光センサ）</div>
<div>　2. 迷路データを更新する（迷路）</div>
<div>　3. 更新した迷路データから次行く場所を選ぶ（経路選択）</div>
<div>　4. 次の場所に向かって走行する（走行体）</div>
<div>　5. 目的地にたどり着くまで1～4を繰り返す</div>
<br />
これを見ると1～4はまだまだ粒度が大きいのでもう少し分類します。<br />
（正直、どのレベルまで分解するべきかはよくわかっていません。私の目安としては、設計フローの部品抽出や振る舞いを考えるときに苦労しないで済む（脳死でできる）くらいをイメージしています）<br />
<br />
1をさらに分解すると<br />

<div>　1-1. 発光LEDを光らせる（LED）</div>
<div>　1-2. 受光素子のAD値を読む（受光素子）</div>
<div>　1-3. 閾値を超えていたら壁がある、超えていなければ壁がないと判断する</div>
となり、ここまで細かくなればその後の部品抽出や振る舞い記述ができそうです。<br />
<br />
他も同様に細かくした結果が下記のユースケース図です。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/026fd3b5.png" title=""><img src="//tenpura.sugo-roku.com/Img/1575221812/" alt="" /></a> <br />
<br />
<br />
<span style="text-decoration: underline; font-size: large;">④ 部品抽出</span><br />
<br />
続いて部品の抽出を行っていきます。<br />
これは先ほど洗い出した機能を果たすうえで必要なモノを拾っていく作業です。<br />
例えば、先ほどの「壁情報を取得する」機能ですと"発光LED"と"受光素子"が部品にあたります。<br />
また、部品同士はどれが関連しているかわかるように線を結んでおきましょう。<br />
<br />
<br />
これをひたすら行っていくわけですが、ここで注意することとしては抽象的な概念を部品として扱わないようにしましょう。<br />
<br />
この作業を行っている　走行体を制御するモノ＝制御部　みたいなことをしたくなるのですが、<strong>制御部</strong>なんて<strong>モノ</strong>は現実には存在しません。抽象的な概念をいれてしまうとオブジェクト指向からブレてしまう、、、とのことです。<br />
私の実体験としては、あいまいな概念が出てくるとその役割が大きくなりすぎて、あらゆる役割を押し付けるようになって大変なことになりました。<br />
頑張って<strong>センサ</strong>からデータを取得し<strong>モータ</strong>に電圧をかけるみたいに分類した方がいいです。難しいところではありますが。。。</div>
<div><br />
部品をまとめたものが下のオブジェクト図になります。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/4e545356.png" title=""><img src="//tenpura.sugo-roku.com/Img/1575222566/" alt="" /></a> <br />
（Logが空なのは設計がまだできていないためです）<br />
<br />
四角がそれぞれ部品です。部品だけ列挙すると何をするのかわからなくなるので、赤い付箋みたいなので部品の役割をメモしています。<br />
例として出しといてあれなのですが、この後の構造整理をちょっと見越してクラスっぽく整理してあります。<br />
発光素子と発光LEDが光学センサにまとめられていたり、モータが一つしかなかったりするのはそのせいです。（本来この段階では左モータ/右モータみたいに実体の部品に対応している）</div>
<div><br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">⑤ 構造決定</span></span><br />
<br />
続いて先ほどのオブジェクト図から重複する概念などをまとめて整理しクラス図にまとめていきます。<br />
すでにある程度まとめてしまっていますが、本来は左モータ/右モータを1つのモータクラスとしてまとめたり、N個の発光LEDを1つのクラスにまとめたりします。<br />
<br />
迷路回りを書いたクラス図が下記になります。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/dd5272ab.png" title=""><img src="//tenpura.sugo-roku.com/Img/1575223459/" alt="" /></a> <br />
<br />
ところどころ、コーディングっぽくなってるのは私がさぼって詳細設計に一部突入しているからです。<br />
本来はこの時点で具体的な型などまで決める必要はありません。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">⑥⑦ 振る舞い</span></span><br />
<br />
振る舞いでは、④で洗い出した部品が具体的にどのような流れで関連するかを記述します。<br />
まず部品Aから部品Bにデータを渡し、それに応じて部品Bが部品Cに送るデータを決めて&hellip;みたいなイメージです。<br />
<br />
例としてモデル図を出せればよかったのですが⑤までで力尽きてしまいました。。。申し訳ありません。<br />
いつか書いた暁にはしれっと続きの記事とか書くかもしれません。こうご期待！！<br />
<br />
<br />
<br />

<h2>まとめ</h2>
<br />
というわけで非常にざっくりしたモデルベース開発紹介でした。<br />
説明というより、とりあえず書きなぐった感じになってしまって申し訳ないです。あんまり整理できなかった。。。<br />
わからない点などはぜひお気軽に質問してください。<br />
また、間違っている点とかあったらご指摘いただけると嬉しいです。<br />
<br />
<br />
途中でも書きましたが、マイクロマウス界隈ではこの辺の話を全然聞かないです。<br />
ハードウェアの工夫やノウハウもいいですが、ソフトウェア設計もいいぞ！！！！ ということで今回の記事を書いてみました。何らかの助けになれば幸いです！<br />
<br />
<span style="color: #808080;">これを読んでくれている誰かに刺さってくれないかなぁ。もっとソフト設計の記事ふえないかなぁ。</span><br />
<br />
<br />
<hr /><br />
明日は<a title="いしかわ">ううさん</a>の粘菌かポーランドの話です！　<span style="font-size: xx-small;">（ううってなんだ・・・？）</span><br />
研究内容的なことか旅行記なのかな？<br />
ひと味違う感性を持つ彼の記事、楽しみですね！<br />
<br />
<br />
<br />
</div>]]>
    </description>
    <category>マウス</category>
    <link>https://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/mbd_micromouse</link>
    <pubDate>Sun, 01 Dec 2019 18:29:07 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/31</guid>
  </item>
    <item>
    <title>はじめてのエレファンテック</title>
    <description>
    <![CDATA[この記事は<a href="https://adventar.org/calendars/3562" title="" target="_blank">Mice Advent Calendar</a>の16日目の記事です。<br />
<br />
昨日の記事はnanoさんの<a href="http://kuuneru.bangofan.com/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%9E%E3%82%A6%E3%82%B9/%E3%82%B9%E3%83%86%E3%83%83%E3%83%91%E3%83%BC%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%9E%E3%82%A6%E3%82%B9%EF%BC%88%E6%97%A7%E3%83%8F%E3%83%BC%E3%83%95%E3%82%B5%E3%82%A4%E3%82%BA%EF%BC%89%E3%81%AE%E3%82%B9%E3%82%B9%E3%83%A1" title="" target="_blank">ステッパハーフのススメ</a>でした。<br />
非常に丁寧に書かれたステッパハーフ（現マイクロマウス競技）機体の紹介記事でした。<br />
情報満載の良い記事ですね。リタイヤなしとかヤベーなって感じです。<br />
<br />
いきなりDCよりは、まずスッテパで堅実に作って制御を固めたうえでDCに移るという戦術は非常に賢いと思います。<br />
上手く走れないとマジでつらいし。<br />
<br />
<br />
さて、そんな私はというと、堅実とは程遠いフレキシブル基板でエンコーダ部を作るということに挑戦していました。<br />
※フレキシブル基板：やわらかい基板。ぐにゃぐにゃ曲げられる。<br />
　一般的な固い基板はソリッド基板と呼び区別するらしい。<br />
<br />
今回の記事はエレファンテックという会社にフレキシブル基板を発注した際の注意事項やら感想やらを書きつくったものになります。<br />
<br />
<br />

<h2>注文の背景</h2>
<br />
新作マウスの自作磁気式エンコーダ部をフレキシブル基板で実装しました。<br />
多くの人は、エンコーダ基板を立てて実装しています。詳しくは<a href="http://megato.hatenablog.com/entry/2015/11/29/023020" title="" target="_blank">エヌがのロボット製作日記</a>を参照のこと。<br />
フレキシブル基板でモジュール化することで以下の利点を狙いました。<br />
　・マウスが変わっても使いまわせる<br />
　・コネクタの位置を車軸から離せるため配線上の制約が小さくなる<br />
　・基板よりはフレキシブル基板の方が薄いため空間上の制約が小さくなる<br />
<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/557d1128.jpeg" title=""><img src="//tenpura.sugo-roku.com/Img/1544944452/" alt="" /></a> <br />
この緑のぐにゃっとしてるとこがフレキシブル基板。<br />
<br />
結論から言うと微妙な感じだったんですが、この辺りの話を始めるととっちらかるので、マウスが最短できるようになったら別途書きます。<br />
今回のメインは発注の話です。<br />
<br />
<br />
<br />
<br />
ここから本題<br />
<br />
<br />

<h2>エレファンテックとは？</h2>
<blockquote>
<blockquote>エレファンテックはプリンテッド・エレクトロニクス技術で世界をリードするスタートアップです。<br />
インクジェットプリンタで銀ナノインクを印刷し、その上から無電解銅めっきを形成する独自技術でフレキシブル基板を製造しています。</blockquote>
</blockquote>
<a href="https://www.elephantech.co.jp/" title="" target="_blank">エレファンテック公式サイト</a>より。<br />
<br />
エレファンテックは2014年に設立されたフレキシブル基板専門メーカーです。<br />
<br />
<img src="https://assets.elephantech.co.jp/elephantech-logo.svg" alt="&atilde;&uml;&atilde;&not;&atilde;&atilde;&iexcl;&atilde;&sup3;&atilde;&atilde;&atilde;&macr;&aelig;&nbsp;&ordf;&aring;&frac14;&auml;&frac14;&ccedil;&curren;&frac34;" /><br />
エレファンテック公式サイトより<br />
ロゴは、おしゃれなぞうさん<br />
<br />
インクジェット印刷と無電解銅めっきを利用した独自手法を用いることで、従来のフォトリソグラフィを用いる手法より、コストが低くリードタイムが短いことが売りだそうです。<br />
<br />
<span style="color: #ff0000;"><strong>ベンチマークとか取ったわけではないです。だれかお願いします。</strong></span><br />
<br />
<br />

<h2>エレファンテックに発注したきっかけ</h2>
<br />
2017年12月のマイクロマウス東工大杯にエレファンテックの方がいらっしゃっていて、そこで存在を知りました。<br />
<br />
そこから、色々あって2018年8月にフレキシブル基板を発注し、今（2018年12月）に感想ブログを書くという流れです。（あふれ出る仕事の遅さ感）<br />
<br />
<br />

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

<h2>エレファンテックは仕様書がわかりやすい</h2>
<br />
1. 作れる基板の仕様確認<br />
何はともあれまずは頼むものの仕様を知らなくては話になりません。<br />
<a href="https://www.elephantech.co.jp/products/pflex/" title="仕様書のページ" target="_blank">エレファンテックのサイト</a>から仕様書をダウンロードしましょう（リンク先の下の方）。<br />
余談ですが、個人的に他社と比べて仕様が明確でわかりやすい気がします。<br />
この仕様書読んでおけば間違いない（情報が散らばってない）というのが大きいのかも。<br />
<br />
話を戻して、カタログやら仕様書やらたくさんありますね。<br />
とりあえず、P-Flex 仕様書とP-Flex 設計ガイドライン読んでおけばいいと思います。<br />
ちなみに、私が発注した8月にはP-Flex 設計ガイドラインはありませんでした<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/3a797943.png" title=""><img src="//tenpura.sugo-roku.com/Img/1544900516/" alt="" /></a> <br />
9月末にできたらしい<br />
<br />
ざっと見た感じこれすごく便利ですね。<br />
後述する技術ブログに書かれているような内容がまとまっていて嬉しいです。<br />
日々良くなっていくのは１ユーザーとして嬉しい。<br />
<br />

<h2>仕様書とか読む気しないんですけど</h2>
<br />
いくら仕様書がわかりやすいとはいっても、そもそもマニュアル類読む気しないという方もいるのではないでしょうか？　<span style="text-decoration: line-through;">（ホントか？　そんな人間はフレキシブル基板を発注しようとか思わないのでは？）</span><br />
<br />
そんな人には<a href="https://www.elephantech.co.jp/pickups/category/technical-articles/" title="" target="_blank">技術記事！</a><br />
フレキシブル基板を中心に技術的な情報が記事として紹介されています。<br />
1記事が短め（個人の感覚です）かつ画像もあって読みやすいです。<br />
さらに仕様書の内容とかぶる部分もあるのでコレを読むことで仕様書が読みやすくなると思います。<br />
<br />
また、中でもお勧めなのが<a href="https://www.elephantech.co.jp/pickups/start-flex-pcb-calculator-1/" title="" target="_blank">フレックス基板にチャレンジシリーズ</a>です。<br />
コレは東工大のロ技研に所属する学生の方がフレキシブル基板を作成するという体験記事のシリーズなのですが、作製の流れや陥りがちな過ち等とてもタメになります。<br />
<br />
自分がやったことないことをする前に、体験ブログを探して情報集めたりすると思うんですが、公式でこの点がサポートされてるのはアツいです。<br />
個人的にエレファンテックで最も感動した点です。<br />
<br />
<br />

<h2>回路設計</h2>
2. 回路設計　<br />
回路の設計に関してはあまり言うことはありません。<br />
自分のお望みのデータを、お望みのCADで設計しましょう。<br />
EagleかKicadを使っておくと、後述の発注データ出力のところでマニュアルを参照できるので、おすすめです。<br />
<br />
注意すべき点としては<br />
部品を乗せる部分には補強版を付ける必要があるため、部品実装部は近くにまとめておくと良いでしょう。補強版を付ける理由は基板が曲がったとき部品が取れてしまわないようにです。<br />
<br />
<br />
参考までに今回発注した配線図です。<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/9fddd067.png" title=""><img src="//tenpura.sugo-roku.com/Img/1544945515/" alt="" /></a> <br />
長い。<br />
たしか、灰色の枠線が補強板を付ける部分、上部の塗りつぶされた部分がコネクタ部だからレジスト塗らないでエリアだったはずです。<br />
<br />
<br />
<br />

<h2>発注データの形式は？</h2>
<br />
そんなこんなで気づけば仕様やらなんやらを理解し基板を設計したとなれば、発注が見えてきます。<br />
P-Flex 注文仕様書に発注に必要な情報がまとまっているみたいなので、整理がてら埋めてみるのがよいでしょう。<br />
<br />
3. 発注データ出力<br />
ということで、ここからは発注データ形式の話をしよう。<br />
発注に必要なデータは以下です。
<blockquote>
<ul class="ui bulleted relaxed list" style="box-sizing: inherit; list-style-type: none; margin: 1em 0em 0em 1.25rem; padding: 0em; color: rgba(0, 0, 0, 0.87); font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;">
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0em 0em 0.428571em; line-height: 1.14286em; position: relative;">
<div style="box-sizing: inherit;">アートワーク設計を含む場合</div>
<ul class="relaxed list" style="box-sizing: inherit; clear: both; margin: 0em; padding: 0.75em 0em 0.25em 1.25rem;">
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0em 0em 0.142857em; line-height: inherit; position: relative;">回路図データ</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.142857em 0em 0em; line-height: inherit; position: relative;">外形データ</li>
</ul>
</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.428571em 0em; line-height: 1.14286em; position: relative;">
<div style="box-sizing: inherit;">アートワーク設計を含まない場合</div>
<ul class="list" style="box-sizing: inherit; clear: both; margin: 0em; padding: 0.75em 0em 0.25em 1.25rem;">
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0em; line-height: inherit; position: relative;">
<div style="box-sizing: inherit;">基板アートワークデータ（拡張ガーバー RS-274Xが標準のファイル形式）</div>
<ul class="relaxed list" style="box-sizing: inherit; clear: both; margin: 0em; padding: 0.75em 0em 0.25em 1.25rem;">
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0em 0em 0.142857em; line-height: inherit; position: relative;">パターン</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.142857em 0em; line-height: inherit; position: relative;">レジスト</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.142857em 0em; line-height: inherit; position: relative;">シンボル</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.142857em 0em; line-height: inherit; position: relative;">外形線</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.142857em 0em; line-height: inherit; position: relative;">補強板</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.142857em 0em 0em; line-height: inherit; position: relative;">補強板指示（補強板IDと貼り付け位置が分かるもの）</li>
</ul>
</li>
</ul>
</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.428571em 0em 0em; line-height: 1.14286em; position: relative;">
<div style="box-sizing: inherit;">部品実装を含む場合</div>
<ul class="relaxed list" style="box-sizing: inherit; clear: both; margin: 0em; padding: 0.75em 0em 0.25em 1.25rem;">
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0em 0em 0.142857em; line-height: inherit; position: relative;">部品表（部品調達代行の有無にかかわらず）</li>
<li class="item" style="box-sizing: inherit; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.142857em 0em 0em; line-height: inherit; position: relative;">実装指示</li>
</ul>
</li>
</ul>
</blockquote>
<p><br />
マイクロマウス界隈で主流のEagleとKicadに関してはガーバーファイルの出力方法が公式サイトに<a href="https://www.elephantech.co.jp/introduction/export-gerber/" title="" target="_blank">まとめてあります</a>。ありがたい。<br />
他のCADを触ったことないですが、今後情報を追加していく予定らしいです。<br />
たぶん基本的には必要な情報をレイヤー別に分けてガーバー出力すればよいのではないかと思いますが。<br />
<br />
</p>
<h2>いざ発注、その前に</h2>
<p><br />
さて、発注するために必要な項目について、振り返ってみましょう。<br />
　1. 作れる基板の仕様確認　【済】<br />
　2. 回路設計　　　　　　　【済】<br />
　3. 発注データ出力　　　　【済】<br />
　4. 発注<br />
3番まで修了しました。<br />
<br />
次はいよいよ発注！　<br />
<br />
と行く前に一回落ち着いてデータを確認しましょう。<br />
ソリッド基板（よく使う固い基板）と違いフレキシブル基板はなかなかのお値段するので確認が大事です。<br />
<br />
もう一度、先述のフレキシブル基板にチャレンジシリーズとかを見直すことをお勧めします。<br />
参考までに私の経験から注意しておくことを書いておきます。<br />
これさえチェックすればいいというものではないから必ず自分で確認するんだぞ！！！！<br />
<br />
注意点<br />
1. 部品実装部、コネクタ部には補強版を付ける（付けないと曲がって部品が取れるらしい）<br />
2. コネクタ部の端子間には<a href="https://www.elephantech.co.jp/pickups/flex-pcb-word-list/" title="" target="_blank">レジスト</a>を塗らない（塗ると寸法精度と厚くなりコネクター装着が厳3. しい）<br />
4. レジストの開口部からシンボル0.5mm開ける<br />
5. はんだ付けするパッドやリード部はレジストを開口する（開口しないとはんだ付けできない）<br />
6.&nbsp;<a href="https://www.elephantech.co.jp/pickups/flex-pcb-design-tips-2/" title="" target="_blank">レジストの開口部はわざと狭くしてパッドの浮きを防ぐ</a><br />
<img src="https://i0.wp.com/www.elephantech.co.jp/pickups/wp-content/uploads/2018/03/20171108162115.png?resize=509%2C216&amp;ssl=1" alt="&aelig;&micro;&reg;&atilde;&atilde;&eacute;&sup2;&atilde;&atilde;&laquo;&atilde;&macr;&atilde;&sect;&atilde;&atilde;&atilde;&nbsp;&atilde;&aring;&curren;&sect;&atilde;&atilde;&atilde;&not;&atilde;&cedil;&atilde;&sup1;&atilde;&atilde;&egrave;&cent;&laquo;&atilde;&atilde;&aelig;&sup1;&atilde;&egrave;&macr;&atilde;&atilde;&reg;&atilde;&sect;&atilde;&aring;&sup3;&atilde;&reg;&auml;&cedil;&ccedil;&ordf;&aring;&middot;&brvbar;&atilde;&reg;&auml;&frac34;&atilde;&reg;&atilde;&atilde;&atilde;&laquo;&atilde;&atilde;&atilde;&atilde;&reg;&aring;&uml;&aring;&uml;&atilde;&laquo;&atilde;&not;&atilde;&cedil;&atilde;&sup1;&atilde;&atilde;&egrave;&cent;&laquo;&atilde;&atilde;&aelig;&sup1;&aelig;&sup3;&atilde;&aelig;&atilde;&aelig;&aring;&sup1;&atilde;&sect;&atilde;&atilde;" /><br />
エレファンテック：フレキシブル基板 P-Flex&trade;️ 設計のコツ「レジスト・シンボル・外形編」より<br />
<br />
特に6番、ヤバいです。<br />
驚くほど簡単に剥げていきます。<br />
ちょっとはんだ付けに手間取っているとパッドがなくなってます。<br />
皆さんは気を付けましょうね。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/78a060c3.jpeg" title=""><img src="//tenpura.sugo-roku.com/Img/1544939899/" alt="" /></a> <br />
中央のQFNのパッドの白くなってる部分は全部取れました。笑える。<br />
<br />
ちなみに、6番のリンク先には、今回紹介していないフレキシブル基板が切れないための工夫とかも書いてあるので是非一読ください。<br />
<br />
</p>
<p></p>
<h2>発　注　！</h2>
<p><br />
最終確認も終わり、いよいよ発注です！<br />
エレファンテック、発注の仕方はわかりづらいです。<br />
他社みたいにポチポチ情報を埋めていけば自然と発注できるみたいなページは存在しないみたいです。見つけられてないだけかも。<br />
<br />
前回発注時は問い合わせフォームから<br />
質問&rarr;見積もり&rarr;発注<br />
と行いました。<br />
<br />
ちなみに最初の返答はこんな感じでした。</p>
<blockquote><strong><span style="color: #ff0000;">注意：2018年8月時の情報です。</span></strong><br />

<blockquote>&gt;1. P-Flex PI/PET は現在個人で注文可能でしょうか。 &rArr;1枚からでもご注文可能です。(1個あたりの価格は割高にはなりますが)</blockquote>
<blockquote>&nbsp;&gt;2. 注文できるのであればPIとPETの値段の差は如何ほどでしょうか。&rArr;PETはデータ手直し無ければ、15000円～となります。オプション追加は別途料金・日程が加算されていきます。 　PIは30000円～となります。こちらもデータ手直し無の場合です。同様にオプションで上記と同様価格が加算となります。</blockquote>
</blockquote>
<p>ここからやり取りを繰り返して最終的に発注までいった感じです。<br />
この際、担当の方が非常に丁寧で、データのミス等を指摘くださいました。<br />
この場を借りて感謝申し上げます。そして、ご迷惑をおかけし申し訳ありませんでした。<br />
<br />
参考までに発注見積もりを書いておきます。<br />
<br />
主注文：<br />
　　P-Flex&trade;PET50&mu;m(8x76mm)&nbsp;<br />
オプション：<br />
　　補強板(3枚以下)<br />
　　⾦メッキ+ニッケルメッキ<br />
　　コネクタ部特殊仕様端⼦部精度処理(&plusmn;0.07mm)&nbsp;<br />
枚数：<br />
　　10枚<br />
値段：<br />
　　40000円+税<br />
<strong>注意：2018年8月時の情報です。</strong><br />
<br />
<br />
余談<br />
この記事書くためにサイトに確認しに行ったらワンストップサービス最低100枚からになってるけど、問い合わせればきっと10枚とかでも大丈夫だよね&hellip;？　うん。きっとだいじょうぶだいじょうぶ。<br />
ダメだったらこの記事が誰向けなのかよくわからなくなってしまう。<br />
<br />
</p>
<h2>受注後</h2>
<p><br />
発注が無事完了すると、着工開始直前にメールが届くそうです。<br />
私の時は忙しい時期だったからか不具合でメールが遅れましたが、本来ならこのメールで発送予定とかが知らされるものと思います。<br />
<br />
データ受領から発送まで約2週間くらいでした。<br />
<br />
基板は、紙で挟まれた状態で届きます。写真残し忘れました&hellip;。<br />
　紙&nbsp;基板 紙&nbsp;基板 紙 ・・・ 紙&nbsp;基板 紙<br />
みたいな感じです。<br />
私が注文した材質はPET（リフロー耐熱が200℃）でしたが、基板が溶けるため普通のはんだが使えないということで、低温はんだもついてきました。ありがたい&hellip;！<br />
<br />
実装に当たっては、<a href="https://www.amazon.co.jp/gp/product/B006MQD7M4/ref=od_aui_detailpages00?ie=UTF8&amp;psc=1" title="Amazon" target="_blank">白光のFX600</a>の最低温モードで実装しましたが、基板がみるみる溶けていくということもなく、問題はなさそうでした。<br />
<br />
<br />
</p>
<h2>まとめ</h2>
<p><br />
フレキシブル基板というものに初めて挑戦したのでブログを書いてみました。<br />
ぐにゅぐにゅ曲げられる基板というのは面白く、アイデア次第で色々新コンセプト打ち立てられそうです。<br />
ただし、やっぱり安くない買い物なので設計ミスには気をつけましょう。<br />
<br />
<br />
私は、先述のパッドが剥げる問題で基板ダメにしたので近いうちに再発注します。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
明日は、アブノーマルさんの「お酒っておいしよね2018」です。<br />
個人的にはまったく共感できないんですが、もしかしたら明日の記事でお酒の魅力に気づくのかもしれません。楽しみにしてます。わくわく。</p>]]>
    </description>
    <category>マウス</category>
    <link>https://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/first_elephantech</link>
    <pubDate>Fri, 14 Dec 2018 12:51:57 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/30</guid>
  </item>
    <item>
    <title>【備忘録】STM32F4シリーズのFlash status</title>
    <description>
    <![CDATA[STM32F4のライブラリであるSPLで定義されたFlash statusの説明がなかなか見つからなかったので備忘録として残しておく。<br />
<br />
SPLのマニュアルずっと探してたけど、結局リファレンスマニュアルのレジスタの説明にのってた。<br />
わかりづらい&hellip;。<br />
<br />
本題<br />
FLASH_Status;の定義は以下。<br />

<div>typedef enum</div>
<div>{&nbsp;</div>
<div>&nbsp; FLASH_BUSY = 1,</div>
<div>&nbsp; FLASH_ERROR_RD,</div>
<div>&nbsp; FLASH_ERROR_PGS,</div>
<div>&nbsp; FLASH_ERROR_PGP,</div>
<div>&nbsp; FLASH_ERROR_PGA,</div>
<div>&nbsp; FLASH_ERROR_WRP,</div>
<div>&nbsp; FLASH_ERROR_PROGRAM,</div>
<div>&nbsp; FLASH_ERROR_OPERATION,</div>
<div>&nbsp; FLASH_COMPLETE</div>
<div>}FLASH_Status;<br />
<br />
説明<br />

<div>&nbsp; FLASH_BUSY：他のタスクがフラッシュにアクセス中</div>
<div>&nbsp; FLASH_ERROR_RD,：保護されたフラッシュセクタに属するアドレスに対して、D-bus からの読出し</div>
<div>&nbsp; FLASH_ERROR_PGS,：プログラミングシーケンスエラー。制御レジスタが正しく設定されていない時にコードによってフラッシュメモリへの書込みアクセスが 実施</div>
<div>&nbsp; FLASH_ERROR_PGP,：プログラミング並列処理エラー。プログラムシーケンスにおけるアクセスのサイズ（バイト、ハーフワード、ワード、ダブルワード）が 並列処理設定 PSIZE（x8、x16、x32、x64）と一致しない</div>
<div>&nbsp; FLASH_ERROR_PGA,：プログラミング配置エラー。プログラムするデータを同じ 128 ビットのフラッシュメモリ列に含むことができない</div>
<div>&nbsp; FLASH_ERROR_WRP,：書込み保護エラー。消去／プログラムするアドレスがフラッシュメモリの書込み保護された部分のアドレスである</div>
<div>&nbsp; FLASH_ERROR_PROGRAM,：記載見つけられず。F3のを見るに、クリアされていない場所に書き込んだことによるエラー。</div>
<div>&nbsp; FLASH_ERROR_OPERATION,：操作エラー。フラッシュ操作（プログラミング／消去／読出し）リクエストが検出され、並列処理、配置、書込みま たは読出し（PCROP）保護エラーによってフラッシュ操作を実行できない</div>
<div>&nbsp; FLASH_COMPLETE：正常</div>
<div></div>
</div>]]>
    </description>
    <category>STM32</category>
    <link>https://tenpura.sugo-roku.com/stm32/%E3%80%90%E5%82%99%E5%BF%98%E9%8C%B2%E3%80%91stm32f4%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E3%81%AEflash%20status</link>
    <pubDate>Fri, 14 Dec 2018 12:18:44 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/29</guid>
  </item>
    <item>
    <title>【備忘録】Recipe for target 'post-build' failedが解決できなかった話</title>
    <description>
    <![CDATA[SW4STM32を使っていてRecipe for target 'post-build' failedという問題に立ちあたって結局解決できなかったが、備忘録として残しておく。<br />
結論としてはプロジェクトを新しく作り直し、ソースコードを手で移植することで対処した。<br />
<br />
【環境】<br />
SW4STM32（v1.14）<br />
STM32F405RG<br />
<br />
【発端】<br />
これまで問題なくビルドできていたプロジェクトが突然以下のエラーでビルドできなくなる。<br />
・gcc not found in path <br />
・g++ not found in path<br />
<br />
【やったこと】<br />
覚えてる範囲で書いておく。<br />
<br />
これまで開発してきたプロジェクトに対して<br />
・Gitで過去の状態に戻す（プロジェクト構成等も含む）&rArr;変わらずgcc,g++がないと言われる。<br />
・gcc,g++のディレクトリを確認。&rArr;Cygwinのgcc,g++があるディレクトリにパスが通っている。<br />
・Cygwinをインストールしなおす。&rArr;変わらずgcc,g++がないと言われる。<br />
<br />
別のPCにSW4STM32をインストールして、Gitから問題のプロジェクトを持ってきて検証。<br />
その際、gcc,g++はMinGWとCygwinを試した。<br />
&rArr;エラー内容が変わる。タイトルの<strong>Recipe for target 'post-build' failed</strong>。gcc,g++は見つけたらしい。<br />
<br />
Recipe for target 'post-build' failedを解決するために<br />
・ネットでググると、Recipe for target 'main.o' failedが<a href="http://gifunogi.hatenablog.com/entry/2016/12/16/023110" title="">Make.exeを更新したら直ったという人</a>がいたので真似。&rArr;変化なし。<br />
・Gitで過去のVerにさかのぼって実行&rArr;変化なし。<br />
・ProjectのPropertiesからC/C++BuildのGenerate Makefiles automaticallyのチェックを外す&rArr;エラーが出ない。<br />
<br />
【結局どうした】<br />
Twitterで弱音を吐いたらWMMCの優しい人が、<a href="http://wmmc.jp/wiki/public/Freshman/Environment/Windows" title="">Wiki</a>を紹介してくれたので、新しくプロジェクトを作り直した。<br />
ただし、リンク先の<br />
4．「Board」タブが選択されているので，左上の「Mcu」と書いてあるところをクリックして「Mcu」タブに切り替える。<br />
に関して、私がやったときは上部にタブがなく、Boardしか選べなかった。（SW4STM32は昔入れた奴だからVerが古いのかも。）<br />
幸い、使おうとしたSTM32F405RGはBoardとして選べたので事なきをえた。<br />
<br />
後は、<br />
C++のStdLib使うためにProject&gt;Properties&gt;C/C++Build&gt;SettingからTool Setting&gt;MCU G++ CompilerのDialectのからISO C++1yを選んだり、<br />
<a href="http://tenpura.sugo-roku.com/stm32/zyouzyaku2" title="">motファイルを生成するように設定を変えたり</a><br />
したら書き込めるようになって、今のところ動いている。<br />
<br />
]]>
    </description>
    <category>STM32</category>
    <link>https://tenpura.sugo-roku.com/stm32/%E3%80%90%E5%82%99%E5%BF%98%E9%8C%B2%E3%80%91recipe%20for%20target%20--p</link>
    <pubDate>Mon, 10 Sep 2018 14:55:56 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/28</guid>
  </item>
    <item>
    <title>マウスに関係ない流行りのお話</title>
    <description>
    <![CDATA[※この記事は、知的ロボットサークルMiceのイベント<a href="https://adventar.org/calendars/2472" title="">Mice Advent Calendar 2017</a>の17日目の記事です。<br />
<br />
昨日はもっちーの<a href="http://micemoti.hatenablog.com/entry/2017/12/16/143931" title="">自己紹介＆現状報告</a>でした。<br />
ぜひ頑張ってほしいですね。<br />
<br />
<br />
さて、ここの数日のMice Advent Calendarはマイクロマウスに関する記事が並んでおります。<br />
しかし、このAdvent Calendarはテーマ自由でマイクロマウスに関係なくてもいいそうです。<br />
<br />
<br />
せっかくなので、今回はマウスから離れて全く関係ない話をしようと思います。<br />
<br />
<br />
皆さま、最近流行っているものといえば何でしょうか？<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/IBM.png" title=""><img src="//tenpura.sugo-roku.com/Img/1513461808/" alt="" /></a> &nbsp;<br />
<br />
　そう、<span style="font-size: x-large; color: #ff0000;">『量子コンピューター』</span>です！　<br />
<br />
<img src="//tenpura.sugo-roku.com/Img/1513461836/" alt="" /> <br />
<br />
<br />
<br />
<br />
<br />
というわけで、今回のテーマは<br />
<br />
<br />
<span style="font-size: large;">「マイクロマウスに関係ない流行りのお話」</span><br />
<br />
<br />
あらため<br />
<br />
<br />
<span style="font-size: x-large;">「量子コンピューター事始め</span><br />
<span style="font-size: x-large;">急に上司に話題振られても返せるくらいに」</span><br />
<br />
<br />
<br />
<br />
難しい数式とかは全部抜かして、ざっくり量子コンピューターの話題について表面だけをなぞっていきます。<br />
<br />
目標は上司から振られた「NTTの量子コンピューターが話題だけど、君はどう思う？」という攻撃を華麗にかわすことです。<br />
<br />
<br />
<br />

<h2><span style="font-size: x-large;">量子コンピューターは１つじゃない！</span>　</h2>
<br />
量子コンピューターとは、その名の通り量子効果を利用して計算の高速化を狙った計算機です。<br />
古典コンピューターが物理的な小型化限界に到達しつつある現在、新たな計算高速化の方法として注目されています。<br />
<br />
実はこの量子コンピューター、いくつか種類があることをご存知でしょうか？<br />
<br />
・量子ゲート方式（IBM の <a href="https://www.research.ibm.com/ibm-q/" title="" target="_blank">IBM Quantum Experience</a>）<br />
・量子イジングマシン方式<br />
　　　コヒーレントイジングマシン（NTTの<a href="https://www.jst.go.jp/pr/announce/20171120/index.html" title="" target="_blank">量子ニューラルネットワーク</a>）<br />
　　　量子アニーリングマシン（D-Wave Systems の <a href="https://www.dwavesys.com/d-wave-two-system" title="" target="_blank">D-Wave</a>）<br />
<br />
このいずれも原理が異なります。<br />
一口に量子コンピューターと呼びますが、混同しないよう注意しましょう。<br />
<br />
<br />
<br />
<br />

<h2><span style="font-size: x-large;">量子ゲート方式</span></h2>
<br />
量子ゲート方式は、<br />
古典コンピュータがビット(0 or 1)で情報を表し、論理演算(AND OR &hellip;)を用いて計算を行うように、<br />
状態の重ね合わせを許した量子ビットで情報を表し、ゲートと呼ばれる操作を用いて計算を行います。<br />
<br />
何を言ってるかわからないと思いますが、イメージは古典のコンピュータの原理に量子効果を取り入れ拡張した感じです。<br />
<br />
そのため、プログラムによって1ステップずつ実行することができますし、理論上は汎用計算可能と言われています。<br />
（もちろんプログラミングの仕方は、専用の特殊なものとなるそうですが。）<br />
<br />
<br />
実際に実現されている量子ゲート方式の量子コンピュータとしてはIBM Quantum Experienceが有名です。<br />
IBM Quantum Experience はクラウドで公開されており、だれでも使うことができるそうです。<br />
ネットさえ使えるなら、量子コンピュータをだれでも使えるってすごい。<br />
<br />
<br />
この量子ゲート方式、量子ビットの個数で計算可能な問題の規模が決まるのですが、現在は16ビットまでが実現されているそうです。<br />
16ビットでは古典コンピューターでも簡単に解ける程度の問題しか扱えず、古典コンピューターを超えるにはまだまだ先が長そうというのが現状です。<br />
将来に期待ですね。<br />
<br />
<br />
量子ゲート方式の原理とかについての詳しい話をしだすと、本格的に難しくなってくるのでこの辺で止めておきます。説明できるほど詳しくないし。<br />
気になる方は各自で調べていただければと思います。<br />
<br />
<br />
まとめ<br />
量子ゲート方式は、汎用量子計算が可能と言われている反面、まだ古典コンピューターが（計算量的に）実行困難な複雑な計算をすることはできません。<br />
<br />
<br />
<br />

<h2><span style="font-size: x-large;">量子イジングマシン方式</span></h2>
<br />
量子イジングマシン方式は、<a href="https://ja.wikipedia.org/wiki/%E3%82%A4%E3%82%B8%E3%83%B3%E3%82%B0%E6%A8%A1%E5%9E%8B" title="wiki,正直よくわからないと思う">イジングモデル</a>と呼ばれる物理モデルを再現し、物理現象によって自然と安定な状態に向かうのを利用して問題を解きます。<br />
（今回の記事ではイジングモデルについては説明しません。物理の分野でよく用いられるトイモデルだと思ってください。）<br />
<br />
量子イジングマシン方式のイメージは<a href="https://ja.wikipedia.org/wiki/%E7%B2%98%E8%8F%8C%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF" title="" target="_blank">粘菌コンピューター</a>とかと同じです。<br />
<br />

<div style="text-align: center;"><img src="//tenpura.sugo-roku.com/Img/1513462133/" alt="" /><br />
都市部に餌を置き粘菌を放つと、粘菌の形成した経路が最適な経路となっている<br />
＝ 粘菌を利用して経路問題を解けている<br />
<br />
</div>
問題設定をうまく現実に再現することで、自然現象が勝手に解へと導いてくれるってことですね。<br />
<br />
<br />
量子イジングマシンは、イジングモデルを再現する都合上、イジングモデルに焼き直せる問題しか解くことはできません。<br />
つまり汎用計算可能ではなく、特定の問題だけを一瞬で解ける専用計算機の立ち位置になります。<br />
よく言われるような古典コンピューターを駆逐するようなことにはなりません。共存する形ですね。<br />
<br />
<br />
さて、となると気になるのがイジングモデルに焼き直せる問題とは一体何か？という点です。<br />
しばしば代表例として挙げられるのが、最適化問題です。<br />
<br />
最適化問題とは、ある条件の中で最も良い組み合わせを選び出す問題のことです。<br />
例えば、<a href="https://ja.wikipedia.org/wiki/%E5%B7%A1%E5%9B%9E%E3%82%BB%E3%83%BC%E3%83%AB%E3%82%B9%E3%83%9E%E3%83%B3%E5%95%8F%E9%A1%8C" title="" target="_blank">巡回セールスマン問題</a>、<a href="https://ja.wikipedia.org/wiki/%E3%83%8A%E3%83%83%E3%83%97%E3%82%B5%E3%83%83%E3%82%AF%E5%95%8F%E9%A1%8C" title="" target="_blank">ナップザック問題</a>、etc&hellip;。<br />
<br />
これらの問題は、問題の規模が大きくになるにつれ必要な計算量も指数的に増えていくため、古典コンピューターの総当たり先方では計算が困難であるという特徴があります。<br />
<br />
しかし、量子イジングマシンでは、物理現象は自然と安定な状態（エネルギーが最も低い状態）へと向かうという特徴を利用し、問題設定をイジングモデルに再現することで自動的に答えが求まります。<br />
<br />
この特徴から、古典コンピューターの限界を超えた計算規模を誇る問題に対し、有利に働くと考えられています。<br />
<br />
また、これらの問題以外でもイジングモデルに焼き直すことさえできれば、このコンピューターで解くことができるため、ハードの開発と同様に他の問題のイジングモデルへの焼き直しも研究の焦点となっているようです。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">コヒーレントイジングマシンと量子アニーリングマシン</span></span><br />
<br />
量子イジングマシン方式は、イジングモデルを再現する方法によってさらに細かく区分が分けられています。<br />
コヒーレントイジングマシンと量子アニーリングマシンです。<br />
<br />
<br />

<div style="text-align: center;">光でイジングモデルを再現するコヒーレントイジングマシン。<a target="_blank" href="//tenpura.sugo-roku.com/File/fig1_cim.png" title=""><img src="//tenpura.sugo-roku.com/Img/1513461035/" alt="" /></a> &nbsp;</div>
<div style="text-align: center;">コヒーレントイジングマシン概要図</div>
<div style="text-align: center;">（<a href="http://www.mdpi.com/1099-4300/18/4/151" title="" target="_blank"> Y. Haribara et al., Entropy&nbsp; &nbsp;18(4) 151 (2016).</a>）</div>
<br />
最近話題になったNTTの<a href="https://www.jst.go.jp/pr/announce/20171120/index.html" title="" target="_blank">量子ニューラルネットワーク</a>はコヒーレントイジングマシンの1つです。<br />
<br />
図の青く円状になっている部分にコヒーレント光をパルスで送ることでイジングモデルを再現し、右につながっているFPGA等の回路で、観測および制御を行うことで計算機として成立します。<br />
<br />
光の干渉を利用したこのマシンですが、<br />
光の経路としてkm単位の光路を必要とするため小型化が難しい、<br />
本当に量子効果を取り入れられているのかといった疑問の声もある、<br />
といった課題も抱えているようです。<br />
<br />
とはいえ、日本発の量子コンピューターですし今後の研究に期待していきたいです。<br />
<br />
<br />
<br />

<div style="text-align: center;"><a target="_blank" href="//tenpura.sugo-roku.com/File/D-Wave.jpg" title=""><img src="//tenpura.sugo-roku.com/Img/1513461836/" alt="" /></a> <br />
D-Wave(<a href="https://www.dwavesys.com/d-wave-two-system" title="" target="_blank">D-Wave Systems</a>)</div>
<br />
もう一つの量子イジングマシン方式の量子コンピューターとして有名なのがD-Waveです。<br />
極低温による超電導を用いて、キメラグラフ構造という特殊な組み方を行うことで、量子系のイジングモデルを再現しています。<br />
<br />
D-Waveは既に商用化されており、億単位の値段で売買されています。<br />
NASAやGoogleが購入したことで話題になりました。<br />
<br />
また、D-Waveは今年2048量子ビットを実現しており、個人的に最先端の量子コンピューターだと思います。<br />
<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">まとめ</span></span><br />
<br />
量子イジングマシン方式は、すでに商用化されており古典コンピューターを超える計算速度を実現している反面、最適化問題と呼ばれる特定の問題しか解くことができません。<br />
<br />
<br />
<br />

<h2><span style="font-size: x-large;">今回の記事のまとめ</span></h2>
<br />
現在、量子コンピューターと呼ばれるものには3種類あります。<br />
<br />

<ul>
<li>量子ゲート方式</li>
<li>量子ネットワーク方式（コヒーレントイジングマシン）</li>
<li>量子アニーリングマシン</li>
</ul>
です。<br />
<br />
一緒くたに量子コンピューターと呼ばれることが多いですが、いずれも原理が異なり長所短所があります。<br />
<br />
ニュース等で量子コンピューターについて見るときは、そのあたりに注意すると少し見方が変わってくるかもしれません。<br />
<br />
また、もっと知りたいという方へ<br />
<a href="https://qiita.com/advent-calendar/2017/quantum" title="" target="_blank">量子コンピューターAdvent Calendar</a>を見つけたので読んでみると面白いかもしれません。<br />
<br />
<br />
<br />

<h2><strong><span style="font-size: x-large;">「NTTの量子コンピューターが話題だけど、君はどう思う？」</span></strong></h2>
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/doya.png" title=""><img src="//tenpura.sugo-roku.com/Img/1513464676/" alt="" /></a> <br />
「同じ種類の量子コンピューターであり既に実用化されているD-Waveに勝てるか、が焦点だと思います。日本発として頑張ってほしいところですね。」<br />
<br />
<br />
<br />
<span style="text-decoration: line-through;">こんなテーマにするんじゃなかった。</span><br />
<br />
<br />
明日はあやたか君の音系の話です。<br />
こうご期待。<br />
<br />
]]>
    </description>
    <category>その他</category>
    <link>https://tenpura.sugo-roku.com/%E3%81%9D%E3%81%AE%E4%BB%96/quantumcom</link>
    <pubDate>Sat, 16 Dec 2017 22:51:44 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/27</guid>
  </item>
    <item>
    <title>マイクロマウス調整法（フレッシュマン向け）</title>
    <description>
    <![CDATA[こんにちは、鯉です。<br />
地区大会も残すところ中部だけとなり、あとは全日本に向けて仕上げていく時期となってまいりました。<br />
<br />
今年は割と多くの地区大会に参加しましたが、フレッシュマンを見ていると「大会会場でどうやって壁センサの値がずれているかを把握し、どのように直すか」といった調整法が確立されていないような気がしました。<br />
<br />
たしかにネットで検索しても調整方法については記事がほとんど見つからず、ノウハウの塊状態になっているような。。。<br />
<br />
というわけで、僕が行っている調整法を紹介しようかと思います！<br />
フレッシュマンの方もそうでない方も参考にしていただければ幸いです。<br />
<br />
<br />
※今回の記事は個人の主義主張が強く含まれます。調整方法がコレで正解というわけではないので、あくまで1意見としてお聞きください。<br />
<br />
俺はこんな方法でやってるぜ！　といったご意見ご感想お待ちしております。<br />
<br />
<br />
<br />
<hr />
<h3><strong><em><span style="font-size: x-large; color: #000000;">壁制御の調整方法</span></em></strong></h3>
<hr /><br />
<br />
まずは、壁制御の調整方法について紹介していきます。<br />
鯉住では、部室や部屋などの普段の調整はもちろん、大会会場でもセンサ値がずれていると感じたら行うようにしています。<br />
<br />
壁制御のやり方などは割愛し、すでにできているものとして進めます。<br />
不安な方は、<a href="http://mice.deca.jp/cgi/dokuwiki/doku.php?id=%E5%A3%81%E5%88%B6%E5%BE%A1" title="" target="_blank">MiceWiki</a>や<a href="http://umuoumu.blog.fc2.com/blog-date-201512.html" title="" target="_blank">うむ夫の歩み</a>や<a href="http://mmk.rulez.jp/?page_id=381" title="" target="_blank">関西支部</a>や<a href="http://blog.tokor.org/2015/12/21/rogy-Advent-Calendar-2015-%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%9E%E3%82%A6%E3%82%B9%E3%81%A8%E5%88%B6%E5%BE%A1%E7%90%86%E8%AB%96/" title="" target="_blank">Tokoro's Tech-Note</a>など挙げればきりがないのでお好きなのを参考にしてください。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その0．迷路に線を引く</span></span><br />
<br />
まず初めに、迷路に調整用の線を引きましょう！！<br />
大会ではできませんが、個人または団体で迷路を保有しているならば真っ先に行いましょう！<br />
調整のやりやすさが段違いです。<br />
<br />
&nbsp;<a target="_blank" href="//tenpura.sugo-roku.com/File/651e6f4d.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508866478/" alt="" /></a> <br />
<br />
引くべき線はこんな感じです。<br />
各区画にこんな感じで線を引きましょう。<br />
青い線は斜めの調整用なので、（普通は）斜めをやらないフレッシュマンは関係ないですが、いつやりたくなるかわからないですしこの機会に引いておきましょう。<br />
<br />
ちなみに実際の迷路は下板が黒色なので、白く見える鉛筆や修正液とかで引くといいかと思います。Miceでは鉛筆で引いています。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その１．片壁制御</span></span><br />
<br />
さて、調整に移っていきましょう。<br />
まずは左右それぞれの片壁制御を行い、制御がきちんとかかっているか、センサのリファレンス値はあっているかを確かめます。<br />
<br />
片壁制御で見るべきこと<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/7006ec10.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508859250/" alt="" /></a> <br />
<br />
<br />
見るべきことをポンチ絵にしてみました。<br />
だいたい図を見てもらえばわかると思います。<br />
個人的な感覚としては<br />
<span style="color: #ff0000;">・姿勢は1区間くらいで正しい状態に直せるくらい<br />
</span><span style="color: #ff0000;">・制御が発散してブルブル震えながら走るのはよくない</span><br />
<span style="color: #ff0000;">・離れる制御も近づく制御もかける</span><br />
<span style="color: #ff0000;">・センサ値なんてものは大会毎にずれると思って調整する</span><br />
くらいのことに気をつけておけばいいかと。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その2．壁の切れ目</span></span><br />
<br />
晴れて片壁制御がかかるようになったら、次は壁の切れ目も見てみましょう。<br />
壁の切れ目とは壁がなくなったタイミングで、マウスは壁が遠ざかったと認識し制御によって吸い込まれる現象です。<br />
詳しくは<a href="http://mice.deca.jp/cgi/dokuwiki/doku.php?id=%E5%A3%81%E5%88%B6%E5%BE%A1" title="" target="_blank">MiceWiki</a>をご参照ください。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/e46d4252.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508860079/" alt="" /></a> <br />
<br />
<br />
この調整の目安は図の通り、少し吸い込まれても次の区画や柱で中心に戻る程度を目指すと良いでしょう（フレッシュマンは）。<br />
<br />
僕は大会ではこの調整は行わないことが多いです。<br />
部室なりでしっかり調整し、大会会場では片壁制御の調整法を行えば切れ目も大丈夫でしょう。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その3．まとめ</span></span><br />
<br />
自分なりの壁制御の調整方法をまとめました。<br />
普段の調整環境で、その0～その2を行い、大会会場ではその1だけチェックすれば充分だと思います。<br />
ただし、<span style="text-decoration: underline; color: #000000;"><span style="text-decoration: underline;">迷路をきちんと走るのが絶対的に重要</span></span>なので今回の<span style="color: #ff0000;"><strong>調整方法で上手くあっていても迷路を走らせたときにずれるようなら適宜修正していきましょう！</strong></span><br />
<br />
<br />
<br />
<hr />
<h3><span style="font-size: x-large;">スラロームの調整方法</span></h3>
<hr /><br />
<br />
次にスラロームの調整方法に移っていきます。<br />
壁制御と同じく、スラロームの実装はできているとして進めます。<br />
わからない方、不安な方は<a href="http://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/%E3%83%9E%E3%82%A6%E3%82%B9%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%B9%E3%83%A9%E3%83%AD%E3%83%BC%E3%83%A0%E8%B5%B0%E8%A1%8C" title="" target="_blank">以前書いた記事</a>（原理）や<a href="http://tellican.blog.fc2.com/blog-entry-62.html" title="" target="_blank">ツルマインのブログ</a>（実装）や<a href="http://mice.deca.jp/cgi/dokuwiki/doku.php?id=%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%9E%E3%82%A6%E3%82%B9%E7%89%B9%E5%8C%96%E8%B3%87%E6%96%99" title="" target="_blank">MiceWiki</a>（実装および調整）とかを見てください。<br />
<span style="color: #808080;">（意外とスラローム自体についての記事って少ないんですね）<br />
</span><br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その0．距離があっているか確認する</span></span><br />
<br />
実際にスラロームの調整に入る前にやることがいくつかあります。<br />
まず最初にマウスが考えている距離が実際の距離と一致しているかを確かめましょう。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/8652015e.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508862001/" alt="" /></a> <br />
<br />
距離の調整は、ズレが大きく出るようにできるだけ長い直線を用意し、きちんと直進するように両壁を入れて壁制御をかけて、走行距離を見ます。<br />
<a href="http://mice.deca.jp/cgi/dokuwiki/doku.php?id=%E7%89%A9%E7%90%86%E9%87%8F%E3%83%99%E3%83%BC%E3%82%B9%E3%81%A8%E3%81%AF" title="" target="_blank"><br />
MiceWikiのこの辺</a>の考え方を取り入れ、距離を各時刻の速度の積分として求めているならば、タイヤ径がパラメータとなります。<br />
実際に走らせたとき、距離が合うようにタイヤ径を設定しましょう。<br />
<br />
また、注意すべき点として、距離が短くなった際に壁制御が甘く蛇行したことが原因の場合があります。<br />
そのため、壁制御の調整をしてから行うほうが良いでしょう。<br />
目で見て明らかに蛇行していなければ大丈夫です。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その1．角度があっているか確認する</span></span><br />
<br />
次は角度を見ていきましょう。<br />
超信地旋回を行って、目標の角度と一致するかを確認します。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/c952bde9.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508863366/" alt="" /></a> <br />
<br />
僕は角度のずれが大きく出るように3600&deg;くらい超信地旋回してます。<br />
もし、角度がずれるようなら、ジャイロを使っている人はジャイロの定数が、ジャイロ使ってない人はマウスの幅がズレているのかもしれません。<br />
3600&deg;回してもパッと見でズレがわからない程度にしたいところです。<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その2．スラロームの角度調整</span></span><br />
<br />
ようやくスラロームの調整です。<br />
まずはスラロームで指定した角度きちんと曲がれているか確認しましょう。<br />
この確認方法は人によってやり方が大きく異なるところですが、僕は1回だけ曲がって角度を見ます。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/bd8fde92.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508863723/" alt="" /></a> <br />
<br />
<br />
調整は<br />
直進(1.5区画くらい)　&rarr;　スラローム　&rarr;　長い直進（2区画以上）<br />
という組み合わせで行っています。<br />
<br />
図に書いてありますが、<br />
最初の直進では位置と角度を合わせるので、それができる長さにしましょう。<br />
また速度についても、止まった状態からスラロームの速度まで加速し安定できる距離にしておきましょう。<br />
最後の直進は、角度のずれを見るためなので、壁制御等がかかり角度が直ってしまわないよう注意しましょう。<br />
<br />
この結果、もし角度がズレているようであれば、スラロームの目標角度を合うように変えることで調整します。（例えば、目標角度90&deg;で曲がりすぎるようなら89&deg;にするなど）<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その3．スラロームの位置調整</span></span><br />
<br />
スラロームの調整もこれで最後です。<br />
ここまでで、角度はあったので、スラローム後の位置が目標の位置になるように調整しましょう。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/8efb916e.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508864713/" alt="" /></a> <br />
<br />
ここまでですでに重々承知とは思いますが、スラロームも実際にやるとシミュレーターや理論値とは微妙に異なります。<br />
この位置のずれは前距離と後距離をいい感じに合うように調整してあげましょう。<br />
<br />
前距離と後距離ってなに？って方は<a href="http://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/%E3%83%9E%E3%82%A6%E3%82%B9%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%B9%E3%83%A9%E3%83%AD%E3%83%BC%E3%83%A0%E8%B5%B0%E8%A1%8C" title="" target="_blank">こちら。</a><br />
<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: large;">その4．まとめとスラローム耐久テスト</span></span><br />
<br />
スラロームの調整については以上になります。<br />
こちらも壁制御と同様<span style="color: #ff0000;">迷路で走るパラメータが正義</span>なのを忘れないでください。<br />
<br />
最後にスラロームのチェックとしてよく用いられる耐久テストパターンを紹介してスラロームの調整方法を締めさせていただきます。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/7e85ffb4.png" title=""><img src="//tenpura.sugo-roku.com/Img/1508866041/" alt="" /></a> <br />
<br />
<br />
<hr /><strong><span style="font-size: x-large;">おわりに</span></strong><br />
<hr /><br />
壁制御とスラロームの調整方法について紹介しました。<br />
今回のことをしっかりと行うだけでフレッシュマンなら、まずこけなくなるのではないでしょうか？<br />
しかし、実際に迷路を走らせるとどうもうまくいかないということもあり得ます。<br />
そういう時には前壁制御などの他の補正も入れてみる必要があるかもしれません。<br />
<br />
最後に、繰り返しになりますが今回の方法は決して正解というわけではなく、あくまで僕個人の方法です。<br />
皆さま各々違う調整方法を持っておられると思いますが、もし参考になれば幸いです。<br />
また、違う方法があれば教えていただけると嬉しいです。<br />
<br />
それでは良き調整ライフを！]]>
    </description>
    <category>壁制御</category>
    <link>https://tenpura.sugo-roku.com/%E5%A3%81%E5%88%B6%E5%BE%A1/tofreshman</link>
    <pubDate>Tue, 24 Oct 2017 17:37:59 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/26</guid>
  </item>
    <item>
    <title>北信越：完走の感想</title>
    <description>
    <![CDATA[こんにちは<br />
前回のブログから早3カ月、月日が過ぎるのは早いものですね。<br />
<br />
<br />

<h2><span style="text-decoration: underline;"><strong>北信越大会</strong></span></h2>
去る9月18日北信越大会がありました。<br />
<br />
これまで、北信越大会には参加してこなかったのですが、前回参加者から<br />
　やれ鯖が上手いやら、<br />
　やれ酒が旨いやら、<br />
　やれ楽しい！最高！！！やら<br />
（主に観光面重視の）良い評判を聞いていたものの、これまではマウスが動かず見逃してきました。<br />
今年はそれなりに動くので参加してみることに。<br />
<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/Screenshot_20170926-185305.png" title=""><img src="//tenpura.sugo-roku.com/Img/1506419845/" alt="" /></a> <br />
何が目的か明確なLineグループアイコン<br />
<br />
<br />
いつものようにMiceメンツで車を借りて出発<br />
運転手の方々、まことにありがとうございました。<br />
<br />
<br />
道中は様々なことがありました。<br />
<br />
研究に追われる人がいたり、<br />
やっぱり鯖がおいしかったり、<br />
日本酒試飲会場に吸い込まれる皆を見送って一人お土産を買いあさったり、<br />
<br />
話は尽きませんが、きっとみんなも感想ブログを書いてくれると思うのでバッサリ割愛します。<br />
<br />
<br />

<h2><span style="text-decoration: underline;"><strong>大会本番</strong></span></h2>
まず、結果は<a href="https://sites.google.com/site/mouse8hokushin/" title="" target="_blank">こちら</a><br />
<br />
<br />
クラシックは<br />
各々多種多様な方法でMice勢が悲しみを背負ったり。<br />
まさかのピーコが優勝したり。<br />
小学生マウサーが誕生していたり。<br />
<br />
なかなかのドラマが生まれていて見ていて楽しかったです。<br />
<br />
<br />
そして、ハーフはというと。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/MM2017Niigata_MH.png" title=""><img src="//tenpura.sugo-roku.com/Img/1506580386/" alt="" /></a> <br />
斜めしてくださいと言わんばかりの迷路。<br />
１位のシン・ウムオは斜め連続を駆け抜けていてかっこよかったです。すごい<br />
<br />
そして、僕はといえば&hellip;<br />
<br />
<strong><span style="color: #ff0000; font-size: large;">鯉住：記録 00:18.467：順位5位</span></strong><br />
<br />
そう！！　完走していたのです！！！<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/d0b7f1a7.png" title=""><img src="//tenpura.sugo-roku.com/Img/1506581433/" alt="" /></a> <br />
<br />
何を隠そうこの私、フレッシュマンの「かに☆かま」以降一度も完走すらできていませんでした。<br />
つまり3年前の全日本以来の完走です！！！<br />
当然、ハーフも初完走！！<br />
<br />
<span style="font-size: x-large;"><strong><span style="color: #ff0000;">嬉しい！！</span></strong></span><br />
<br />
<br />
おまけに、直線速だけあげた最短走行も成功して、5位に滑り込みました。<br />
ポイントも貰えて、Bustersもバスターできて嬉しいこと尽くしですね！<br />
<br />
<br />
そして、その証拠となる認定状がこちら！<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/be6e3d7b.jpeg" title=""><img src="//tenpura.sugo-roku.com/Img/1507049785/" alt="" /></a> &nbsp;　<br />
<span style="text-decoration: line-through;">（ま．に預けているのが帰ってき次第差し替えます）</span><br />
当人のツイッターから投げつけられてきました。<br />
<br />
<br />
<br />
<br />
<br />
最後に、北信越大会に初めて参加させていただきましたがスムーズな運営により非常に楽しむことができました。<br />
大会運営に携わった方々へ、この場を借りてお礼申し上げます。<br />
ありがとうございました。<br />
<br />
]]>
    </description>
    <category>マウス</category>
    <link>https://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/hokusinetu</link>
    <pubDate>Tue, 26 Sep 2017 09:53:48 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/25</guid>
  </item>
    <item>
    <title>謝罪会見、あるいは見苦しい言い訳</title>
    <description>
    <![CDATA[こんにちは<br />
<br />
もう6月も終わりかけ、気温も暑くなり梅雨も明け夏を感じさせますね。<br />
アトピーの自分にはつらい季節の到来です。<br />
<br />
<br />
ところで、先週の日曜日はMiceプチ大会でした。<br />
<br />
とても楽しませていただきました。<br />
来てくださった皆様ありがとうございました。<br />
運営を担当した現役生の皆さんお疲れ様です。<br />
<br />
例年よりもはるかに多くの大学が参加しており、Mice自体の規模が大きくなったことを差し引いても、部長の人脈の広さにただ感服するばかりです。<br />
<br />
<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: x-large;">マウスの話</span></span><br />
<br />
今年は就活があったので、無理に新作に挑まず制御やらアルゴリズムやらを詰めていくことを選択しました。<br />
というわけで、去年の機体である鯉住をひっさげハーフ競技に参戦してきました。<br />
<br />
結果から言うと、前壁読み間違えて惨敗しました。&Omega;＼&zeta;&deg;)ﾁｰﾝ<br />
<br />
就活終わってからここまで制御をきれいにすることに集中しており、速度や角速度のログはだいぶきれいになってきました。<br />
しかし、代わりに犠牲にしたもの（スラロームや壁制御の調整）も大きく、もはや彼は迷路を走れる状態ではなかったんですね。<br />
無念。。。<br />
<br />
とはいえ一歩ずつ進んではいるはずなので、いつかゴールできる日が来ると信じて頑張りたいです&hellip;！<br />
<br />
とりあえずはカルマンフィルタあたりから。<br />
<br />
<br />
<br />
<span style="text-decoration: underline;"><span style="font-size: x-large;">迷路の話</span></span><br />
<br />
さて、本題です。<br />
<br />
<br />
どうやらプチ大会のクラシックでは、<br />
「フレッシュマンに優しい良い迷路を作りました！」と豪語しておきながら大半のフレッシュマンをなぎ倒し、エキスパートすらも殺しまくった鬼迷路を出したクソ野郎がいるらしいですね？<br />
<br />

<div><a target="_blank" href="//tenpura.sugo-roku.com/File/61311984.png" title=""><img src="//tenpura.sugo-roku.com/Img/1498493985/" alt="" /></a> <br />
（<a href="https://twitter.com/mmkn730/status/878842952285536257" title="" target="_blank">ま．さんのTwitter</a>から。忍者ブログでTwitter埋め込みってどうやるんすか）</div>
<p lang="ja" dir="ltr"><br />
<br />
<br />
<br />
<span style="font-size: x-large; color: #ff0000;"><strong>はい僕です、ごめんなさい。猛省します。</strong></span><br />
<br />
<br />
<br />
でもでも！<br />
ドラマチックな因縁の対決を演出したので、大目に見てください！<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
&hellip;&hellip;えっ、むり？<br />
<br />
<br />
<br />
<br />
<br />
<span style="text-decoration: underline;">ここから言い訳タイム<br />
</span><br />
今回のコンセプトとか何を思って作ったとか勝手にグダグダ話します。<br />
<br />
<br />
まずやらかした迷路。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/maze.jpg" title=""><img src="//tenpura.sugo-roku.com/Img/1498494761/" alt="" /></a> <br />
(7,7)(7,8)(8,7)(8,8)の中央4マスゴール<a href="http://mice.deca.jp/maze/" title="" target="_blank"><br />
<br />
<br />
</a><span style="text-decoration: underline;">で、なぜフレッシュマンに優しいとか言っていたのか</span><br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/65fcff3b.jpeg" title=""><img src="//tenpura.sugo-roku.com/Img/1498496474/" alt="" /></a> <br />
<br />
単純な歩数最短を走る足立法ならこの経路を通ると想定していました。<br />
このルートなら、壁も多く、階段の連続もなく、袋小路で尻当てして姿勢も直せる<strong><span style="color: #ff0000;">はずだった</span></strong>んです。<br />
<br />
<br />
<span style="text-decoration: underline;">実際に多くのフレッシュマンたちが通ったルート</span><br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/maze2.jpg" title=""><img src="//tenpura.sugo-roku.com/Img/1498496897/" alt="" /></a> <br />
<br />
こんなスラロームの連続、そりゃあこけますよね&hellip;。<br />
<br />
<br />
<span style="text-decoration: underline;">なぜ、こんな悲劇が起こってしまったのか</span><br />
<br />
実は、というかよく見てもらえばわかるんですが、想定のルートと実際に通ったルートが食い違う分岐点って歩数的にはどっちに行っても同じなんですね。<br />
<br />
僕のアルゴリズムでは、同歩数の場合には直線になる方向を優先することになってるので真っすぐ行きます。<br />
シンプルな足立法では、東西南北の優先順位（IFの順番とか）に従って決まりますね。<br />
<br />
<br />
もし東より北の優先順位が高いと？？<br />
<br />
おめでとうございます、見事スラローム連続ルート突入です！！！！<br />
<br />
<br />
<br />
<span style="text-decoration: underline;">どうするべきだったか</span><br />
<br />
歩数が同数というわかりやすい分岐は両方検証しておくべきでした。<br />
というか、単純にもっと壁を増やしておけば良かったですね。。。<br />
<br />
あと段差に思いをはせる必要もありました。<br />
ごめんね、段差先輩。もうMiceからは卒業したものだと思ってたよ。<br />
<br />
<br />
<span style="text-decoration: underline;"><br />
コンセプト（最短ルートと最速ルート）</span><br />
<br />
最後に、コンセプトというか、みんなにやってほしかったことを話して言い訳は終わりにします。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/maze3.jpg" title=""><img src="//tenpura.sugo-roku.com/Img/1498499474/" alt="" /></a> <br />
<br />
<br />
緑のルートが単純に歩数最短のルートのはずです。<br />
これは、最初の方に、俗に言う桂馬飛びが多く、更には最後に180度&times;2があり、あまり速度が出ないはずです。<br />
<br />
一方、優勝者であるnocheさんが通ったのが青い経路です。<br />
歩数的には緑より長いんですが、直線が多く速度が出しやすくなっています。<br />
狙ってかわかりませんが、nocheさんは重ね探索せず迷路の左側を見なかったことで緑の経路を避けていました。<br />
<br />
<br />
今回やりたかったことっていうのは、まさにコレで、歩数的に不利だけれども、走行時間は短い経路を探しに行けますか？ ということを考えてほしかったです。流石優勝者。<br />
<br />
もちろん、エキスパートの皆さんはそんなことは百も承知だとは思いますが、まだそこまでやってない人はこの機会にぜひ考えてみてはいかがでしょうか。<br />
<span style="font-size: small; color: #c0c0c0;">って大会で言いたかったなぁ</span><br />
<br />
<br />
ちなみに、僕が想定した最速ルートは別にあります。<br />
もちろん走行パラメータに依りますが。<br />
<a href="http://mice.deca.jp/maze/" title="" target="_blank">maze</a>にも挙げておきましたので、良かったら検討してみてください（ばればれな気もしますが）。<br />
<br />
<br />
<br />
あとはゴールの斜め突っ切りも観たかった。<br />
<br />
<br />
<span style="text-decoration: underline;">最後に</span><br />
<br />
Miceプチ大会運営お疲れ様です。<br />
参加した皆さまありがとうございました。<br />
<br />
クラシックでこけた方は、どうぞ気を落とさず、クソ迷路だと思って忘れてください。<br />
<br />
そして、nocheさん、赤子さん、最短感想おめでとうございます。<br />
ありがとうございます、あなた方のおかげでレジェンドクソ野郎にならずに済みました。<br />
<br />
</p>]]>
    </description>
    <category>マウス</category>
    <link>https://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/sorry</link>
    <pubDate>Mon, 26 Jun 2017 15:42:47 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/24</guid>
  </item>
    <item>
    <title>スラロームによる移動距離近似、その5</title>
    <description>
    <![CDATA[<div>第5回です。</div>
<div>今回はいよいよ、これまでに求めてきた要素を組み合わせてスラロームとしての移動距離を求めていきます。</div>
<div></div>
<div>これまでの記事は<a href="http://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/%E3%82%B9%E3%83%A9%E3%83%AD%E3%83%BC%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E7%A7%BB%E5%8B%95%E8%B7%9D%E9%9B%A2%E8%BF%91%E4%BC%BC%E3%80%81%E3%81%9D%E3%81%AE1" title="" target="_blank">1回目</a>の目次からどうぞ。</div>
<div><br />
<br />
<hr />
<h2><span style="font-size: x-large;">スラロームの移動距離</span></h2>
<h3><span style="text-decoration: underline;"><span style="font-size: large;">スラロームの模式化</span></span></h3>
<br />
<a href="http://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/%E3%82%B9%E3%83%A9%E3%83%AD%E3%83%BC%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E7%A7%BB%E5%8B%95%E8%B7%9D%E9%9B%A2%E8%BF%91%E4%BC%BC%E3%80%81%E3%81%9D%E3%81%AE2" title="" target="_blank">第2回</a>からスラロームは各要素の移動距離を長方形として表すことで模式的に表すことができました。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/4b94c4d8.png" title=""><img src="//tenpura.sugo-roku.com/Img/1493131835/" alt="" /></a> <br />
<br />
また、これまで（<a href="http://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/slaapp3" title="円弧" target="_blank">第3回</a>、<a href="http://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/slaapp4" title="クロソイド" target="_blank">第4回</a>）に円弧とクロソイドの移動距離は求めていました。<br />
円弧の移動距離をX方向とY方向で<em>Ax</em>,<em>Ay、クロソイドの移動距離をX方向とY方向で</em><em>Cx</em>,<em>Cy</em>と置きます。<br />
先ほどの図を少し変えます。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/e6915751.png" title=""><img src="//tenpura.sugo-roku.com/Img/1493132961/" alt="" /></a> <br />
<br />
この図をもとに、<em>S<span style="font-size: small;">x</span></em>,<em>S<span style="font-size: small;">y</span></em>について考えていきます。<br />
<br />
<br />

<h3><span style="text-decoration: underline;"><span style="font-size: large;">スラロームの移動距離を求める</span></span></h3>
<br />
<br />
まず、X方向の移動距離について考えます。<br />
<br />
<img src="//tenpura.sugo-roku.com/File/c2a9160d.png" alt="" width="606" height="870" /> <br />
同様にY方向の移動距離についても考えていきます。<br />
<br />
<img src="//tenpura.sugo-roku.com/File/0036649c.png" alt="" width="608" height="588" /> <br />
<br />
よって、<em>Sx</em>,<em>Sy</em>を求めることができました。<br />
<br />
この<em>Sx</em>,<em>Syは<br />
「パラメータとして与える加速角度とターン角度」&times;「スラロームの軌跡を決める曲率半径」<br />
となっており、変数分離できています。<br />
<br />
つまり、<span style="color: #ff0000;"><strong>スラロームの移動距離（始点と終点）とパラメータを与えることで、通るべき軌跡を決める（曲率半径を求める）ことができる</strong></span>ようになったのです！<br />
<br />
<br />
<span style="text-decoration: underline; font-size: large;">まとめ</span><br />
<br />
近似を用いてスラロームの移動距離を求めることができました。<br />
<img src="//tenpura.sugo-roku.com/File/aad14feb.png" alt="" width="601" height="474" /> &nbsp;<br />
<br />
また、この式の形より<br />
</em><em><span style="color: #ff0000;"><strong>スラロームの移動距離（始点と終点）とパラメータを与えることで、通るべき軌跡を決める（曲率半径を求める）ことができる<br />
</strong><span style="color: #000000;">ことがわかりました。<br />
<br />
<br />
タイトルも回収し、これで一件落着&hellip;かと思いきやまだ問題が残っています。<br />
それについては次回。<br />
<br />
</span></span></em></div>]]>
    </description>
    <category>マウス</category>
    <link>https://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/slaapp5</link>
    <pubDate>Tue, 25 Apr 2017 15:10:39 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/23</guid>
  </item>
    <item>
    <title>スラロームによる移動距離近似、その4</title>
    <description>
    <![CDATA[第4回です。<br />
これまでの記事は<a href="http://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/%E3%82%B9%E3%83%A9%E3%83%AD%E3%83%BC%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E7%A7%BB%E5%8B%95%E8%B7%9D%E9%9B%A2%E8%BF%91%E4%BC%BC%E3%80%81%E3%81%9D%E3%81%AE1" title="">1回目</a>の目次からどうぞ。<br />
<br />
今回はクロソイドの移動距離を近似を用いて求めていきます。<br />
タイトル回収ですね。<br />
<br />
<br />
<hr />
<h2><span style="font-size: x-large;">クロソイドの移動距離</span></h2>
<h3><span style="font-size: large;"><br />
</span><span style="text-decoration: underline; font-size: large;">クロソイドとは</span></h3>
<br />
まずクロソイドについておさらいから始めていきましょう。<br />
クロソイド曲線とは高速道路のインターチェンジで使われるような曲線です。<br />
詳しい説明については<a href="http://blog.tokor.org/2015/11/27/Fresnel%E7%A9%8D%E5%88%86%E3%81%A8%E7%B7%A9%E5%92%8C%E6%9B%B2%E7%B7%9A/" title="Tokoro's Tech-Note（ Fresnel積分と緩和曲線）">こちら</a>の方に譲らせていただきます。<br />
<br />
スラロームにおけるクロソイド曲線について考えてみましょう。<br />
このクロソイド曲線は、角加速区間および角減速部分に出てきます。<br />
<br />
その移動距離は解析的には計算できないわけですが、数式で表せないというわけではありません。<br />
重心速度<em>v</em>でスラローム中のマウスは以下のような図で模式的に表せます。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/a79bbdfa.png" title=""><img src="//tenpura.sugo-roku.com/Img/1492521883/" alt="" /></a> &nbsp;<br />
<br />
ここで<em>&theta;</em>は機体の角度を表し、時間に依存した変数です。<br />
移動距離を考えると以下のようになります。<br />
<br />
<img src="//tenpura.sugo-roku.com/File/b9b8ee69.png" alt="" width="591" height="394" /> &nbsp;&nbsp;<br />
<br />
<br />
<br />
<br />

<h3><span style="text-decoration: underline;"><span style="font-size: large;">マクローリン近似</span></span></h3>
<br />
先ほどの式(6)が解けないことが、スラロームの移動距離がわからない原因です。<br />
Mice内で一般的(？)な手法では、数値解析により解決していました。<br />
本記事では<strong>マクローリン展開</strong>により解決します。<br />
<br />
具体的には、非積分関数をマクローリン展開したうえで積分します。<br />
また今回の手法は<a href="http://www004.upp.so-net.ne.jp/s_honma/clothoid/clothoid.htm" title="">このサイト</a>を非常に参考にしております。<br />
<br />
スラロームにおけるクロソイドでは角度の小さい部分を用いるため、時刻&nbsp;<em>t&nbsp;</em>が0近傍であると仮定してマクローリン展開します。<br />
<img src="//tenpura.sugo-roku.com/File/75694cbb.png" alt="" width="601" height="410" /> <br />
<br />
x軸方向の移動距離は以上のように表せます。<br />
しかし、今回はパラメータとして時間でなく角度を用いたいので、機体の角速度を&omega;と置いて、式(8)を変形していきます。<br />
<br />
<img src="//tenpura.sugo-roku.com/File/9ed45c47.png" alt="" width="608" height="256" /> &nbsp;<br />
これで、クロソイドのx軸方向の移動距離を表すことができました。<br />
同様にy軸方向についても行っていきます。<br />
<br />
<img src="//tenpura.sugo-roku.com/File/995e6a41.png" alt="" width="603" height="370" /><br />
<br />
よって、クロソイドの移動距離を表すことができました。<br />
<br />
<br />
<br />

<h3><span style="text-decoration: underline; font-size: large;">まとめ</span></h3>
<br />
マクローリン展開を用いることでクロソイドの移動距離を求めることができました。<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/f5c07176.png" title=""><img src="//tenpura.sugo-roku.com/Img/1492279463/" alt="" /></a> <br />
<br />
円弧のときと同様に、移動距離が<strong>曲率半径<em>R</em></strong>と<strong>パラメータ（加速角度<em>&theta;<span style="font-size: xx-small;">A</span></em>）による関数</strong>の積で表されています。<br />
そのため、どうやら移動距離とパラメータより曲率半径を求めることができそうです。<br />
<br />
次回はスラローム全体の移動距離をどう表せるのかという点について扱っていきます。<br />
<br />
<br />
<br />
<hr />
<h2><span style="font-size: x-large;">マクローリン展開の誤差について</span></h2>
<br />
<br />
今回はまだ終わりません。おまけがあります。お得ですね。<br />
ここでは、皆さんが気になっているであろうマクローリン展開の誤差について考えていきます。<br />
<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/e98d01a5.png" title=""><img src="//tenpura.sugo-roku.com/Img/1492361000/" alt="" width="447" height="313" /></a> <br />
<br />
上図はクロソイド曲線について、Excelで数値計算した軌跡とマクローリン近似による軌跡を比較したものです。<br />
重心速度を2000mm/s、微小時間を1msとして計算しています。<br />
高速ターンにおいてスリップ角を考慮しないのは現実的ではありませんが、ここでは誤差の影響が顕著に出るようv=2000mm/sとしました。<br />
<br />
この図を見ると見た目には、スラロームに用いる低角度領域ではよく近似できているように見えます。<br />
しかし、図からはどれほどずれているかわかりません。<br />
というわけで、両者の差をグラフにしたものが下図になります。<br />
<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/6583b8bb.png" title=""><img src="//tenpura.sugo-roku.com/Img/1492361978/" alt="" width="476" height="227" /></a> <br />
<br />
この図は、<br />
角加速度515rad/ss<br />
重心速度2000mm/s<br />
のパラメータにおいて<br />
「マクローリン近似による推定値」と<br />
「微小時間を1msとして計算した数値計算」を比較したものです。<br />
横軸は機体の角度、縦軸はそれぞれX方向とY方向における差を示しています。<br />
<br />
これを見ると180度までの範囲で、ズレは最大でも2mm程度だとわかります。<br />
スラロームとして考えると180度ターンのとき角度が最大なので、クロソイド曲線としては90度までとなります。<br />
そのため、近似によるズレは最大でも1.5mm程度で済みそうです。<br />
<br />
皆さんが如何ほどの精度で機体の制御を行っているかはわかりませんが、~2mm程度のズレであれば調整範囲内といってよいのではないでしょうか。<br />
少なくとも私のマウスでは理論値と現実の軌跡とのズレは、これよりはるかに大きいため、調整によって丸めこめると考えています。<br />
<br />
最後に重心速度を変えたときズレはどのように変化するかを載せて今回は締めさせていただきます。<br />
<a target="_blank" href="//tenpura.sugo-roku.com/File/3eea50ad.png" title=""><img src="//tenpura.sugo-roku.com/Img/1492522876/" alt="" /></a> &nbsp;<br />
&nbsp;<a target="_blank" href="//tenpura.sugo-roku.com/File/f8dacaec.png" title=""><img src="//tenpura.sugo-roku.com/Img/1492522889/" alt="" /></a> <br />
<br />
式(11)、(13)からも明らかなように速度が大きくなればズレも大きくなります。]]>
    </description>
    <category>マウス</category>
    <link>https://tenpura.sugo-roku.com/%E3%83%9E%E3%82%A6%E3%82%B9/slaapp4</link>
    <pubDate>Tue, 18 Apr 2017 13:25:29 GMT</pubDate>
    <guid isPermaLink="false">tenpura.sugo-roku.com://entry/22</guid>
  </item>

    </channel>
</rss>