つくるの大好き。

つくるのが大好きな人の記録。

Unity2017で async/await を試してみた

Unity2017から正式に .NET4.6 C#6.0 が利用できるようになりました。
もっとスマートにコードを書きたいのに妥協していた人や、HoloLensアプリ開発でUnityEditorとUWPプロジェクトのC#バージョンの違いにビルド時のエラーで気づかされてああんもうってなってた人には待ちに待った機能ではないでしょうか。

f:id:peugeot-106-s16:20170714164455p:plain


C#バージョンの変更方法はこちら。

blogs.unity3d.com

早速コルーチンとasync/awaitの同時利用などを試してみました。

using System.Collections;
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    private const int LoopTimes = 500;

    void Start ()
    {
        this.StartCoroutine(this.TestCoroutine());
        //this.TestAsync();
        this.StartCoroutine(this.TestAsyncInCoroutine());
    }
    private IEnumerator TestCoroutine()
    {
        for (var i = 0; i < LoopTimes; i++)
        {
            Debug.Log(" C " + i);
            yield return null;
        }
    }

    private async void TestAsync()
    {
        var context = SynchronizationContext.Current;
        await Task.Run(() => 
        {
            for (var i = 0; i < LoopTimes; i++)
            {
                Debug.Log("A " + i);
                context.Post((state) =>
                {
                    var p = this.transform.localPosition;
                    p.x += 0.1f;
                    this.transform.localPosition = p;
                }, null);
            }
        });
    }

    private IEnumerator TestAsyncInCoroutine()
    {
        this.TestAsync();
        yield break;
    }
}

this.TestAsync(); と this.StartCoroutine(this.TestAsyncInCoroutine()); はコメントで切り替えて使います。
それぞれ通常の async/awit とコルーチンからのasync/awit呼び出しをテストできます。

結果としてはきちんと並行動作が行われています。
コルーチンがフレームレートに依存するのに対して、async/awaitはスレッドなので可能な限り最高速で動いていることもわかりますね。
f:id:peugeot-106-s16:20170714165224p:plain

また、このasync/awaitのテストコードにあるようにSynchronizationContextを利用すれば、メインスレッド側でGameObjectのTransformなど、スレッドアンセーフなUnityのAPIにアクセスすることも可能です。

とても今風になりましたね!
今後積極的に使っていこうと思います。

ShuttleさんのGPU搭載可能ベアボーン「SZ170R8V2」を試してみた

日本ShuttleさんよりフルサイズGPUも搭載できるベアボーンSZ170R8V2」を検証用にお貸出し頂きましたので軽くレビューを書きます。

f:id:peugeot-106-s16:20170707163812j:plain

ShuttleさんPCケースの特徴として、長期にわたってサイズ等が変わらないというのがあるそうです。例えば組込用途など組み込んだ状態で長期にわたって使う場合、世代交代があっても形が変わらないというのはメリットですね。

外部インターフェイスとしては↑の写真のようなフロントパネル配置のものに加えて、背面にも多くのインターフェイスがあります。
LANが2ポート用意されているのも帯域確保やいざというときの耐障害性に役立つ仕様ですね。

あとDisplayPort 2ポート+HDMIとデフォルトでも多くのディスプレイが使えそうです。

f:id:peugeot-106-s16:20170707164150j:plain

でも最大の特徴は右のPCI Expressスロットですね。

ここにぶちこめますGPUまるごと!

f:id:peugeot-106-s16:20170707164354j:plain

f:id:peugeot-106-s16:20170707164418j:plain

ケースがコンパクトなので電源ケーブルの取り回しには少し苦労しましたが、フルサイズのGPUが組み込めるのはインパクトあります。
リッチなVRコンテンツを期間限定展示するような用途にもパワフルで持ち運びもしやすいこのPCは良いのではないでしょうか。

 

余談ですが、マニュアルもジャンパ設定がほとんどを占めるというマニアックさがいい感じですねw

f:id:peugeot-106-s16:20170707164715j:plain

 

今回はこのケースに Corei7 3.4GHzのCPUとSSDを搭載した状態でお貸出し頂き、追加でNVIDIA GeForce970 をビルトインしました。

KINECTでキャラに変身できるきゃらみらーもQuality=Fantasticであっても当然のようにサクサクです。
今回は試せませんでしたがOculusやVIVEのコンテンツもGPUを変えることで余裕で運用することができそうです。

youtu.be

 

f:id:peugeot-106-s16:20170707172943p:plain

f:id:peugeot-106-s16:20170707173005p:plain

 

コンパクトなVRマシンを探しているけどノートはちょっと、という方や、VRの展示をよくやるんだけど持ち運びが楽なデスクトップ機があればいいと思っていたような方にはオススメではないでしょうか。

 

Intel RealSense Camera ZR300を試してみた

先週のIntel Euclid Developer Kitのトライアルに続き、今日はIntel RealSense Camera ZR300のトライアルをしてみました。

f:id:peugeot-106-s16:20170625171003j:plain

click.intel.com

このZR300、Euclidと同様ロボットの目や環境センシングを目的に開発されたもので、基本センシング機能はEuclidと同等のようです。
大きな違いはEuclidはCPUを持ちスタンドアロンで動作するのに対し、ZR300はPC等に接続して利用するセンシング用カメラデバイスとなっているところです。

