Weigh with VIVIWARE Color Picker?! VIVIWARE Color Pickerで重さを測る?!
VIVIWAREにはまだ重量センサはありませんが、VIVIWARE Cell Color Pickerを使って重さを計測してみました! VIVIWAREにはまだ重量センサはありませんが、VIVIWARE Cell Color Pickerを使って重さを計測してみました!
タグ一覧 Tag List
使っているVIVIWARE Cell VIVIWARE Cell
その他使っているもの Other Parts
しくみ
- 片持ちの板が上に付いた箱を作成
- 板の曲がり具合をVIVIWARE Cell Color Picker(以降、Color Picker Cell)で検出
これで重さ検出ができます。
力が掛かると板が曲がるのは、簡単にわかると思います。
でも、どうして板の曲がりをColor Picker Cellで検出できるのでしょうか?
そこで、まずColor Picker Cellの仕組みを説明します。
左の絵は、Color Picker Cellが色を検出している様子を示しています。
ライトを発光させて、その光のうち反射材から帰ってくる光量をRGB別に計測して、色を判別しています。
そのため、反射材までの距離が大事です。
通常の色検出では、反射材までの距離を一定にしないと正しい色が検出できません。
もし、右の絵のように反射材までの距離が遠くなると、帰ってくる光量が減少してしまうため出力が変わってしまうからです。
さて、今回はこのColor Picker Cellを色検出ではなく、反射板までの距離測定器として使います。特定の距離における反射光量がわかっている反射材を手前に置き、反射光量を計測し、反射材までの距離を計測します。
一方、板材を片持ちにしたときに力とたわみ量は比例します。そのため、板材のたわみ量を測ると、重さを計測することができます。
例えば今回使った板は、250gの重りを載せると約1mmたわみます。
最後に全体の説明です。
上図のように板をColor Picker Cellの前に置きます。
この板は片持ちにしているので、力を掛けると板が曲がります。
その結果、センサーまでの距離が変わり、この距離の変化は重さに比例していると考えます!
このようにしてColor Picker Cellで重さを計測することができるのです。
では、この光量の減少をVIVIWARE Cell のプログラムで検出してみましょう。
この中で、左上のColor Conversionモジュールは反射光量の計算に使います。
色空間の1つであるHSV表示では、Vの値がほぼ反射光量を表しているので、この値を使用します。
そのためにColor Pickerモジュールで取得したRGBの値を、Color Conversionモジュールで変換すると、Vの値を使うことができます。
次に、このままだと分かりにくいので、反射光量の微妙な変化を0から100%になるようにします。
まずはAnalog Memoryモジュールを使って、上図の零点補正のボタンを押して0%の時の値、次に上図の最大値補正のボタンを押して、100%の時の値をそれぞれ保存します。
そして、Calculateモジュールで光量の変化を一次補完しています。
補正について細かく説明すると、取得したVの値78.82から零点補正として、取得した値68.63をひいた値が10.19となります。
一方、最大値として100と表示したい値を最大値補正として取得した値76.5から零点補正した値を引くと7.87となります。
次に10.19をCalculateモジュールで100倍しにして、ふたつめのCalculateモジュールを使って7.87で割ることで、最大値の重さに対して何%になるか表すことができます。
これで、反射光量の微妙な差を0~100で表示できるようになり、板を押し込んだ重さに比例した値を出すセンサが完成しました!
製作
製作するのは、Color Picker Cellの手前に板があり、箱の上部を押すと変形するようになっている箱です。
その箱にColor Picker Cellを納めて、下に押しつけて動かないように箱の内側にマスキングテープ等で固定します。
この箱の設計図は以下のVIVIWARE Shellのプロジェクトシェアを参照してください。
※このプロジェクトを開くには、VIVIWARE Shellアプリのインストールが必要です。
VIVIWARE Shellのプロジェクトシェアについてはこちら
重さの量り方
まず、箱には触れず手を離した状態で、プログラム上でzero adjustと書かれたふきだしのそばのボタンをタップします。
次に、箱の切り込み部分を押せるところまで押しきったときに、プログラム上でfull Scaleと書かれたボタンをタップします。
箱の切り込み部分を押し込む量を変更するたびに、プログラムのCheck Analog モジュールに表示された値で確認してみましょう。
その様子がこちらになります。
このように幾つかの近似をおこなうことで、重量センサの無いVIVIWARE Cellで重さを測る実験をすることができました。
「センサがないのでVIVIWARE Cellで使えない!」と思っても、既存のVIVIWAREのセンサを使い、そのセンサが使える値に変換することで、さまざまなな値を測定することができると思います。
ぜひいろいろと試してみて下さい。
(Created by Hideaki Nii)
しくみ
- 片持ちの板が上に付いた箱を作成
- 板の曲がり具合をVIVIWARE Cell Color Picker(以降、Color Picker Cell)で検出
これで重さ検出ができます。
力が掛かると板が曲がるのは、簡単にわかると思います。
でも、どうして板の曲がりをColor Picker Cellで検出できるのでしょうか?
そこで、まずColor Picker Cellの仕組みを説明します。
左の絵は、Color Picker Cellが色を検出している様子を示しています。
ライトを発光させて、その光のうち反射材から帰ってくる光量をRGB別に計測して、色を判別しています。
そのため、反射材までの距離が大事です。
通常の色検出では、反射材までの距離を一定にしないと正しい色が検出できません。
もし、右の絵のように反射材までの距離が遠くなると、帰ってくる光量が減少してしまうため出力が変わってしまうからです。
さて、今回はこのColor Picker Cellを色検出ではなく、反射板までの距離測定器として使います。特定の距離における反射光量がわかっている反射材を手前に置き、反射光量を計測し、反射材までの距離を計測します。
一方、板材を片持ちにしたときに力とたわみ量は比例します。そのため、板材のたわみ量を測ると、重さを計測することができます。
例えば今回使った板は、250gの重りを載せると約1mmたわみます。
最後に全体の説明です。
上図のように板をColor Picker Cellの前に置きます。
この板は片持ちにしているので、力を掛けると板が曲がります。
その結果、センサーまでの距離が変わり、この距離の変化は重さに比例していると考えます!
このようにしてColor Picker Cellで重さを計測することができるのです。
では、この光量の減少をVIVIWARE Cell のプログラムで検出してみましょう。
この中で、左上のColor Conversionモジュールは反射光量の計算に使います。
色空間の1つであるHSV表示では、Vの値がほぼ反射光量を表しているので、この値を使用します。
そのためにColor Pickerモジュールで取得したRGBの値を、Color Conversionモジュールで変換すると、Vの値を使うことができます。
次に、このままだと分かりにくいので、反射光量の微妙な変化を0から100%になるようにします。
まずはAnalog Memoryモジュールを使って、上図の零点補正のボタンを押して0%の時の値、次に上図の最大値補正のボタンを押して、100%の時の値をそれぞれ保存します。
そして、Calculateモジュールで光量の変化を一次補完しています。
補正について細かく説明すると、取得したVの値78.82から零点補正として、取得した値68.63をひいた値が10.19となります。
一方、最大値として100と表示したい値を最大値補正として取得した値76.5から零点補正した値を引くと7.87となります。
次に10.19をCalculateモジュールで100倍しにして、ふたつめのCalculateモジュールを使って7.87で割ることで、最大値の重さに対して何%になるか表すことができます。
これで、反射光量の微妙な差を0~100で表示できるようになり、板を押し込んだ重さに比例した値を出すセンサが完成しました!
製作
製作するのは、Color Picker Cellの手前に板があり、箱の上部を押すと変形するようになっている箱です。
その箱にColor Picker Cellを納めて、下に押しつけて動かないように箱の内側にマスキングテープ等で固定します。
この箱の設計図は以下のVIVIWARE Shellのプロジェクトシェアを参照してください。
※このプロジェクトを開くには、VIVIWARE Shellアプリのインストールが必要です。
VIVIWARE Shellのプロジェクトシェアについてはこちら
重さの量り方
まず、箱には触れず手を離した状態で、プログラム上でzero adjustと書かれたふきだしのそばのボタンをタップします。
次に、箱の切り込み部分を押せるところまで押しきったときに、プログラム上でfull Scaleと書かれたボタンをタップします。
箱の切り込み部分を押し込む量を変更するたびに、プログラムのCheck Analog モジュールに表示された値で確認してみましょう。
その様子がこちらになります。
このように幾つかの近似をおこなうことで、重量センサの無いVIVIWARE Cellで重さを測る実験をすることができました。
「センサがないのでVIVIWARE Cellで使えない!」と思っても、既存のVIVIWAREのセンサを使い、そのセンサが使える値に変換することで、さまざまなな値を測定することができると思います。
ぜひいろいろと試してみて下さい。
(Created by Hideaki Nii)