忍者ブログ

マウスに関係ない流行りのお話

2017年12月17日
※この記事は、知的ロボットサークルMiceのイベントMice Advent Calendar 2017の17日目の記事です。

昨日はもっちーの自己紹介&現状報告でした。
ぜひ頑張ってほしいですね。


さて、ここの数日のMice Advent Calendarはマイクロマウスに関する記事が並んでおります。
しかし、このAdvent Calendarはテーマ自由でマイクロマウスに関係なくてもいいそうです。


せっかくなので、今回はマウスから離れて全く関係ない話をしようと思います。


皆さま、最近流行っているものといえば何でしょうか?

 

 そう、『量子コンピューター』です! 







というわけで、今回のテーマは


「マイクロマウスに関係ない流行りのお話」


あらため


「量子コンピューター事始め
急に上司に話題振られても返せるくらいに」




難しい数式とかは全部抜かして、ざっくり量子コンピューターの話題について表面だけをなぞっていきます。

目標は上司から振られた「NTTの量子コンピューターが話題だけど、君はどう思う?」という攻撃を華麗にかわすことです。



量子コンピューターは1つじゃない! 


量子コンピューターとは、その名の通り量子効果を利用して計算の高速化を狙った計算機です。
古典コンピューターが物理的な小型化限界に到達しつつある現在、新たな計算高速化の方法として注目されています。

実はこの量子コンピューター、いくつか種類があることをご存知でしょうか?