基本的にはLinuxが動作環境であり、Intel RealSens SDK for Linux が対応しています。
逆にIntel RealSense SDK for WindowsはZR300非対応となっています。

ただ、librealsenseを利用するとWindowsでもZR300を利用することができます。

 

レンジの違い

近距離、中距離、遠距離でのDepthの取れ方を視覚的に比較してみました。
これによるとZR300はR200よりレンジは狭く、近距離、中距離では黒くなって取れない範囲が多いことがわかりました。
遠距離でもR200よりは認識が減衰する距離が近いことがわかりました。
ということで静的な認識目的ではR200が最もレンジが広そうです。
(ZR300ちょと微妙じゃないか、、?)
屋外でのテストは今回できなかったのでまた実施してみたいと思います。

f:id:peugeot-106-s16:20170625174001p:plain

f:id:peugeot-106-s16:20170625174024p:plain

f:id:peugeot-106-s16:20170625174053p:plain

 

また、ZR300の大きな特徴であるジャイロや加速度の値もlibrealseseで取得することができます。

f:id:peugeot-106-s16:20170625174520p:plain

スペック

スペック詳細は下記ページの"Specification"タブに載っています。
基本的には環境センシング用としてR200っぽい雰囲気ですが、大きな違いとしては加速度、ジャイロセンサーがついていることです。
動体に搭載する場合これらは重要です。

Intel® RealSense™ Development Kit Featuring the ZR300 - Intel® RealSense™ Developer Kits

カメラ系のモードを比較のために列挙してみました。(死ぬほどあったw 
ここからも各カメラの性格の違いが垣間見れて興味深いです。

というわけで、動体への搭載や環境センシング向けに、構成に応じてEuclidとZR300を使い分けると良いですね。

Depth
ZR300 R200 F200
640 x 480 @ 90Hz Z16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 90Hz Z16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 60Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 90Hz DISPARITY16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 90Hz DISPARITY16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 30Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 60Hz Z16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 60Hz Z16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 15Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 60Hz DISPARITY16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 60Hz DISPARITY16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 5Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 30Hz Z16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 30Hz Z16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 2Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 30Hz DISPARITY16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 30Hz DISPARITY16 57.5 x 44.8 degrees, distortion = NONE 640 x 240 @ 60Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 90Hz Z16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 90Hz Z16 56.6 x 43.8 degrees, distortion = NONE 640 x 240 @ 30Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 90Hz DISPARITY16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 90Hz DISPARITY16 56.6 x 43.8 degrees, distortion = NONE 640 x 240 @ 15Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 60Hz Z16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 60Hz Z16 56.6 x 43.8 degrees, distortion = NONE 640 x 240 @ 5Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 60Hz DISPARITY16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 60Hz DISPARITY16 56.6 x 43.8 degrees, distortion = NONE 640 x 240 @ 2Hz Z16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 30Hz Z16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 30Hz Z16 56.6 x 43.8 degrees, distortion = NONE  
628 x 468 @ 30Hz DISPARITY16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 30Hz DISPARITY16 56.6 x 43.8 degrees, distortion = NONE  
492 x 372 @ 90Hz Z16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 90Hz Z16 57.5 x 45.1 degrees, distortion = NONE  
492 x 372 @ 90Hz DISPARITY16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 90Hz DISPARITY16 57.5 x 45.1 degrees, distortion = NONE  
492 x 372 @ 60Hz Z16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 60Hz Z16 57.5 x 45.1 degrees, distortion = NONE  
492 x 372 @ 60Hz DISPARITY16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 60Hz DISPARITY16 57.5 x 45.1 degrees, distortion = NONE  
492 x 372 @ 30Hz Z16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 30Hz Z16 57.5 x 45.1 degrees, distortion = NONE  
492 x 372 @ 30Hz DISPARITY16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 30Hz DISPARITY16 57.5 x 45.1 degrees, distortion = NONE  
480 x 360 @ 90Hz Z16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 90Hz Z16 56.4 x 43.8 degrees, distortion = NONE  
480 x 360 @ 90Hz DISPARITY16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 90Hz DISPARITY16 56.4 x 43.8 degrees, distortion = NONE  
480 x 360 @ 60Hz Z16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 60Hz Z16 56.4 x 43.8 degrees, distortion = NONE  
480 x 360 @ 60Hz DISPARITY16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 60Hz DISPARITY16 56.4 x 43.8 degrees, distortion = NONE  
480 x 360 @ 30Hz Z16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 30Hz Z16 56.4 x 43.8 degrees, distortion = NONE  
480 x 360 @ 30Hz DISPARITY16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 30Hz DISPARITY16 56.4 x 43.8 degrees, distortion = NONE  
332 x 252 @ 90Hz Z16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 90Hz Z16 57.4 x 45.2 degrees, distortion = NONE  
332 x 252 @ 90Hz DISPARITY16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 90Hz DISPARITY16 57.4 x 45.2 degrees, distortion = NONE  
332 x 252 @ 60Hz Z16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 60Hz Z16 57.4 x 45.2 degrees, distortion = NONE  
332 x 252 @ 60Hz DISPARITY16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 60Hz DISPARITY16 57.4 x 45.2 degrees, distortion = NONE  
332 x 252 @ 30Hz Z16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 30Hz Z16 57.4 x 45.2 degrees, distortion = NONE  
332 x 252 @ 30Hz DISPARITY16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 30Hz DISPARITY16 57.4 x 45.2 degrees, distortion = NONE  
320 x 240 @ 90Hz Z16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 90Hz Z16 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 90Hz DISPARITY16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 90Hz DISPARITY16 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 60Hz Z16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 60Hz Z16 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 60Hz DISPARITY16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 60Hz DISPARITY16 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 30Hz Z16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 30Hz Z16 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 30Hz DISPARITY16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 30Hz DISPARITY16 55.7 x 43.2 degrees, distortion = NONE  
Color
ZR300 R200 F200
1920 x 1080 @ 30Hz YUYV 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz YUYV 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz YUYV 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 30Hz RGB8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz RGB8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz RGB8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 30Hz BGR8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz BGR8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz BGR8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 30Hz RGBA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz RGBA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz RGBA8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 30Hz BGRA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz BGRA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz BGRA8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 30Hz RAW16 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 30Hz RAW10 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz YUYV 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 15Hz YUYV 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz YUYV 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz RGB8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 15Hz RGB8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz RGB8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz BGR8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 15Hz BGR8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz BGR8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz RGBA8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 15Hz RGBA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz RGBA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz BGRA8 70 x 42.9 degrees, distortion = NONE
1920 x 1080 @ 15Hz BGRA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 15Hz BGRA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 5Hz YUYV 70 x 42.9 degrees, distortion = NONE
1280 x 720 @ 15Hz YUYV 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz YUYV 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 5Hz RGB8 70 x 42.9 degrees, distortion = NONE
1280 x 720 @ 15Hz RGB8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz RGB8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 5Hz BGR8 70 x 42.9 degrees, distortion = NONE
1280 x 720 @ 15Hz BGR8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz BGR8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 5Hz RGBA8 70 x 42.9 degrees, distortion = NONE
1280 x 720 @ 15Hz RGBA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz RGBA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 5Hz BGRA8 70 x 42.9 degrees, distortion = NONE
1280 x 720 @ 15Hz BGRA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz BGRA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 2Hz YUYV 70 x 42.9 degrees, distortion = NONE
960 x 540 @ 15Hz YUYV 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz YUYV 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 2Hz RGB8 70 x 42.9 degrees, distortion = NONE
960 x 540 @ 15Hz RGB8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz RGB8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 2Hz BGR8 70 x 42.9 degrees, distortion = NONE
960 x 540 @ 15Hz BGR8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz BGR8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 2Hz RGBA8 70 x 42.9 degrees, distortion = NONE
960 x 540 @ 15Hz RGBA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz RGBA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1920 x 1080 @ 2Hz BGRA8 70 x 42.9 degrees, distortion = NONE
960 x 540 @ 15Hz BGRA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz BGRA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 30Hz YUYV 70 x 42.9 degrees, distortion = NONE
848 x 480 @ 15Hz YUYV 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 15Hz YUYV 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 30Hz RGB8 70 x 42.9 degrees, distortion = NONE
848 x 480 @ 15Hz RGB8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 15Hz RGB8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 30Hz BGR8 70 x 42.9 degrees, distortion = NONE
848 x 480 @ 15Hz BGR8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 15Hz BGR8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 30Hz RGBA8 70 x 42.9 degrees, distortion = NONE
848 x 480 @ 15Hz RGBA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 15Hz RGBA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 30Hz BGRA8 70 x 42.9 degrees, distortion = NONE
848 x 480 @ 15Hz BGRA8 69.5 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 15Hz BGRA8 68.4 x 41.8 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz YUYV 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 60Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 60Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz RGB8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 60Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 60Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz BGR8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 60Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 60Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz RGBA8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 60Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 60Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 15Hz BGRA8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 60Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 60Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 5Hz YUYV 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 30Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 30Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 5Hz RGB8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 30Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 30Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 5Hz BGR8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 30Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 30Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 5Hz RGBA8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 30Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 30Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 5Hz BGRA8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 30Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 30Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 2Hz YUYV 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 15Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 15Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 2Hz RGB8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 15Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 15Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 2Hz BGR8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 15Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 15Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 2Hz RGBA8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 15Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 15Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 1280 x 720 @ 2Hz BGRA8 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 15Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 15Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 60Hz YUYV 70 x 42.9 degrees, distortion = NONE
640 x 480 @ 15Hz RAW16 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 480 @ 15Hz RAW16 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 60Hz RGB8 70 x 42.9 degrees, distortion = NONE
640 x 360 @ 15Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 360 @ 15Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 60Hz BGR8 70 x 42.9 degrees, distortion = NONE
640 x 360 @ 15Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 360 @ 15Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 60Hz RGBA8 70 x 42.9 degrees, distortion = NONE
640 x 360 @ 15Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 360 @ 15Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 60Hz BGRA8 70 x 42.9 degrees, distortion = NONE
640 x 360 @ 15Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 360 @ 15Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 30Hz YUYV 70 x 42.9 degrees, distortion = NONE
640 x 360 @ 15Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 640 x 360 @ 15Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 30Hz RGB8 70 x 42.9 degrees, distortion = NONE
424 x 240 @ 15Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 424 x 240 @ 15Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 30Hz BGR8 70 x 42.9 degrees, distortion = NONE
424 x 240 @ 15Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 424 x 240 @ 15Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 30Hz RGBA8 70 x 42.9 degrees, distortion = NONE
424 x 240 @ 15Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 424 x 240 @ 15Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 30Hz BGRA8 70 x 42.9 degrees, distortion = NONE
424 x 240 @ 15Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 424 x 240 @ 15Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz YUYV 70 x 42.9 degrees, distortion = NONE
424 x 240 @ 15Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 424 x 240 @ 15Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz RGB8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 60Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 60Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz BGR8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 60Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 60Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz RGBA8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 60Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 60Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 15Hz BGRA8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 60Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 60Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 5Hz YUYV 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 60Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 60Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 5Hz RGB8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 30Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 30Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 5Hz BGR8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 30Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 30Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 5Hz RGBA8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 30Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 30Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 5Hz BGRA8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 30Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 30Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 2Hz YUYV 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 30Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 30Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 2Hz RGB8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 15Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 15Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 2Hz BGR8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 15Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 15Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 2Hz RGBA8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 15Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 15Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 960 x 540 @ 2Hz BGRA8 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 15Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 15Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 60Hz YUYV 70 x 42.9 degrees, distortion = NONE
320 x 240 @ 15Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 240 @ 15Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 60Hz RGB8 70 x 42.9 degrees, distortion = NONE
320 x 180 @ 15Hz YUYV 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 180 @ 15Hz YUYV 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 60Hz BGR8 70 x 42.9 degrees, distortion = NONE
320 x 180 @ 15Hz RGB8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 180 @ 15Hz RGB8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 60Hz RGBA8 70 x 42.9 degrees, distortion = NONE
320 x 180 @ 15Hz BGR8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 180 @ 15Hz BGR8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 60Hz BGRA8 70 x 42.9 degrees, distortion = NONE
320 x 180 @ 15Hz RGBA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 180 @ 15Hz RGBA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 30Hz YUYV 70 x 42.9 degrees, distortion = NONE
320 x 180 @ 15Hz BGRA8 55 x 42.8 degrees, distortion = MODIFIED_BROWN_CONRADY 320 x 180 @ 15Hz BGRA8 54 x 41.5 degrees, distortion = MODIFIED_BROWN_CONRADY 848 x 480 @ 30Hz RGB8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 30Hz BGR8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 30Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 30Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 15Hz YUYV 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 15Hz RGB8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 15Hz BGR8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 15Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 15Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 5Hz YUYV 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 5Hz RGB8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 5Hz BGR8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 5Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 5Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 2Hz YUYV 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 2Hz RGB8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 2Hz BGR8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 2Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    848 x 480 @ 2Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    640 x 480 @ 60Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 60Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 60Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 60Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 60Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 30Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 30Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 30Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 30Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 30Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 15Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 15Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 15Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 15Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 15Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 5Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 5Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 5Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 5Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 5Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 2Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 2Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 2Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 2Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 480 @ 2Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    640 x 360 @ 60Hz YUYV 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 60Hz RGB8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 60Hz BGR8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 60Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 60Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 30Hz YUYV 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 30Hz RGB8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 30Hz BGR8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 30Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 30Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 15Hz YUYV 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 15Hz RGB8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 15Hz BGR8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 15Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 15Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 5Hz YUYV 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 5Hz RGB8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 5Hz BGR8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 5Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 5Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 2Hz YUYV 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 2Hz RGB8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 2Hz BGR8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 2Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    640 x 360 @ 2Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 60Hz YUYV 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 60Hz RGB8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 60Hz BGR8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 60Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 60Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 30Hz YUYV 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 30Hz RGB8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 30Hz BGR8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 30Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 30Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 15Hz YUYV 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 15Hz RGB8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 15Hz BGR8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 15Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 15Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 5Hz YUYV 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 5Hz RGB8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 5Hz BGR8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 5Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 5Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 2Hz YUYV 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 2Hz RGB8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 2Hz BGR8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 2Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    424 x 240 @ 2Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    320 x 240 @ 60Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 60Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 60Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 60Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 60Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 30Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 30Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 30Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 30Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 30Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 15Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 15Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 15Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 15Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 15Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 5Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 5Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 5Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 5Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 5Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 2Hz YUYV 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 2Hz RGB8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 2Hz BGR8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 2Hz RGBA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 240 @ 2Hz BGRA8 55.4 x 42.9 degrees, distortion = NONE
    320 x 180 @ 60Hz YUYV 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 60Hz RGB8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 60Hz BGR8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 60Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 60Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 30Hz YUYV 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 30Hz RGB8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 30Hz BGR8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 30Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 30Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 15Hz YUYV 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 15Hz RGB8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 15Hz BGR8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 15Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 15Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 5Hz YUYV 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 5Hz RGB8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 5Hz BGR8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 5Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 5Hz BGRA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 2Hz YUYV 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 2Hz RGB8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 2Hz BGR8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 2Hz RGBA8 70 x 42.9 degrees, distortion = NONE
    320 x 180 @ 2Hz BGRA8 70 x 42.9 degrees, distortion = NONE

Infrared

ZR300 (Stereo) R200 (Stereo) F200
640 x 480 @ 90Hz Y8 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 90Hz Y8 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 300Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 90Hz Y16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 90Hz Y16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 300Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 60Hz Y8 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 60Hz Y8 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 240Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 60Hz Y16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 60Hz Y16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 240Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 30Hz Y8 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 30Hz Y8 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 120Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
640 x 480 @ 30Hz Y16 57.7 x 44.9 degrees, distortion = NONE 640 x 480 @ 30Hz Y16 57.5 x 44.8 degrees, distortion = NONE 640 x 480 @ 120Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 90Hz Y8 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 90Hz Y8 56.6 x 43.8 degrees, distortion = NONE 640 x 480 @ 60Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 90Hz Y16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 90Hz Y16 56.6 x 43.8 degrees, distortion = NONE 640 x 480 @ 60Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 60Hz Y8 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 60Hz Y8 56.6 x 43.8 degrees, distortion = NONE 640 x 480 @ 30Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 60Hz Y16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 60Hz Y16 56.6 x 43.8 degrees, distortion = NONE 640 x 480 @ 30Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 30Hz Y8 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 30Hz Y8 56.6 x 43.8 degrees, distortion = NONE 640 x 480 @ 15Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
628 x 468 @ 30Hz Y16 56.8 x 43.9 degrees, distortion = NONE 628 x 468 @ 30Hz Y16 56.6 x 43.8 degrees, distortion = NONE 640 x 480 @ 15Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
492 x 372 @ 90Hz Y8 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 90Hz Y8 57.5 x 45.1 degrees, distortion = NONE 640 x 480 @ 5Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
492 x 372 @ 90Hz Y16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 90Hz Y16 57.5 x 45.1 degrees, distortion = NONE 640 x 480 @ 5Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
492 x 372 @ 60Hz Y8 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 60Hz Y8 57.5 x 45.1 degrees, distortion = NONE 640 x 480 @ 2Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
492 x 372 @ 60Hz Y16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 60Hz Y16 57.5 x 45.1 degrees, distortion = NONE 640 x 480 @ 2Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
492 x 372 @ 30Hz Y8 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 30Hz Y8 57.5 x 45.1 degrees, distortion = NONE 640 x 240 @ 300Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
492 x 372 @ 30Hz Y16 57.3 x 44.9 degrees, distortion = NONE 492 x 372 @ 30Hz Y16 57.5 x 45.1 degrees, distortion = NONE 640 x 240 @ 300Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
480 x 360 @ 90Hz Y8 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 90Hz Y8 56.4 x 43.8 degrees, distortion = NONE 640 x 240 @ 240Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
480 x 360 @ 90Hz Y16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 90Hz Y16 56.4 x 43.8 degrees, distortion = NONE 640 x 240 @ 240Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
480 x 360 @ 60Hz Y8 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 60Hz Y8 56.4 x 43.8 degrees, distortion = NONE 640 x 240 @ 120Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
480 x 360 @ 60Hz Y16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 60Hz Y16 56.4 x 43.8 degrees, distortion = NONE 640 x 240 @ 120Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
480 x 360 @ 30Hz Y8 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 30Hz Y8 56.4 x 43.8 degrees, distortion = NONE 640 x 240 @ 60Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
480 x 360 @ 30Hz Y16 56.1 x 43.6 degrees, distortion = NONE 480 x 360 @ 30Hz Y16 56.4 x 43.8 degrees, distortion = NONE 640 x 240 @ 60Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
332 x 252 @ 90Hz Y8 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 90Hz Y8 57.4 x 45.2 degrees, distortion = NONE 640 x 240 @ 30Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
332 x 252 @ 90Hz Y16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 90Hz Y16 57.4 x 45.2 degrees, distortion = NONE 640 x 240 @ 30Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
332 x 252 @ 60Hz Y8 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 60Hz Y8 57.4 x 45.2 degrees, distortion = NONE 640 x 240 @ 15Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
332 x 252 @ 60Hz Y16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 60Hz Y16 57.4 x 45.2 degrees, distortion = NONE 640 x 240 @ 15Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
332 x 252 @ 30Hz Y8 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 30Hz Y8 57.4 x 45.2 degrees, distortion = NONE 640 x 240 @ 5Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
332 x 252 @ 30Hz Y16 57.2 x 44.9 degrees, distortion = NONE 332 x 252 @ 30Hz Y16 57.4 x 45.2 degrees, distortion = NONE 640 x 240 @ 5Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
320 x 240 @ 90Hz Y8 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 90Hz Y8 55.7 x 43.2 degrees, distortion = NONE 640 x 240 @ 2Hz Y8 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
320 x 240 @ 90Hz Y16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 90Hz Y16 55.7 x 43.2 degrees, distortion = NONE 640 x 240 @ 2Hz Y16 67.6 x 53.3 degrees, distortion = INVERSE_BROWN_CONRADY
320 x 240 @ 60Hz Y8 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 60Hz Y8 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 60Hz Y16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 60Hz Y16 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 30Hz Y8 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 30Hz Y8 55.7 x 43.2 degrees, distortion = NONE  
320 x 240 @ 30Hz Y16 55.4 x 43 degrees, distortion = NONE 320 x 240 @ 30Hz Y16 55.7 x 43.2 degrees, distortion = NONE  
Fisheye
ZR300 (Stereo) R200 F200
640 x 480 @ 60Hz RAW8 102 x 86.4 degrees, distortion = FTHETA    
640 x 480 @ 30Hz RAW8 102 x 86.4 degrees, distortion = FTHETA    

Intel Euclid Developer Kit を試してみた

f:id:peugeot-106-s16:20170618140722j:plain

Intel Euclid Developer Kitは、5月31日に発売になったIntel RealSenseカメラとAtom プロセッサ、及びWiFI等を内蔵したスタンドアロン動作するデバイスです。

https://click.intel.com/

gigazine.net

非常にロボットの目、ロボットの頭脳となることを意識したパッケージングになっていて、RealSenseカメラはZR300相当が装備されているようです。
環境を認識しながら自立的に動く何かが作れそうな気がしますねw

開発者向けの情報はこちらに集約されています。

Intel® Euclid™ Community

ではさっそく試してみましょう!

 

開封

Euclidは本体と2種類のパワーサプライ用アタッチメントがあります。
一つがバッテリーパック、もう一つがUSBからパワー供給を行えるアタッチメントパックです。
用途に応じてどちらを使うか選択します。

f:id:peugeot-106-s16:20170618125636j:plain

 

外部向けI/FはUSB3.0HDMIがあります。

f:id:peugeot-106-s16:20170618125749j:plain

 

あと、画面を持たないスタンドアロンバイスのなので喋ります。
ライセンス条項なんかもどんどん喋ります。
声がロボット感があっていい感じw

youtu.be

なお、これは内部で動作しているUbuntuの設定から”Screen Reader”をOFFにすれば黙ります。

f:id:peugeot-106-s16:20170618132111p:plain

 

初期設定

Euclidと最初に接続するにはPC等からEuclid自体がアクセスポイントとなっているWiFiに接続し、Webインターフェイスのポータル画面にアクセスします。

f:id:peugeot-106-s16:20170618133723p:plain

このポータル画面から利用する機能ノードをまとめたシナリオを起動/終了できます。
またWiFi設定をここから行えるので、普段利用しているWiFiにEuclidを参加させることもできます。
ぼくはここで普段利用しているネットワークにEuclidを参加させました。

以後EuclidへのアクセスはこのWebインターフェイスVNC接続を利用したリモートデスクトップでのアクセスにより行います。(SSHも試していませんが可能なはず)

 

プリセットのシナリオを試してみる

前項で述べたシナリオを起動してみます。
今回はカラーカメラ、Depthカメラ、Person Trackingノードを利用する"PersonalViewを起動してみます。

f:id:peugeot-106-s16:20170618133859p:plain

そしてMonitorタブで各機能のRawデータを表示させるようにしてみると、各機能が正常に動作していることを確認できます。

f:id:peugeot-106-s16:20170618134240p:plain

 

独自のシナリオを作成する

さて、本当にやりたいのはここからですよね!

独自の機能ノードを作成するためにチュートリアルを紐解いてみましょう。
Euclidの機能ノードを作成するにはlinuxの知識とROSの知識が必要です。
開発作業自体はEuclid内にROSのワークスペースが準備されているので自家発電的に開発が可能ですよ。

では、Communityページの”Introduction To Euclid”を順を追ってすすめます。

f:id:peugeot-106-s16:20170618134732p:plain

ただこちらのチュートリアル、ノリはいいけどそのままですとすんなりいかない人が多そうです。
しかもPDFなのでコードのコピーとかしんどいですw
あとコマンド等の _ (アンダーバー)が抜けているところがかなりあるのでROSのコマンドらしきものはROS自体の情報を参照して誤りを正したうえで実行します。
一応Updateが入っているようですが、こちらも合わせて参照しながら進めると良いでしょう。

communities.intel.com

そしてぼくの方で実際に動作したソースコード、設定ファイル類をこちらに置いておきます。

github.com

また、カメラを起動するとパフォーマンスを喰うのでVNCサーバーがとてつもなく遅くなって操作不能になることも多いので、割といばらの道でしたw

ということで、きちんと動くとカメラ映像にOpenCVで色調変換のフィルタをかけた映像が、Ubuntu内でもWebインターフェイスでもモニターできるようになります。

f:id:peugeot-106-s16:20170618135715p:plain

f:id:peugeot-106-s16:20170618135734p:plain

 

まとめ

ということでEuclidを試してみました。

これまでWindowsやUnityでRealSenseを使ったアプリを作っていた方にはかなり世界観が違うのでとっつきにくいかもしれませんが、いまやRealSenseが主にフォーカスしているのはこのようなロボットの目となるような用途になってきているので当然の進化なのかもしれません。

スタンドアロン動作できるということはちょっと今までと違う使い方ができそうで夢が広がります。
やっぱり動くものに載せたいですね^^

 

de:code 2017 : Alex Kipmanと会えた!

de:code 2017 回想記 最終回です!

ごめんなさい、タイトルからしてもう結論がわかってしまっているのですがどうしてもこの感動を書き残しておきたくて(笑)

信じがたいことにこれまで第一回第二回と書いてきましたがこれ全部同じ日の出来事です。
盆と正月がいっぺんに来たどころのスケールの小さな話ではないんです!
盆と正月がいっぺんに来、かつ宝くじの割といいのに当たり、かつハレー彗星がちょうどやってきたくらいの感じだと言っても過言ではないとぼく的には思うんです。

 

コミュニティへの最高のプレゼント

日本におけるHoloLensコミュニティ、HoloMagiciansのアクティブな活動は実に目を見張るものがありました。
日本でのHoloLens発売日、1月18日から僅か2週間後の2月2日には渋谷に80台以上のHoloLensが集合したイベント Tokyo HoloLens Meetup vol.1 が開催され、きっと世界最大数の端末が同時にシェアリングを行いました。

f:id:peugeot-106-s16:20170612232609j:plain

これはAlex Kipmanの目にも触れ、彼自身のTwitterからリツイートがなされました。

 

その後も例えば仙台は日本三景松島にてHoloLensを装着した一団が牡蠣を喰うというクレイジーな事象は海外からも注目を浴びました。

 

そしてその裏側では日本マイクロソフトの皆さんがAlex Kipman招致に向け交渉をしてくださっていたそうです。

そして密かにこのde:code 2017 展示エリアのクローズ時にコミュニティメンバーは”いいことがある”のである場所に集まるようにというお知らせを貰っていました。

それがなんとAlex Kipmanと直接会える機会!!
なんか当初予定よりたくさん人が集まっているようだけどみんなでお祝いだw

というわけで、Alexきたー!!
と思ったら、ぼくたちみんながホロ首掛けスタイルをしているのみたAlexはぼくもホロ持ってくるよ!とホテルの部屋にマイホロをとりに行ってしまいましたw
うおお、焦らすなあ!

そしてしばらくして、きたー!!

f:id:peugeot-106-s16:20170612233850j:plain

シリアルナンバー1番のホロをぼくたちと同じように首からかけてきてくれました!
レジェンドなのにすごくフレンドリー!
みんなと笑ってハグして、まるで昔からの友達、戦友のような感じでした。

 

f:id:peugeot-106-s16:20170612234123j:plain

 

そして、イスラエル出張帰りの友人が国旗ステッカーを貼ったぼくのホロにインストールされている、VRアーティスト せきぐちあいみ さんのVRアートを現実世界で見ることができるアプリを体験してくれました!

 

 f:id:peugeot-106-s16:20170612234220j:plain

やべーこのホロもう洗えねー。

あとなんとなんと、サインまで頂きました!やばい!

f:id:peugeot-106-s16:20170613000100j:plain

そしてみんなで記念撮影。

f:id:peugeot-106-s16:20170613000221j:plain

いやあ、もう凄すぎて完全に意味がわからないですね!
本当に日本に来てくれてありがとうございました!
また会いに行きたいです。

帰り道、東京タワーを眺めながら今日という日は何だったんだろうとぼんやりしてしまいました。

f:id:peugeot-106-s16:20170613000543j:plain

 

 

 

 

 

そして、まだ続きがあります。
de:code 2017が終了した次の日、、なんとAlex KipmanのTwitterアイコン、および背景がぼくたちの写真になっているではないですか!

f:id:peugeot-106-s16:20170613000843p:plain

本当に今回の体験を楽しんでくれたんだなと胸が熱くなりましたね!

本当に今回この機会を呼び寄せてくれたすべての皆さん、そしてAlexにありがとう。
もうそれしかないです。

 

 

というわけで、長きにわたってお送りしてきたde:code回想記、ようやく終了ですw

de:code 2017 : 展示とMVP RoundTable

de:code 2017 回想記 vol.2 です。
展示エリアでの二つの展示についてと夕方の特別なミーティング、「MVP Round Table」について!

 

"AR CAD Cloud"と"LAVIE SmartMirror" 2つの展示

f:id:peugeot-106-s16:20170610071542j:plain

例年de:codeの展示エリアには何かしら裏方で入っていますが、今回は2ブースにぼくがかかわりのある展示が行われました。

ひとつはソフトバンクコマース&サービスさん販売、ホロラボ開発の3D CADデータをHoloLensで現実空間で、しかも複数人で同時に見ることのできる「AR CAD Cloud(ARCC)」の展示です。
Unite 2017 Tokyo に続く展示です。こちらも良かったらご覧ください。

satoshi-maemoto.hatenablog.com

 

ソフトバンクC&Sさん、ホロラボ力を合わせてブース運営したくさんの方にARCCを体験頂きました。
このチームは本当に楽しいです!
その後も展示会での展示や企業向けセミナーの開催など様々な計画が実施/計画されていて製造業をはじめ多くの業界から注目を受けていることを感じています。
ぜひ買ってほしいですねw

f:id:peugeot-106-s16:20170610071745j:plain

 

もう一つはNECPCさんブースに展示されたLAVIE Smart Mirror。

f:id:peugeot-106-s16:20170610072643j:plain

元々RealSenseハッカソンで優勝を頂いた作品がベースになっています。
その後NECPCさんと一緒に様々なブラッシュアップを続け現在は店舗やスマートハウス等に実導入が始まる段階まできています。

satoshi-maemoto.hatenablog.com

今回de:code展示用にAzure Face APIと連携し、ミラーに映った方の性別と顔年齢に応じた商品レコメンドを行う機能を追加しています。
レコメンドされる商品は伊勢丹さんの商品で、商品画像ご提供は伊勢丹さんから受けています。

けっこう若めに判定してくれるすごいいいやつですw

f:id:peugeot-106-s16:20170610073303j:plain

こちらのミラーも注目を受け、楽しんでいただけたようです。

 

その他も楽しいアトラクションがたくさん。

Uniteでも設置されていたHoloLensを装着したプロフィール画像の撮影ブース。

f:id:peugeot-106-s16:20170610073516j:plain

あほ毛まできれいに抽出されるクロマキー技術には驚きです!
こちらもfacebookをはじめ、MVPプロフィール画像にもしました!
Uniteでは2ホロだったのですが、今回は3ホロです。
ホロを増やしていかないとインパクトが出せないループにはまっていますw

f:id:peugeot-106-s16:20170610073527j:plain

https://mvp.microsoft.com/en-us/PublicProfile/5002154

 

そのほか、Windows Mixed Reality HMDの静態展示もありました。
すっごく軽いです。びっくり!(モックではなく中身入ってます)

f:id:peugeot-106-s16:20170610074033j:plain

今年のde:code展示エリアはほんとHoloLensづくしでしたね!
HoloLens装着が当たり前になった時代のためのファッションをデザインされたゴスピさんと!

f:id:peugeot-106-s16:20170610074116j:plain

chloma x STYLY HMD collection [REAL ⇄ MR ⇄ VR]

あと、ファッションと言えばMicrosoft ベビー服もかわいくてオススメです^^

f:id:peugeot-106-s16:20170610074311j:plain

 

MVP Round Table

今回のde:codeでスペシャルな体験の一つにAI、VR、MR、Azure、そしてデータサイエンスに精通するMVP/RD受賞者と、Microsoft Corp.のSteven Guggenheimerさん、日本マイクロソフトの伊藤かつらさんによるラウンドテーブル(意見交換会?)が開催されました。
日本のMVPの代表数名の中に選んで頂けたことは驚きです!

www.facebook.com

f:id:peugeot-106-s16:20170610075425j:plain

今回のテーマはコミュニティ。
代表者はそれぞれ活発なコミュニティを運営/所属しています。
Steveに日本のコミュニティの現状と課題などがシェアされてゆきます。

f:id:peugeot-106-s16:20170610075446j:plain

SteveからはUSでのコミュニティの様子や日本でよりコミュニティが活発になるためのアドバイスなどのフィードバックを頂きました。

まだまだ日本では仕事とコミュニティは混ぜてはいけないもの、という考えが根強く残っているのだなと思いました。
でもコミュニティに活発にかかわる人は仕事以外にリソースを振り分けられる優秀な方たちが多く、そこで得られるものは仕事をより良いものにします。
その価値を理解する企業は今後どんどん増えていくでしょうね!

ぼくからもTMCNのソウルである、まずチアーズ(乾杯)でイベントを始めることの大切さをSteveにお伝えできましたw

終始にこやかな雰囲気のRoundTable。貴重な機会をありがとうございました!
イベント後お忙しいのにSteveはThanksメールを送ってくださいました。

 

MVP RoundTable with Steve Guggenheimer!! #theta360 - Spherical Image - RICOH THETA

 

さてさて、まだ続くde:code2017回想記。
次回最大のビックイベントにて最終回を迎える予定!!

de:code 2017 : はじまりそしてAlex Kipman登場!

ぼくの人生の中でも特別な特別な体験となった de:code 2017。
今思い出してもあれは本当だったんだろうかと思ってしまいます。
忘れないように書き記しておきましょう。

de:code 2017 day0 前夜祭

de:codeは前夜祭から始まります。夜の東京タワーを拝みつつプリンスパークタワーへ。

Developers Summit code your future ~エッジな技術領域とエンジニアのキャリアデザインについて語ろう~

f:id:peugeot-106-s16:20170606230529j:plain

豪華なビュッフェとともにステージではセッションが始まりました。

f:id:peugeot-106-s16:20170606230645j:plain

でも里帰り出産でしばらく会えなかったHoloMagiciansやTMCNのみなさんにお会いできてついついぼくらのテーブルだけ飲み会になってしまいましたw

f:id:peugeot-106-s16:20170606230841j:plain

いやあ、楽しかったw
ただただ楽しかったのでその他のことは割愛してサクッと本編へ。

 

de:code 2017 キーノート

f:id:peugeot-106-s16:20170606231035j:plain

今回ぼくは主に展示エリアに生息していましたが、キーノートはメイン会場で聴くことができました。

f:id:peugeot-106-s16:20170606231234j:plain

もちろんHoloLens着用なのでぼくの視界はこんな感じです。

f:id:peugeot-106-s16:20170606231321j:plain

Corporate Vice PresidentのSteve Guggenheimerが登場。
実はこの日夕方、Steveと日本のMVP代表者で対談を行う機会を頂いており、うわーめっちゃ外人さんやん、ごつい、やばーいって思いましたww

f:id:peugeot-106-s16:20170606231338j:plain

続いて、日本マイクロソフトの平野社長から日本におけるHoloLensコミュニティの盛り上がりについての言及があり、おなじみこの写真が大きくとりあげられてなんでしょう嬉しいやら照れくさいやらの、とりえずもう意味わかんないですねw

f:id:peugeot-106-s16:20170606231605j:plain

そしていよいよ!Alex Kipmanが登場です。
KINECTを開発し、やがてHoloLensを作ったレジェンドの登場です!
あなたのおかげでぼくたちはご飯食べられているんだよアレックス!!

f:id:peugeot-106-s16:20170606232059j:plain

Alexから直接MixdRealityの説明や今後の将来像についての話を聞けるとはなんて幸せなんだろう。もう耳かっぽじって聴きましたよ、ええ。
そして日本でのHoloLensの盛り上がりを本当に喜んでくれていました!
今まで見えなかった世界が見られる夢のデバイスHoloLensに熱狂しないわけないよ、生きているうちにこんなデバイスが手元にやってくるなんて信じられない。
作ってくれて本当にありがとう!!

f:id:peugeot-106-s16:20170606232307j:plain
中村薫さんのこのツイートから色々とあり得ないことが動き始めて目の前のことが実現したのです。感動しかないなあ。

 

その他詳しいレポートはこちら。

panora.tokyo

 

う~ん。この日はあまりにも色々なことがありすぎて一度には書ききれませんね。
ここでひとくくりし続きは次の投稿とします。