はじめに
初めまして。アールティのクアンです。2024年度の新卒で入社いたしました。大学では主にRGB-Dデータの画像処理を用いた研究をしていました。研究の影響で最近デジタルカメラに興味を持ち始め、現在は写真撮影の練習に夢中です。今回のブログは社内で行われたPi:Co研修について解説していこうと思います。よろしくお願いします。
余談ですが、このブログを執筆している最中に下書き保存を忘れ、ブラウザがリセットされてしまい、内容の半分が失われました。提出日当日にこの問題が発生したため、泣きながら急いで書き直すはめになりました。
Pi:Co研修について
Pi:Co研修とは、アールティ社の全従業員が参加必須のマイクロマウス研修です。この研修の目的は「Pi:Co Classic3」というクラシックマイクロマウスを使用し、模擬マイクロマウス競技に挑戦することで、自社のロボットに対する理解を深める事です。今年度のPi:Co研修では、3週間に渡って以下の課題に取り組みました。
- はんだ付けとハードウェアの組み立て
- Pi:Co Classic3のサンプルコードを実行
- 小さい迷路を走破
- スラローム走行の実装
- 16×16迷路を走破
- テクニカルチャレンジのオリジナル課題
はんだ付けとハードウェアの組み立て
本研修では、Pi:Coのはんだ付け作業から始めます。Pi:Co Classic3パッケージには、練習基板、電源基板、メイン基板、センサ基板、CPU基板の五つの基板が含まれています。私は大学の授業以外でほとんどはんだ付けを経験していなかったため、この作業を通じてスキルの良い復習ができました。ハンダが足りない、フラックスが残るなどの問題を解決し、最終的にははんだ付けを無事に終えることができました。

はんだ付け完了Pi:Co Classic3
そして、Pi:Co Classic3の基板、固定ネジ、スペーサ、モータ、タイヤをマニュアル通りに組み立て、約20分でPi:Co Classic3を完成させました。

組み立て完了Pi:Co Classic3
Pi:Coのサンプルコードの実行
Pi:Co Classic3には、LEDやモータの制御、音の出力、光センサの操作、迷路探索といった機能を実演するためのサンプルコードが予め用意されています。私はこれらのサンプルコードとマニュアルを自分のPCにダウンロードした後、環境構築を行いました。

Micro USBでPi:CoとPCを接続
しかし、マイコンへの書き込みを行った際、以下のエラーが発生してうまく書き込めませんでした。
エラー(E3000202): 指定したツールはすでに使用されています。操作は失敗しました

書き込みエラー
そこで、先輩社員のブログを読み、解決策を見つけました。問題の原因はWindows PCのメモリー整合性という設定がONになっていることでした。この設定をOFFにすると無事にファームウェアを書き込む事ができました。

書き込み成功
小さい迷路の走破
セクション2で述べたPi:Co Classic3のサンプルコードの中には迷路の走行探索サンプルコードもあります。このサンプルを実行すると、Pi:Co Classic3を用いて迷路探索する事ができます。ただし、このサンプルをうまく動作させるためには事前にサンプルコード内の以下のパラメータを調整する必要があります。
- タイヤの直径
- トレッド幅
- 光センサのしきい値
まずは、タイヤの直径のパラメータを調整しましょう。実際のタイヤのサイズを入力しても、移動距離に若干のズレが生じることがあります。そのため、指定された距離と実際の移動距離を比較し、必要に応じてパラメータを調整する必要があります。
次に、トレッド幅のパラメータを調整します。このパラメータはPi:Co Classic3がどれだけ広く旋回するかを決定する重要なパラメータです。ロボットが指定した角度だけ正確に回転するかどうかは、このパラメータに依存します。タイヤの直径パラメータの調整と同様に、回転に少しズレが生じることがあります。そのため、Pi:Co Classic3を45度ずつ、合計8回回転させ、旋回のズレをこのパラメータの調整で修正します。
最後に、迷路の壁に関する光センサのしきい値を調整します。Pi:Co Classic3には4つの光センサが搭載されており、前2つは左右の壁、残り2つは前の壁を認識するために使用します。それぞれのセンサが壁の有無を判定するため、しきい値が4つあり、加えて、迷路の中心にいるかどうかを左右の壁から判定するためのしきい値が2つあります。したがって、Pi:Co Classic3を迷路探索させるには光センサに関する6個のしきい値を調整する必要があります。
これらのパラメータを調整すると、以下のようにPi:Co Classic3が迷路を走行できるようになります。ちなみに、サンプルプログラムには、超信地旋回走行が用意されています。迷路探索手法には左手法と足立法が用意されています。
超信地旋回を使った迷路走行の様子
スラローム走行の実装
このセクションではPi:Co Classic3を用いたスラローム走行の実装について解説します。スラローム走行とは迷路探索における旋回箇所において約90度の円弧を描きながら走行する方法です。一度走行速度をゼロにする必要がある超信地旋回走行と違って、ロボットの並進速度を維持したまま旋回させる事が出来るため、より短い時間で迷路探索を行う事が期待できます。
スラローム走行には主に信地旋回、等速円運動、台形駆動を用いた方法があります。セクション4と5で等速円運動スラロームについて、セクション6で台形駆動スラロームについて解説します。まずは等速円運動スラロームの実装を行います。その理由は、必要な数値計算とプログラミングに関する情報が過去の先輩社員のブログに豊富に記載されているためです。特にshotaさんとharaさんの記事がとても参考になり、無事に等速円運動スラロームを実装することができました。


並進速度400(mm/s)等速円運動スラロームの走行様子
計算の詳細は省略しますが、並進速度400(mm/s)での走行において、一回の旋回に要する時間は超信地旋回走行で1.25秒、等速円運動スラロームで0.36秒でした。したがって、迷路の旋回箇所が多いほど、時間短縮の効果が大いに期待できます。具体的には、旋回箇所ごとに「超信地旋回走行の時間 – 等速円運動スラロームの時間」を計算し、その結果を旋回箇所の数で乗じることで、短縮できる時間が求まります。この場合、並進速度400(mm/s)の等速円運動スラロームを使うと、各旋回箇所×0.89秒の時間短縮が見込めます。
ただし、等速円運動スラロームにも一つの問題があります。等速円運動スラロームをさせるためには、タイヤの速度を急激に変化させる必要があります。そのため、トラクションロスが発生し、Pi:Coが90度の円弧を正しく走行できないことがあります。
並進速度400(mm/s)時のトラクションロスにより、90度の円弧を正しく走行できない様子
一日中ずっとタイヤの直径、トレッド幅、光センサのしきい値などのパラメータ調整を頑張っていましたが、並進速度400(mm/s)以上の速度では、90度の円弧軌道を正しく走行することはできませんでした。そのため、今回の等速円運動スラロームの実装では、並進速度の上限を400(mm/s)としました。
16×16迷路の走破
第2週目の最後の課題は、スラローム走行を用いて16×16迷路を走破することです。

16×16迷路
迷路を走破する基本的な流れは小さい迷路と同じですが、16×16迷路では移動距離が長くなるため、セクション3でのパラメータ調整をより厳密に行う必要があります。これには主に二つの理由があります。一つは長距離を走行することによる移動距離の誤差が蓄積すること、もう一つは迷路が広いために光の条件が様々で、光センサによる壁の有無の判定が難しくなることです。
誤差蓄積により走行中の自己位置がずれて壁と衝突するPi:Coの様子

光が直接当たって明るく見える箇所と、影によって暗く見える箇所

色落ちのある古い壁
タイヤの直径、トレッド幅、光センサのしきい値、等速円運動スラロームの速度などのパラメータを調整し終わると、無事に本番の16×16迷路を走破する事ができました。
16×16迷路での等速円運動スラローム走行
テクニカルチャレンジのオリジナル課題
マイクロマウス研修の最終課題では、各新入社員が自分でオリジナルの課題を設定します。私が選んだ課題は「Pi:Co Classic3を用いて、超信地旋回走行、等速円運動スラローム、台形駆動スラロームという異なる走行手法を比較し、それぞれの手法でどれだけ安定かつ迅速に走行できるかを調査する」です。
この課題を選んだ理由は、セクション4と5で等速円運動スラロームの実装を行った結果、Pi:Co Classic3の迷路探索時間が大幅に短縮されたため、等速円運動スラロームよりも安定して高速で走行可能な台形駆動スラロームを使用することで、Pi:Co Classic3の最大走行速度をどれだけ伸ばすことができるかを詳細に調査したかったからです。調査の流れは以下の通りです。
1.台形駆動スラロームの実装
2.Pi:Co Classic3を用いて4×4迷路を3つの走行手法で探索
- 超信地旋回走行
- 等速円運動スラローム
- 台形駆動スラローム
3.各走行方法での最適な速度の調査及び走行パフォーマンスの比較
- 並進速度以外のパラメータは固定
- 並進速度のみを50(mm/s)刻みで変更
- 各走行方法における並進速度ごとの15回走行の成功率を調査
- 速度範囲は300,350,400,450,500から800(mm/s)までで調査
- 検証用の迷路をスタートからゴールまで走行できた場合を成功とし、15回の試行中何回成功したかで成功率を調査

