fc2ブログ

Embedded coderを使おう!


こんにちは

今回の内容は「embedded coder」を使ってSimulinkによるマイクロマウスの制御プログラムを作ろう!です。
最初は一つ一つの設定の意味とか詳しく解説しようと思ったのですが、設定項目が多いので
動画で許してください(笑)

「embedded coder」はMathworksによるマイクロマウスへのライセンス提供に含まれております。
インストールされてなければ、インストールしていないツールボックスをすべてインストールしましょう!

「embedded coder」を使った制御プログラムの作成は下記の流れとなります。
③については、⑤で結果に差異が出た場合に行えばよいと思うので、飛ばしていいと思います。
※下の①や②の番号と第一章、第二章は対応しないです。

①Simulinkでモデル作成
②モデルをビルドし、auto codeの生成
③visual studioやs-fuctionでauto codeをコンパイルし、simulink上の実行結果と差異がないかの確認
④マイコンのプロジェクトにauto codeを組み込みビルド
⑤マイコン上で実行し、simukink上の実行結果に差異がないかの確認


第1章:初期設定,ビルドの確認



■(00:00~01:00)プロジェクトを新規に作り、簡単な入出力を作る。
・auto codeの関数の入出力設定をするために、事前に入出力を作る必要がある。

■(1:00~1:30)信号の型名の要素数の表示設定、信号の型の設定
・組み込みではdoubleでなくfloatを使用することや、とりあえずintではなくcharやshortのように型を正しく設定する必要があるのでsimulink上でも型を指定します。また、型をすぐに確認できるようなsimulinkの設定を行います。

■(1:50~9:30)コンフィギュレーションパラメータの設定
・細かいことは割愛しますが、重要な点だけ。
・動画上で行っている設定はデバッグ用のcodeを出力する設定です。モデルとコードの整合が取りやすく可読性は良いですが、RAM効率、実行効率は良いとは言えません。この設定で十分マイコンで動くなら良いですが厳しい場合は、コード生成->最適化にて設定を調整することでRAM効率、実行速度を向上させることが可能です。
・一番最初にコード生成にて、シミュレーションターゲットファイルのを「embedded coder」に設定することが重要です。「embedded coder」に設定しないと出てこない設定項目があるのでい一番最初に行うことをお勧めします。
・最初に簡単な入出力を作成しましたが、コード生成->インターフェース->モデルの関数を設定にて、関数の入出力を設定できるようにするためです。

■(9:30~11:00)ビルド&RAM容量とauto codeの確認
・Ctrl+Bでビルドができます。
・ビルドするとレポートが出力され、必要なRAM容量が解析されます。
・TestAutoCode_Pという構造体変数にgainの設定値が格納されていることがわかります。今の設定だとRAMに確保される状態です。gainを実行中に変更したい場合はこのままでも良いですが、正直constに設定したいところです。(次にその方法を紹介します)

■(11:00~11:30)const、volatileの設定
・コード->C/C++コード->コードパースペクティブでのモデルの構成で設定を行います。(あれれ、おかしいぞ、設定ができない。次の動画へ続く)

第2章:変数の修飾子(const,volaitle)の設定,サブシステムの設定



■(00:00~00:30)const、volatileの設定(続き)
・Embedded coder ディクショナリてのを一回開くと設定できるようになるそうです。
・お好みでvolatileとconstを設定しましょう。

■(00:30~01:30)再度ビルドし、volatile、constになっているかを確かめる
・volatile constでgainの常数が格納されていることを確認。

■(00:30~05:30)サブシステムの取り扱い
・題目とは関係ないですが、情報表示->自動生成名の非表示のチェックを外すのが良いです。
・Atomicサブシステムとして扱うにチェックがないと、サブシステム含めすべてが1つの関数にベタっと書かれます。
・Atomicサブシステムとして扱うにチェックを入れ、関数のパッケージ化を「再利用できない関数」に、そのほかを適当に設定すると、サブシステム名(今回はSybsystem)のcとhファイルが作られ、構造化されます。(なんで計算結果をグローバル変数で渡すんだろう...)

第3章:バスオブジェクト(構造体)
・3:30~4:00のエラーは見逃してください...操作ミスです。



