こんにちは、広報DTP担当のサナエです。
このブログは技術畑ではない広報がアールティのPi:Co V2と1シーズンともにすごした後、もうちょっと頑張って魅力をアピールしたい体験記第2シーズンです。
前回はスラロームの探索を実装しました。したはいいけれど走りが全然美しくなくて我慢ならない!
今回はまずスラ探の調整から始めて、あわよくばスラロームで最短を…なんて狙っているけどどうかしらどうかしら?とりあえず頑張ってみようと思います。
Pi:Co V2とは!

Pi:Co V2(ピーコブイツー)は、アールティの教育や研究開発用小型移動ロボットのプラットフォームであるPi:Co Classic3同様、ソフトウェア開発の基礎を学びたい方に手に取っていただきたいロボットです。Pi:Co Classic3の機能やデザインイメージをそのままに、半分のマイクロマウスサイズになりました。
マイクロマウス競技に準拠しているのでもちろん大会参加もできます。
Pi:Co V2はESP32-S3マイコンを搭載しており、Arduinoで開発できます。
移動型ロボットのビギナーや、研究者、開発者まで幅広い方々にご利用いただけるロボットです。
Arduinoサンプルスケッチと解説書が付属するので、プログラミング初心者にもおすすめです。
中心を見つけるである!
第5回のブログを書き終わった後、きれいに曲がらなくて悔しいやらもにょもにょするやら、でもあまりあてずっぽうでプログラムを触って取り返しがつかなくなると怖かったのでM先生に調整が…したいですとお願いしたところ、調整するところと見方をまとめたものを作ってもらえました。
ヒャッホウ!
旋回前の直進、旋回、旋回後の直進を調整していくとのことでまずは直進の調整からしてみることにしました。
調整用のadjust.inoに遅いスラローム用にcase6を追加してから、さあ調整ですよ!
いつも使っている迷路ベースは会社の誰かが中心に線を引いてくれているものなのでバリバリ活用させてもらいます。
Pi:Co V2の中心の取り方は
ホイールと電源電圧監視用LEDのライン

ウサギのシルクと電解コンデンサのライン

を真上から見て合わせます。
調整してみるである!
もらったテキストの図をざっと書いてみました。寸法は正確ではないですがこんな感じ。
調整モードで一区画だけ曲がったときに中心線からどれくらい離れているかを見て調整します。
もらったテキストを見ながら気になるところが!なんで1㎜多い、少ないのところに10㎜という数字が出てくるの?ちょっぴりM先生の誤字かしらとか失礼なことを思いながら質問!
これは旋回が始まる前にすでに10㎜とって計算してあるそうです。
10㎜とったところから、この図で言うと1㎜多い、1㎜少ないと考えるそうです。だから中心から35㎜という数字も出てくるんですね。
ちゃんと事前に#defineで言われてたと聞いて納得 M先生ごめんなさい!

不注意が爆裂したところで改めてプログラムを直してみます。変更するところはrun.ino、これで私でもわかるだろうってくらい説明を入れておきました。

Pi:Co V2の直線は1㎜単位で調整ができます。クラシックサイズだったら1ミリはまぁ小さいし、ちょっとくらいならいいかな?(本当はよくないけど)って思えるけど、マイクロマウスサイズ1区画90㎜の中で1㎜って結構大きいので丁寧に見ないとですね!
旋回後の直進も同じように1㎜単位です。こちらも何度か試してみてこれくらいかな?というところまで値を変更してみました。
そして旋回の角度は止まったときにまっすぐからどれくらいずれているかで見ます。

1パルス単位で調整…約0.135㎜で変わるとかなかなかぱっと見じゃわからないかもしれないぞ?
何回か試してみて、雰囲気良さげだったのでまずは場所がわかるように「-0」を入れてみました。とりあえずはこのままで行ってみよう!
動かしてみるである!
何度か試してみてlow、norとも調整してみました。さぁ動くかしら?
よっしゃーーー!ゴールして帰還できましたわー!!!!ほんのり既知区間加速もできてるかな?前回ふらふらしてたりぶつかったりしたのがなくなりました!おおおおおお嬉しすぎる…!!!!テンション上がりまくり!!!
イェアアアアア!!!!このままどんどん行っちゃうもんね!!!
最短入るかしら行けるかしら行くしか!!!
最短に挑戦である!
気をよくして次へレッツゴー!
探索の速度は遅いものと普通のものを用意したけれど、最短は普通と速い速度のものを用意します。
ちゃんと超信地旋回もできるよう、run関数をコピーしてrun_sura関数にします。
修正をするところはdecelerate、rotate、accelerateの関数をsuraに置き換え
misc.inoにモード切り替えでスラローム最短ができるように追加です。
misc.inoがモード切り替えというのにだいぶ慣れてきました。たまにタブがどこにあるのか探すことがあるので、よく使うタブの順番を変えてわかりやすくしようと思いました。
スラローム最短のcase8に普通の速度、case9に速い速度のモードを準備します。
ああ気が付いたらcase9まで使ってる!ちゃんと覚えておかないとどこに何を入れたのか忘れてしまいそうですよ。
先ほど見た#defineのところもhighを追加したりif文を入れたり。値を直す個所が増えました。

ここまで進めて、最短は特に何か難しいところはあるのだろうかと思っていましたが、あまり探索の時と修正する箇所は変わらないんだな、とほっとしました。
なるほどである!
そしてadjust.inoに調整用のモードを追加します。
調整モードのcase6に遅いものを入れていたのだけど、同じcase6にコピーしてもう一つ入れて、lowをhighに書き直し、lowを/* */でコメントアウトしました。
どうして?と思ったら調整モードはcase6までしか入らないので必要なときにコメントアウトしたり解除したりして使うとのこと。
いままでそんなに調整モードを増やしたことがなかったのでちょっと驚きました。
さあ最短の関数をがっつりコピーして…スラローム用にターンの個所を変えていきます。
減速、旋回、加速とあったところをスラロームにすると一行で済むのでと、直しながら言われてみればそうか!と納得しました。
最後に最短の関数用にvoid runSuraを追加して…どうかなどうかな?
最初、}で閉じるところを忘れてビルドが通らず真っ赤になって一瞬焦ったけど、直してみたらするっと通りました!!
さあ、どうだ!
ウェエエエ…ンンッ!?エイや!!とちょっと手を出してしまいましたが動くことはわかったぞ!!うわぁ、大満足!早速動画にしましたよ!
……あっ興奮しすぎて最短の調整するの忘れてた!うかつ!!!最短入れて満足しちゃってた…。
落ち着いて次回に調整した最短をお見せしたいと思います。いやぁ失敗失敗。
どんどんやりたくなるである!
今回は調整と最短というちょっと欲張りモードで進めましたが先が見えてきてとても嬉しかったです。値を入れなおす場所もわかったし、これで落ち着いてじっくり調整できそうな気がします。
動画を見て思ったのですが、ボタンを押すときになんだかずれてたりすることがあるので押す練習もしないといけないですね。
何度も迷路に置くのを繰り返して、ちゃんと真ん中に置けるようにならなければ!
次回は最短走行のパターンを生成するというお題だそうです。ちょっとやることの想像がつかない…!どんなことをするんだろう?
不安半分楽しみ半分で頑張ります。
まずは始めるまでに最短の調整をしなくちゃですね!
Pi:Co V2をヨロシク!
Pi:Co V2は現在好評発売中です。
組込みや自律制御の基本要素を学ぶ方々はぜひ本製品をご利用ください。
Web shopにて定価60,000円(税込)です。ご利用をお待ちしております!

