dev + delights

子供と楽しく電子工作・プログラミング + 親の勉強

ダンゴムシの迷路(交替性転向反応)をtoioとmicro:bitで再現

何気なく手に取った国土社の 自由研究 1・2年生 を見て「ダンゴムシの迷路がやってみたい」というリクエストを子供から受けるも、家に虫を持ち込むのがイヤなので手持ちの toio で再現をすることに。

ダンゴムシには衝突したときに右左右左... と交互に進む習性(交替性転向反応)があり、単純化すれば簡単なプログラムで実装できそうです。

youtu.be

ダンゴムシ製作

当初はtoio.Doでも使える衝突検出を利用する予定でしたが、壁に勢いよく「激突」したような衝突でないと検出されませんでした。1 今回は以下の記事を参考に micro:bit に初挑戦しました。フォトリフレクターのセンサを接続し、壁への接近を検出することにしました。

マイクロスイッチ2も試しましたが、紙で作ったコースだと脆いため衝突以前に旋回した方が良さそうでした。

micro:bitの電源とセンサーの取り付け

電池ケースからmicro:bitへ給電するのがお手軽ですが、結局センサーの取り付け部分も必要なので、思い切ってtoioの工作用の蓋(?)にピッタリとはまるように パネルを切り貼りしてみました。

基板が剥き出しだとダンゴムシ感がでないので、子供に折り紙でカバーを作ってもらいました。

f:id:devdelights:20220410000109p:plain

実験用コースの製作

toio™開発用プレイマット [TMD01SS] - スイッチサイエンス の余りがあったので活用しました。1枚だと少し小さいので裏面4枚で作ります。この枚数で大体 トイオ・コレクション の付属のマットと同じ大きさです。

toio.Doの環境で、裏面を使った場合は、折り返しに注意する必要があります。回避のため1番2番と半分に切り取った5番6番をつなぎ合わせます。こうするとマットの座標がScratchの座標系にスケール変換のみで利用できます。

f:id:devdelights:20220410001435p:plain

書籍では、工作用紙にコースを描き木工用ボンドで壁を接着させるという方法でしたが、今回は調整しやすいようにマスキングテープとスイッチサイエンスの箱でコースを作りました。こちらの箱は薄くて頑丈で工作にピッタリです。

f:id:devdelights:20220410001912j:plain

プログラミング

toio.Doの環境で実装していきます。全体でもこんな感じのボリュームで実装できました。

f:id:devdelights:20220410004242p:plain

ズレたときに復帰できるように強制的に+/-90度の位置に戻る補正の制御も入れてみました。

キューブの制御

toio.Doで開発用マットを利用した場合の角度は以下のようになっています。

f:id:devdelights:20220410093023p:plain

コースをジグザグに進むだけで、左右同じ方向に2回(つまり180度以上回らない)ので単純に衝突を検知したら+/-90度するだけのシンプルなプログラムになります。

toioは複数の命令が到達すると、最新のリクエストと合わせて再計算して目標値を決めているように感じました。 なので、プログラム上は細かく目標値を与えるのと、旋回と並進が混ざらないように別々に実行させるようなイメージでブロックを並べました。

f:id:devdelights:20220410004305p:plain

センサーが検出してから旋回する時間もかかるのでちょっとゆっくり目に走行です。

f:id:devdelights:20220410012954g:plain

経路表示

オリジナルの書籍ではダンゴムシを目視で観察し、ペンで経路を記録するようにしていたのですが、ここではScratchの機能を使って描画します。

以下の記事がわかりやすいです。

toio™️「ビジュアルプログラミング」のあそびかた サンプル編:お絵描き(初級編) | toio blog | toio(トイオ)

f:id:devdelights:20220410004257p:plain

開発用マットを使うと現在位置がリアルタイムにわかるので、それらの値を座標変換してペンを下ろすとダンゴムシの動きが描画できます。ついでに キューブの目標向きにスプライトを回転させれば完成です。

f:id:devdelights:20220410013925g:plain

考察・発展のアイデア

  • micro:bitサーボモーターを2個を搭載すると車体のサイズが大きくなりそうです。必然的にコースのサイズも大きくなるので今回の組み合わせはお手軽です。
  • toio.Do環境は、toioキューブの2台接続には対応済みなのですが、micro:bitとの接続は1台限定のように見えます。複数台で動かせられれば、違うシナリオにも応用できるかもしれません。
  • micro:bitのLEDのウケが非常に良かったです。ダンゴムシそっちのけで、Scratchを自分で操作して好きな形に光らせたりして遊んでいました。
  • たまに壁に体がひっかかり進めなくなったダンゴムシをゲラゲラ笑っていたので、助けをLEDや音で呼んで、一度手を使って補助してあげて一緒にゴールを目指すようなゲーム的な要素を入れても面白いかもしれません。

参考文献