toio の姿勢角でモータを制御してみた

アバター画像 お父ちゃん  2021.8.5 
Home > 電子工作 > toio の姿勢角でモータを制御してみた
すき 0
うんこ 0

以前、toioのコンテストでもらったtoioで遊んできました。

ここではtoioの姿勢角でモータを制御して倒立振子ができないか確認いたしました。

 

姿勢角検出

toioはビジュアルプログラミング toio Do で容易に楽しむことできるのですが
2021 8月現在 toio Doではまだ toioの姿勢角を利用することはできません。

 

toio.js

toio Do では姿勢角を楽しめないということで、toio向けNode.jsライブラリの toio.jsを試してみました。

以下を参考にtoio.jsをwin PCに導入しました。

Windowsの場合はパソコン本体のBLEは使用できないようで以下のBluetooth USBアダプタを使用しました。

 

toio.jsを導入しサンプルコードを楽しみました。
キーボードでtoioを動かすサンプルです。

 

続いてtoio.jsで姿勢角を楽しもうと調査したのですが、toio.jsにも姿勢角を利用する関数は用意されていないようでした。。。(間違っていたらスミマセン)

toioの傾き判定や向きを検出する関数は存在し楽しめました。
以下が非常に参考になりました。

 

Node-RED

toio.jpでも姿勢角が利用できないということで途方に暮れていたところ
以下のtoioをNode-REDのBLEノードで利用する記事を見つけました。

これによってtoioをBLEデバイスとして取り扱えるようになり各種BLEサービスUUIDにリクエストしたり読み込んだりして楽しむことができるようになりました。

早速、以下を参考に姿勢角の取得を実施しました。
姿勢角検出
姿勢角検出の設定

toioのピッチ角を取得しました。

 

倒立振子の検討

toioの姿勢角を何とか取得できるようになったので、倒立振子的なことができないか検証しました。

Node-REDのフローは以下

toioのピッチ角を取得して、ピッチ角によってモータの方向と速度を制御するようにしました。

モータ制御 functionノードの内容は以下のようにしました。

ピッチ角の正負でモータの正転・後転を切り替えて角度によって速度を変えてモータ制御命令を生成しています。

モータ制御の命令については以下を参考
 https://toio.github.io/toio-spec/docs/ble_motor

動作

動作の繰り返しループ時間は0.5sec以下にすると 正常に動作しなかったため、上の動画のようなスピード感です。

ちょっとtoioを利用した倒立振子の実現は難しそうですが。。。
大変勉強になりました。

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください