第59回 html5とか勉強会 ーiot/wot発表資料「web controller for v-sido...

29
株式会社アトモスデザイン 代表 児玉 哲彦 150-0012 東京都渋谷区広尾5-23-6-4F 080-3310-7453 [email protected] http://atomos-design.com Web Controller for V-Sido CONNECT:WebRTCとWebGLで 作る人型ロボット遠隔操縦システム 第59回 HTML5とか勉強会 ーIoT/WoT 2015.8.26

Upload: akihiko-kodama

Post on 06-Jan-2017

8.402 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

株式会社アトモスデザイン 代表 児玉 哲彦 150-0012 東京都渋谷区広尾5-23-6-4F 080-3310-7453 [email protected] http://atomos-design.com

Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム

第59回 HTML5とか勉強会 ーIoT/WoT

2015.8.26

Page 2: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

Who are we?

2

児玉哲彦/株式会社アトモスデザイン アスラテック株式会社

慶應義塾大学/頓智ドット株式会社/フリービット株式会社などを経て2014年に独立。モバイル/IoT/ロボット/VR等を中心とした製品のUXUIデザイン/技術設計を手がける。

吉崎航氏が中心となって開発したロボット制御OS「V-Sido」の商用化に取り組む。ソフトバンクグループ。

対応ロボットの例

Page 3: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

今日のテーマ:Web Controller for V-Sido CONNECT

3

Page 4: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

Web Controllerの実現すること

4

Web技術による Webサービスと連携した ロボットアプリ開発の実現

インターネット経由の 遠隔接続

3Dグラフィックを用いた 直感的でクールなUI

Page 5: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

Web Controller for V-Sido CONNECTとは

5

V-Sido CONNECT

Web Controller

Page 6: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

DEMO

Page 7: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

Web技術による Webサービスと連携した ロボットアプリ開発の実現

Page 8: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

システム構成

8

Page 9: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

技術選定

9

HTTP

パフォーマンス △ ◯ ◯ ◯

コネクション × ◯ ◯ ◯

利用可能な ブローカー ◯ ◯ ◯ ◯

映像・音声 × × × ◯

Page 10: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

使用したライブラリ、サービス等

10

© 2015 NTT Communications

データ 映像/音声

ノードID登録ノードID

ノード情報

Web Controller JSライブラリTHREE.js

Page 11: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

機能

11

機能 説明

アクション

3Dモデルによる姿勢制御 手先や足先をドラッグして 姿勢をライブに制御

移動 矢印アイコンを用いて前進/後退/旋回

プリセットモーション 喜怒哀楽などの感情表現するモーションを実行

APIコマンド 個別関節角度/IK/移動のパラメータ指定

スマホコマンド 音声ファイルの再生/URLの表示

自由コマンド実行 コマンド文字列(JSON)を直接入力/送信

イベント

映像・音声表示 スマホのカメラ/マイクからの入力をライブに表示

イベント情報表示

スマホのライブの各種ステートを表示 カメラの動体検出/マイクボリューム/加速度/ジャイロスコープ/端末の姿勢/内部温度/外部温度/照度/Wi-Fi電波強度/携帯ネットワーク電波強度/バッテリー残量または充電の有無

マクロ マクロ イベントの閾値を設定し、指定したアクションを実行するよう設定

Page 12: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

JavaScript API

12

APIへのアクセス グローバルオブジェクト「vsido」

特定のスマートフォンへの接続 vsido.connect(‘ペアリングキー’);

映像/音声の利用 vsido.setVideo(‘HTML内のvideoタグのID’, ‘videoタグのパラメーターの連想配列’);

アクションの送信 vsido.send(‘JSON文字列’);

イベントの受信 vsido.receive(‘イベント名’, ‘コールバック関数’);

マクロの設定 vsido.send({macro: {request: 'COMMAND', param1: 'PARAM', param2: 'PARAM', …}});

Page 13: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

