コイン・サイズのお手軽センサーで自転車センシング

Critical Cycling展2017 Winterの作品では、自転車の走行状態を的確に取得するために、Mbient社のMetaWear CPROを使用した。これはコイン・サイズのモジュールで、数種類のセンサ類とBluetooth LEのワイヤレス通信機能を持つ。これを自転車のハブに両面テープで貼り付ければ、高性能な走行センシングができる。SDK(ソフトウェア開発キット)も提供されていて、扱い方も簡単だった。

ロード・バイクに乗る人なら、たいていはホイールやクランクの回転を捉える走行センサーを取り付けているだろう。だが、一般的なセンサーでは、1〜2秒遅れてデータが届くのが難点だ。サイクル・コンピュータを見ていると、数値の変化が遅れていることに気がつくだろう。これはバッテリーの消費を抑えるためで、センシングは常に行っているが、通信は1秒に1回程度しか行わないからだ。

このような遅れは、通常のライドでのモニタや記録には問題にならない。だが、走行状況をタイトに反映させる用途では困ってしまう。例えば、ペダルを漕いでバーチャルなサイクリングを体験する作品では、ペダルを漕ぎ始めても、少し時間が経たないと映像が動き始めないからだ。ブレーキをかけても、しばらくはそのまま走っている。これは興ざめであるだけでなく、体験自体が成り立たない。

そこで、MetaWearを時間的な反応性が良いセンサーとして用いた。コイン・サイズながら、3軸加速度センサ、3軸ジャイロ・センサ、3軸磁気センサ、気圧センサ、温度センサ、プッシュ・ボタン、フルカラーLED、GPIO(汎用入出力端子)、そしてBluetooth LEを備えている。Mbient社は以前のKickstarterキャンペーンで、MetaWearと同等のArduinoをユーモラスに伝えている。

また、同社は用途に応じたモジュールを数種類発売していて、基本的に単体で十分な機能を果たすように考えられている。汎用の入出力端子を持つものの、ハンダ付けによる機能拡張を前提としていない。数年来のスマートフォン・ブームのお陰で、各種センサーは小型化し、高性能化している。MetaWearでもセンサーは砂粒のようで、コイン電池の大きさで全体のサイズを決めているようだ。

ハードウェアの小型パッケージ化とともに、ソフトウェアも利用しやすいライブラリが用意されている。Bluetooth LE機器の検出と接続は必要だが、その後のセンサーの値を得るのは簡単だ。オマジナイのクロージャの中にお望みの処理を書くだけ。以下のコードは加速度センサーの値を周期的に表示する。任意のタイミングで値を取得することも、何らかのトリガーで処理することもできる。

device.gyro!.dataReadyEvent.startNotificationsAsync { (obj, error) in
    if let obj = obj {
        // ここからが自分で書く処理
        print("\(obj.x) | \(obj.y) | \(obj.z)")
    }
}

取得したセンサーの値は、Wi-FiでOSC(Open Sound Control)としてブロードキャストした。OSCは音楽・映像系で使われる通信プロトコルだ。これにより、OSCに対応したアプリであれば何でも利用できる。今回は、Playstation VR用のMacMorpheus (Objective-C)や、HoloLens用のUnity (C#)、そしてVJアプリのVDMX5を用いている。ひとつのセンサーを複数のデバイスで利用できるのも有り難い。

最初の写真のように、今回は自転車の走行速度を得るために、自転車のハブにMetaWearを取り付け、ジャイロ・センサーを利用した。走行速度は車軸の回転に比例するからだ。しかも、回転方向の一軸のデータだけで良い。つまり、MetaWearは数多くのセンサーを持っているものの、一つの値しか必要がない。これは大富豪メソッドと呼ぶべきだが、MetaWear CPROは$65と安価だ。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA