LoginSignup
59
38

More than 3 years have passed since last update.

toioのjavascriptライブラリが公開されたのでexample動かしてみた

Last updated at Posted at 2019-06-15

はじめに

toioの技術仕様とJavaScriptライブラリが公開されました。
個人的にはずっとtoio制御出来ないかなーと考えていたので、キタコレって感じで喜んでおります。
今回は手順に則ってPCから動かしてみましたので簡単に記事を書きました。(node.js素人ですのでその点はご了承ください。)

64278068_468142383991832_228479577108774912_n.jpg

toioとは

SONYが出しているCube型のおもちゃです。
https://toio.io/

詳しくは上のリンクを見てもらいたいですが、カートリッジ式のソフトを交換して様々なゲームが遊べます。
リング状のコントローラーでCubeを操作して戦ったりできます(クラフトファイター)。

いくつかゲームソフトがありますが、個人的にはGoGo ロボットプログラミング ~ロジーボのひみつ~が特にお気に入りです。

命令カードを読み込ませて、それでゴールを目指しますゲームですが、Scratchよりも簡単にプログラミングの基礎を身につけられるので小学校低学年にオススメです。(あとロジーボかわいい!)

公開された技術仕様

そんなおもちゃなtoioですが、その技術仕様が公開されました。

具体的に公開された情報は
- Cubeのハードウェア仕様
- BLEの通信仕様
- node.jsを用いたJavaScriptライブラリ
の3つです。
これだけの情報があれば大人でもこれを使って遊べますね。
個人的にはM5Stackの足回りにしたりしても面白いかなと思ってます。
ゲームとかも自分で作れそうです。

ハードウェア仕様

Cubeの形状も公開されたので、これをベースに3D Printerで上モノ作ってもいいですね。ただ走行性能をみると、積載重量:200gとあるので、そこはご注意。

BLE通信仕様

通信概要をみると、BLE ペリフェラル(Peripheral)として起動することや、ServiceやCharacteristicsなどのBLE通信仕様が記載されています。

Caracteristicsをみると以下の機能を持つようです。
- ID Information / 読み取りセンサー
- Sensor Information / モーションセンサー
- Button Information / ボタン
- Battery Information / バッテリー
- Motor Control / モーター
- Light Control / ランプ
- Sound Control / サウンド
- Configuration / 設定

特に興味深いのは、読み取りセンサーです。
toioは底面のセンサーで付属しているマットやカードのユニークなIDとその方向が読み取れます。
これによっていろいろなゲームを実現しています。実際に遊んでいるとCubeをマットに置くだけで勝手にゲーム開始位置に戻ったりするので面白いと思っていましたが、そういう仕組だったんですね。

https://toio.github.io/toio-spec/docs/ble_id
ここに細かく仕様について書かれていました。

JavaScriptライブラリ

BLE通信仕様があるので、これに則って通信してもいいですが、とりあえずjsのサンプルを動かしてみようと思います。

https://github.com/toio/toio.js#computer-prerequisites
に環境構築方法が書いてあります。今回はWindowsの環境にしています。
Prerequisitesに記載されている通り、node.jsのnobleというライブラリを使用して動いているようなので、nobleで必要なものをインストールしていきます。

あとtoioのサイトにもリンクありましたが必要なものをインストールしている動画があるのでこれを見るのが手っ取り早いです。
Bluetooth LE with Node.js and Noble on Windows

一つちょっと引っかかったのは、nobleが更に
node-bluetooth-hci-socketというライブラリを使っているのですが、これのCompatible Bluetooth 4.0 USB Adapter'sに記載されているのが、nobleで動作確認済みのBLEドングル(モジュール)のようです。

最初Windows PCの内蔵BLEで試してみましたが、接続できませんでした。
ですので、このリストにある'BCM920702 Bluetooth 4.0'を購入したところ無事接続できました。
具体的には、BCM920702 でネットで検索するとこちらの商品が出てきたのでそちらを購入しています。
サンワサプライ MM-BTUD40
image.png
おそらくリストに記載されている他の型番のものでも動くかとは思います。

あとは動画の通りに、node.jsやZadig toolなどをインストールしていき、完了です。

もう一つ、私のPCではAnaconda使っているので、python 2.7はcondaで環境用意しました。(参考にした記事はこちら Anaconda で Python 環境をインストールする)

# python 2.7の環境構築
$ conda create -n py27 python=2.7 anaconda

# py27への切り替え
$ activate py27

toio.jsのexample実行

あとは、toio.jsをcloneして実行するだけです。
実行するコマンドはこちらに記載されています。
https://github.com/toio/toio.js#how-to-play-sample-application

例えばyarn example:keyboard-controlを実行すると、PCの矢印キーの操作でCubeが動きます。
cubeの電源だけ入れておけば、example実行すると自動的に接続します。

上の動画ではexampleのパラメータを微調整しています。

keyboard-control/index.js
const DURATION = 150 // ms
const SPEED = {
  forward: [30, 30],
  backward: [-30, -30],
  left: [-30, 30],
  right: [30, -30],
}

SPEEDの各パラメータは左右モーターの回転速度です。
例えばleftはその場回転するように左右に同じ絶対値を入れて[-30,30]などとしています。
DURATIONはキーを押した後に動く時間です。これも元の値より少し短くしてみました。

他のサンプルのid-readerは読み取りセンサーで認識したID値とangleが表示されます。angleもかなりの精度で出ていることが確認できました。

おわりに

toioの技術仕様,JavaScriptライブラリが公開されたので、動かしてみました。
これでnode.js使っていろいろ出来そうですね。

59
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59
38