100日後に完走するマウス(倉澤ズズくん)

100日後に完走しなかったマウス 第44回全日本大会レポートと2023年度振り返り – 100日後に完走するマウス【233日目】 Part.7

100日後に完走するマウス(倉澤ズズくん)

はじめに

お久しぶりです。前回の東北地区大会から時間が空きましたが、2024.2/17~2/18に開催された第44回マイクロマウス全日本大会(2023年度)に参加したので報告します。
今回のブログ内容は以下の通りです。

  • 全日本大会
  • 機体紹介
  • 製作の振り返り
  • 今後について
  • まとめ

機体の詳細な制作過程は次回以降で触れます。

全日本大会

100日後に完走しなかったマウス

自作マウス”Fast-Respect“(後ほど紹介します)で全日本大会に出場し、結果は完走できずリタイアでした。

大会結果

マップの実装が間に合わなかったのでせめて迷路上を走ってくれればと思い、単純な左手法のみの実装での出走となりました。
直進時の壁制御や距離センサの調整が間に合わず、会場の環境では制御がまともに働かずに直進して壁にぶつかる悔しい結果に終わりました。まだまだ開発は続きます。

拡大する大会の規模

大会の熱気もすごいです。数年前に流行した感染症でいったん規模は縮小しましたが徐々に盛り返しています。マイクロマウス大会(ロボトレース競技も同時開催)は、今年多くのスポンサーに恵まれました。特に、三菱電機さんはダイヤモンドスポンサーとなってくれています。そのおかげで、運営団体NTF(ニューテクノロジー振興財団)の支出を初めてゼロに抑えられた記念すべき年です。この状態が続けば、永続的にマイクロマウス大会を開催できる!とのことです。来年には会場も大きくなる予定です。

加えて、すべてのレギュレーション(クラッシック・マイクロマウス・ロボトレース)でチャンピオンが変わった珍しい年です。より多くの人が参加し、切磋琢磨して更なる盛り上がりに期待が持てます!!

会場の様子

ハイレベルなマイクロマウス競技

自分のマウスは完走しなかったものの、現地で上位陣の走りを観察していると学べる点がたくさんあります。私が大会で観察していた点を軽くレポートします。

マイクロマウス(旧ハーフサイズ)では、地区大会で得たポイントがたくさんある機体のみがエントリーするマイクロマウス競技ファイナルのカテゴリーがあります。公式としては、こちらがメイン競技です。普段の地区大会では、クラシック・マイクロマウス共に16×16のサイズですが、ファイナルでは32×32という広大な迷路です。

マイクロマウスファイナルの迷路
(引用:https://ntf.or.jp/mm-live/)

アールティが6月発売予定のPi:Co V2もファイナルに出走し、無事完走しています!!

ファイナル競技を走るPi:Co V2

時間やバッテリの節約のために皆さん工夫を凝らした走りを見せます。たとえば、競技中に最短走行の実行を保証するために、指定の時間内に探索が完了していなくともスタート地点に帰ってくる機能がありました。他にも、クラッシュした際にも探索データを無駄にしないように、クラッシュを検知した直前の走行データまでを保存する機能も見られました。

第一走の探索時でも時間節約のために既知の区間は斜めに走行するマウス
(引用:マイクロマウスファイナル 第44回 全日本マイクロマウス大会 Micromouse 2023 Micromouse Final

上級者がしのぎを削る戦いを見ていると、その凄さに興奮します。自分でも強力なマウスを作るモチベーションの向上にも繋がるので積極的に大会を観戦していきたいです。

そして、マイクロマウス(旧ハーフサイズ)だけではなく、クラッシックでもハイレベルな戦いは行われています。

優勝する2輪マウス

マイクロマウス(旧ハーフサイズ)競技も大変面白いですが、今の私の関心は自分が参加するクラッシック競技で速く走ることです。

実際にクラシック競技を観戦している際、どういった点でタイムに差が出るかを観察していたところ、優勝したマウスは他のマウスと比較して旋回時にも減速が少ないように見えました。要するに、コーナーでの旋回時に如何にスピードを落とさずに曲がれるかが重要に思えました。

旋回という点で、2輪は4輪に対して有利です。そして、今回優勝したのは吸引機構を搭載した2輪のマウスでした。

優勝機体:XM702 carmine
(引用:第44回全日本マイクロマウス大会エントリー一覧

優勝した2輪機体XM702 carmineの画像を引用させてもらいます。かっこいいですね。
私が第2回のブログで取り上げたように、シャーシも基板ではなくカーボンで構成されています。

最近では、トップ層では高速で走行させて壁や柱に衝突した際にシャーシである基板が耐えられない領域まで来ているため、原点回帰でカーボンやアルミ等の素材のシャーシを採用しつつあるようです。

ご本人様のブログで機体の詳細が公開されているようです。
ブログリンク:The North Tribe 2023年度クラシックマウス XM702 carmine

技術交流会で達人に聞いてみた!

技術交流会の様子

大会の後は技術交流会があり、この場ではベテランのマウサー・トレーサー達から色々な話を聞くことができました。今回、得られた知見は多々ありますが、重要だと感じた2点を紹介します。

ログを取る

与えた加速度や速度に対してどの程度追従できているか、追従できていなかったとした何時のタイミングが影響しているのかを解析・可視化できます。上位陣はMATLABを活用していた印象です。車載業界でも専ら使われているツールで、毎年マイクロマウスの競技者には無償で多くの機能が提供されています。

解析をするために、まずデータが必要なのでしっかりログを取りましょう。ロボットを走行させながら、指令速度と実速度を配列などに保存しておき、走り終わったらcsvファイルにでも一気に出力するだけでログは取れるので、すぐにできて効果も大きいです。

今回出場時、同時にアールティで自作マウスブログを連載している槇原さんもきちんとログを取得しています。槙原さんはマイクロマウスセミファイナル競技で2位という好成績を残しています!!

ログデータのプロット
(引用:自作マイクロマウス研修(槇原)Part5

 

吸引機構の形状に拘りすぎない

ある程度雑でも吸引できるということです。競技者の方々数人に、どのように設計しているか聞いたところ、深く考えていないという回答でした。

理由としては、吸引ファンの形状をこだわる時間をソフトウェア設計に充てた方が良いという意見がほとんどでした。時間にも限りがあるので、ある程度のところで見切りつけるのは大切です。

また、とある上位常連の方は、市販の掃除機のプロペラの形状をそっくり真似しているみたいです。プロが設計しているので、ある程度性能は保証されているはずとのことで、とても賢い方法です。ただし、固定だけはしっかりした方が良いみたいです。

以前、湾曲させていない単純な十字形状の吸引ファンを搭載した機体でもそこそこ走ったという話も聞きました。

他にもハードウェア面でのアドバイスがあったりしましたが、これらの情報は今後のブログに反映します。

ロボット集合写真

ムブアイ(三菱電機株式会社)

最後には参加者のマウス・トレーサーを並べての写真撮影をして終了です。中央にある三菱電機さんのロボットとドックが目立ちますね。

大会参加・観戦のすゝめ

やはり現地で見ると面白く、新たな発見があります。そして何よりマウス製作の意欲も湧いてくるので良いことずくめです。マウスを始めようと考えている人も、ぜひ一度大会の観戦をしてみてください。基本的にどの大会も入場・観戦自由です。

今回の大会について、マウサー・トレーサーである宇都宮さんによるレポート動画が大変面白く且つ分かりやすくまとまっているのでオススメです。勝手ながら動画のリンクを共有いたします。2023 All JAPAN Micromouse Contest 全日本マイクロマウス大会

機体紹介

今回製作・出場した機体「Fast-Respect」です!上位層の機体構成を参考にしており、先人たちの積み上げた知見に経緯を示した名前としました。

機体名:Fast-Respect

項目 詳細
機体名 Fast-Respect(ファスト リスペクト)
構成 変則4輪(+吸引ファン搭載予定)
モータ FAULHABER 1717T003SR
エンコーダ IEH2-4096(モータ側に内蔵)
距離センサ 発光側:SFH4550
受光側:ST1K-L3A
ジャイロ ICM-42688-P
電源 7.4V(2s) 25C 350mAh

2023年度全国大会公式Webサイトの参加者一覧のテクニカルシートでも機体情報が掲載されています。

これまでの製作の振り返り

以下のロードマップで実際の作業時間を記録しています。
自作マウスのロードマップ

全日本大会終了時点での進捗は以下の通りです。ソフトウェア実装の途中で時間切れとなりました。

  •  部品選定
  •  車体設計
  •  足周り設計
  •  距離センサ設計
  •  ジャイロセンサ設計
  •  モータ+エンコーダテスト
  •  回路・基板設計
  •  基板発注
  •  車体実装
  •  ソフトウェアの環境整備
  •  ソフトウェア設計(要件定義)← 実施中
  •  ソフトウェア実装 ← 実施中

工数見積もりの細分化

前回の東北地区大会までの反省を活かし、作業項目の切り分け粒度を細かく時間単位で工数を見積もりました。粒度を細分化しての工数と実作業時間の記録としたことで、どのセクションで遅れが出ているかわかりやすくなりました。

粒度を細分化したロードマップ

工数のズレ

ロードマップに記載されている項目の中で大きく遅延したのは以下の項目でした。
遅延したものはハードウェアの要因が大きく、ソフトウェア自体の遅れはほとんどありませんでした。

  • 基板PCB配線(見積もり:10h → 実作業時間:18h)
  • 基板レビュー修正(10h → 20h)
  • UML設計(5h → 13h)
  • はんだ付け(5h → 17h)
  • 距離センサ動作確認(2h → 3h)
UML設計と距離センサ動作確認の2つはハードウェアによるものではありませんが、UMLの設計は記述するツールに慣れておらずにツールに使われたこと、距離センサ動作確認ではハンダ不良が原因でのソフトウェア設計の本質とは違う部分での遅延でした。

遅延理由

大きな遅延理由としては以下のような理由が考えられます。

半田付け

半田のブリッジや断線が頻発し、デジタル顕微鏡で覗いても発見し辛く苦労しました。他にも、半田ごてで基板を熱しすぎた結果、配線が断線することも多かったです。以下のような失敗事例があります。

  • 隣り合ったエンコーダとBootのピンのブリッジにより、Resetボタンを押した瞬間にエンコーダからの入力によりBootモードの電圧レベルが意図せず変化し、実行モードが起動しない。
  • 距離センサの受光フォトトランジスタからの入力と発光LEDへの出力ピンのブリッジにより、LEDを点灯させると常にフォトトランジスタからの入力が限りなく大きな値となる。
  • 断線によりICが駆動しない

ピン間でブリッジした半田

熱しすぎて断線した配線

Resetボタンには信号線をリワークした姿が見えます。

信号線をリワークした箇所

さらには、実装した4枚の基板は動作せず、最終的に動いていた1枚も多くの突貫修正を施しています。恐らく、残りの1枚も長期間は持たないでしょう。

ハードウェアが絡むバグの原因特定

デバッグという点で、最初にオシロスコープを使って波形を確認するという習慣が足りなかったです。実際には、プログラムを変更して、モータの挙動やコンソール上のセンサ値を直接観測していました。

マイコンからの指令どおりに動かない場合、信号が出ているかの確認としてオシロスコープをピンに当てることでハードウェアかソフトウェアによるものかの原因の切り分けができます。私がデバッグで時間をかけてしまった中で、このオシロスコープによる波形確認を最初にしていれば直ぐに原因特定ができていたシチュエーションは少なくありませんでした。

ロボットのデバッグにおいて、ハードウェアの原因が疑われるときはオシロスコープやテスターで直接確認しましょう!!

オシロスコープで原因切り分けをする様子

切り捨て/後回しにした内容

実施しなくても影響が少ない点から機能を切り捨てている

細かいハードウェアの修正

当機体ではたくさんの改善点があります。貫通ビアのサイズ、貫通ビアの配置、フットプリントのミス、ガイドシルクミスと挙げれば枚挙にいとまがありません。ですが、手半田の修正によって最低限動作することが確認できたため、現在のハードウェアで全日本大会に出場することに決めました。

基板全体の画像

吸引ファンの搭載

これは自作マウス研修開始当初予定していた通りです。上位者が搭載している機能を踏襲した構成の一機能として吸引ファンを搭載しますが、非常に多くの時間を費やしてしまうことが予想されたため、将来的に搭載できるネジ穴、部品配置、スペースの確保を行うのみに留めていました。

基板のファンスペース

ジャイロセンサ

ジャイロセンサを使用することで制御に大きく寄与できるため極力利用したいところでしたが以下の2点から工数見積もりが困難かつ多くの時間を費やすことを懸念して使用を見送りました。

  1. 使用経験がない
    • 動作の試行錯誤をするために多くの工数がかかると予想されたため見送りました。加えて、ジャイロセンサは使用しなくても最低限走行することは分かっていたため、優先度合いは低いと判断するに至りました。
  2. そもそも動作しない
    • 現在実装された基板で動作の確認が取れませんでした。ハードウェアかソフトウェアどちら要因による動作不良か確認する工数も考慮すると多くの時間が掛かると予想しました。

反省点

ソフトウェアのプロトタイピング

今回の反省点として、迷路上の走行までとはいかずとも、最初にある程度動く状態のソフトウェアを作るべきであったと考えています。

簡易的なUML図

初めに簡易的なUML図を書いた段階ではモータに加速度と速度のみを与える方式とし、外界センサからのフィードバックのモータ制御方法の適切な機能を備えていませんでした。
さらに、制御のON/OFFを制御するグローバルなフラグを導入した結果、スパゲティコードができ上がってしまいました。恐らく、現状のままではジャイロセンサの値をフィードバックした際にも同様の事象が発生することが予想されます。

このことから、ある程度雑でもいいのでプロトタイピングを行い、最小限のなソフトウェアで動かしてから詳細な設計を詰めた方が良かったと思っています。DCモータでまともに制御するのが初の今回は特にそうするべきと感じました。

今回は、次にあげるような「時期尚早な結合」で開発をしていたために開発効率が下がっていました。

  1. 最初からモータ制御のフィードバックとフィードフォワードを統合していた
  2. 最初から左右2つのモータ制御を同時にしていた

1点目は、フィードフォワードとフィードバック機構を統合した制御手法を想定し、はじめから統合した状態でばかりテストしていたことです。フィードフォワードのパラメータや設計が悪く、動作にカクつきが発生している点に気づけていませんでした。社内のマウサーの方々にアドバイスを貰って気づくに至りましたが、フィードバックのみでの動作確認をしていれば違いに気づけたはずです。

2点目は、車体の速度制御の前にモータ単一での速度制御テストしなかった点です。速度制御に残存バッテリを監視していましたが、これをADC完了サイクル以上の頻度で呼び出していたことでマイコンにエラーが発生していました。両側のモータやLEDの点灯、その他のタイマを動作させていたので原因究明に時間がかかりました。片側で速度制御が動作の確認をしていれば、デバッグの手間も防げました。さらに、エラー状態でのマイコンの挙動を設定していなかったため、ただ停止するのみでマイコンがエラーを示していることに気づくこと自体時間がかかりました。

DCモータやマイコンについて知らない点が多々あるため、1つ1つ段階的に既知の状態に変えていく必要がありました。具体的には、指定速度での前進・旋回・距離センサを用いた壁制御での直進までで機能を実装した段階で、一度簡易の実装で動かしておけば良かったと実感しました。その時点で全体に必要な各種機能の動作のイメージができ上がったためです。その上、これらの機能さえ満たし手入れば最低限完走もできます。

今回のロードマップの項目としても”SW実装】加速度・速度指令で任意の距離前進(壁制御無し)”の前に、単一でのモータ速度制御を確認する項目も入れるべきでした。

ブログ連載

機能ごとにブログを連載していれば、リアルタイムでの遅れや予定変更の過程を分かりやすい形での記録できるため惜しいです。ですが、大会までに想定したブログ本数は6本程度の想定で、過去のブログ記事執筆の経験から各項目最低5時間はかかると見積もりました。

その結果、合計30時間(一日2.5時間想定で約2.4週間)と重い工数と判断し、大会後連載の後回しとなりました。

今後について

まずは、現在投稿済みの記事から2023年度全日本大会までの執筆できていない記事までを連載します。その後、来年度の2024年度全日本大会に向けて再度開発・ブログ連載をしていく予定です。
より一層精進して参りますので、当ブログを読んでいただけると嬉しく思います。

 

まとめ

本日は全日本大会の結果とレポート、これまでの振り返りとなりました。今年度の大会はすべて終了しました。今まで学んだことを活かし、来年度の大会こそ完走できるように心機一転頑張ります!!

大変長い記事となりましたが、ここまで読んでいただき誠にありがとうございました。
今後もまだまだ開発とブログ連載を続けていきますので、何卒よろしくおねがいします。

2023年度全日本大会終了!

タイトルとURLをコピーしました