■(00:00~01:25)バスオブジェクトの作成
・入出力が増えると、いくつかの信号をまとめて構造化したいと思います。C言語の構造体がSimulinkではbusに当たります。
・モデル内のみのバスは事前定義が不要ですが、モデル全体の入出力となるバスにはC言語のように事前の定義が必要です。
・バスの事前定義にはバスエディタを使用します。(編集->バス エディタ)
・バスエディタでは、各エレメンツの型を次元(配列の要素数)を設定します。
・バスエディタで変種すると、ワークスペースに変数が出力されます。ctrl+Sをしても保存されないことに注意です。変数を直接名前を付けて保存しましょう。

■(01:45~05:10)バスオブジェクトにしたがったモデルの作成
・In1の出力をバスエディタで設定したバスオブジェクトとします。
・Out1も同様に設定すべきですが、ここでは忘れています(信号が1本だったのでエラーが出ていない)

■(05:10~05:20)バスオブジェクトがワークスペースにない場合
・モデル内にバスオブジェクトを設定したのに、ワークスペースにバスオブジェクトが存在しないとエラーが出ます。モデル内ではワークスペースにバスオブジェクトを見に行くことがわかります。

■(05:20~06:50)バスオブジェクトの自動読み込み設定
・先ほどバスオブジェクトを”test_bus.mat”で保存したので、そのmatファイルを読み込むmファイルを作成し、set_simulink.mで保存します。
・作成した、mファイルをモデルを初期化する際に自動実行するように設定を行います。ファイルをファイル->モデル プロパティ->モデル プロパティで出てくるウィンドウのコールバック->InitFcnにset_simulinkと書くと、set_simulink.mが自動実行されます。

■(05:20~08:20)信号名とバスオブジェクトのエレメンツ名の不一致
・先ほど忘れていたOut1にバスオブジェクトを設定します。
・信号名とバスオブジェクトのエレメンツ名と異なる状態でビルドするとエラーが起きます。
・信号名を修正し、エレメンツ名と同じとするとエラーが解消されます。

第4章:マイコンへの組み込み



■(00:00~01:50)作成したモデルのSimulink上でのシミュレーション
・時間刻みを変数DTとし、set_common_param.mで保存します。
・set_common_param.mをset_offline_param.mで呼び出すようにします。
・simulink上でのシミュレーション終了時間をSIM_ENDとし、set_offline_param.mで保存します。
・simulink上でのシミュレーションするための信号を、set_offline_param.mで保存します。
・先ほどのように、InitFuncのコールバックにてset_offline_param.mを呼び出すように設定します。
・mファイルよりこのモデルのシミュレーション行いとりあえず結果が出ました。

■(01:50~06:21)ビルドし、マイコンに移植
・マイコンに移植するようのモデルを開きビルドします。このモデルにあるサブシステム「ControlModel」は先ほどシミュレーションした”オフライン用”のモデルと共有化されています。(共有化の方法はまた後程)
・生成されたファイルはたくさんありますが、必要なのはert_main.cを除いたhファイルとcファイルです。これらのファイルをマイコン用のプロジェクトに登録します。(動画では登録済み)
・インクルードするヘッダーファイルは1つでよく、simulink名.h(この場合はtest_auto_code.h)です。
・入力と出力用の構造体はsimulink名_types.hにあります。この構造体の実態をどこかで確保します。
・起動時に1回だけsimulinl名_initialize()を実行します。
・制御周期毎に入出力用の構造体ポインタを引数として、simulink名_step(&output,&input)を実行します。(動画ではwhileループ。本当は割り込み関数が良い)
・動作確認のため、入出力用の構造体のメンバの値をUARTで出力するようにする。

■(06:21~07:05)書き込み&実行
・tera termでurat経由でマイコン実行結果を取得

■(07:05~10:00)マイコンでの実行結果とsimulinkでの実行結果を比較
・tera termで取得できた文字列をcsvとして保存し、matlabでcsvを配列として読み込む
・simulinkの実行結果とcsvから読み込んだ結果を比較し、おおよそ一致していることを確認(グラフを重ねるべきだが面倒なので割愛)


以上の流れを行えばとりあえずsimulink上でマイクロマウスの制御ロジックの構築はできると思います。
下記については気が向いたら書こうと思います。
・マイコン用のコード生成用のモデルとシミュレーション用のモデルの共有方法、
・auto codeでインクルードされるを自作関数に置き換える方法(simulinkに機能がある。)

では、良きモデルベース開発を~

そうそう、ハクメイとミコチってアニメ化された漫画ありましてですね、おすすめなので是非!!!




ハーフマウス2017の足回り解説

この記事はMice Advent Calenderの(9 - 1)日目となります。

ただいま12月8日26時.
大事なことなので,もう一回.
ただいま12月8日の26時です!


今年製作したハーフマウスについて書きたいと思います.
機体は完成したものの,大会で走らすことはできなかった私のマウス歴史上最大の黒歴史ではありますが,来年への足がかりは得られたと思います.

ハーフ2017_全体写真


今年のハーフマウスは,去年の特に良くなかった足回りのカイゼンに重点を置きました.

カイゼン?何でカタカナなんでしょう.なんでしょうね...


去年と今年の足回り部品の比較.
・モータ 変更無し:mk06-4.5
・ピニオン  変更無し:m0.3z9
ベアリング  変更有り:DDL415⇒DDL310
・スパー 変更無し:m0.3z36
磁石 変更有り:φ2.0-h2.0⇒φ3.5-h1.5


基本的な構造は変わらず,磁石を大きくし,軸とベアリングを小さくしました.
大会会場で見せたときに去年と同じといわれたのはショックであったぞ!(まあ,その通りだけど...)

ハーフ2016足回り
ハーフ2016足回り

ハーフ2017足回り
ハーフ2017足回り2



去年の良くなかった点
・重心速度がとにかく振れる(タイヤ1回転を1周期とした振れ)
・4つのタイヤが平行でない

それらの原因と対策が以下


①エンコーダ用磁石の固定が甘い.

  ⇒磁石が取れる.
    ⇒タイヤ角度が読み取れなくなる

  ⇒磁石が傾き,磁石の回転軸が振れる.
    ⇒重心速度の測定値が振れる.

  圧入の嵌めあいの最適化,圧入部分の長さを増やすで対処


②スペーサーに直接磁石を嵌めこむ構造

  ⇒スペーサーの内径と磁石の外形が若干違い(直径で0.1mmくらい?),磁石の回転軸のブレがあった.
    ⇒重心速度の測定値が振れる.

  スペーサーに直接磁石を嵌めこむのではなく,磁石を3Dプリント部品に圧入し,その3Dプリント部品にさらにスペーサを圧入するように,3Dプリント品を仲介することにより対処

ハーフ2017_エンコーダ用磁石固定
左2つが2方向から見た磁石+スペーサー+カラーのアセンブリ,一番右が磁石を除いたアセンブリ

③モーターマウント(3Dプリンタ品)に反りが合った.

  ⇒4つのタイヤが平行にならない
    ⇒走行に影響?まあ,見た目が気持ち悪い

  モータを圧入するようの穴付近の強度が弱く,その弱い部分が特に反っていた.
  なるべく弱くなる部分を作らないようにすることで反りを防止できる.

  モータ圧入部分のマウントの厚みを増やすことにより対処

ハーフ2017_足回り反り対策


