Web エンジニアのためのWeb エンジニアのためのロボットアームの API...

19
Web エエエエエエエエエ エエエエエエエエ API エエエエエエ 2016 エ 11 エ 30 エ ( エ ) エエエエエエエエエエエ Robotics API & CNTK html5j エエエエエ エ 7 エエエエエエエエ futomi エエエエエ エエエエエエエエエエエ エエエ エエエエエエエ エエエ エエ エエエ エエエ @futomi futomi.hatano

Transcript of Web エンジニアのためのWeb エンジニアのためのロボットアームの API...

Page 1: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

Web エンジニアのためのロボットアームの API を考えてみる2016 年 11 月 30 日 ( 水 )

スマートファクトリーと Robotics API & CNTK ( html5j ロボット部 第 7 回勉強会)

有限会社 futomi 代表取締役

株式会社ニューフォリア 取締役 最高技術責任者

羽田野 太巳(はたの ふとみ)

@futomi futomi.hatano

Page 2: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

自己紹介

2

マークアップ解説本 API 解説本 API チュートリアル本Windows 8API 解説本

有限会社 futomi 代表取締役株式会社ニューフォリア 取締役 最高技術責任者

Page 3: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

日経 SYSTEMS 連載2015 年 4 月号~ 2016 年 3 月号:こんなに変わった Web 開発 /HTML5 の基本テクニック

3

Page 4: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

4

日経 SYSTEMS コラム

• そろそろ IoT に触れてみませんか• マイコンボードを使って大気圧と気温を取得• Web ブラウザーから制御  MIDI でサーボを動かす• Node.js で家電を操作 赤外線を利用しよう• ECHONET Lite で家電をコントロール• スマホから機器を制御「デバイスコネクト WebAPI 」• 電池交換が不要に 無線技術「 EnOcean 」に注目• JavaScript で車載情報を取得「 OBD-II 」を使う• Node.js で電力情報を取得スマートメータを活用しよう• ...

IoT で火が付く IT エンジニア魂: 2016 年 4 月号~ 2017 年 3 月号 ( 予定 )

Page 5: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

5

デバイス WebAPI コンソーシアム

• 2015 年 4 月 30 日に NTT ドコモとソフトバンクによって設立• デバイス連携がテーマ• アーキテクチャーの検討や業界動向などの共

有• GotAPI 対応アプリ「 DeviceConnect 」が

NTT ドコモから OSS として GitHub で公開• 通信キャリアやデバイスメーカーなど 110 社

以上が加盟

https://device-webapi.org/

Page 6: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

6

Page 7: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

7

GitHub と npm

https://www.npmjs.com/~futomihttps://github.com/futomi

Page 8: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

8

公開中の node モジュール

Page 9: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

9

公開中の node モジュール

ロボットアームに近いのは ...

Page 10: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

10

公開中の node モジュール

ロボットアームに近いのは ...

Page 11: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

11

ONVIF• Open Network Video Interface Forum• ウェブサイトからの引用

The ONVIF specification defines a common protocol for the exchange of information between network video devices including automatic device discovery, video streaming and intelligence metadata.

• 早い話、ネットワークカメラのプロトコルの標準• デバイス発見、ビデオストリーミン

グ、 PTZ 制御など

http://www.onvif.org/

Page 12: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

12

PTZ とは

• Pan, Tilt, Zoom

• PTZ 対応製品は業務用監視カメラでも高級品の部類• 近年は安価な家庭向け監視カメラにも• 性能と機能はお値段次第(安かろう悪かろうがそのまま当てはまる)

• PTZ 機能はロボットアームに近い• ロボットアームの関節の一つとみなせば類似性がある• ロボットアームにカメラが付けばより ONVIF に類似• ロボットアームの API の開発に ONVIF は参考になる

Page 13: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

13

Page 14: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

14

ONVIF 仕様概要

• 用語• NVT (Network Video Transmitter) :ネットワークカメラのこと• NVC (Network Video Client) :カメラにアクセスするもの

• NVT 発見に WS-Discovery• UDP ポート 3702 によるマルチキャスト

• メッセージは SOAP ベース• HTTP プロトコルで SOAP を POST• 今どき SOAP?• でも ONVIF 策定当時は SOAP がナウい時代

Page 15: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

15

ONVIF の PTZ コマンド

• ContinuousMove• 各軸の動作速度を指定• 止めるまで動き続ける

• AbsoluteMove• 各軸の動作速度と絶対位置を指定

• RelativeMove• 各軸の動作速度と現在位置からの相

対位置を指定

• Stop• 動作を止める

• GotoHomePosition• ホームポジションに移動

• SetPreset• 特定の位置をセット• 複数の位置を登録可能

• GotoPreset• プリセットした位置に移動

Page 16: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

16

ONVIF のビデオストリーミング

• GetStreamUri• RTSP/RTP• H.264• G.726, G.711

• GetSnapshotUri• 静止画 (JPEG) を取得可能• このコマンドから URL を取得• 製品の性能が良ければ 1秒間

に 10 回くらい取得できる

Page 17: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

17

デモ

Page 18: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

18

ロボットアーム API こんなんはどう?

• やはり今どきの方式で• SOAP はやだ

• 機器発見• Bonjour (Zeroconf) はいかが?

• コマンド• JSON-RPC を HTTP POST で送るの

はいかが?• WebSocket のチャンネルも用意で

きるとベスト。

• セキュリティー• 最低でもユーザー認証は必要• Basic認証ではパスワードがダダ漏れ• Digest認証あたりが良い?

• TLS を使うのがベストだが暗号化だけならオレオレ認証でも OK か?

• でも機器に固定で秘密鍵を埋め込むのは危険?機器個体ごと違えばまだましか?

• 公開鍵方式で接続の都度、鍵ペアを作って公開鍵を交換してからデータ暗号化するのは?めんどくさいか?

• 今後さらなる検討が必要

Page 19: Web エンジニアのためのWeb エンジニアのためのロボットアームの API を考えてみる

ご清聴ありがとうございました

有限会社 futomi 代表取締役

株式会社ニューフォリア 取締役 最高技術責任者

羽田野 太巳(はたの ふとみ)

@futomi futomi.hatano