スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Androidの振動強度の制御について。続

気が付いたら7月になっていました。セミの鳴き声が聞こえてきてびっくりです。

さて、今回は過去二回にわたって考察してきたAndroidのバイブレーション機能の振動強弱の制御についてです。
原理的には
「PWMのような疑似的に0-1のデジタル信号から中間値を生成し、これを使って中間強度の振動を生み出す。」
ということでなんとなく方向性は間違ってはいない。と思いたい。

しかし、単位がms(ミリセコンド)なので、通常の組み込み的なPWMで使うus(マイクロセコンド)と比べるとやはり大雑把になりがちです。
APIが「ミリ」で提供しているのでこれを「マイクロ」にするのはさすがにきつそうだなと。
自前でここの部分もスレッドを切ったりなんやりすればもっと細かい振動の制御ができそうではある。と思う。

何かうまい方法を模索中です。(Vibratorクラス以外で振動子を制御できたりするのかな?
スポンサーサイト

Vibratorクラスを使ったAndroidの振動強弱の制御(Android vibration Control for strength)

Qiitaとかにのせてみたいと思ってます。でもなんだか怖いのでここにまとめておきます。

さて、おおよそすべてのスマートフォンには振動子、バイブレータが内臓されており主に通知などに使われています。

また、AndroidのAPIではVibratorクラスが用意されており開発者は
「自由」に振動機能を使うことができます。

用意されているのは「振動」「何秒間」維持させるかのみ。
また、ネットを探してみても振動の強さのコントロールを実現している人はいません。

ということでAndroidの標準APIを使って振動の強弱をつくりだしてみました。
※基礎的な振動のさせかたなどは他のサイト等を参考にしてください。





動作環境
Windows10 Home x64
Android Studio 2.3.2
HTL21 Android 4.1
Xperia Z3 Android 5.0


AndroidのAPIで用意されているのは、どのタイミングで振動をON-OFFにするかということになります。
したがって振動の強弱を作り出すためには、直接電圧やらをさげて振動子の回転、および強弱をコントロールするやりかたは取れません
(探してみた範囲ではありませんでした。)

そこでPWMという手法を用います。

ざっくり説明するとON(1)とOFF(0)を高速で入れ替え、周期ごとの平均値によって疑似的に0.5など0,1以外の値を作り出すことができるようになります。
工学系ではLEDの明るさやモータの回転数制御などによく使われ、ぼんやりとした明かりや速度の調整ができるようになります。


よって、本題です。
Androidの振動のオンオフをPWMの考え方を使って制御します。
まず、Vibratorクラスの「void vibrate()」を使います。
  このとき、引数が2つあるものを利用します。

これは第1引数に振動パターンを入れ、
  このときの振動パターンにはPWM的な考えを利用したパターンを入れます。
第2引数にリピート回数を入れます。
  なぜかいまいち分かっていませんが、0を入れても動きます。また、1を入れるよりも0を入れたほうが振動が弱くなります。

振動のパターンは次のようにします。
     long[] pattern = {0, s, t-s};  s(振動の強さ) t(周期,ms)
たとえば、周期を20ms,強さを2段階目とした場合、
     long[] pattern = {0, 2, 18};  s(振動の強さ) t(周期,ms)
と、なります。
第1引数の配列は{待ち時間、振動時間、待ち時間、振動時間、、、、}となっており、ループすることを前提とした場合最初の待ち時間は0msで固定し、以後二つの数値で決めます。

端末によっては振動子の挙動が違うため、振動の強さが小さすぎると振動しない場合もあります。
以下は周期20msで三段階の振動の強さに調整できる簡易スクリプトです。

long[] pat1 = { 0, 1, 19 };
long[] pat10 = { 0, 10, 10 };
long[] pat20 = { 0, 20, 0 };

switch (Value)
{
case 0:
vib.cancel();
break;
case 1:
vib.vibrate(pat1, 0);
break;
case 10:
vib.vibrate(pat10, 0);
break;
case 20:
vib.vibrate(pat20, 0);
break;
}



vibrate()関数の挙動を完璧に追えているわけではありませんが、一応振動の強弱をコントロールすることができました。
周期を変えることで振動の強さの段階を自由に変えることができます。
また、挙動が若干怪しいです。自己責任でお願いします。

VRノートパソコンレビュー、というか使いつぶしました。(G-tune NEXTGEAR-NOTE i5702)

どうも、ということで次回です。自分の中でDK2→VIVEを乗り切った名機の紹介です。
買ってベンチしたよ!記事なんて正直どうでも(

今回はOculus DK2時代の、元祖VR対応ノートPC

「NEXTGEAR-NOTE i5702 」
NEXTGEAR-NOTE i5702


を使いつぶしたのでその感想を書いていきます。

まず、基本スペックですが、

■OS : Windows 10にアップグレード済み
■CPU : インテル® Core™ i3-4170
■グラフィックス : NVIDIA® GeForce® GTX™ 970M(6GB)
■メモリ : 24GB
■SSD : 128GB

と、デフォルトの状態からちょいちょいいじっています。
特にメモリは最終的にこんなに増えました。

なぜこんなにもメモリが増えたかというと、こいつのマザーボードはメモリが4スロットタイプの鬼アツモデルだからです。
なので構成的にはノートPCなのに8GBx3枚みたいな感じになってます。

こういう特殊モデル(マウスコンピューター御用達)につよいメーカー「Clevo」製であり、このi5702はP750zmモデルが元となっています。
なのでBIOS関連やらパーツやら説明書はすべてP750zm仕様なため色々ごにょごにょできます。

買ったのは2015/9だったような気がします。同時期にDK2も手に入れてウハウハしてました。(この2か月後くらいにGTX980のMなしモデルが発表されたはず)

買うきっかけになったのはこちらの記事を読んだからですね。
Oculus Rift DK2が完全動作する「変態ノートPC」はどうやって生まれたのか? マウスコンピューター 杉澤氏に聞いた誕生秘話

当時としては、Optimusの問題にたぶんみんな悩んでいて、どうしてもVR=デスクトップみたいな風潮ができつつあったと思います。
そこにデスクトップCPUを積んだノートPCとは!昔Pen4搭載爆速!(笑)ノートPCを中古で買ったのを思い出します。
そこからDK2を半年くらいいじって酔ってを繰り返していたら
クレカでHTCVIVE買ってました

その後VR開発チームを結成し、おおよそ7か月間がっつりHTC VIVE+Unityを開発したノートPCになります。
意外にも、そこまで激しくスペック不足を感じることなくたまにデモ展示機としても活躍しました。

…しかし、相次ぐ開発と展示による負荷がたまったのか2016年の年末に熱暴走をおこします。
その後再起動しかしてくれなくなりあえなくご隠居しました。


ここからは基本的な使い心地です。
キーボード配列は最近流行りのCtrl、Fn、Win(だったはず)で普段ノートPCを使ってこなかった自分としてはまったく問題ありませんでした。
また、キーストロークは深く、Macみたいなパスパスの浅めが嫌いなので使いやすかったです。
重さに関してですが重すぎてカバンがちぎれました
肝心の熱ですが普通に使ってもやばいです。

いやほんとにファンが回ってるのか疑うレベルで、電源プランを最大パフォーマンスにしているとモニターのヒンジ(左側)部分が触れないほど熱くなります。おそらくCPU側の排熱ですね。
底面から吸気するタイプなのでファン搭載のノートPC台が必須になります。なければなんでもいいので底面に隙間を作る必要があります。
CPU温度は80度を余裕でマークします。その代りGPUは70度前後なので「まだ」平気です。

と、いろいろ書きましたが総評としていい買い物だったと思います。
VR対応ノートPCは今でこそかなり増え、軽くなり、GTX10シリーズにより発熱もパフォーマンスも劇的に改善されました。
加えてThunderbolt 3によって外付けGPUなんてものもできてます(夢にまでみたノートPCのGPU交換!

デスクトップを持ち運んでいるかのような重さとスペックでしたが、その分見返りも大きかったと思います。

ラピッドプロトタイピングな時代にビルド遅いからその間暇ぶっこいてると気分も落ちてきます。少なくとも自分は。
このPCで作った試作品は数知れず、みたいな感じなので、思いついたら速攻コード書きたいしマシンパワーでごり押したい人にはおすすめです。


長くなりましたがこの辺りで締めようと思います。
ちなみに、こういうPCは途中でCPUグリスを塗り替えておくと後々寿命が延びます。
次はThunderbolt 3搭載ノートPCかな?

UnityでWiiリモコンを使う(後編)

こんにちは。

前回書いた「wiiリモコンの途中成果」が最近になって伸びてきました。
これですね。


ありがたいことに、動画を見てもらえた人から質問をいただけたのでこちらでまとめたいと思います。

この動画のシステムを簡単に説明すると、

「wiimotelibのサンプル(Visual Studio)にwiiリモコンのセンサの値をテキストファイルに書き込むものを追加する。」

「Unity側でこのセンサの値が書き込まれたテキストファイルから値をとりだす。」

「オブジェクトの回転に利用する!!」


といった形です。
お気づきかもしれませんがわざわざテキストファイルに書き込むのは意味がないです。
しかし、この当時はほかにやり方を知らず、苦肉の策でセンサデータを渡していました。

現在のやり方では若干変わっており、特にテキストファイルに書き込む~、のあたりが違います。

大学のほうで知ったのですが、TCP通信というソフトウェア間で通信する技術を使っています。(こっちのほうがプログラムとしてはスマート)

しかし、世の中ではすでにバランスボードをUnityで使う方法をまとめている方がいました。
Unity+WindowsでWiiのBalanceBoardを使う
こちらの記事でまとめられています。

参考にしているリンク等もかなり勉強になるのでおすすめです。

と、いうことで今別件でこのwiiリモコンのプログラムを書いているのでまとめてみました。

TCPでやったバージョンもありますがそこまで外見は変わっていません。
若干軽くなった?程度ですかね。

もともとプログラムをPICでしか書いていない人間もだんだんとほかの知識が身についてきたのかなといった具合です。

IVRC落選しました。+その他

こんにちは、今やTwitterのアカウントが2つある意味がなかなかなくなってきて片方に偏ってます。
というかアカウントを切り替えるのがめんd

金曜日にIVRCの書類選考の結果が発表されたのですが、みごと落選いたしました。
(周りの人に書類選考とおるっしょwとかいってはずかしい)
今まで知らなかったのですが、審査コメントというのがいただけるようで。
光栄にもお三方からコメントをいただけました。

何回か読み直したのですが
「ふむ……」
といった言葉しか出なかったです。

というのも今回の企画書はいろいろな人に校正してもらったのですが、
教授と身近な人といった具合で、実際に赤の他人に見てもらうのは初めてだったんですね。

まるで

これを思い出しますね。

これも動画を上げる前に身内(バンド仲間)の評価やら初号機先生に評価を事前にいただいたりしてあげたものなんですね。
コメントにある通りチューニングあってません。
というかそもそもオクターブチューニングとかそんなものも知らなかった時代です。
弦高もめちゃくちゃで……というか、この動画の音声はヘッドホンアンプをボイスレコーダにつないで録音してました()

フィールドが違うところに飛び込んでいくことを実感した動画で、
気に入っていて消してないんですけど今回の選考もそうじゃないかと。

まったく新しいことに飛び込んでいくときはボッコボコにされたほうがなんだか長続きすると思います。
メンタル的にはやられますが。

コメントを外部に漏らしてはいけないっていうのはなかったと思うので、
転載しますが(ダメだったら連絡ください。訂正いたします。)

色々な機構を要素として盛り込もうとしているが,それがどう組み合わさって体験を構成するのかを設計しきれていない.足し算で考えるのではなく,いかに最小限の機構で最大限の効果を発揮させるかを考えたほうが良いだろう.」

ということです。なるほど。わかりました。
まるでギターの音作りのようだ()

ふざけてはないんです、ただあまりに正論過ぎて反論できません。
ほかの2つコメントは屁理屈こねられるのですがこれに関しては受け入れるしかないですね。

すべて匿名なのでどなたがコメントしてくださったのかわからないのが本当に残念です。

来年IVRCに参加するかはわかりませんがとてもいい勉強になりました。
企画書を初めて書いたのもそうですが、実際にコメントを頂けるほうがとてもプラスになったのかなと。

ちょっと振り返るべき時なのかもしれませんね。

拍手

web拍手

FC2カウンター

現在の閲覧者数:

検索フォーム

Twitter...

プロフィール

Head

Author:Head
どもこんにちわHeadです
ゲームのこととか書こうとブログやり始めたら、
もっぱらギターばかりになってました。
最近はVR関連に興味がむいてます。それとunity

{ギター歴:2010.6/27~現在}
{unity:2014.8月~現在}


連絡用のメアド貼っておきます。何かあったら送ってください
head399★gmail.com(★は@に変えてください)

最新トラックバック

ブロとも申請フォーム

QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。