④エンコーダ用磁石が小さすぎる
 
  ⇒磁石の軸の振れの影響を強く受けるようになる
    ⇒重心速度の測定値が振れる.

  エンコーダIC(AS5147P)の資料を読んでいると,中心から半径1.1mmの位置にホールセンサーが付いているらしい
  磁石径2mmって小さすぎるやん...(´・ω・`)

  磁石径を2mmから3.5mmに変更で対処.

⑤エンコーダICの中心と磁石軸の位置決めができない
  ⇒エンコーダICの中心と磁石軸がずれる
    ⇒重心速度の測定値が振れる.

  モータマウントにエンコーダICの形状に合わせた溝を掘り,そこにICをはめ込むことにより位置決めを実現し対処

ハーフ2017_エンコーダICの位置決め



これらのカイゼンにより,磁石が外れることなく,エンコーダの振れもかなりカイゼンされました.(データ載せたい...)

これからハーフマウス作ろうとしている人や,自作の磁気式エンコーダを作ろうとしてる人の参考になればなと思います.


そうそう,最後に私のハーフの足回りのコンセプトを書いておきましょう.

・接着は使用せず,圧入のみ.これは,部品が破損した時に交換しやすいからです.
・シムリングを使わない.これは,内径1mmで軸受けに当たらないシムを探すのが難しいという理由でもありますが(笑)3Dプリント品に軸受けの回転部に当てる肩を作っておくことでシムリングが必要ない構造となっております.(まあ,ごく一般的な機械設計の手法ではありますが...NC加工でマウスを作る場合は難しい.3Dプリンタの複雑な形状でも簡単に作れるという特徴を生かした設計です)

ハーフ2017_3Dプリンタ品の肩




来年こそは全日本大会に...

では!

ブラシレスDCモータ奮闘期Vol.1 - 強制転流

こんばんは

学部生は,期末テストや卒論発表が終わり,ひと段落したところでしょうか.
進級や卒業が決まり「いぇ~い♪」な方や,留年が決まり「マウスやるぜ!いぇ~い♪」な方がいることでしょう(苦笑

社会人になってからは,留年してでも1年学生やりたかったと,叶わぬ願いに思いをはせる方もいるそうですよ?(誰に?とは言いませんがw)

まあ,私は明日に修論発表会を控えているので,ブログなんて書いてる場合じゃないんですがね(笑)

さてさて,本題にうつりましょう.

私の中で新たなプロジェクトを立ち上げました!
散々twitterでつぶやいているので,そちらを見ている方はお察しかもしれませんが...
その名も「BLプロジェクト」否,「BLDCプロジェクト」!

ブラシレスDCモータの駆動方法を学び,回してみよう.そして,ブラシレスを使った”何か”を作ろうなプロジェクトです.

ブラシレスを使った作りたいものは実はもう決まっておりまして,3つあります.

・マイクロマウスの吸引ファン駆動装置(センサレス駆動)
・ブラシレスジンバル(強制転流?)
・ブラシレスモータをメインモータとするマイクロマウス(ホール素子を使ったベクトル制御?)

この3つの実現を目指し,ブラシレスDCモータの駆動にトライしていきたいと思います.
将来的には,EVカートの駆動をしてみたいなとか思ったりしてますが(笑)

まずは,ブラシレスモータを駆動するのに必要なことを考えます.

・ブラシレスモータの制御アルゴリズム
・モータドライバ

この2つでしょうか.
まずは回すことがモチベを維持するのに大切なので(笑)制御の自由度が高く扱いやすいモータドライバ(L6230)を使います.

このモータドライバの優れたところは,相補PWMがいらないところで,3相のPWMを入力するだけで駆動することができます.
このモータドライバをつかい,ブラシレスモータを回すことを当面の目標とします.

まず,強制転流で回してみたいと思います.
強制転流は,ブラシレスモータに3相交流を入力し,その時ブラシレスモータ内で発生する回転磁界に同期してモータが回る駆動方法のことです.効率は最悪らしいですが,フィードバックしないので最も簡単だと思います.

PWMを使って三相交流を作る方法はGoogle先生が詳しく教えてくれるでしょう.





マワッタヨw
便利なモタドラを使ってるので,相補PWMを生成する苦労も無いし,ハイサイドとローサイドのFETが両方ONになりFETは燃える心配が無く,思ったより簡単に回せてしましました.
作り話なしに,コンパイル一発で回りましたw(Simulink使ってるので多少ずるしてますが)

ついでに,入力する三相交流の位相をsin波状に変化させると,サーボ制御のようなことができました.



ちなみに,奥に見える青い基板が,L6230の評価基板です.NUCLEOにさせるらしいです.
回してるブラシレスモータは去年の学生大会で景品としてもらった物です.

あと,手前に見える緑色のマウスの基板は先輩の基板で,土台として使ってすみません.土下座します(笑)

次回は,ホールセンサを使った矩形波駆動をしましょうかね(実はもうできてる)

2016年全日本大会

こんばんは

全日本大会お疲れ様でした.

なぜか今年は,次シーズンの始まりを,全日本大会の終了が告げているような気がします.
来年から就職なので,学生のうちに来年の機体を作っておかなくてはという深層心理が働いているのでしょうか(笑)

さて,全日本大会の結果報告です.

クラシックエキスパート部門決勝:5位入賞!
ハーフエキスパート部門決勝:7位

IMG_1170_s.jpg

でした.
景品は賞金1万円と,Futabaのプレイマット???(上の写真に写っている黒いもの)です.

簡単に結果について.

・クラシック
去年の同じ機体「しゅべるま~」で出場しました.ハードウェア的な変更は一切無し.ソフトウェアが進化しました.
進化したのは経路導出で,最小歩数の経路から,歩数に制限を設けた全経路の時間ベース評価による経路導出を新たに導入しました.
ターンのパラメータは去年の全日本より少し速かったと思います.
また,決勝の前日に,ターンを指定した速度で曲がれていない不具合(バグというべきなのか?)を発見し,夜になきながらプログラムに修正を加えました.そのため,ターンが今までの走行より格段に安定していたと思われます.

探索は,難なく(?)既知区間斜め加速をし全面探索成功.途中のV90×nを既知区間加速で柱にカツカツあたりながらの走行はヒヤヒヤしましたが...汗. 
「しゅべるま~」は今年の全地区大会(※1)+全日本大会で全面探索をミス無く成功を達成しました!
※1)シード権が発生する大会

最短経路は経路は,南周りのV90連続を選択しました.要検証ですが,一番速い経路だと思います.
最短走行のパラメータは,今回最初からせめました.
2走目にターン速&直進加速度はMAXパラメータでした(笑)最高速が上から3番目(実質2番目)
3走目に全てのパラメータをMAX
4走目も全てのパラメータをMAX
5走目はパラメータがもうないということで辞退

前に走行した人を抜かすには少なくともMAXパラメータでないと不可能なことが分かっての戦略です.
まあ,走行は成功しましたが,抜かせなかったのですが...トホホ

今回のMAXパラメータの走行をみて,まだまだこの機体は速度が出せるのではないか?との疑惑...というか確信が(笑)
といっても,4位とは0.5秒差.まあ,MAXパラメータを上げても無理でしょう(涙

さて,来年はどうしましょう.今年中には方針を決めましょうかね.

・ハーフ
ハーフは今年の新作「しゅべるま~じゅにあ」で出場しました.
就活と海外学会準備の合間を縫って設計&発注し,9月下旬に組み立てたにしてはよくここまでできたなという感じでしょう.

探索は帰りの探索中に壁を読み間違え失敗.行きの探索データのみで最短経路を求めました.幸いなことに最小歩数経路は無事でました.帰りの探索は全面探索で,時間内に戻ってこれるとは思ってないので,6分半たつと戻ってくるようにしていました.が,たしか,3分半くらい?でこけてしまったので,あれ?時間が余るぞ?(笑)と思ってしまったのはここだけの話.というのも,私のマウスは探索で失敗することはあまり想定されておらず,重ね探索をするというモードがありません(笑)なので,迷路データを消し探索をやり直すか,行きのみで経路を求める選択肢しか有りません.後者を選択したので時間がたっぷりでした(笑).

最短走行は
2走目,直線速度,ターン速度ともに最低パラメータで失敗
3走目,直線を4/8パラメータ,ターン速を最低パラメータで成功
4走目,直線を4/8パラメータ,ターン速を最高パラメータで失敗
5走目目,直線,ターン速ともに最高パラメータで失敗

失敗要因はゴール手前の斜めで柱に当たったため.うーむ,斜め中の壁制御を入れてない罰がここできました.
一つ失敗したなと思ったことが.直進時の壁補正を切り,壁切れとジャイロとエンコーダのみで走行するモードを選択すれば良かったなと.走った最短経路では,壁補正ができる直線区間が非常に短く,ターンでのずれを壁制御で補正しようとするが収束しきれず角度がずれてしまうため,いっそのこと切ってしまえば良いという発想です.まあ,斜め中の壁制御を入れろってことですね...

今年のハーフはハーフプロト機なので,来年新作を作ることはほぼ決定しております.
まあ,どうなるかは完全未定ですが...ドウナルヤラ

さて,競技の話はここまでにしましょう.
今年も技術交流会が開かれました!

机の上に赤いマウス同士で固めて並べてたら,なぜか色別に整列させる流れにw
IMG_1083.jpg

やっぱり赤色基板はイイゾ
あ,技術交流会について何も中身のある文章書いてない...ま,いいっかʅ(◔౪◔ ) ʃ

自分は今年で3回目の全日本大会でした.
なので,最初の2回が工芸大で,全日本=工芸大のイメージだったので,違う大学で開催というのは新鮮な感じがしましたね.
新しい場所での開催でしたが,出場者に不便なく運営さえれておりました.運営の尽力あってのものだと思います.
運営に携わった方々,本当にありがとうございました.そして,皆さんお疲れ様でした!

全日本が終わったということは,次の全日本まで365日!
つまり,来年のマウスシーズンはもう始まっているのです!

では!

全日本直前

こんにちは

全日本大会前日ですね.
会社で仕事な方や,試走会でギュインギュイン走らせてる方,授業,部室で調整,移動時間など様々だと思います.

私はというと...家で「響けユーフォニアム」をループ再生しながらクラシックマウスの最終調整をしてました.(ユーフォはいいぞ!)
というのも,水曜日にクラシックのタイヤを1年ぶりに交換したので,すこし探索用のターンがずれていたためです.

最短走行用のターンは多少ずれてても良いが,探索のターンは少しのずれが命取りになるので.(少なくとも,私の今の探索時の制御では...)

↓交換する前のタイヤ.
IMG_3945_3.jpg

確か,去年の全日本1週間前に交換した記憶が...そこから交換していない...

リポも1年半使い続けたので新しくしました.心なしか吸引力が上がったような気がします(笑)

↓リポの放電特性(横軸電流,縦軸電圧)
01_1S Voltage drop

吸引ファン用のモータには電流が1A以上流れます.新旧でここまで電圧降下が違うと吸引力が上がってそうです.


なんか話が発散しそうなので,機体の話はここまで.
詳しくは全日本後にでもブログに書きましょうかね.

さて,全日本前ということで地方大会の結果を振り返ってみましょう.

IMG_3935 - コピー

振り返ってみれば,全部の地区大会に参加し,全部の地区大会で表彰されました!ヨシャ

クラシック「しゅべるま~」は,
関西 : 準優勝
草の根 : 優勝(シード獲得)
東日本 : 準優勝
東北 : 準優勝
九州 : 優勝
中部 : 三位
学生 : 優勝
北信越 : 準優勝

ハーフ「しゅべるま~じゅにあ」は,
東日本 : (R)
東北 : (7位)
九州 : 三位(シード獲得)
中部 : (4位)
学生 : 三位
北信越 : 優勝

クラシックは優勝や準優勝と好成績ですが,Queな方や赤い彗星な方,javaな方には勝てず,その方々が参加していると順位が下がるという結果でした(笑)

マウスには運要素が少ないという表れでしょうか.
来年には勝ったり負けたりできるレベルになりたいものです.

クラシックの今年の新しい点は,ハードの変更は無くソフトウェアに有ります.
去年までは歩数ベースの経路(重み無し)しか出せませんでした.
草の根大会から,時間ベースで評価する経路導出アルゴリズムを実装し,大会ごとにデバックしました.
草の根,東日本では大きなバグがあり,東北でようやくもっともらしい経路が出せるようになりました.

ハーフは,東日本1週間前から製作をはじめ,東日本ではスタートラインを切れるのみ.
東北では磁気式エンコーダーのブレに苦しみながらも何とか探索成功.
九州では始めて最短走行ができ,中部では斜め最短ができました.
が,ここまでで帰り探索中にこけており全面探索は成功することができませんでした.
学生大会前にターンを調整しなおし,全面成功+直進速度UPで入賞
北信越前にはターン速を上げ,優勝.

クラシックでの延びが今年はあまり無かった分,ハーフマウスは大会ごとに何かしらの進捗を出せて楽しかったです.
それ以上に辛かったですがw

日々の研究と土日の大会の合間に進捗出さなきゃいけないんですもん(笑)

さて,全日本ですが,ここで目標を宣言しておきましょう!

クラシック:入賞!
ハーフ:32×32で全面探索を成功させ,遅くてもいいから最短を成功させる!

去年の成績から考えるに,クラシックは追われる身,ハーフは追う身であります.
追われる身というのは精神的にきついです.
今年のMiceの成長はすさまじいもので,いつ後輩に抜かされてもおかしくなく,毎回ヒヤヒヤしていました...

とくにFNDでしょうか.1年目とは思えない機体スペックです.そしてどうやら全日本に向けて経路をゴニョゴニョしたそうなので....いや~恐ろしい.

今までの競技で,FNDのほうが機体スピードは上回っていたが,自分の経路が良かったため勝っていましたが,全日本はどうなるでしょう.

あ,そういえば,「しゅべるま~じゅにあ」は「ハーフ」から「クラシック,ハーフ兼用機」となりましたパチパチ(嘘です)

では,全日本大会で会いましょう.
参加されない方は,動画配信で是非!

プロフィール

tennisyi

Author:tennisyi
現在、東京理科大学miceに所属しており、マウスを制作しています。
目指せハーフマウス脱初心者!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR