ニートの言葉

元ニートがやってみたこと・その過程で学んだこと・考えたこと・技術メモあたりを主に書いています。情報革命が起きた後に訪れるであろう「一億総ニート時代」の生き方を考え中です。

kinect v2をprocessingで動かしてみた(KinectPV2)

最近kinectで遊んでいるのですが、視覚的に面白いものを簡単に作るにはProcessingというソフトが良い感じに見えたので、今回はProcessingを使ってみます。

Processingとは

インタラクティブアートでよく使われていますね。

電子アートとビジュアルデザインのためのプログラミング言語であり、統合開発環境である。

Processing - Wikipedia

Processingの作品例

キネクトと組み合わせたり

www.youtube.com

データの可視化にも使われたりするようです

www.youtube.com

Kinectを使ってみる

Processingをkinectで使うためのライブラリ

Kinect用にはライブラリが用意されています。

Kinect v2 Processing library for Windows

インストールの方法

インストールの方法としてはこのように書いてあります。

Install

– Automatic: Install from Processing contributors library manager.
– Manual: Install Kinect SDK v2
– Copy KinectPV2 folder to your processing libraries sketch folder.

翻訳すると…

  • Processingにあるライブラリマネージャーを使ってインストール
  • Kinect SDK v2をインストール
  • Processingのスケッチフォルダー内のlibrariesフォルダ(無ければ作成すべき?)にKinectPV2フォルダーをコピーする

動きました

Kinect v2で3Dモデルの顔を動かしたい

Microsoftが販売しているジェスチャーを認識するデバイス「Kinect」を購入しました。

 以前まではXbox用とWindows用で分かれていたようですが、最近は統一されアダプタの有無によってXboxでもPCでも使えるようになったようです。

Xbox One Kinect センサー (DANCE CENTRAL SPOTLIGHT (ご利用コード) 同梱)

Xbox One Kinect センサー (DANCE CENTRAL SPOTLIGHT (ご利用コード) 同梱)

 
マイクロソフト Xbox One Kinect センサー用 Windows PC アダプター 9J7-00001

マイクロソフト Xbox One Kinect センサー用 Windows PC アダプター 9J7-00001

 
Kinectで取得した表情で3Dモデルの顔を動かす

さて このKinect、単体でも表情の情報を取れるのですが、FaceshiftBrekelといったソフトを使うことで取得したデータから3Dモデルの表情を操作することができるようです。

www.youtube.com

Faceshiftは買収され販売中止?

上の動画を見て、ぜひFaceshiftを使ってみたかったのですが、Appleに買収され製造中止になったという記事がありましたので、今回はBrekelを使ってみました。

Brekelの使用シーン

実際に使ってみました。
リアルタイムに表情を表してくれて面白いです。
すごく気持ち悪いですね。

次回はこのデータをもとにかわいい3Dキャラの顔を動かしてみようと思います。

Gulp.jsの「gulp-autoprefixer」を使う時に「ReferenceError: Promise is not defined」が出た

liginc.co.jp

Gulp.jsを勉強しようと思い、こちらのサイトを参考に進めていたところ
「gulp-autoprefixer」の実行時にエラーが出ました。

「5. CSSのベンダープレフィックス付与を自動化」でエラー発生

項目4まではスムーズに進んでいたのですが、項目5で

gulp sass

を実行するとこんなエラーが出ました。

ReferenceError: Promise is not defined

原因はnode.jsのバージョンが古いこと

node.js自体はかなり昔にインストールしていたので、バージョンが古かったようです。おそらく、今回動かなかった原因はこれだったのかなと思います。

一式アップデートしたら動いた

node.jsをアップデートして、npmをアップデートして

2~4まででインストールした

・gulp

・gulp-sass

をインストールし直すと無事動きました

Raspberry Pi 2 と Pythonでws2812bを使う方法

フルカラーLEDのws2812bをRaspberry Pi 2とPythonで動かしたかったのですが、軽く調べた状態では2に対応していないソースしか見つからず午前中いっぱい使ってしまったので、メモ。

オリジナルのソース

github.com

2に対応したもの

github.com

 

後者を使うことで

WS2812Bをラズパイ+Pythonで動かせました。

UnityとArduinoのシリアル通信時における「Object reference not set to an instance of an object」の解決法

Arduinoで取得した加速度センサーの値をUnityにシリアル通信で送りたいと思い、下記のページを参考にしました。

tips.hecomi.com

 

ところが、

Object reference not set to an instance of an object

という警告文が出て、まともに動きませんでした。

 

そこで、問題を追っていったところ

SerialHandler.csの67行目

if (serialPort_.BytesToRead > 0) {

ここのif文でうまく動いていないようです。

 

つまり、serialPort_.BytesToRead が使えないのかな?

 

ということで、今回はそのif文をコメントアウトすることで動作させました。

 

 

変更後

Unity + Arduinoのシリアル通信時のエラー「IOException: アクセスが拒否されました。」の原因と対処方法

UnityとArduinoでシリアル通信をする際に

IOException: アクセスが拒否されました。

というエラーが表示されました。

 

少し悩んだ結果、判明した原因はすごく単純で

Arduinoのシリアルモニターを起動していたことが原因でした。

(シリアルモニターを起動しながら、Unityでシリアル通信を受けることは出来ないようです。)

 

対処法としては、下記の順番でやればOKです、

1.Arduinoに書き込み

2.Unityでプレイ(再生?)

Raspberry_Piで起動時に出る"Kernel lacks cgroups ..."という警告の解消法

今まで何台かのラズベリーパイをセットアップしてきましたが、たまにこのようなwarningが出ます。

【warn】kernel lacks cgroups or memory controller not avaiable, not starting cgroups

発生する条件も、影響範囲も詳しくはわかりませんが、以前この警告が出た時に起動しなくなった時がありましたので、解消法を書いておきます。

 

$sudo nano /boot/cmdline.txt

 

これを elevator=deadline rootwait
これに elevator=deadline cgroup_enable=memory rootwait

 

その後、再起動すると解消します。