見出し画像

Atom Mate for toio ビジュアルプログラミング ⑤ジグザグ迷路編

④距離センサー編にて、障害物を避けるプログラムをご紹介しました。今回は少しアップグレードさせて「ジグザグ迷路走行」に挑戦しようと思います。まずは無事に周回した様子をご覧いただき、成功するまでの紆余曲折ぶりを読んでやってください。


挑戦しようと思ったきっかけ

ジグザグ迷路に興味を持ったのは、dev+delightsさんのブログ記事「ダンゴムシの迷路(交替性転向反応)をtoioとmicro:bitで再現」を拝見した時でした。トイオにマイクロビットやセンサーと取り付ける発想や、ダンゴムシの習性をプログラミングに生かすアイディアに非常に驚きました。お子様の自由研究にもなり素晴らしいプロジェクトだなと感じました。

しかしながら、当時は電子工作の経験もなく、センサーについても無知でしたので挑戦したいものの、記事を読むだけで諦めておりました。その後、チキンさんの記事「【Scratch】迷路を自動で作ってくれるプログラム&迷路探索を作ってみよう!」を発見して、Scratch上なら私でも迷路解析のしくみを理解できるかもと胸が高鳴りました。


2次元上で再現してみよう

早速、見様見真似で「toioDo 自動迷路生成解析」を制作しました。イラストのトイオが前方と側面の2ヵ所にセンサーをくっつけて壁を検知します。検知した条件に合わせて左右どちらかに曲がるようにしています。ジグザグではありませんが、障害物を避けて走行できています。

2次元上では上手くいきました。実機でこの動きを再現するにはどうしたら良いか、当時は思いつきませんでした。無謀ながらマイクロビットにセンサーを付けた状態よりもコンパクトにできる方法はないかあれこれ思案しておりました。


Atom Mate for toio の登場

距離センサーが搭載されている Atom Mate for toioを手に入れた時、いよいよ試す時が来たと感じました!もう一つ距離センサーを取り付けることでジグザグ迷路走行を再現できるのではと期待が高まります。Atom Mate for toio を制御するため UIFlow関連書籍やサイトを色々調べました。その様子は①準備編など、過去の記事をご覧ください。前置きが長くなってすみません。基本的な操作方法が分かった所でいよいよ本題です。


センサーを付けてtoioで試そう!

まずは距離センサーが壁を検知した際に直角に曲がるためにどうしたら良いか考えました。④距離センサー編でご紹介したサンプルプログラムを使って、タイヤの回転秒数を調整したら、ほぼ直角に曲がるようになりました。しかし、最初の右折ができても次の左折になると角度がずれてしまいます。さらに距離が進むにつれて進行方向のずれが多発し、回転数だけでは制御の限界があると感じました。あれこれ試すとすぐに電池が無くなるし、この状態で2,3日足掻いておりましたw

そこで思い出したのが、水色の巨大ブロックです!たしかあのブロックにはトイオの角度を指定する項目があったはずです。マット座標とこの水色ブロックを使えば直角に指定できると考えました。というわけで、これまで作成したデータは白紙に戻して、マット座標を読み込むサンプルプログラムを出して再挑戦することにしました。


マット座標を利用する

図のように、UIFlow上のトイオの角度は0度から360度で表します。例えば、左下のスタート地点から右上のゴール地点までジグザグに移動するにはどのような角度にすれば良いでしょうか。右折させるには0度、左折させるには270度に向くように設定します。

X,Y coordinate欄には変数にしたトイオのX,Y座標を、angle欄には向かせたい角度を入力します。※画面の都合上、2分割していますが実際は繋がったプログラムです。


ジグザグ迷路を周回させよう

スタート地点からゴール地点までジグザグ走行が完成しました。ここまででも良いのですが、少し発展させてトイオをぐるっと周回させたいと思います。じつは上記のプログラムですと、ゴール地点で止まってしまいます。なぜだかお分かりでしょうか?右折の角度を0度に固定しているので、ずっと0度を向いたままになってしまうのです。進行方向に合わせて、右折左折の角度を設定する必要があるのです。

方法は様々あるかと思いますが、私は進行方向を4分割して、その進行方向に合わせて右折左折を判断するようにプログラムしました。説明は長くなってしまうので割愛しますが、どの方向に向いていてもほぼ直角に曲がって走行するようになりました。ジグザグ迷路走行成功です!


おまけ

Xには2周走った様子を公開しました。2周目はセンサーの反応が少し鈍くなり、ウロウロ迷うシーンがありました。角度がずれてしまってもちゃんと修正出来ていたので満足です。最後の角で引っかかってしまったのですが、それも可愛くてそのまま載せさせていただきました。相互フォロワー様がリポストしてくださり「人間ぽくて良いですね」とコメント頂きました。きちんと直角に曲がることばかり考えてましたが、案外ウロウロキョロキョロさせるほうが可愛く自然に見えるかもしれませんね。

追記 toioの開発者である田中様と公式サイト様よりいいねしていただきました!ありがとうございます😊

次はもっと大きい迷路を作って試してみたいです。センサーを付けると本体バッテリーの減りが早いのが難点ですね。バッテリーが増量された新型のAtom Mate for toio がようやく届きましたので、また時間がある時にトライしてみようと思ってます。長々とお付き合いくださりありがとうございました。以上です!


この記事が気に入ったらサポートをしてみませんか?