toio を スマホからいじってみる ~ 自動で移動編 ~
toio をプログラミングなしで、スマホからいじってみます。
toio については、公式ページを参照してください。
toio
前回は、LEDを点滅させました。
yamagoya.hatenablog.jp
今回は、スマホから toio コア キューブ に コマンドを送り、目標位置に自動的に移動させます。スマホとの接続などについては、前回の記事を参照してください。
『スイッチサイエンス「toio」取り扱い開始記念~「toio」ではじめよう、おうちでロボット開発キャンペーン~』で、いただいた専用マットを使用します。
ちなみに、この専用マットは、後日、スイッチサイエンスさんで販売されるとのことです。
参考:
『「toio」ではじめよう、おうちでロボット開発キャンペーン』と『開発者向けマット(仮称)』について
専用マット
今回は、お手軽に机上で実験できるこのマット(簡易プレイマット)を使います。
さて、このマットですが、この上に、toio コア キューブ をのせると、位置や向きなどがわかるらしい。
拡大してみると、意味ありげな細かい点がならんでいます。これをカメラでみて、位置や向きがわかるようです。すごい!
toio コア キューブ の バージョン
toio コア キューブのバージョンが古いと簡易プレイマットを認識できません。この記事では、バージョン02.0003 で動作確認しています。アップデートについては、下記、公式ページを参照してください。
toio システムソフトウェア アップデートのご案内
移動コマンドを送ってみる
コア キューブ に移動するようにコマンドを送ってみます。コア キューブは、タイヤ/モーターを2つ持っていて、移動や向きを変えることができます。また、カメラで、自分がいる座標や向きを認識し、目標地点まで移動できます。
移動に関する情報については、下記にあります。
モーター(toio™コア キューブ 技術仕様)
これを参考に、簡易プレイマットの中央(X:250 Y:250)に移動するコマンドを送ってみます。
nRF Connect アプリで、コア キューブに接続し、「Services」画面を表示させます。
Characteristic「10B20102-5B3B-4571-9508-CF3EFCD7BBAE」の「↑」(Writeボタン)を選択します。
送るデータは下記のようにします。
※技術仕様ページの「目標指定付きモーター制御」をベースにしています。
データ位置 | タイプ | 内容 | データ |
---|---|---|---|
0 | UInt8 | 制御の種類 | 0x03(目標指定付きモーター制御) |
1 | UInt8 | 制御識別値 | 0x00 |
2 | UInt8 | タイムアウト時間 | 0x05(5 秒) |
3 | UInt8 | 移動タイプ | 0x00(回転しながら移動) |
4 | UInt8 | モーターの最大速度指示値 | 0x1e(30) |
5 | UInt8 | モーターの速度変化タイプ | 0x00(速度一定) |
6 | UInt8 | Reserved | 0x00 |
7 | UInt16 | 目標地点の X 座標値 | 0x00fa(250) |
9 | UInt16 | 目標地点の Y 座標値 | 0x00fa(250) |
11 | UInt16 | 目標地点でのキューブの角度 Θ | 0x005a(90 度) |
データ部分を、16進数のまま「030005001e0000fa00fa005a00」と、アプリに入力し、Writeボタンを押して、送信します。
※UInt16の場合、下位バイトから入力します。
すると、簡易プレイマット上のどこからでも、中央に移動し、同じ方向を向くように回転し、停止します。
このようなコマンドを順番に送れば、簡易プレイマット上を自由に走らせられそうです。さて、なに作ろうかな。
公式のビジュアルプログラミング(ベータ版)も手軽でいいですし、ガチで、スマホアプリ作ってみるのも楽しそうです。