Web エンジニアのための
ロボットアームの API を考えてみる
2016年11月30日(水)
スマートファクトリーとRobotics API & CNTK(html5jロボット部 第7回勉強会)
@futomi futomi.hatano
自己紹介
2
マークアップ解説本 API解説本 APIチュートリアル本Windows 8API解説本
有限会社 futomi 代表取締役
株式会社ニューフォリア 取締役 最高技術責任者
日経SYSTEMS連載
2015年4月号~2016年3月号:こんなに変わったWeb開発/HTML5の基本テクニック
3
日経SYSTEMSコラム
4
• そろそろIoTに触れてみませんか
• マイコンボードを使って大気圧と気温を取得
• Webブラウザーから制御 MIDIでサーボを動かす
• Node.jsで家電を操作 赤外線を利用しよう
• ECHONET Liteで家電をコントロール
• スマホから機器を制御「デバイスコネクトWebAPI」
• 電池交換が不要に 無線技術「EnOcean」に注目
• JavaScriptで車載情報を取得「OBD-II」を使う
• Node.jsで電力情報を取得スマートメータを活用しよう
• ...
IoTで火が付くITエンジニア魂:2016年4月号~2017年3月号 (予定)
デバイスWebAPIコンソーシアム
• 2015年4月30日にNTTドコモとソフトバンクに
よって設立
• デバイス連携がテーマ
• アーキテクチャーの検討や業界動向などの共有
• GotAPI対応アプリ「DeviceConnect」がNTT
ドコモからOSSとしてGitHubで公開
• 通信キャリアやデバイスメーカーなど110社以
上が加盟
5
https://device-webapi.org/
6
GitHubとnpm
7
https://www.npmjs.com/~futomihttps://github.com/futomi
公開中のnodeモジュール
8
公開中のnodeモジュール
9
ロボットアームに近いのは...
公開中のnodeモジュール
10
ロボットアームに近いのは...
ONVIF
11
• 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/
PTZとは
• Pan, Tilt, Zoom
• PTZ対応製品は業務用監視カメラでも高級品の部類
• 近年は安価な家庭向け監視カメラにも
• 性能と機能はお値段次第
(安かろう悪かろうがそのまま当てはまる)
• PTZ機能はロボットアームに近い
• ロボットアームの関節の一つとみなせば類似性がある
• ロボットアームにカメラが付けばよりONVIFに類似
• ロボットアームのAPIの開発にONVIFは参考になる
12
13
ONVIF仕様概要
• 用語
• NVT (Network Video Transmitter):ネットワークカメラのこと
• NVC (Network Video Client):カメラにアクセスするもの
• NVT発見にWS-Discovery
• UDPポート3702によるマルチキャスト
• メッセージはSOAPベース
• HTTPプロトコルでSOAPをPOST
• 今どきSOAP?
• でもONVIF策定当時はSOAPがナウい時代
14
ONVIFのPTZコマンド
• ContinuousMove
• 各軸の動作速度を指定
• 止めるまで動き続ける
• AbsoluteMove
• 各軸の動作速度と絶対位置を指定
• RelativeMove
• 各軸の動作速度と現在位置からの相
対位置を指定
• Stop
• 動作を止める
• GotoHomePosition
• ホームポジションに移動
• SetPreset
• 特定の位置をセット
• 複数の位置を登録可能
• GotoPreset
• プリセットした位置に移動
15
ONVIFのビデオストリーミング
• GetStreamUri
• RTSP/RTP
• H.264
• G.726, G.711
• GetSnapshotUri
• 静止画 (JPEG) を取得可能
• このコマンドからURLを取得
• 製品の性能が良ければ1秒間に
10回くらい取得できる
16
デモ
17
ロボットアームAPIこんなんはどう?
• やはり今どきの方式で
• SOAPはやだ
• 機器発見
• Bonjour (Zeroconf) はいかが?
• コマンド
• JSON-RPCをHTTP POSTで送るのは
いかが?
• WebSocketのチャンネルも用意でき
るとベスト。
• セキュリティー
• 最低でもユーザー認証は必要
• Basic認証ではパスワードがダダ漏れ
• Digest認証あたりが良い?
• TLSを使うのがベストだが暗号化だけ
ならオレオレ認証でもOKか?
• でも機器に固定で秘密鍵を埋め込む
のは危険?機器個体ごと違えばまだ
ましか?
• 公開鍵方式で接続の都度、鍵ペアを
作って公開鍵を交換してからデータ
暗号化するのは?めんどくさいか?
• 今後さらなる検討が必要
18
ご清聴ありがとうございました
@futomi futomi.hatano

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