ラベル 技術紹介 の投稿を表示しています。 すべての投稿を表示
ラベル 技術紹介 の投稿を表示しています。 すべての投稿を表示

2024年7月26日金曜日

マイクロマウスTips4 STLINK-V3 MINIE

はじめに

STLINKを使う話を何気なく投稿したところ、使い方がよくわからない・教えてほしいという声を複数耳にしたので、メモしておきます。何気なく使っていましたが、整理してみるとそこそこわかりにくい点もあったので、そのあたりわかるようにまとめていきます。

使おうと思ったきっかけ

いくつかありますので、箇条書きで書いていきます。

・秋月で売っている
digikey, mouserを使わないといけない部品に比べて心理的ハードルが小さい。いざというときに安心。大体こういった部品は壊れてほしくないときに限って壊れたりするので、入手性は馬鹿になりません。

・小型
ごっつい感じのケースとか無いのがいいですね。

・USBコネクタがタイプC
Nucleoパキッをやりたくない主要因がコネクタがminiBであることだったりするので、これは嬉しい。

・Virtual COM
SWD以外にUARTも使える。いろいろ嬉しい。

・SWD書き込みが使える
これは頭痛が痛いとかと言っていること同じ。

使用例

まず使っているものの画像を以下に示します。




続けてマニュアルの一部を示します。


STLinkからはこのうち3, 4, 6, 7, 8, 10番の6ピンを出してあります。この中から必要なものを対象の回路に合わせて使うという感じです。
今回はこの6ピンに加えて変換ケーブルでSTM側のBootピンを10番かHi-Zかにできるようにスイッチをかまして7ピンをマウス側につないであります。マウス側ではBootピンはGNDにプルダウンされてるので、こうすることでブートモードを書き込みコネクタとつないだときのみ外部のスイッチで切り替えられるようになります。
7ピンのコネクタはハーフピッチピンソケット。EntranceもLightningもこれを使っています。サイズ感と断線の少なさ的にそこそこいいかなと思っています…が接触不良になることもなくはないです。やっぱり小さいコネクタはだめだわ

初見でわかりづらそうなところ

多分以下2つが分かりづらい気がします。

① T_VCCはターゲットとなるマイコンのVCC電圧を検出するためのピンであって、ここから電源は出ていない&ここをつないでいないと正しく動作しない

② T_VCP_RX, T_VCP_TX は「ターゲットの」RXDとTXDにつなげという意味なので、TXDとTXD、RXDとRXDをつなぐのが正しい

右のInput、Outputを見ればまあそうなんだろうなーと勘付きますが、読解というか空気を読む必要が若干あって紛らわしいですね。

あとNRSTはSoftware Resetで使う分には出さなくてOKです。これはほかのSTLinkもそうだった気がします(うろ覚え)。

少しハマったところ

windowsのCubeProgでは特に何もせずに動きましたが、手元のubuntu22.04では、はじめSTLinkが使えず、少しハマってしまいました。

エラーメッセージは下記。
libusb: error [get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/003/007, errno=13
libusb: error [get_usbfs_fd] libusb requires write access to USB device nodes

見たところSTLinkの認識自体はされていたので、ハードウェア的な問題ではないだろうと当たりをつけつつ、さらに見ていったところ手元のNucleo(STLink-V2)は問題なく認識されたので、ソフトがファームウェアに対応していないのだろうと推測。

ここからソフトを落としてきて
sudo dpkg -i <location>/stsw-link007/AllPlatforms/StlinkRulesFilesForLinux/st-stlink-udev-rules-<version>-linux-all.deb
で、無事使えるようになりました。ヨカッタ。

あと、STLinkの話というと少し違いますが、最近今更になってCubeProgのCUIがあることに気づきました…。なんで今までGUI使ってたんだ…。

終わりに

あんまり言われるまで気にしていませんでしたが、言われてみると書けるネタは結構ありましたね。
使い方にクセのあるものをあまり気にせずに使えるのは悪いことではない気がしますが、不便さに気づかないのはそれも考えようかなと思ったりする、今日この頃です。

2024年4月8日月曜日

マイクロマウスTips3 磁気式エンコーダの設計

はじめに

相変わらずブログの存在を忘れていた訳でご無沙汰しています...。
そういえば前に磁気式エンコーダについて記事を書く、といってどのくらいの月日が流れたかはよく分かりませんが、書いていきます。

今回の内容

マイクロマウス(旧ハーフ)では、既製品のエンコーダだとサイズが大きく扱いづらいために自作のエンコーダを使う方が多いと思います。その中でも、ネオジム磁石を使って専用のエンコーダICを用いて回転数を読み取るのは最もメジャーなやり方だと思います。
ここで問題となってくるのが、下手に作ると得られるデータが使いづらくなってしまうという点があります。機械精度やエンコーダICの性能といった話もあるのですが、この記事ではエンコーダICに必要な強度の磁場を与えるためにどうするかの設計について示します。
Entranceはこれに基づいて設計しています。これを考えたのはB1の夏ごろの話なので、おそらく高校物理が分かっていれば読める程度の内容だと思います(多分)。
※モバイル版だと数式がうまく出ないみたいなのでウェブ版のページで見ていただけるとよいと思います。

磁気式エンコーダの動作原理

磁気式エンコーダのICはどのようにして磁石の回転を読み取っているか、というとホール効果を利用しています。ホール効果とは何ぞや、という人は調べてください...だと投げやりすぎる気もするのでさらっと触れておくと、電流が流れているところに磁場をかけると電子の分布がローレンツ力によって偏り、起電力が生じる現象です。
磁気式エンコーダICの場合、下図の向きの磁場を検出する仕組みとなっており、磁石が回転すると磁場の強さは一定で分布の方向のみが回転するといった具合になります。このため、磁気式エンコーダで使われるネオジム磁石は径方向着磁といって、一般的な磁石とは違う方向で極が分かれているものを使用します。

磁気式エンコーダの仕組み概要

磁束密度の見積もり

では、エンコーダICにかかる磁束密度について見積もっていきましょう。
そうはいっても円柱のまま磁束密度を扱うのは難しいので、ここではN極、S極の重心の点にそれぞれ正と負の点磁極が1つずつあると仮定して計算します。この点磁極によってネオジム磁石のデータシートに記載されている表面磁束密度が生じていることから、エンコーダICのホールセンサ部にどれだけの磁束密度が生じているのかを見積もります。

仮定のイメージ

下図に、説明用の図を示します。

磁石の半径を$r$、厚みを$h$、磁石からエンコーダICのセンサまでの距離を$d$とします。
まず、仮定した点磁極の位置を確認しておくと、図の$y$方向と$z$方向は対称性から中央にあり、$x$方向については半円の重心の位置になります。これを$a$とすると
$$a=\frac{4}{3\pi}r$$
になります。導出は普通に積分するか、計算が嫌ならパップス・ギュルダンの定理あたりを使うか、そんなことをしなくてもググるか、で分かります。

次に、磁石に記載されている表面磁束密度$B$について考えていきます。


径方向着磁なので、データシート記載の表面磁束密度(例えば確かEntranceはネオマグさんのこちらのものを使っており、製品ページから確認できます)は上図のように側面z方向中心の位置での微小面の値であると考えられます。
ここで、この点での磁場の大きさ$H$を考えると、単位磁極が受ける力を磁気におけるクーロンの法則で見積もればよいので、比例定数$k_1$、仮定した磁極の磁気量$m$を用いて
$$H=k_1\frac{m}{(r-a)^2}-k_1\frac{m}{(r+a)^2}$$
になります。ここで
$$H=\frac{1}{\mu_0}B$$
であることから、新たに比例定数$k_2$を用いると
$$B=k_2 m\left(\frac{1}{(r-a)^2}-\frac{1}{(r+a)^2}\right)$$
となり、これがデータシートの表面磁束密度であると考えられます。

これをもとに、エンコーダにかかる磁束密度を見積もります。

エンコーダの中央での磁束密度は、上図のように2つの点磁極から受けるベクトルの合成と捉えることができます。$z$方向については相殺されて0となり、$x$方向についてのみ成分が残るので、結局のところ正の点磁極による磁束密度の$x$成分を2倍してあげれば、求めたい磁束密度$B_{sensor}$になることが分かります。
正の点磁極による磁束密度$B_1$の大きさは、磁極からホールセンサの距離を考えると、先ほどの比例定数$k_2$を用いて
$$B_1=k_2 m\frac{1}{a^2+(\frac{1}{2}h+d)^2}$$
になります。したがって、その$x$成分を2倍することで$B_{sensor}$は
$$B_{sensor}=2B_1 cos\theta$$
となります。ちなみに、$cos\theta$は図より
$$cos\theta=\frac{a}{\sqrt{a^2+(\frac{1}{2}h+d)^2}}$$
となります。

比例定数と磁極の値は勝手に置いた値なのでわかりませんが、データシートの磁束密度と求めたい$B_{sensor}$を比較すると長さの二乗の比で計算すればよいことがわかり、結局
$$B_{sensor}=2B\frac{\frac{1}{(\frac{4}{3\pi})^2r^2+(\frac{1}{2}h+d)^2}}{\frac{1}{(1-\frac{4}{3\pi})^2r^2}-\frac{1}{(1+\frac{4}{3\pi})^2r^2}}\frac{\frac{4}{3\pi}r}{\sqrt{(\frac{4}{3\pi})^2r^2+(\frac{1}{2}h+d)^2}}$$
という風になると思います。これでネオジム磁石の諸量とエンコーダと磁石の距離から、ICに流れる磁束密度が求められるようになりました。

エンコーダICに必要な磁束密度とその考察

実際のエンコーダICに必要な磁束密度はデータシートに書いてあります。例えばEntranceで用いたAS5147P(データシートのリンクに飛びます)なんかだとPage8に書いてあります。また、ホールセンサの位置についてPage35にかいてあるので、それも考慮して設計した覚えがあります。
導出した数式から$r$を小さくしたり$d$を大きくしたりすると与える磁束密度が小さくなってしまい苦しくなってくることが分かります。実際に何でもいいので計算ソフトに式を入れてパラメータをいじれば雰囲気はつかめてくると思います。
ちなみにEntranceはφ4の磁石を使っており、これがちょうどよいくらいだったと思います。

終わりに

いかがでしたでしょうか。あまりこの手の磁気式エンコーダの設計の話は耳にしたことがないですが、こんな感じで見積もるとどの程度攻めた設計をしてよいかの見当がつくのではないかと思います。(もしもなにか間違いあったらすみません)

余談

Q. そんなことよりLightningとかでやってる光学式エンコーダの話が聞きたいです。
A. やめといたほうが良いです。

2023年12月23日土曜日

マイクロマウスTips2 回路製作の視点

この記事はWMMC Advent Calendar 2023 23日目の記事です。

昨日の記事はundefinedでした(だれか埋めてくれないかな)。

はじめに

はじめて自作マウスを作る上で、自分で作った回路を正しく動く状態にするというのは、1つの大きな関門です。
学生大会ではマイコンの書き込みがうまくいかないという話を耳にしたので、この記事を書き始めたときはマイコン周りのみの話をしようと思っていました。しかし、まとめようと思うと把握しておくべき事項がかなり多いことに気づいたので、いくつかにわけてノウハウを紹介していきたいと思います。
今回は回路製作の視点ということで、総論について示します。主に私が回路製作で意識している点や、どんな回路にも言える陥りやすい点などについて書きます。
電源回路やRXとSTM特有のところなどといった話は、各論として少しずつ出していこうと思います。

大まかな流れ

回路を製作するうえでの手順は基本的に次の3工程だと思います。
1. 回路図(どの部品の足とどの部品の足が接続関係にあるか)を作成する
2. 配線図(実際の配線、基板パターン)を作成する
3. 設計した基板データ通りに、実装をする
これはユニバーサル基板であろうとプリント基板であろうと、共通の流れだと思います。

ここで大事なのは、この3工程のそれぞれにミスをするポイントがあるので、疑っていくときに1~3のどこの問題かを強く意識してデバッグしていくとよいということです。
ただなかなか厄介なのは、不具合が起こっている回路の場合、症状を見ただけではどれと特定するのが難しいというところです。複数のトラブルを抱えている場合、1つ解消しても動作が変わらない、みたいなこともざらにあります。1つコアとなる理論を把握していれば一直線で議論が進む数学やアルゴリズムとは違って、考えられる問題を根気強く潰していき、致命的な点をなくすというところがゴールです。
では、この3つそれぞれについて私が意識している点を書いていきます。

回路図設計のポイント

まず、自分で何かこういう回路を作りたい、となった場合にまずはじめにやることは、他に同じことをやっている人がいないかを探すことです。マウスの場合はちょっと調べれば多くの人が自身のマシンの回路図を公開していると思うので(ありがたい)、どんどん参考にしていきましょう。
そして参考にする際に非常に重要なことは、ほかの人の回路図と各種IC、センサのデータシートやリファレンスマニュアルを照らし合わせて、どうしてその回路図になるのかをよく考えることです。1つの回路図だけだとわかりにくいので、複数あるとよいでしょう。比較してみると誰にでも共通している点と人によって違う点があると思うので、そういったところは理解のヒントになると思います。基本的に根拠はデータシートにあります。人のを参考にするというのは理解のとっかかりとして良いのであって、その根拠を考えていないと、うまくいかなくなったときに手詰まりになってしまうと思います。そのコンデンサはデータシートの何ページにつけるように指示があるか、一度は確認しましょう。

配線図設計のポイント

配線のポイントはまず、配線ではなくて部品配置にあります。私は部品配置8:配線2くらいの重さで捉えています。どういう配線にするかあらかじめ想定して部品を置くことが大切です。ここが上手にできると配線が楽に出来ます。パターンを引き始める前が勝負だと私は思っています。
配線を始めたうえで考えるのは以下2点だと思います。
・流す電流量に対して配線の幅が足りているか
・ノイズが載ってしまう配線になっていないか
1つ目は電流が多く流れるところは太く配線するということです。バッテリーの電源、モーターにつなぐ配線なんかが代表でしょうか。あと私はアナログ周りの信号線は少し太めにしたりしています。大体1Aで幅1mmくらいといわれており私もその要領で配線していて電流が流せなくて困ったことはありません。
2つ目は、とりあえずノイズ対策.comはプリント基板を作り始めるまでに一度はすべてに目を通しておいてほしいところです。ポイントが網羅されています。あとこれは私が意識していることとして、配線しながらも電流がどの経路でバッテリーまで戻ってくるかを考えるようにしています...がおそらくこれは慣れている人向けだと思います。
プリント基板を前提に話していますが、ユニバーサル基板だとどうでしょう。気を付けているのは電源などに細いウレタン線を使ったりしないこととコンデンサをICのすぐそばに置くことくらいですかね。それだけですが特に悩まされたことはないです。

実装のポイント

実装のポイントというかゴールは接触不良がないことです。そのうえで一番大事なことは
良い道具を使うこと
だと思います。よい道具はえてしてお高めなことが多いですが、はんだごてや圧着工具、こて先やニッパーなど、ある程度よく使う道具はちゃんとしたものを使うとよいと思います。
また、基板のパッドを大きめにとるのも結構効きます。小さすぎるとはんだごてをあてる面がなくて苦労することがありますね。
あとはまあなんというか、丁寧に作ることが非常に大切ですね。部品の位置がちゃんと真ん中に乗るように置くことや、はんだがフラックスが抜けて死んでいないか(張りがなくなってしまっていると危ないです)といったところを、妥協せずに見ていきましょう。ここは多少時間かけてでも丁寧にやったほうが、あとあと動作確認で動かなくて苦しむより楽になるケースが多いです。はんだごてを使う際に点ではなくて面を使って熱の伝わりを意識する...とかもありますがこれは文で書いてもしょうがないので練習あるのみです。

動作確認をする際のポイント

以上の3工程を踏んで動作確認をするわけですが、大事なことをいくつか述べていきます。
まず、動作確認は細かい要素ごとに行いましょう。一気に全部やると、それだけミスとなりうる要因が増えるので間違えやすいだけでなく、何より間違えたときの原因箇所の特定がぐっと難しくなってしまいます。要素が増えるたびに要因は掛け算的に増えるというイメージです。マウスの場合、具体的にはバッテリー電源→レギュレータなど通して安定させた電源→マイコン書き込み→スイッチ、センサ、モータなど1つずつみたいな要領でやるとよいでしょう。
トラブルが発生したらどうしましょうか。基本的には、問題と考えられる箇所をテスター、場合によってはオシロスコープを用いて確認していきます。うまく動いているとしたらどういう値が出るかを想定して、特徴的と思われる箇所を測定していく流れになります。

部品選定について

3工程と書きましたが、本来は最初に部品選定が入るので本来は4工程です。が、正直言ってしまうと初心者の場合、ほかの人が使ったことがある部品(特にIC)を使うようにしましょう。回路を自分で作ったことのない人が誰も使っていないICや部品を使うのは無謀です。マウスでよく使われるICはあると思いますが、あれは別に更新するのを怠っているとかではなくいろいろな観点から見て信頼性の高い部品がよく使われる部品として残っているという感じです。マウスはサイズの制約も厳しいので、応答性やノイズ耐性など考慮してくと使える部品は限られるのですが、それがピンとくるまではメジャーな部品を使いながら使い方を学ぶのが現実的だと思います。

終わりに

ざっくり全体像と、私が普段気を付けている点や力点について今回は示しました。
回路が思うように動かないと特に初心者の場合モチベーションも下がると思うので難しいところだとは思いますが、時間をかけてデバッグしたり、信頼できる人に相談したりして頑張っていきましょう。
次回からは回路に関しては個々の各論について紹介していこうと思います。

投稿0:00からちょっと遅れちゃいましたね。すみません。アドカレ4本はちょっと重かったかな...(うち1つは内容ないですが)。


次回はジャッジー先輩の「わんちゃん今宵は良い夜に」です。良い夜ということはガッツリ開発して圧倒的進捗でも生むのでしょうか(←病気)。どんな内容か予想つきませんが楽しみにしてます。

2023年12月16日土曜日

マイクロマウスTips1 経路導出

この記事はWMMC Advent Calendar 2023 16日目の記事です。

昨日の記事はジャッジー先輩の「富士山登頂記」でした。
山頂まで登頂したのですね。さすがです。高純度の達成感が得られそうですね。ちなみに私は学生大会で工芸大の2階から4階の移動すらエレベータを使う人間なので登山は無理です。

はじめに

学生大会でもリクエストの多そうだった経路導出について書きます。
といっても内容全部書いてしまってみんな同じようになってしまったら面白くないのと、斜めやっている人たちはそれなりにデバッグの体力あると思うので、ここでは私の考え方の指針について伝えるにとどめます。経路導出といっても、やってること自体は結構簡単なことであることが伝われば、狙い通りという感じです。

足立法について

マイクロマウスにおいて主流とされる探索手法に足立法と呼ばれるものがあります。
考え方としては、ゴールから今の自分のマスまでの最小歩数となる経路を、壁情報の更新が行われるたびにたどり続けることでゴールに辿り着くことができるというものです。足立法についてよくわかっていない人はこちらとかを見ればわかるんじゃないですかね(今「マイクロマウス 足立法」でgoogle検索して一番上のリンク貼ってるだけなのでこのくらいは調べてほしいですが...)。
探索を終えた後に最短経路を導出するといったときは、この足立法で用いる歩数マップとよばれるマップを探索で見ていない壁はあるものとして作成し、辿ることで最小歩数の経路を出せる、というのがとりあえず初めてマイクロマウスで最短走行を行うときによく使われるやり方のように思います。

歩数マップで経路導出をするという意味

さて、ここからが私の視点での考え方なのですが、とどのつまり歩数マップを用いて経路導出をするというのはどういうことなのでしょう?確かに「最小の歩数が出る」というのはそうなのですが、マウスの走りにおいて、これを用いる旨みはどこにあるのでしょう。
私は、この歩数マップで出す経路は「1区画ずつ進んでは止まり、旋回時は超信地旋回を行う、という走り方をするマウスが、基本的に必ず最もよいタイムの出る経路を導出することのできる経路導出方法」だと捉えています。
言われてみれば、まあそれはそうでしょうね。という感想の人も多いかもしれません。ここで伝えたいポイントは、歩数マップにおいてこのような結論が得られるのはマップの更新の仕方とマウスの動き方が同じだからというところにあります。

しかし現在の大会で、こういった走りで最短走行をするマシンはほとんど見かけません。1区画進んでは止まっていては、探索で時間切れになってしまうのがオチでしょう。実際は直進は速度を緩めずに走りますし、旋回時にも速度を緩めないでカーブする(スラローム)わけで、さらに旋回半径を大きくしたり斜め走行を行ったり、原形をとどめないところまで走行の内容が変わっているわけです。
歩数マップしか用いないというのは、動き方の部分はどんどん進化しているのに、肝心の経路の部分の考え方は初歩のころから変わっていないということになります。マウスは基本的に構成要素の一番弱い部分に性能が引っ張られてしまうので、このままでは経路の不出来でタイムを落とすことがあるというのは、ある種必然です。

ではどうしましょうか。やることは単純です。経路導出の仕方を、実際の動きに合わせる。これだけです。

実際にやってみよう

では、今回の学生大会の迷路を例に、考えていきましょう。マウスの動きをベースに考えていくことが肝です。


行きと帰りでは旋回の仕方が異なるため、スタートにマウスがいる状態から考えます。ちょうど黒い矢印のところにマウスがいるとしましょう(というか2次走行の時は絶対そうですよね)。目標地点の隣り合うところを更新する足立法と同様に、次にマウスがどこに行くのか考えてみます。
歩数マップの場合、更新されるのは1区画進んだところなので、下の図のように、1区画進んだところのみ情報が更新されますよね。


しかし、実際問題はどうでしょうか。斜め走行を行うマシンの場合、長いストレートは1つのモーションとしてつないだり、なるべく短い距離になるようにターンしたりしますよね。そう考えると、スタートしてから一息ついた段階でマウスは、開幕ターンとストレートを加味すると下図に示す位置にいる可能性があるといえます。



赤い矢印がマウス、矢印の先端がマウスの頭です

スタートから一息つきました。足立法の場合、次に歩数マップの値が少ないところを起点として更新しますね。では、斜め走行を行うときも同様にそこに到達するまでにかかった時間の短そうなところを起点としてみましょうか。どこでしょうかね。



おそらく上図の黒丸の矢印ではないでしょうか。1区画進んだところですね。ここから更新しましょう。と思いますが、そこから先のストレートはすべてスタートを起点としたときに更新済みでした。1区画進んでからn区画進むより、n+1区画進んだ方がさすがに速いでしょうから、ここでの更新はなく、次に行きます。
次は細かい順番はマウスの速さによるでしょうが、大体2区画進んだところと最初のIn45ターンしたところ、Big90ターンしたところあたりが起点の候補になるでしょう。しかし、2区画進んだところは1区画進んだところと同様の理由で、ほか2つについてはその後の行き先が壁に阻まれて見当たらないので、ここでも更新はできなさそうです。

その次はIn135ターンで来た下図黒丸の矢印を起点にします。ここからは次のストレートに復帰するOut45ターンをしたところ、もしかしたら複合ターン(マウス用語: こじまターン)をする場合はその先までマウスが行っているかもしれません。これらを反映してマウスがいる可能性があるところを、青矢印で示します。



もう大体わかってきたのではないでしょうか。この要領で更新を続けていけば、やがてゴールに近づいていくでしょう。そして更新する際に時間が短くなる時のみ更新し続けていれば、必然的にかかる時間の短い経路が出ているはずです。

あとはこれを実装するだけです。やろうとしていること自体は、結構シンプルなんですよ。

ダイクストラ法について

この手の話をすると二言目くらいに「ダイクストラ法」というワードが出てきます。ダイクストラ法の説明は、ネット上に多くの記事があるので検索してください。今回の考え方でいうと、マウスがいる可能性のある地点を「ノード」、起点から次の位置に行くまでの道のりを「エッジ」と捉えてあげれば、読みやすいと思います。
より詳しい話を知りたければ、私なんかよりAtcoder(競技プログラミング)をやっている人の方がはるかに詳しいので、近くにいる人で該当する人をとっ捕まえて聞いてください。

終わりに

いかがでしたでしょうか。とっかかりは掴めましたかね。
もちろんこの考え方はあくまで私個人の考え方で一般解であるかは私も知らないので、これにこだわらず各自でこれが正しい、と思える導出法を模索してデバッグしてもらえたらと思います。走行パターンがそこそこあるので息が切れそうになるかもしれませんが、時間をかけて頑張ってください。

最後に少しだけ。私が大学に入ってからマウスを作る際に意識していることとして「難しく考えようとしない、なるべくシンプルに正しい形に持っていく」ことを意識しています。
経路導出についても、やれ高級なダイクストラだ最適問題だといった難しいものを難しく使いこなそうとしていると、少なくとも私は何をやってるのかよくわからなくなってしまいます。そうではなくて、とどのつまり何がしたいの、と考えてみると全体像や指針は意外とあっさりしていることが多いです。そこが見えたらそれに沿って実装をしていきます。実装をしていく中で、先に挙げたダイクストラのような話がツールとして出てきます。はじめにシンプルにとらえられていると、ツールの使いどころがよく見えるので、多少煩雑になっても実装しきることができるという感じです。

と、偉そうなことを言いましたが何か話した内容でおかしそうなところがあったらあとで(こっそり)教えてください(笑)。

また、今後も技術系の記事は「マイクロマウスTips」として、不定期に出していこうと思います。


明日はの記事は卓輝くんの「なんか書きます。」です。