nacarの独り言

マイクロマウス作ってるらしいです

生存報告とAmazonで買ってよかったもの

お久しぶりです.

皆さんいかがお過ごしでしょうか.

自分は研究・就活・ハッカソンに追われていて忙しい気がしています.

それ以外だとGASとか使ってSlackとかLINEと連携するアプリ作ったりしてます.

 

今回この記事を書いたのはハッカソンのためにとある条件をクリアする必要があるためです.

なので,完全に私的な利用であり,マウス界隈の方に有益な情報はないと思います.

 

本題

今回の記事ではAmazonで購入したことがあるor友人に勧められている商品を紹介したいと思います.

興味を持つ方がいたら買ってみてはいかがでしょうか?

ではいきます.

 

  • はんだこて&こて先
白光 こて先 1C型 T18-C1

白光 こて先 1C型 T18-C1

  • メディア: Tools & Hardware
 

 せっかくなので1つだけですが,電子工作関連の商品です.

今の時代一家に一台はんだごて,当たり前ですよね?

fx-600は王道のはんだごてで流石,という感じです.

C1のこてさきは先輩から教えていただきましたが,表面実装を行う際にはとても重宝するこて先です.

表面実装で苦しんでいる方はご検討ください.

 

まず1つ目がこちらの電動歯ブラシです.

研究室の先輩におすすめしていただいたのですが,とても良かったです!

価格はお手頃なのですが,とても歯がツルツルになりました.

虫歯などが気になる方はぜひ!

 

  • SSD(M.2 500GB)

 パソコンの起動を早めたい方,いかがでしょう.

ただM.2のSSDに対応しているPCってまだあまり多くないような気はしてます.

 

  • 卓上リング照明

最近就活していてWeb面接とか説明会とかに参加する機会があるのですが,部屋のレイアウトの都合上,どうしても逆光になってしまうため,顔が暗くなってしまいます.

そこで買ったのがこちらの商品です.

低価格の割に大きく,光量も全く困らないレベルでした💡

ただ,三脚部分が緩く,高さの調整が難しい,という難点はありました.

 

  • 浄水ボトル

これは 今年のはじめに購入した浄水ボトルです.

健康のために水を積極的に飲もう,と思ったのですが水道水を直接飲むのはちょっと...という気持ちがあったので購入しました.

出先でも水道があればいつでも給水できますし,デザインも悪くないのでとても気に入っています.

30分に一度水を飲むことで風邪にかかりにくくなる,という噂もありますのでこまめに水を飲みたい方にもおすすめです.(科学的根拠はしらん)

 

 ここにきて本命です.

去年の年末に買ったのですが,とてもいいです!

高校生くらいまではそれなりに本を読んでいたのですが,大学に入ってからはあまり読んでいなかったこともあり,自分にプレッシャーをかける意味も込めて購入しました.

おかげさまで最近は本を読むようになりました.

これは防水機能も付いてるのでお風呂でも読むことが出来ます.(僕は念の為ジップロックに入れてますが)

ただ,ひとつ難点を上げるとすると電源ボタンの位置がとてもだめ.

普通に持っているだけで電源offになることがあるので,これだけは改善してほしい点ですね.

 

  •  小分けナッツ

 勉強中・勤務中に小腹がすいたあなたにオススメ!

小分けなので食べ過ぎることもないですし,味もGoodです.

 

  • その他

ここは気にしないでください....

 

では.

 

 

BIJELAの探索アルゴリズムについて

この記事は

Mice Advent Calendar 2019 - Adventar

の15日目の記事です.

昨日の投稿はstarknighthoodさんの...あれ?

現在静岡逃亡中ということで更新されるのを心待ちにしましょう.

 

 

前回の投稿が8月で,そのあと大会に出ているのにブログ書いて無くて悲しくなっております.

もう少し頻繁に書きたいなと,毎度のことながら思います.

 

今回の内容

さて,今回は春に行われたMiceの技術交流会で紹介した探索アルゴリズムについて書きたいと思います.

はじめから書くと途中で力尽きてしまうので,この記事では壁情報の記録や更新,足立法が理解できている前提で話を進めさせていただきます。

まあ,足立法の解説はたくさんありますから問題ないでしょう.

マイクロマウス特化資料 [Mice Wiki]

Miceで主流な壁情報の記録方法 - あえて賢かれ

今年初のハーフマウスであるTIGAを作成したにも関わらず,去年のクラシックマウスであるBIJELAの名前を使っているのは,TIGAで安定した探索ができるまで調整できなかったためです.

今回紹介する探索アルゴリズムは普通の足立法に比べ,1回の走行当たりの走行量が増えてしまうため,全日本ではコケてしまい走り切れませんでした.

不甲斐ねぇ...

 

足立法の改良案

去年のマウスであるBIJELAの探索アルゴリズムについて書く前に,足立法を少しいじって便利にする方法を考えます.

4マスゴール対応

まず一番に思いつくのが4マスゴール対応です.

4マスゴール対応とはその名の通り,2×2の4マスすべてをゴールとして認識することを意味します.

もちろん1マスゴールの足立法でも4マスのうちのどれかをゴールとして設定していれば必ずゴールすることができますが,ゴール内である特定のマスを目指して動くのは無駄であると思います.

また,探索のことを考えても4マスゴールにしてデメリットはないと思いますので,是非とも4マスゴール対応させましょう.

実装は簡単で,歩数マップ更新の際に1マスのゴールにセットしていた初期値を残りの3マスにもセットするだけです.

umuoumu.blog.fc2.com

Queueを用いた歩数マップ展開

一番簡単な歩数マップの更新方法は,ある歩数nを更新するために全区画の中からnを探して隣接するマスの歩数を更新,次はn+1を全区画の中から探して...という手法だと思います.

しかし,この方法ではある値を探すために全区画,16*16マスを探すためとても効率が悪く,時間がかかります.

 

BIJELAの場合,探索走行中に

  1. 区画中心で壁データの更新
  2. 新しい壁データを使って歩数マップを展開
  3. 歩数マップを用いて進路決定
  4. 直進orスラロームorUターン

という処理を繰り返し行っています.

BIJELAはマップの更新などの計算中も距離を加算しているため,次の動作が直進であれば,計算中に10mm進もうが100㎜進もうが問題ありません.

しかし,次の動作がスラロームである場合,3番の進路決定の段階でスラロームの前距離を超過しているとターンが崩れてしまいます.

BIJELAの600mm/s探索においてスラロームの前距離は約20mmでしたので,壁データの追加から進路決定までを33ms以内の時間で行う必要があります.

正直,そこそこのマイコンを使って計算すれば愚直にfor文を回しても34msもかからないと思います.

しかし,今後探索速度の向上や,より複雑な歩数マップ更新・進路決定を行う場合に困ることもあるかと思いますので,計算の高速化を行うに越したことはありません.

 

そのために紹介するアルゴリズムがQueue(キュー)というものです.

qiita.comQueueの詳細な解説は省略しますが,FIFO (First-In-First-Out),つまり溜まっているデータを古いものから順々に処理していくアルゴリズムです.

これを歩数マップ展開に当てはめると,更新したマスの座標データを溜めて置き,そのデータを用いて更新されたマスの周辺のみ歩数の更新を行う処理が実現できます.

これによって更新されていないマスを探す,といった無駄が削減されるため,演算量の低減が可能となります.

初代のSH7125マイコンを使っていたステッパーではそこそこ計算時間が早くなった記憶があります(半分くらいとかだったかな?覚えてないですが)

 

詳しい実装までは書かないですが,データを追加するpush,取り出すpopの関数を丁寧に作成し,リングバッファとするためheadとtailの管理をうまく行えば実装できるはずです.

また,データをためるリングバッファとなる配列の数が少ないと簡単にtailがheadに追いつき,挙動がおかしくなってしまうため注意が必要です.

 

直線優先歩数マップ

これは斜めを走らない人や苦手な人,既知区間加速をたくさん使いたい,という人におすすめの話です.

ここでいう直線優先歩数マップとは,隣接するマスの歩数が同じ時に直線を選ぶ,というものではなく,直線となる方向への歩数更新を小さい値とし,ターンする方向への歩数更新を大きな値とするものを指します.

つまり,パターンに応じて更新する歩数の重みを変える必要があります.

(ちなみに,更新する歩数の値が大きくなると配列の型によってはオーバーフローが発生したりする可能性があると思いますので注意してください)

実装の方法はいくつかあると思いますが,BIJELAでは更新する方向とは反対方向の壁情報と歩数をもとに直進かどうか判定していました.

 

既知区間加速

既知区間加速とは探索走行中に既知区間(すでに通ったことある経路など)を通過する際に,加速して通過することで探索時間の短縮を図るものです.

これも実装の方法は何通りもあると思いますが,BIJELAは仮想的に座標を動かしていき,未知壁にヒットする座標まで早く移動する,という考えで実装しています.

