Pepper
Choregraphe

タブレットにリアルタイムにカメラ画像を表示する

More than 3 years have passed since last update.

アクアリング鶴舞ラボ、エンジニアのタイジマンです。

先日、スタッフの結婚披露宴のウェルカムボードにPepperを使用しました。

(どんなアプリケーションにしたかは、リンク先をご覧ください)

0610_31.jpg

Pepperをカメラマンにして、写真をとる機能を実装したんですが、

どうせなら、リアルタイムでPepperのカメラの映像がみれたほうがいいよね

とタブレットに表示させたところ、すこし苦労したので、メモをしておきます。


画像をキャプチャする。

ALVideoDevice#getImageRemoteを使うと、その機能は、実装できますね。

setTimeoutを設定すれば、映像のように見せることができます。(すこし、ぎこちないですが)

色は、モノクロかカラーで表示できればいいのですが、16種類もあるようですね。

http://doc.aldebaran.com/2-1/family/robots/video_robot.html#cameracolorspace-mt9m114

下記リンクに、パフォーマンスについて、記述されているので、どれくらい違いがでるのか計測してみました。

http://doc.aldebaran.com/2-1/naoqi/vision/alvideodevice.html#performances-and-limitations

ペッパーのカメラからYUV形式で取得されるそうなので、YUVとRGBで実験しました。各カラー設定で100回づつ連続して取得しています。100回なんて、と思いきや、結構パフォーマンスに響いているようです。

Camera ID
ColorSpace
Size
Min
Max
Avg

0
Monochrome(Y)
320x240
65
2255
313.03

0
YUV422
320x240
218
11314
975.45

0
YUV
320x240
294
3743
718.25

0
RGB
320x240
309
11409
1758.01

やっぱし、YUVなんですね。仕事の合間に作成したので、あまり時間もかけなかったため、とりあえずモノクロで実装しましたが、YUVの変換は、どこかで一回やっておきたいですね。

ちなみに、カメラIDを2にすると赤外線カメラの画像が取得できるようです

カラースペースを17にすると、深度がとれます。すこし、何かに使えそうですね・・・。

パフォーマンス測定をすると、以下の結果。

Camera ID
ColorSpace
Size
Min
Max
Avg

2
Depth
320x240
195
7863
779.63


タブレットに表示する。

こちらですが、subscribe/unsubscribeをうまくやらないと、画像が急に表示されなくなります。

手元にあるPepperでは、登録時のIDが同じものが7件より多くsubscribeすると、そういう症状が発生しました。

ということで、気をつけてやりましょう。

タブレット表示部分だけ抜粋すると、以下になります。

スクリーンショット 2015-07-01 17.33.59.png

Raise Eventで、カメラ表示開始と終了のイベントを発行して、タブレットのHTML側で、subscribe/unsubscribeしています。

この二つがしっかり動かないと画像が表示されないので、注意しましょう。

一応、タブレットを閉じた後に、ログ出力させています。

同一IDでsubscribeした場合、hoge_0,hoge_1となるので、unsubscribeは、ボックス内でやってもいいかもしれません。

本記事用のソースは以下に置いておきましたので、参考になれば・・・。

https://github.com/aquaring/PepperTabletDemo

0269_01.jpg


追記:

まぁでもみんなPepper自体めずらしいし、Pepperに写真撮ってもらうより、

Pepperと写真とりたがりますね。