micro:Maqueen V3.0【相互探索編】
2台のmicro:Maqueen V3.0を使って、無線通信しながら信号強度を測定して、その強度をもとに相手を探しながら近づいていくプログラムを紹介します。
この記事は、DFROBOTの「micro:Maqueen V3.0」を使ったプログラミングです。micro:Maqueenは「付録3-12.micro:Maqueen V3.0」で詳しく紹介しています。また、組み立て方法は「5-2.micro:Maqueen V3.0【組み立て編】」で解説しています。
5-5-1.内容
2台のmicro:Maqueen V3.0を使って、無線通信しながら信号強度を測定して、その強度をもとに相手を探しながら近づいていきます。
信号強度の利用
micro:bitには、あらかじめ無線通信の機能が搭載されており、無線通信時にデーターの受信と共に、その信号強度を測定することができます。信号強度とは、無線通信において、データーを受信したときの信号の強さを表すものです。送信時の強度が一定であれば、送受信間の距離が長くなるほど、受信時の信号強度は弱くなります。これを利用して、信号強度が弱まれば相手から離れている、強まれば近づいていると判断します。
探索の動作
2台のmicro:Maqueen V3.0が、互いに相手を探すデモ動画をご覧ください。micro:Maqueen V3.0の動作を観察すると次の2種類あることがわかります。
- 右回転した後、少し移動する(前進、または後進)
- 直進する
「右回転した後、少し移動する」動作は、相手から離れていると判断したときです。進行方向に相手がいないので、右回転してから少し移動します。「直進する」動作は、相手に近づいていると判断したときです。進行方向に相手がいるので一気に前進します。これらの動作を繰り返し行うことで、相手に近づきます。
相互探索のアルゴリズム(解法)
この相互探索の動作は、ここで紹介するプログラムにおけるアルゴリズム(解法)です。他にも、もっと短時間で相手に近づいたり、面白い動作で探索するアルゴリズムがあるはずです。それらを考えてみるのも楽しいかも知れません。
5-5-2.このプログラムの動作に必要なもの
このプログラムの動作には次のものが必要です。
- micro:bit本体×2台(micro:Maqueen V3.0用)
- micro:Maqueen V3.0×2台(別途、単四型乾電池×6本を用意する)
- パソコン(*1)
- USBケーブル(*1)
(*1):パソコン・USBケーブルは、プログラミングに必要なものです。
5-5-3.サンプルプログラム(ブロック)
サンプルプログラム(ブロック)です。このプログラムには、拡張機能「https://github.com/jhlucky/maqueen」の追加が必要です。
最初だけ実行されるプログラム
無線の送信強度とグループの設定、変数の初期化を行っています。グループの番号は、2台のmicro:Maqueen V3.0で一致していれば36以外でもかまいません。
ずっと実行されるプログラム
相手側で信号強度を測定するために、定期的に無線でデーターを送信しています。ここではシリアル番号を送信していますが、受信側でこのデーターは使わないので何でもかまいません。
無線で受信したときに実行されるプログラム
相手からデーターを受信したときに「受信したパケットの信号強度」を取得します。その値を、直前の信号強度と比較することで相手との距離(離れたか近づいたか)を判断します。
5-5-4.サンプルプログラム(JavaScript)
サンプルプログラム(JavaScript)です。このプログラムには、拡張機能「maqueen」の追加が必要です。