基本的には直線のみ加速する人が多いですが,中には斜め走行も含めた既知区間斜めをするマウスもあるとか.

すごいです.

 

BIJELAの探索アルゴリズム

それでは本題としてBIJELAの探索アルゴリズムを紹介しようと思います.

このアルゴリズムのモチベーションとしては,5回しかない走行回数を何度も使って探索するのは嫌だ,という所です.

また,普通の往復足立法では「あの経路が出てたら最短したいけどあそこもう探索したっけ?」といったように最短経路が見つけられているかわからない,といった点も嫌でした.

(本記事において"最短経路=全迷路データを持っている状況での足立法ルート"とします)

つまり,1走目が終わった時点で必ず最短経路が見つけられていることが確約されるアルゴリズムを作成することを目指しました.

 

アルゴリズムの流れ

この探索アルゴリズムの目標はスタート座標(0,0)からゴール座標までの最短経路を出す過程で,未知壁がなくなることです.

そのため

  1. 未知壁は無いものとして歩数マップ展開
  2. 仮想的にスタートからゴールまで歩数マップを使って移動
  3. その過程で未知壁があったらその周辺マスを一時的なゴールとする(無ければ探索終了)
  4. 現在地から一時的なゴールまで足立法探索する
  5. 一時的なゴールについたら1に戻る

 という流れをとればよいでしょう.

しかし,このアルゴリズムでは迷路の形状によっては一時的なゴールが更新されるたびに同じ経路を往復してしまい,時間を消費する割に,情報量が増えないという問題が発生します.

 

そこでこの問題を解決するため,未知区間優先歩数マップを作成し,この考え方を一時的なゴールへ向かう探索(4の動作)に適応させます.

するとすでに通っている区間を避けて移動しようとするため,同じ経路を取りづらくなり,多少遠回りしますが,新し壁データを収集しながら移動します.

この未知区間優先歩数マップの実装は直進優先のようにパターンに応じて更新する歩数を変更すればよいでしょう.

BIJELAでは一時的なゴールへの移動に使う歩数マップを直進優先と未知区間優先をハイブリットさせることで既知区間加速を有効に使いながら,無駄な往復を繰り返さないように工夫しています.

この直進優先と未知区間での重みをいじることで経路は変わってきます.

色々試してみる必要があると思います.

 

まとめ

さてこれでBIJELAに実装していた探索アルゴリズムの紹介は終了です.

 

このアルゴリズムの欠点としては,足立法の経路が出ることは確約されていますが,最短経路を別のアルゴリズムで出そうとしたときに,欲しい壁が未知だとその経路が走れなくなってしまいます.

そんな問題を解決できるのが全面探索ではないでしょうか.

僕は実装しないと思いますが....

便利であることは疑いようがありません.

 

一般的な足立法探索しか実装できていない方,ぜひ探索アルゴリズムいじってみてください.

楽しいですけれど辛かったです.

 

おわりに

去年の技術交流会の内容を書き直してみました.

なんとか読める記事になっているでしょうか?

間違いなどあればご指摘いただければ幸いです.

 

今年の機体や大会の振り返りもやりたいですが,あまり長くしたくないのでまたの機会としましょう.

 

また,この記事には自分が実装した機能しか書いていませんが,まだまだ工夫できる点はあると思います.

新しく実装したい機能もいくつかあるのですが,これらは実装してうまく動いたときにまた紹介できればと思います.

来年は最短経路導出もいじっていきたいと考えています.

そのためにも迷路シミュレータなど欲しいですが,卒論などですぐに身動きが取れず悲しい.

 

また,今年未知区間加速やクラッシュからの自動復帰を実装していた「けりさん」のマウスを見てすごいな,と心から感じました.

kerikeri.top

自分もけりさんのように頭のいいマウスを作れるよう努力していきたいな,と感じました.

 

明日の記事はayataka2591さんの「今年のマウスまとめ」です.

お楽しみに!

それでは

 

 

 

 

 

 

 

忙しい忙しい(ほんまか?)

みなさんお久しぶりです.

 

しばらく更新してなかったのですが,友達がブログを開設して「おい,書けよ」と煽られてしまったので少しだけ書こうと思います.

↓↓↓

rennoi.hatenablog.comシャレオツなブログやな~

 

近況報告になりますのでマウスの話はほとんどないです.

 

  • マウス合宿の話

7/6-7でマウス合宿が早稲田大学WMMC主催で開催され,参加してきました.

ss-sholaw-wmmc.hatenablog.com

個人的には走るマウスもなく申し訳ねぇって気持ちでしたが,いろんな方とお話ができてとても楽しむことができました.

運営してくださったWMMCの皆さん,素晴らしいイベントを本当にありがとうございました.

お疲れさまでした.

 

  • 研究室の話

今年の3月から研究室配属になり,信号処理系の研究室に配属となりました.

第一希望の研究室でしたし,同じく希望していた友人達も一緒に入れたのでとてもよかったです.

が,うちの研究室は同学科の研究室の中では真面目で忙しい部類に属しています(と思っています)

そのため,なかなか思うようにマウスの進捗が産めていません.

が,純粋に忙しいからではなく集中力不足でグダグダやっているからという気もします.(タイトル回収)

ただ,8月末にかけて忙しいのはマジなので身体を壊さない程度に頑張ります.

落ち着いたら温泉行ってサウナ入って水風呂に入って無敵になりたいですね.

(サウナ→水風呂出来たことないのですがリベンジしたい)

 

 

  • マウスの話

忙しいと思っている中ですが,時間ができたらマウスの設計をしていました.

今年はハーフ(マイクロマウス)に初挑戦しています.

オリジナリティをもってマウスを作りたい気持ちはあるのですが,中々そうもできないので,1作目と言い訳しながら急ぎながら作っています.

(あまり凝りすぎても進まないとどうしようもない,と思ってる人間なので)

先日研究室に泊まった時に配線ゴリゴリやって発注した基板&部品が届いたので,また時間を見つけてはんだ付けしていきたい所存.

ミスがないといいのですが・・・

f:id:kt33-JASALMA:20190805215501j:plain

新作基板

ちなみに今年はインドネシア語です.

 

 

少しはんだ付けして問題なさそうなら3Dプリントも発注しなくては

お,お金がかかる...

 

 

  • その他

8月19-20でMice夏合宿です.

今年は千葉の上総一ノ宮という所で開催らしいです.

楽しみです.

そこで圧倒的進捗が産めたらいいな.

 

東日本大会まであと1ヶ月しかないってま.?

もうエントリー開始してるし・・・

 

厳しい・・・

 

書きながら思い出しましたが,Mice技術交流会で発表した探索法の話もブログにまとめようと考えていたのですがすっかり忘れていました・・・

もし興味があるという方がいれば「書けよ」と圧力かけてください.

といっても新作マウスもやりたいので書くかはわかりませんが.

 

 あ,このまえ3つ(4つ説もある?)の花火大会を同時にみて「ほーん」って気持ちになりました.

 

 

現実逃避で書いてましたが,締め切りが近いタスクがあるのでそっちに戻ります.

相変わらず,殴り書き雑記事ですがここまで読んでくれた方,ありがとうございました.

また大会でお会いできるのを楽しみにしています.

お互いマウスがビュンビュン走ってるといいですね・・・_(:3 」∠)_

 

 

Nucleoボードをぶった切って書き込みとUART通信した

手を滑らせて秋月で買ったNucleo Board(F411)をST-LINK部分とSTM32の部分に分割してしまったのでその状態で書き込み(デバッグ)とUART通信した話についてです.

 

 

f:id:kt33-JASALMA:20190212212510p:plain

ちゃんと公式のドキュメントに記述あるからね

 

 はじめに

 この記事では割らない状態で書き込みとUART通信が出来ている前提で話を進めていきます.

まだの方は

などを参考に頑張ってみてください.

 

環境

OS Windows10
IDE TrueSTUDIO
デバッグ構成 J-LINK(SWD)
Nucleo STM32F411RE
外部電源 9V乾電池

 

分割

 うっかり机の上から落としたくらいでは割れないので頑張って切ります.

今回は部室のバンドソーでカットしました.

 

諸々の処理

Nucleoのデータシートからデバッグ用のピンはCN4であり,その割り振りは以下の通りです.

f:id:kt33-JASALMA:20190212215445p:plain

デバッグコネクタ

ここで6pinのSWOは使用していない(理解してないので使えない) ので無視すると以下のようになります.

Pin ボードのPin 名称
1 CN7-16 3.3V
2 CN7-15 PA14
3 CN7-20 GND
4 CN7-13 PA13
5 CN-14 RESET

 (ただし,3.3V,GNDはボード内の同じ機能の他のピンでも問題ないはずです)

 

また,Nucleoボードはついてるジャンパや0Ω抵抗のありなし(Solder brige)を変更することで配線や機能を変更することが出来ます.

今回は大きく分けて3つの変更が必要なのでまとめていきます.

1つ目

ST-LINKのボードに載っているCN2のジャンパ2つを取り外す.

これによってCN4のSWDのピンが有効になるっぽい(?)

 

2つ目

JP5のジャンパがpin1とpin2にセットされているのでこれをpin2とpin3にずらし,外部電源(VIN or E5V)の入力を有効にする.

 

f:id:kt33-JASALMA:20190214140508p:plain

外部電源

今回は9Vの電池を使っているのでCN7の22,24pin(GNDとVIN)に電池を接続しました.

 

3つ目

これはUSART2で使用している信号線をCN10の35,37ピンまでつなぐのに必要な処理です.

ボードを分割しているときには意味がないような気もしますが,SB13,14は開放するべき,との記載があるので一応0Ω抵抗を外しておきました.

また,USART2の信号線としてCN3のTX,RXピンとCN10の35,37ピンを接続します.

TXとRXがクロスするように接続しなければいけないので注意してください.

 

実行

 上に記したように接続したら,今までできていたのと同じようにデバッグを実行したら書き込みができると思います.

またUSART2も繋いでいればこちらも使えるのでprintf文なんかが使えるようになっていると思います.

 

注意

CubeMXでは今回使用したNucleoボードのUSART2はデフォルトで有効になっており,このボーレートは115200Bits/sに設定されています.

そのためこれを弄っていないならTera Termなりターミナルなりの設定もこれに合わせてあげる必要があります.

ここでトラブルが生じました.

分割する前は115200のまま通信が出来たのですが,分割した後,ケーブルを使って接続するとこの設定では早すぎるのか通信できなくなってしまいました.

この設定を9600くらいにすると通信できたので,まあきっとそういうことなんだろうな,と思います.

 

その他

 以下適当なことです.

 

CN4の1pinはターゲットデバイスの電圧で今回は3.3Vです.

またST-LINKも同様に3.3Vで駆動しているのでこれを活用してみようと思います.

ST-LINKのボードに存在するJP1の左側(USB-miniの端子じゃないほう)のピンが3.3Vなのでこれを繋ぐ.

→問題なく動く

 

またCN4の5pinがNRSTでSTM32のRESETと繋いでいますがこれも外してみる

→なんか知らんけど動く

 

こうするとマイコン本体との接続にはGND,SWCLK,SWDIO,TX(USART)の4本で事足ります(←ほんとにぃ~?)

 (※USARTは一方向しか使わないので1本にできる)

 

正直このNRSTの扱い(マイコンの書き込みの仕組み)に関してはちゃんと理解できてないので,何かあれば気軽にご指摘お願いします....

 

近況報告

このままいくとまたブログを書かなくなってしまいそうだったので雑にブログ更新したいと思います.

 

振り返ってみると元日の段階ではすでに回路図の作成が始まっていて,1/9にはSTMマイコンでPWMの出力が出来ていることがわかります.

 

 

 

が,2/6現在,回路図は終わらず,3DCADも一切手付かずです.

ま,まあテストもありましたしね....

 

 ...??ゲーム...??

 

まあなにはともあれテストも終わり,無事冬休みに突入したのでここから少しづつでも作業していけたらと思っています.

幸いテスト期間中に買ったエスコンも2,3周してひと段落したので少しは集中してマウスに打ち込めるかと思います.

 

今ハーフの回路図が発光回路とUIまわり,マイコンのピンの割り当て以外の部分は終わったので,残りはその他の部分の回路と3DCADの設計です.

足回りやエンコーダなどクラシックとは変わってくる部分も出て来ますが,できるだけ早く終わらせたいです.

四月になって新入生が入ってくると自分の作業がやりにくくなるので最低でもそれまでには基板が届いているような状況にしたいですね.(あくまでも"最低でも"ですが)

 

その他では電通大プチコンやうちの技術交流会も控えているので楽しみです.

 もっとも技術交流会は発表しないといけないのでその準備も進めないといけませんが....

 

 なんだか書き始めたのはいいものの,ブログを更新するだけの記事になってしまいました

少し先の話にはなってしまうけど新入生,沢山入ってくれるといいな~

 

あと最後にですが,STM32のF413の48ピンを使おうと思っているのですが,データのやり取りはSWOとUSARTとどちらがいいんでしょう

おすすめあれば教えてください

BIJELAというマウス(2018年終了のお知らせ)

もう年末ですね.

 

みなさん今年はどんな1年でしたか?

 マウスがビュンビュン走った人や,残念ながら全日本に出れなかった人など様々だと思います.

個人的には部長をさせていただき,多大の方々ともたくさんお話しできていい年だったと思います.

心残りといえば,残った新入生が少なかったことですね...

すまないが現部長の活躍に期待するしかないです.

必要ならば2月にでもちょっとした勉強会(座談会)を開いたりしたいな,と思います.

何か意見などあればください.

 

さて,前置きはここまでにして,今日は今年作成したクラシックマウスのBIJELA(ビエラ)についてまとめようと思います.

f:id:kt33-JASALMA:20181229143031p:plain

部内写真集向けに作ったよ

基本データ

よくある1717を使った変則4輪・吸引マウスですね.

部品リストなどは以下に示す通りです.

機体名 BIJELA
全長 [mm] 90.0
車幅 [mm] 70.0
重量 [mm] 108.0
マイコン RX631 64pin
ジャイロ ICM-20648
壁センサ ST-1KL3A+SFH4550
モーター 1717T003SR
エンコーダー IEH2-4096(付属)
モータードライバ TB6614
ピニオンギア 0.5M 11T(kkpmo)
スパーギア 0.5M 40T(DS成形平歯車)
ベアリング F682zz (Amazon)
ホイール外径 [mm] 19.5
タイヤ ミニッツレーサータイヤ20度
吸引モーター 10CL-1801-DJK
吸引ファン径 [mm] 25.0
Li-po Hyperion 180mAh 2S

回路図や配線図はこの記事です.

BIJELA以外の候補,BALTAとBIANCOだったんですね...なんだか懐かしい

3Dデータはこんな感じ. 前の記事でEAGLEとFusion360連携させて部品干渉確認しような!とかほざいてたやつが見事にやってなくて笑いました.

だから干渉したんやぞ,という気持ちです.

 

雑な感想など

 部品はモーターマウント(POM)だけ部室CNCで切削し,ファン,ファンフレーム,ホイールはDMM.makeの3Dプリントですべてナイロンで作成しました.

周りの人の話や体感から,工作精度として

  • 切削>3Dプリント(ナイロン)

というのを強く感じました.

が,積層方向が問題なければクラシックマウスくらいなら問題なさそう(...?)

(ホイールが偏心しているような気もしましたが)

モーターマウントの精度が良かったおかげなのか,重心がうまい具合だったのかわかりませんが,4点接地がきれいに決まってたのはいい点でした.

 

あと,CAD上では存在しているセンサーホルダーなのですが,1つだけ切削で作り,はんだ付けの際の冶具として使用しました.

全部作ってもいいかな,と考えてはいたのですが「まあ,いっか」となったので未採用となりました.

 

今回のマウスの目標として「吸引」とういう実績の解除を目指し,ファンが小さい気はしながらも,配線や実装の都合上これでいいや,と考えファン径25mmとしました.

が,実際に吸引すると70gくらいが限界で,添える程度の効果しかなかったのかなと思います.

というかそもそもジャイロ,角速度制御あたりのベースがしっかりしておらず,しっかりとした制御が出来ていませんでした.

これを吸引でごまかしていたような形になっていたので来年はもう少し基礎をしっかり固めないとな,と思います.

が,解決策が思いついてないのでどうしようね.

 

また,BIJELAには大きな音の出るスピーカー(UGCT7525AN4)を搭載していたのですが,これも本領発揮させてあげられなかった(優先順位が低かった)ので少し残念です.

また,サイズ的にもこれが結構配線を苦しめていたので来年はもっと小さいものにしようと考えています.

 

BIJELAはハード的には何もひねりのないつまらない機体なので少しでも探索アルゴリズムや経路導出などのソフト面を改良しようと考えていました.

実際には経路導出は何もいじれませんでしたが,探索は一度目の探索で確実に通りたい経路を見れるようになったのでこれはよかったです(全面探索ではない).

 

壁制御に関しては中部地区大会までP制御のみだったのですが,全日本前にD制御を追加し,PD制御としました.

これによって高速域の走行が安定するようになったと思います.

また,これも直前になって櫛対策の制御を追加しました.

...が,考えが浅すぎたのか吸い込まれっぽい挙動したり,発散したような挙動となり改悪だったな,と感じます.

ここも来年の課題ですね.

 

パラメータ

探索 加速度[m/s²] 7
速度 [mm/s²] 600
最短(直線) 加速度[m/s²] 15
速度 [mm/s²] 3500
斜め 加速度[m/s²] 10
速度 [mm/s²] 35
ターン 重心速度 [m/s²] 1.2(1.3)

ここで示している最短のパラメータはすべて安定(笑)のパラメータでこれ以上のギャンブルみたいなのもいくつかあります.

実際の大会で走ったものもありますが,まあ誤差みたいなもんなので省略です.

改めて「吸引してる割にターン遅すぎね?」って感じました.

 

来年の予定

 来年はクラシックとハーフと2種類のマウスを作りたいと考えています!

が,正直3月に配属が決まる研究室に大きく依存しますし,そもそも厳しい気がしているので優先度はハーフ>>クラシックとし,最低限ハーフの感想を目指したいと思います.

クラシックはBIJELAのマイナーチェンジ(1717使用),ハーフは非吸引の4輪にしようと考えています.

詳細はここでは書かない(というかほぼ未定)です.

 

個人的に創造性や独創性がなく,悲しくなってくるのですが,毎度のごとくハーフはありきたりな感じ,クラシックはファンを少し弄ってみようと考えています.

 

それでは,2019年が皆様にとってより良い一年となりますように...

よいお年を!

EAGLEとFusion360の連携(AUTODESKの犬になろう)

この記事はMice Advent Calendarの14日目の記事です.

 

先日Miceの部長職を退いた老害です.

昨日の記事は現部長のmakoto君のセンサー値を距離変換する話でした.

来年は自分もセンサー値を距離化したいな,と考えているので参考にさせていただきます.

大会前も後もいつも部室にいる怖い(強い)後輩で,来年彼に負かされそうなのでそうならないよう頑張りたいですね.

あ~,暖房が効いた部屋でブログ書いてるので”アイスクリーム”でも食べたくなりました.

 

では,以下本章です.

 

 AUTODESKの犬になろう

はじめに

突然ですがみなさんは3DCAD,回路CAD何も使っていますか?

 

Miceの中では3DCADはFusion360が主流でInventorが少々,回路CADはKiCadとEAGLEが半々くらい,といった感じでしょうか.

その他にもNseさんが紹介しているOnshapeなど様々な種類のものが存在しています.

 

自分はタイトルからわかるようにFusion360とEAGLEを使っています.

(↑一度KiCadをインストールしたことがあるのですが何もわからず挫折しました.)

 

正直,EAGLEでもKiCadでも個人が好きなのを好きに使えばいいと思ってはいるのですが,今回の記事ではAUTODESKの犬になろう,ということでEAGLEとFusion360の連携などについて記していきます.

 

ちょうどタイミングよくelecrowでクリスマス基板の無料製造を行っているので部室で見たことあるクリスマス基板をパクっtt参考にしてクリスマスツリーを作成します.

 

この記事において, 設計の手順としては

  1. 回路設計(or基板外形の設計)
  2. 基板外形の設計or(回路設計)
  3. 基板外形をFusion360からEAGLEに引き込む
  4. EAGLEで配線
  5. 配線の結果をEAGLEからFusion360に渡して干渉などのチェック

を想定していきます.

 

回路設計

回路わかんないマンなので適当な回路を作成しました.

(回路がおかしいとかあるかも)

f:id:kt33-JASALMA:20181211011125p:plain

回路図

今回程度の回路では特殊なもの使ってないので別ですが,マウスの回路図作成ではRSコンポーネンツのページから素子をダウウンロードして使っています.

使い方の解説はここ

とても便利なサイトですが使う際には,念のためピン配置など各自でチェックしたほうがいいと思います.

回路図の作成が終わったら忘れずにERC(Electric Rule Check)を忘れずに行いましょう.

繋ぎ忘れたところなんかを教えてくれたりくれなかったりしてくれると思います.

 

基板外形の設計

次に基板外形の設計です.

Fusion360でクリスマスツリーの外形をスケッチします.

f:id:kt33-JASALMA:20181211011928p:plain

スケッチ

(普段コマンドはl,c,d,i,j,eくらいしか使えてないので,便利なコマンドあれば教えてください)

 

スケッチが完了したらこの外形をEAGLEに渡せるようにひと手間加えます.

  1. スケッチを終了さる
  2. 「作成」の一番下にある「PCBを作成」を選択
  3. 「PCBプロファイル」を実行し,「プロファイル」としてスケッチを選択,「厚さ」を設定
  4. OK

以上です!

あっという間ですね.

f:id:kt33-JASALMA:20181212134205p:plain

PCBを作成

f:id:kt33-JASALMA:20181212134257p:plain

設定を少々

f:id:kt33-JASALMA:20181212134422p:plain

出来た

このように緑の板になったら成功です.

