
Training Tracer Ver.2の機体の仕様を知らずにHardware Blocksetを使って躓いたところ
MATLAB
Embedded Coder Support Package for STM32の必須ファイル
Training Tracer Ver.2のソフトをsimulinkで書く場合、Embedded Coder Support Package for STM32が必須になる。
Embedded Coder Support Package for STM32のセットアップ時には、さらに別のソフトのインストールを求められて戸惑った。
①ARM Compiler
コンパイラーを別途ダウンロードする必要があり、アカウントの作成も必要になった
②STM32CubeMX
STM32マイコンのプリフェラル設定そのコードを出力するソフト、ダウンロードにはSTMのアカウント登録が必要で、MATLAB上からそのソフトを動かすにはソフト上でのログインが必要
Training Tracer Ver.2のハードウェアで躓くところ

①ファームウェアの書き込み中に左モータが回転する。
書き込み中にプルアップされるポートがモータ制御用に割り当てられているため。上の写真のようにプルダウン抵抗をつけると良い
②パワースイッチをONにしないと書き込みができない
マイコンボードにUSBを繋ぐとマイコンボード上のLEDが点灯するため、一見書き込みができそうに思えるが。この状態ではSTMマイコンに通電しておらず書き込みできない
Training Tracer Ver.2関連情報置き場
資料が複数サイトにあって迷うので備忘録
RT社
Training Tracer Ver.2 Download Contents
組み立てマニュアル、Arduinoサンプルスケッチ
GitHub – rt-net/TrainingTracer_V2_Hardware: Training Tracer Ver.2のハードウェア資料です
CPUボードの改造箇所、回路図
MathWorks社
Line Trace for Micromouse with Simulink – File Exchange – MATLAB Central
Simulinkのモデル
GitHub – mathworks/Line-Trace-for-Micromouse
同上、MATLAB環境構築方法など
How to Make a Line-Following Robot Using STM32
解説動画
マイクロマウスで学ぶ!ロボティクス開発 × モデルベースデザイン入門
54分30秒~解説
壁センサの線形化
この記事はマイクロマウス Advent Calendar 2025の2日目の記事です。1日目の記事は社畜博士によるロボトレース競技に使えるギヤ付きホイールの作り方の紹介でした。
マイクロマウス大会のスポンサーであるMathWorks社からMATLABのライセンスを提供してもらえているので、せっかくなのでMATLABを使って壁センサの線形化をやってみた。
ちなみに去年までは壁センサからの値の常用対数そのまま利用していて制御的には困っていなかったけれど、物理量(距離)への変換をしていないため、壁との距離を直観的に把握することができなかったことが少し不便だった。
ということでmatlabを使ってセンサの線形化をした手順の紹介
①治具を使って壁とロボットの距離を可変できるようにする

②壁との距離を変えながらセンサの値を取得する。今回はロボットの前後方向の中心が柱の位置にある場所を45mmとして、ロボットが区間の中心にある場所を90mmとした。L列に左前センサの値、R列に右前センサの値を記録する

③測定結果をテキストファイルに保存する

④matlabを立ち上げてデータのインポートボタンを押して、③で作ったテキストファイルを選択する

⑤インポートツールが立ち上がるので選択のインポートを押したのち、画面を閉じる

これで変数maekabeがmatlabにインポートされる

⑥matlabメイン画面のアプリのタブに移動して、アプリの一覧から曲線フィッターを選択して、曲線フィッターを立ち上げる
⑦データの選択を押して、X軸に変数maekabeのセンサの値の列を、Y軸に変数maekabeの壁との距離の列を選択する

⑧近似曲線から対数を選ぶとフィッティングされるので、右下の近似パラメーターの値a,bをメモする。

⑨マウスのソフトに組み込む
今回の実装では、自然対数の計算は遅いのでテーブルln_table[]を作成してそれを参照するようにし、
また、距離分解能が1mm刻みだと少し荒く感じたので、45mm=450になるように近似パラメーターa,bをそれぞれ10倍して反映させている

以上の手順によって、matlabを使うことで手早くセンサの線形化ができた
明日のAdvent Calendarはあこちゃんによる誰でも作れる、シリコンタイヤ !です
ライントレーサーロボットキットTypeRをMATLABにつなぐ

ライントレーサーロボットキットTypeRをMATLABに繋いだ備忘録
このキットにはArduino Nanoの互換品が搭載されているが、MATLABのハードウェアセットアップから自動で認識されない。ボードとポート番号を手動でセットアップすると接続確認とテストファームの書き込みはできるが、その後の目的のファームをSimulinkから書きこむところでエラーになる。
互換品でも例えばArduino Megaの互換品では書き込みもできるため、何かしらオリジナルのArduinoとの差が原因かもしれない。問題の互換品とオリジナルのArduino NanoではUSBシリアルICがFDTIとCH340とで異なる点が問題なのかもしれない
そうはいってもArduino NANOは古い設計であるしMCUのパワーも低いため改めてオリジナルを購入するのは気が引ける。そこで最新のR4世代のボードに乗せ換えた。最新のArduino NANO R4はまだMATLABが対応していないためR4 minimaに入れ替えるとハードウェアセットアップから自動で認識して問題なく書き込むことができた。
次にぶつかった課題は今度はI2C接続のジャイロセンサが反応しないこと、調べるとこちらArduino UNO R4でI2Cモジュールが使えない!?原因と解決事例紹介の症状のようで、ジャイロをレベルシフタ付きのBNO055使用 9軸センサーフュージョンモジュールキットに交換することで対処した
MATLAB始め
この記事は12月11日のアドベンドカレンダーです。

個人用ライセンスもあるけれどマイクロマウス競技に参加予定のチームはMathWorks社よりMATLAB, Simulinkを含むライセンスを提供してもらえる。これは学生だけでなく社会人も個人も申請可能なので申請してみた。
申請フォームは「 学生コンテストのソフトウェア」と書いてあって社会人が申し込んでいいのか不安に思うけれど(何度かニューテクノロジー振興財団に相談して)個人のメールアドレスと所属企業名の申請でライセンスを付与してもらうことができた。

インストールしたもののMATLABは初めてなのでテキストにArduinoとMATLABで制御系設計をはじめよう! 第2版を買って勉強をはじめてみた。今は第3章まで終わってArduinoをMATLABやSimulinkで動かしている。
来年度はSimulinkで作った制御でロボトレース競技に参加してみたい