検証用の4×4迷路
台形駆動スラロームの実装
等速円運動スラロームは台形駆動スラロームと違って、「左右の車輪を急激に加減速させ、一定の速度で車体を回転させ、円弧軌道を走る」であるため、脱調やタイヤのスリップが発生しやすい問題があります。そこで、台形駆動スラロームを用いると、「一定の加速度で左右の車輪を加減速→等速→減加速で回転させ、円弧軌道を走る」に変わるため、等速円運動より滑らかかつ安定な円弧軌道を走る事ができます。台形駆動スラロームの並進速度400(mm/s)計算は以下の図のようになります。

400(mm/s)台形駆動スラロームのシミュレータ
台形駆動スラロームのタイヤの加減速を計算シミュレータで確認します。シミュレータでは、タイヤの加減速を車体の角度によって変更します。車体の角度が0~14度の間、外側タイヤは加速・内側タイヤは減速、15~75度の間だけ両側のタイヤのは等速、76~90度の間は外側タイヤは減速・内側タイヤは加速して、元のタイヤ速度に戻ります。これにより、スラローム走行と直進のタイヤの速度差がなくなり滑らかな走行をすることが出来ます。実際にシミュレータで求めた値を使用して、台形駆動スラローム走行で16×16迷路の最短経路走行をクリアすることができました。
16×16迷路を最短経路で走行する様子
各走行方法での最適な速度の調査
各走行方法での最適な速度の調査結果は以下の表のようになります。

各手法の探索走行速度と成功率の比較表
3つの手法の中で、超信地旋回走行が一番速い並進速度でゴールまでたどり着く事を確認しました。ただし、超信地旋回走行は並進速度を維持したま走行するスラローム走行と違って「並進速度をゼロまで減速→止まった場所で90度旋回→速度ゼロ状態から再び元の並進速度まで加速」となっているため、スラローム走行よりも速い並進速度を設定する事が出来ました。
更に、超信地旋回走行の安定な走行速度は500(mm/s)までであり、並進速度550~650(mm/s)にすると、並進速度からゼロ速度までの減速が間に合わなく、壁と衝突してしまう問題があります。ただし、本検証の中では、壁と衝突してもロボットの自己位置がずれる事なくゴールまでたどり着く事ができました。
壁と衝突してもゴールまでたどり着いた並進速度650(mm/s)の超信地旋回走行

各手法のクリア時間(s)と探索走行速度(mm/s)
表の通り一番速い並進速度で探索走行できる手法は超信地旋回走行ですが、一番短い時間でゴールできるのは台形駆動スラロームでした。また、同じ並進速度でも、超信地旋回走行と台形駆動スラロームより等速円運動スラロームの方が速くゴールできたことが予想外でした。超信地旋回走行の並進速度550~650(mm/s)の間で速度がほとんど伸びていない理由は、並進速度を550(mm/s)以上設定すると、直進の走行で減速が間に合わずロボットが壁とぶつかってしまい、4×4迷路での走行時間が短縮されませんでした。
また、安定かつ迅速な並進速度で探索できるのが超信地旋回走行ですが、一番安定かつ短い時間で探索できるのは台形駆動スラロームでした。各手法の一番安定かつ速い速度はそれぞれ超信地旋回走行:650(mm/s)、等速円運動スラローム:400(mm/s)、台形駆動スラローム:500(mm/s)でした。
まとめ
本記事では、2024年度マイクロマウス研修内容について報告しました。3週間に渡ってはんだ付けとハードウェアの組み立てからスラローム走行で16×16迷路を走破させる事やテクニカルチャレンジのオリジナル課題をクリアする事まで様々な課題に取り組みました。また、最後の課題である「Pi:Co Classic3探索走行最高速度の調査」の中で異なる走行手法を通してPi:Co Classic3の特徴を調査する事が出来て、とても有益な時間でした。