3.の「PCBプロファイル」で選択できる面はスケッチであり,ボディは選択できないので注意してください.

Fusion360→EAGLE

ここからは配線を行うための準備としてFusion360で作成したPCBをEAGLEに引っ張って来ます.

操作は基本的にEAGLE内で完結します.

f:id:kt33-JASALMA:20181211012735p:plain

ボード図

はじめにボード図を開くと上のような画面になると思います.

注意:一度ボード図(board)を作成し,配線作業を開始した後に回路図(schematic)との同期が切れると悲惨なことになってしまうので注意してください

回路図とボード図を作成した後にどちらか片方のみを開いた状態で編集してしまうと同期が切れてしまいます.

なので作業するときはどちらのウィンドウも開いておくように心がけましょう.

 

本題に戻ります.

ボード図のウィンドウ右側にFusion360の文字が見えると思いますのでここをクリックし,「Pull from Fusion」を選択します.

f:id:kt33-JASALMA:20181211014531p:plain

Fusion360から引っ張てくるよ

そのあとはFusion360でPCBに設定した部品を選択してPullしてあげると外形が取り込まれます.

確か手順はこんな感じ

 Link to an existing Fusion 360 design
   ↓next
 作成しておいたPCBを選択
   ↓ok
 pull from fusion

 

f:id:kt33-JASALMA:20181211014807p:plain

取り込めた

このとき,Fusion360でPCBを作成する際に座標系がずれていたりすると向きがおかしくなったりします.

やり直すなり,頑張るなり,我慢するなりしてください.

 

EAGLEで諸々

左のほうで固まってる部品たちをいい感じに配置します.

だんだん見配線を示す輪ゴムみたいなのがぐちゃぐちゃになってきますので,気になったらratsnestを実行し,輪ゴムをピンッとさせましょう.

f:id:kt33-JASALMA:20181211015019p:plain

適当に部品配置します

部品の配置が終わったら配線を行います.

せっかくEAGLEには自動配線の機能があるので今回はこれを使用します.

 

まずEdit→Net classesで場所によって配線の太さを設定します.
今回の場合は適当ですが,本来は大電流が流れるところを太く,雑な信号線なんかは細く設定します.

また,忘れる前にデザインルールの設定を行います.

Elecrowの注文ページに飛び,「Eagle Design Rule」をダウンロードし解凍,EAGLE内のDRCを選択し,ダウンロードしたファイルをロードします.

これでEAGLEがelecrow仕様でデザインルールのチェックを行ってくれるようになります.

自動配線の結果が↓です.

f:id:kt33-JASALMA:20181213145240p:plain

自動配線

配線が終わり次第,回路図でERCを実行したのと同様にここでもDRCを実行し,問題が出ないか確認しましょう.

 

本当は配線は直角に曲げないほうがいいとかベタGND張るとかいろいろ気を付けるべき点はあるのですが,今回はそんなもん知ったこっちゃないので修正なしです.

 

また,今回初めて外部の画像データをシルクにしました.

その方法をここで書くとまたまとまりがなくなりそうだったので,部室であったときにでも聞いてくれればと思います.

気が向いたらブログで書くかもしれませんが多分書かないですね.

 

EAGLE→Fusion360

 最後に配線したデータをFusion360に返してあげます.

Fusion360→EAGLEが出来たあなたならもうほとんど説明なしで大丈夫だと思います.

一応書いておくと以下の3手順だけです.

  1. ボード図の右側のFusion360をクリック
  2. Push to Fusion...
  3. Push

とても簡単ですね.

これでFusion360のほうのデータも変更され,配線,シルク,部品などが確認できるようになります.

f:id:kt33-JASALMA:20181213150313p:plain

完了

f:id:kt33-JASALMA:20181213150343p:plain

シルクも見れるよ

以上でEAGLEとFusion360でのデータの受け渡しについての説明は終了です.

ここまでお読みいただきありがとうございました.

このように同じAUTODESKの製品であるEAGLEとFusion360を使うことでとても簡単に相互のデータ移動が可能になります.

データのやり取りをした後,Fusion360で部品の干渉チェックを行えば,実際に基板が届いてから「あれ,これやばくね?」みたいなことが起こる可能性は低くなると思いますので,ぜひ活用してください.

どうですか?AUTODESKの犬になりたくなりましたか?

 

参考文献:マーティーの工房日誌: EAGLEからFusion360 CAMへ引渡しの格闘[FUSION SYNC]

 

さて,明日はnano大先輩の「ステッパーハーフのススメ」です.

お楽しみに!