・量子ゲート方式(IBM の IBM Quantum Experience
・量子イジングマシン方式
   コヒーレントイジングマシン(NTTの量子ニューラルネットワーク
   量子アニーリングマシン(D-Wave Systems の D-Wave

このいずれも原理が異なります。
一口に量子コンピューターと呼びますが、混同しないよう注意しましょう。




量子ゲート方式


量子ゲート方式は、
古典コンピュータがビット(0 or 1)で情報を表し、論理演算(AND OR …)を用いて計算を行うように、
状態の重ね合わせを許した量子ビットで情報を表し、ゲートと呼ばれる操作を用いて計算を行います。

何を言ってるかわからないと思いますが、イメージは古典のコンピュータの原理に量子効果を取り入れ拡張した感じです。

そのため、プログラムによって1ステップずつ実行することができますし、理論上は汎用計算可能と言われています。
(もちろんプログラミングの仕方は、専用の特殊なものとなるそうですが。)


実際に実現されている量子ゲート方式の量子コンピュータとしてはIBM Quantum Experienceが有名です。
IBM Quantum Experience はクラウドで公開されており、だれでも使うことができるそうです。
ネットさえ使えるなら、量子コンピュータをだれでも使えるってすごい。


この量子ゲート方式、量子ビットの個数で計算可能な問題の規模が決まるのですが、現在は16ビットまでが実現されているそうです。
16ビットでは古典コンピューターでも簡単に解ける程度の問題しか扱えず、古典コンピューターを超えるにはまだまだ先が長そうというのが現状です。
将来に期待ですね。


量子ゲート方式の原理とかについての詳しい話をしだすと、本格的に難しくなってくるのでこの辺で止めておきます。説明できるほど詳しくないし。
気になる方は各自で調べていただければと思います。


まとめ
量子ゲート方式は、汎用量子計算が可能と言われている反面、まだ古典コンピューターが(計算量的に)実行困難な複雑な計算をすることはできません。



量子イジングマシン方式


量子イジングマシン方式は、イジングモデルと呼ばれる物理モデルを再現し、物理現象によって自然と安定な状態に向かうのを利用して問題を解きます。
(今回の記事ではイジングモデルについては説明しません。物理の分野でよく用いられるトイモデルだと思ってください。)

量子イジングマシン方式のイメージは粘菌コンピューターとかと同じです。


都市部に餌を置き粘菌を放つと、粘菌の形成した経路が最適な経路となっている
= 粘菌を利用して経路問題を解けている

問題設定をうまく現実に再現することで、自然現象が勝手に解へと導いてくれるってことですね。


量子イジングマシンは、イジングモデルを再現する都合上、イジングモデルに焼き直せる問題しか解くことはできません。
つまり汎用計算可能ではなく、特定の問題だけを一瞬で解ける専用計算機の立ち位置になります。
よく言われるような古典コンピューターを駆逐するようなことにはなりません。共存する形ですね。


さて、となると気になるのがイジングモデルに焼き直せる問題とは一体何か?という点です。
しばしば代表例として挙げられるのが、最適化問題です。

最適化問題とは、ある条件の中で最も良い組み合わせを選び出す問題のことです。
例えば、巡回セールスマン問題ナップザック問題、etc…。

これらの問題は、問題の規模が大きくになるにつれ必要な計算量も指数的に増えていくため、古典コンピューターの総当たり先方では計算が困難であるという特徴があります。

しかし、量子イジングマシンでは、物理現象は自然と安定な状態(エネルギーが最も低い状態)へと向かうという特徴を利用し、問題設定をイジングモデルに再現することで自動的に答えが求まります。

この特徴から、古典コンピューターの限界を超えた計算規模を誇る問題に対し、有利に働くと考えられています。

また、これらの問題以外でもイジングモデルに焼き直すことさえできれば、このコンピューターで解くことができるため、ハードの開発と同様に他の問題のイジングモデルへの焼き直しも研究の焦点となっているようです。


コヒーレントイジングマシンと量子アニーリングマシン

量子イジングマシン方式は、イジングモデルを再現する方法によってさらに細かく区分が分けられています。
コヒーレントイジングマシンと量子アニーリングマシンです。


光でイジングモデルを再現するコヒーレントイジングマシン。  
コヒーレントイジングマシン概要図

最近話題になったNTTの量子ニューラルネットワークはコヒーレントイジングマシンの1つです。

図の青く円状になっている部分にコヒーレント光をパルスで送ることでイジングモデルを再現し、右につながっているFPGA等の回路で、観測および制御を行うことで計算機として成立します。

光の干渉を利用したこのマシンですが、
光の経路としてkm単位の光路を必要とするため小型化が難しい、
本当に量子効果を取り入れられているのかといった疑問の声もある、
といった課題も抱えているようです。

とはいえ、日本発の量子コンピューターですし今後の研究に期待していきたいです。




もう一つの量子イジングマシン方式の量子コンピューターとして有名なのがD-Waveです。
極低温による超電導を用いて、キメラグラフ構造という特殊な組み方を行うことで、量子系のイジングモデルを再現しています。

D-Waveは既に商用化されており、億単位の値段で売買されています。
NASAやGoogleが購入したことで話題になりました。

また、D-Waveは今年2048量子ビットを実現しており、個人的に最先端の量子コンピューターだと思います。



まとめ

量子イジングマシン方式は、すでに商用化されており古典コンピューターを超える計算速度を実現している反面、最適化問題と呼ばれる特定の問題しか解くことができません。



今回の記事のまとめ


現在、量子コンピューターと呼ばれるものには3種類あります。

  • 量子ゲート方式
  • 量子ネットワーク方式(コヒーレントイジングマシン)
  • 量子アニーリングマシン
です。

一緒くたに量子コンピューターと呼ばれることが多いですが、いずれも原理が異なり長所短所があります。

ニュース等で量子コンピューターについて見るときは、そのあたりに注意すると少し見方が変わってくるかもしれません。

また、もっと知りたいという方へ
量子コンピューターAdvent Calendarを見つけたので読んでみると面白いかもしれません。



「NTTの量子コンピューターが話題だけど、君はどう思う?」



「同じ種類の量子コンピューターであり既に実用化されているD-Waveに勝てるか、が焦点だと思います。日本発として頑張ってほしいところですね。」



こんなテーマにするんじゃなかった。


明日はあやたか君の音系の話です。
こうご期待。

PR

マイクロマウス調整法(フレッシュマン向け)

2017年10月25日
こんにちは、鯉です。
地区大会も残すところ中部だけとなり、あとは全日本に向けて仕上げていく時期となってまいりました。

今年は割と多くの地区大会に参加しましたが、フレッシュマンを見ていると「大会会場でどうやって壁センサの値がずれているかを把握し、どのように直すか」といった調整法が確立されていないような気がしました。

たしかにネットで検索しても調整方法については記事がほとんど見つからず、ノウハウの塊状態になっているような。。。

というわけで、僕が行っている調整法を紹介しようかと思います!
フレッシュマンの方もそうでない方も参考にしていただければ幸いです。


※今回の記事は個人の主義主張が強く含まれます。調整方法がコレで正解というわけではないので、あくまで1意見としてお聞きください。

俺はこんな方法でやってるぜ! といったご意見ご感想お待ちしております。




壁制御の調整方法




まずは、壁制御の調整方法について紹介していきます。
鯉住では、部室や部屋などの普段の調整はもちろん、大会会場でもセンサ値がずれていると感じたら行うようにしています。

壁制御のやり方などは割愛し、すでにできているものとして進めます。
不安な方は、MiceWikiうむ夫の歩み関西支部Tokoro's Tech-Noteなど挙げればきりがないのでお好きなのを参考にしてください。


その0.迷路に線を引く

まず初めに、迷路に調整用の線を引きましょう!!
大会ではできませんが、個人または団体で迷路を保有しているならば真っ先に行いましょう!
調整のやりやすさが段違いです。

 

引くべき線はこんな感じです。
各区画にこんな感じで線を引きましょう。
青い線は斜めの調整用なので、(普通は)斜めをやらないフレッシュマンは関係ないですが、いつやりたくなるかわからないですしこの機会に引いておきましょう。

ちなみに実際の迷路は下板が黒色なので、白く見える鉛筆や修正液とかで引くといいかと思います。Miceでは鉛筆で引いています。


その1.片壁制御

さて、調整に移っていきましょう。
まずは左右それぞれの片壁制御を行い、制御がきちんとかかっているか、センサのリファレンス値はあっているかを確かめます。

片壁制御で見るべきこと



見るべきことをポンチ絵にしてみました。
だいたい図を見てもらえばわかると思います。
個人的な感覚としては
・姿勢は1区間くらいで正しい状態に直せるくらい
・制御が発散してブルブル震えながら走るのはよくない
・離れる制御も近づく制御もかける
・センサ値なんてものは大会毎にずれると思って調整する
くらいのことに気をつけておけばいいかと。


その2.壁の切れ目

晴れて片壁制御がかかるようになったら、次は壁の切れ目も見てみましょう。
壁の切れ目とは壁がなくなったタイミングで、マウスは壁が遠ざかったと認識し制御によって吸い込まれる現象です。
詳しくはMiceWikiをご参照ください。




この調整の目安は図の通り、少し吸い込まれても次の区画や柱で中心に戻る程度を目指すと良いでしょう(フレッシュマンは)。

僕は大会ではこの調整は行わないことが多いです。
部室なりでしっかり調整し、大会会場では片壁制御の調整法を行えば切れ目も大丈夫でしょう。


その3.まとめ

自分なりの壁制御の調整方法をまとめました。
普段の調整環境で、その0~その2を行い、大会会場ではその1だけチェックすれば充分だと思います。
ただし、迷路をきちんと走るのが絶対的に重要なので今回の調整方法で上手くあっていても迷路を走らせたときにずれるようなら適宜修正していきましょう!




スラロームの調整方法




次にスラロームの調整方法に移っていきます。
壁制御と同じく、スラロームの実装はできているとして進めます。
わからない方、不安な方は以前書いた記事(原理)やツルマインのブログ(実装)やMiceWiki(実装および調整)とかを見てください。
(意外とスラローム自体についての記事って少ないんですね)


その0.距離があっているか確認する

実際にスラロームの調整に入る前にやることがいくつかあります。
まず最初にマウスが考えている距離が実際の距離と一致しているかを確かめましょう。



距離の調整は、ズレが大きく出るようにできるだけ長い直線を用意し、きちんと直進するように両壁を入れて壁制御をかけて、走行距離を見ます。

MiceWikiのこの辺
の考え方を取り入れ、距離を各時刻の速度の積分として求めているならば、タイヤ径がパラメータとなります。
実際に走らせたとき、距離が合うようにタイヤ径を設定しましょう。

また、注意すべき点として、距離が短くなった際に壁制御が甘く蛇行したことが原因の場合があります。
そのため、壁制御の調整をしてから行うほうが良いでしょう。
目で見て明らかに蛇行していなければ大丈夫です。


その1.角度があっているか確認する

次は角度を見ていきましょう。
超信地旋回を行って、目標の角度と一致するかを確認します。



僕は角度のずれが大きく出るように3600°くらい超信地旋回してます。
もし、角度がずれるようなら、ジャイロを使っている人はジャイロの定数が、ジャイロ使ってない人はマウスの幅がズレているのかもしれません。
3600°回してもパッと見でズレがわからない程度にしたいところです。


その2.スラロームの角度調整

ようやくスラロームの調整です。
まずはスラロームで指定した角度きちんと曲がれているか確認しましょう。
この確認方法は人によってやり方が大きく異なるところですが、僕は1回だけ曲がって角度を見ます。




調整は
直進(1.5区画くらい) → スラローム → 長い直進(2区画以上)
という組み合わせで行っています。

図に書いてありますが、
最初の直進では位置と角度を合わせるので、それができる長さにしましょう。
また速度についても、止まった状態からスラロームの速度まで加速し安定できる距離にしておきましょう。
最後の直進は、角度のずれを見るためなので、壁制御等がかかり角度が直ってしまわないよう注意しましょう。

この結果、もし角度がズレているようであれば、スラロームの目標角度を合うように変えることで調整します。(例えば、目標角度90°で曲がりすぎるようなら89°にするなど)


その3.スラロームの位置調整

スラロームの調整もこれで最後です。
ここまでで、角度はあったので、スラローム後の位置が目標の位置になるように調整しましょう。



ここまでですでに重々承知とは思いますが、スラロームも実際にやるとシミュレーターや理論値とは微妙に異なります。
この位置のずれは前距離と後距離をいい感じに合うように調整してあげましょう。

前距離と後距離ってなに?って方はこちら。



その4.まとめとスラローム耐久テスト

スラロームの調整については以上になります。
こちらも壁制御と同様迷路で走るパラメータが正義なのを忘れないでください。

最後にスラロームのチェックとしてよく用いられる耐久テストパターンを紹介してスラロームの調整方法を締めさせていただきます。





おわりに


壁制御とスラロームの調整方法について紹介しました。
今回のことをしっかりと行うだけでフレッシュマンなら、まずこけなくなるのではないでしょうか?
しかし、実際に迷路を走らせるとどうもうまくいかないということもあり得ます。
そういう時には前壁制御などの他の補正も入れてみる必要があるかもしれません。

最後に、繰り返しになりますが今回の方法は決して正解というわけではなく、あくまで僕個人の方法です。
皆さま各々違う調整方法を持っておられると思いますが、もし参考になれば幸いです。
また、違う方法があれば教えていただけると嬉しいです。

それでは良き調整ライフを!

北信越:完走の感想

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 | 次のページ »