この記事は、2021年の toio のアドベントカレンダー の 14日目 ⇒ 11日目の記事です。
(諸事情により、登録日を後から変更しました)
今年は、toio のカレンダーには 1日目に以下の記事を投稿していたので、これで今年 2つ目になります。
●【toio 2021】 #toio の姿勢角(ロール・ピッチ・ヨー)をブラウザ上で可視化(Web Bluetooth API、Smoothie Charts を利用) - Qiita
https://qiita.com/youtoy/items/9b3b39b3f91b36821305
内容は、以下のツイートにも出てきていて、上記の記事で JavaScript のプログラムで扱った姿勢角の話です。
【機能④_Scratchブロックいろいろ増加!】
— toio(トイオ)公式 (@toio_jp) December 7, 2021
姿勢角や、電池残量、接続状態などが取れるようになりました!!
●姿勢角とは?↓↓https://t.co/0SnEVGuwSa
姿勢角を扱うブロック
以下の公式ブログの記事で、toio Do の新バージョン v1.3 に新ブロックが追加された話が書いてあります。
●toio Doの新バージョンv1.3が公開されました | toio blog | toio(トイオ)
https://toio.io/blog/detail/20211207toio_do_v1-3.html
そして、PC版の toio Do の画面で、姿勢角に関わるブロックの部分を見てみました。
#toioDo の新バージョンで追加されたブロック、その中の姿勢角に関するものを確認!#toio pic.twitter.com/yb5XCZU9Gq
— you (@youtoy) December 11, 2021
取得できる値を確認する
まずは、取得できる値を確認するため、以下のようにしてみました。
Scratch のブロックによっては(例えば、標準のブロックの x座標とか y座標とか)、「チェックボックスを ON にして、値の変化をリアルタイムに確認」というのができるものがありますが、姿勢角についてはそれができなそうでした。
そのため、値を格納するための変数を準備し、その変数の値を出力させる形にしています。
#toioDo の新バージョンで追加された「姿勢角(ロール、ピッチ、ヨー)」は、チェックボックスを ON にして中身を確認、みたいなことができなそう?
— you (@youtoy) December 11, 2021
とりあえず、変数に入れて値を確認する方向にしてみた。#toio pic.twitter.com/on5g1exFLc
値の表示にスライダーを使う
Twitter で、値の表示を数値でなくスライダーにすると良い、とコメントいただきました。
おーありがとうございます!!
— Akichika Tanaka (@akichika) December 11, 2021
ついでにですが、3つ作っていただいているロール・ピッチ・ヨーの変数を右クリックしてスライダー表示にすると、動きが見えやすいかもしれません。
表示のみ切り替えると、良い感じの表示にならなかったので、表示の切り替え後に「スライダーの最大値と最小値の変更」を行いました。
【動画2つ目追加】#toioDo の新バージョンで追加された「姿勢角(ロール、ピッチ、ヨー)」のブロックの変数表示、@akichika さんに、スライダーにすると良い、というアドバイスをいただき、追加で試したもの。
— you (@youtoy) December 11, 2021
(最小値と最大値がデフォルト 0〜100 なので、それを -180〜180 にした)#toio pic.twitter.com/rDC0PbFxlk
少し補足すると、デフォルトのスライダー表示は 0 から 100 の値をとるようになっていて、姿勢角がとる値の範囲と異なっているため、これを変更する必要がある、というものです。
(ひとまず、一律 -180 から 180 の値にしました)
2台の toio で使う
そして 2台の toio を使って、それぞれの姿勢角の値を、1つのスプライトの x・y座標に割り当てる形で動かしてみました。
単純に、「片方のピッチ」と「残りもう 1つのロール」のそれぞれを、画面上の toio のスプライトの x・y座標に常に代入する、というプログラムです。
#toioDo の新バージョンで追加された「姿勢角(ロール、ピッチ、ヨー)」のブロックを、少ないブロックでお試し。
— you (@youtoy) December 11, 2021
(片方の 3つの値を出す仕組みは残しつつ)#toio pic.twitter.com/UaX2Y2KEDt
数値の変化も、スプライトの移動も、良い感じになったと思います。