インターネット経由の 遠隔接続

Page 14: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

WebRTCライブラリ peer.js• データ通信/メディア通信/シグナリング

• 現在はSkyWayサービスを通して用いている

• リアルタイム通信のためのフローコントロール

• WebRTCの下層の通信プロトコルはUDPだが、上層のSCTPで順序制御/信頼性の制御を行える(デフォルトでオンで、最初ハマった)

• 結局API経由では設定を変えられず、peer.jsのソースに手を入れて設定を変更

14

http://www.slideshare.net/iwashi86/20140801-web-rtcmeetup3r3 ©iwashi86

Page 15: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

接続性• 通信環境:4(Wi-Fi (OCN)/docomo/au/Softbank)

• WebUI OS:4(Windows/Mac/Linux/Android)

• WebUI ブラウザ:2(Chrome/Firefox)

• 通信環境4×4×WebUI OS4×2=128パターンで接続/データ送受信/映像の送受信を調査

• 映像の送受信ができない/接続できない場合は3回まで再試行

15

結果のサマリー 問題なし:103 映像の送受信できず:17 接続できず:8

OS/ブラウザへの依存はない WebUIがau、スマホがWi-Fiの場合には接続できず(理由は不明) auがどちらかにあると、映像の送受信ができない場合が多い

国際接続 ドイツ→日本のロボットに接続し、動作成功

Page 16: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

WebUIコマンド送信から映像フィードバック取得までの遅延評価• WebUIから、3Dモデルを用いたIK設定を実施

• 通信環境毎に移動→止める、というアクションを10回繰り返す様子を120FPSのカメラで撮影

• UIで動きを止めるフレームと、映像フィードバックで動きが止まるフレームとの差分を計測、平均を算出

16

0

100

200

300

400

500

600

4G (au)-4G (au) Wi-FI (ローカルP2P) Wimax (UQ)-4G (docomo MVNO)

600

366.667

235

4G (LTE)どうし、Wi-Fiでは500msecを切る MVNO SIMでは500msecをやや超える

Page 17: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

映像配信のFPS評価

17

Wi-Fi (ローカルP2P)

WebUI:4G (au) スマホ:Wimax

(UQ)

WebUI:4G (docomo) スマホ:4G (Softbank)

WebUI:4G (Softbank) スマホ:4G (docomo)

平均FPS 18-19 18-19 18-19 18-19

• Javascriptから、ブラウザでデコードされたフレーム数を1秒毎に取得

• 通信環境毎に30秒程度試行

• プログラムの設定はVGA、20FPSを指定

結果、検証したあらゆる環境でほぼ20FPSを達成

Page 18: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

WebUI-Androidアプリ間のタイムスタンプ差分の標準偏差評価• Web UIからコマンドを送信する際と、同じコマンドをAndroidで受信した際に双方のタイムスタンプを記録

• タイムスタンプ差の標準偏差を計測して、到達時間のバラツキの範囲を調査

• (時計が一致していないため、タイムスタンプの差には意味がない)

• 通信環境毎に、30秒間の計測を3回ずつ実行

18

Wi-Fi (ローカルP2P) Y! Mobile au

総サンプル数 1010 1008 991

4Gどうしを含むいずれの条件においても標準偏差は100msecを切っている →平均的に、大きなバラツキは発生しない

Page 19: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

3Dグラフィックを用いた 直感的でクールなUI

Page 20: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

• 3Dモデルのインポート/シェーダーの設定/ボーンアニメーション

WebGLライブラリ THREE.js

20

• Blenderでリグを設定したモデルを用意、THREE.jsに含まれるエクスポーターを用いて書き出し

• マテリアルはTHREE.jsを用いて設定

Page 21: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

• 参考文献

• A Combined Optimization Method for Solving the Inverse Kinematics Problem of Mechanical Manipulators. IEEE Tr. On Robotics and Automation, 7:489-498, 1991

• MMD on WebGL 踊れるようになった(あと IK について)http://d.hatena.ne.jp/edvakf/20111102/1320268602

Inverse Kinematicsの実装 WebGL向けの公開された実装は見当たらず

21

function solveIK(origin, edge, target){ var name = origin.name.substr(0, origin.name.length-2) + origin.name.substr(origin.name.length-1, 1); var parent = origin.parent; var originVector = new THREE.Vector3(); originVector.setFromMatrixPosition(origin.matrixWorld); originVector = parent.worldToLocal(originVector); var targetVector = new THREE.Vector3(); targetVector.copy(target.position); targetVector = parent.worldToLocal(targetVector); targetVector.sub(originVector); var edgeVector = new THREE.Vector3(); edgeVector.setFromMatrixPosition(edge.matrixWorld); edgeVector = parent.worldToLocal(edgeVector); edgeVector.sub(originVector); var axis = new THREE.Vector3(); axis.crossVectors(edgeVector, targetVector).normalize(); var radian = edgeVector.angleTo(targetVector); if(Math.abs(radian)>3/180*Math.PI){radian=radian/Math.abs(radian)*3/180*Math.PI} var q = new THREE.Quaternion(); q.setFromAxisAngle(axis, radian); q.multiply(origin.quaternion); origin.quaternion.copy(q); if(origin.rotation.x < LIMIT[name].xmin){ origin.rotation.x=LIMIT[name].xmin } else if(origin.rotation.x > LIMIT[name].xmax){ origin.rotation.x=LIMIT[name].xmax } if(origin.rotation.y < LIMIT[name].ymin){ origin.rotation.y=LIMIT[name].ymin } else if(origin.rotation.y > LIMIT[name].ymax){ origin.rotation.y=LIMIT[name].ymax } if(origin.rotation.z < LIMIT[name].zmin){ origin.rotation.z=LIMIT[name].zmin } else if(origin.rotation.z > LIMIT[name].zmax){ origin.rotation.z=LIMIT[name].zmax } origin.updateMatrixWorld(); }

Page 22: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

ゲームコントローラー• Xbox360対応/DirectX対応のもの

• HTML5 Gamepad APIを通して実装

• 移動/プリセットモーション/視点移動

• JSライブラリにおいてキーマップも開発者が自由に設定可能

22

Page 23: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

テレプレゼンス応用の可能性

23

すでに Oculus / Kinect との連携に成功

Page 24: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

Web Controllerを作ってみてわかったこと

• インターネットは速い!特にLTEは低遅延

• 多国間での利用も一応可能なレベル

• リアルタイム性の高いアプリケーションでのフローコントロールの重要性

• WebRTCのテレカンファレンス以外の応用可能性

• Man 2 Manのインターネットから、Man 2 Machine、さらにはMachine 2 Machineのインターネットへ

• WebGLの実用性

• ボーン/IKも実用にたえる

24

Web技術で作れるものはここまできている!

Page 25: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

IoT / WoTの今後への私見

Page 26: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

A brief background on IoT

26

慶應義塾大学政策・メディア研究科においてユビキタス空間のデザインの研究に従事、 様々なサービスやプロトタイプを作った

Patented!

世の中からは大きな反響を得るも、実用化には至らず

Page 27: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

2000年代の「ユビキタスコンピューティング」に足りなかったもの

27

Webという確立した エコシステムとの親和性

エンドユーザーの 優れたエクスペリエンス

クラウドサービスと デバイスの緊密な連携

(通信プロトコルを含む)

Page 28: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」

Web Controllerの実現すること

28

Web技術による Webサービスと連携した ロボットアプリ開発の実現

インターネット経由の 遠隔接続

3Dグラフィックを用いた 直感的でクールなUI

Page 29: 第59回 HTML5とか勉強会 ーIoT/WoT発表資料「Web Controller for V-Sido CONNECT:WebRTCとWebGLで作る人型ロボット遠隔操縦システム」