SlideShare a Scribd company logo
IBM Bluemix を Pepper とつないでみよう
2016/10/31
株式会社スマートロボティクス
Pepper x Bluemixハンズオンワークショップ&デモ
Smart Robotics CO.,LTD. 2016 All rights reserved
内容
• IBM Bluemixとの連携その様々な⼿法
• Node-RED を使って Pepper と Bluemix を連携
• HTTPリクエスト(1)単純な HTTP リクエスト
• HTTPリクエスト(2)画像データの送信
(Watson Visual Recognition で画像認識)
• HTTPリクエスト(3)⾳声データの送信
(Watson Speech To Text で⾳声認識)
• HTTPリクエスト(4)データの保存
• WebSocket 通信
• 外部サービスを Node-RED 経由で利⽤
• Bluemix 各サービスAPIに直接アクセス
• 例:Watson Speech To Text の Websocket インターフェースを使う
• サービス提供の SDK を使う
• Watson SDK
• Pepper のタブレット
2
Smart Robotics CO.,LTD. 2016 All rights reserved
IBM Bluemixとの連携
その様々な⼿法
3
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper とのサービス連携
• Web API にアクセス or サービス提供のSDK を使う?
• Web API にアクセス
• REST API が提供されている場合、HTTP リクエストを⽤いてクラウドサービスと連携する
• その他、連携のためのプロトコルが公開されている場合、それらを⽤いてクラウドサービス
連携する
• WebSocket
• MQTT
• など
• サービス提供の SDK をプロジェクトを使う
• Linux で稼働する Python SDK があれば Pepper で利⽤できる可能性⾼い
• それぞれの SDK に仕様上の特性あり。使いこなせれば開発が楽
4
Smart Robotics CO.,LTD. 2016 All rights reserved
⼿法 連携⽅法
サービスを利⽤する
ための認証
サービスを利⽤する
ロジック
適⽤場⾯
各サービスの API
に直接アクセス
Web API にアク
セス
Pepper が⾏う Pepper 側で実装 ミニマムのシステム構
成でシステムを構築し
たい場合。API の機能
を最⼤限利⽤したい場
合
Node-RED を使う Node-RED が⾏う Node-RED 側と
Pepper 側で分散可能
ラピッドプロトタイピ
ングに適したソリュー
ション
サービス提供の
SDK を使う
サービス提供の
SDK をプロジェ
クトに取り込む
Pepper が⾏う(SDK
を使って)
Pepper 側で実装 • Watson Developer
Cloud Python SDK
• Bluemix 全体に関す
る Python での
SDK 提供はない。
IBM Bluemix と Pepper の連携
5
Smart Robotics CO.,LTD. 2016 All rights reserved
⼿法 連携⽅法
サービスを利⽤する
ための認証
サービスを利⽤する
ロジック
適⽤場⾯
各サービスの API
に直接アクセス
Web API にアク
セス
Pepper が⾏う Pepper 側で実装 ミニマムのシステム構
成でシステムを構築し
たい場合。API の機能
を最⼤限利⽤したい場
合
Node-RED を使う Node-RED が⾏う Node-RED 側と
Pepper 側で分散可能
ラピッドプロトタイピ
ングに適したソリュー
ション
サービス提供の
SDK を使う
サービス提供の
SDK をプロジェ
クトに取り込む
Pepper が⾏う(SDK
を使って)
Pepper 側で実装 • Watson Developer
Cloud Python SDK
• Bluemix 全体に関す
る Python での
SDK 提供はない。
IBM Bluemix と Pepper の連携
6
Smart Robotics CO.,LTD. 2016 All rights reserved
Node-RED を使って
Pepper と Bluemix を連携
7
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper から Web API へのアクセス
• Python 標準ライブラリ or 外部モジュール利⽤
• 標準ライブラリを使った場合実装が煩雑になりがち
• 今回は HTTP アクセスのモジュールとして requests、WebSocket の
モジュールとして liris/websocket-client を利⽤
8
Smart Robotics CO.,LTD. 2016 All rights reserved
サンプルアプリケーション
9
プロジェクト名 概要
01simplehttprequest 単純な HTTP リクエスト
02uploadimage 画像を Node-RED に送る
03uploadaudio ⾳声データを Node-RED に送る
04downloadfile バイナリデータを Node-RED からダウンロードする
05websocket WebSocket で通信をする
06useotherservice Node-RED を介して外部 WebAPI を使う
Smart Robotics CO.,LTD. 2016 All rights reserved
HTTPリクエスト(1)
単純な HTTP リクエスト
10
01simplehttprequest
Smart Robotics CO.,LTD. 2016 All rights reserved
Simple HTTP request ボックス
11
1. プロパティー url に適当な URL を設定して、実⾏結果を確認。(「ログビューア」に結果が出る)
アプリ起動後
ダブルクリック
URL を設定
Smart Robotics CO.,LTD. 2016 All rights reserved
Simple HTTP request ボックス
12
2. スクリプトエディタでスクリプトを確認
Smart Robotics CO.,LTD. 2016 All rights reserved
Simple HTTP request + Node-RED
13
1. Node-RED 側で HTTP リクエストの受け⼝作成
Smart Robotics CO.,LTD. 2016 All rights reserved
Simple HTTP request + Node-RED
14
2. Pepper アプリプロジェクト、Simple HTTP Request 接続先を Node-RED の HTTP request
ノードに
3. 実⾏して結果を確認
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper のクラウド連携 Tips.1 – Say Text
15
出⼒内容を Pepper に発話させるには Say Text ボックス(⾝振りなし)または Animated Say
ボックの中にある Animated Say Text (⾝振りあり)ボックスを使うのが楽
コピー&ペーストで
発話内容はバーチャルロボットでは「ダイアログ」ビューで確認できる
Smart Robotics CO.,LTD. 2016 All rights reserved
HTTPリクエスト(2)
画像データの送信
(Watson Visual Recognition で画像認識)
16
02uploadimage
Smart Robotics CO.,LTD. 2016 All rights reserved
Watson Visual Recognition で画像認識
17
1. IBM Bluemix コンソール、カタログ Watson の中の Visual Recognition を選択
Smart Robotics CO.,LTD. 2016 All rights reserved
Watson Visual Recognition で画像認識
2. Connect to で Node-RED アプリケーションを選択し [Create] ボタンでサービス作成
3. アプリケーションをリステージして、サービスを有効にする
Smart Robotics CO.,LTD. 2016 All rights reserved
Node-RED で Pepper とのインターフェースを作成
19
1. Node-RED 側で HTTP リクエストで受け⼝、Visual Recognition につなぎ結果をレスポンスで返す
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper側 - Update file ボックスで画像ファイルを送る
1. 認識させる画像をプロジェクトに取り込む
20
2. Upload file ボックス、ʻupload urlʼ に Node-RED のアクセスポイント、
ʻsrc fileʼ に プロジェクトに保存した イメージファイル、 ʻcontenxt-typeʼ に
image/jpg を設定
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper側 – 動作確認⽤の接続
3. Upload file ボックスは結果を ʻoutputʼ 出⼒に出⼒する
これを Log ボックスにつなげてることで出⼒内容をログビューアで
⾒る事ができる
21
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper のクラウド連携 Tips.2 – JSON モジュール
22
Watson Vision Recognition は結果を JSON 形式で返します。
JSON 形式のデータのやり取りには json モジュールの利⽤が便利です。
※ json.loads でデコードされたディクショナリオブジェクトの中の⽂字列は unicode ⽂字列、
⼀⽅ Pepper は⽂字列を str 型で扱う必要があるため、⽂字列のエンコードが必要
例: json ⽂字列 jsonStr から result の内容を取り出す
jsonObj = json.loads(jsonStr)
result = jsonObj[”result”].encode(“utf-8”)
json.loads( JSON形式⽂字列) JSON 形式の⽂字列を python のオブジェクト
(ディクショナリオブジェクト)に変換
json.dumps(ディクショナリオブジェクト) python のオブジェクト
(ディクショナリオブジェクト)をJSON形式の
⽂字列に変換
・・・・・
・・・・・
Smart Robotics CO.,LTD. 2016 All rights reserved
JSON モジュールを⽤いた結果データのパース処理例
1. Vision Reco JSON parts ボックス
Watson Visual Recognition からの結果をパース
23
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper が撮った写真を画像認識
※この実装を動作確認するためには実機での実⾏が必要です
・ ʻTake Picture custʼ ボックス
(ʻTake Picture custʼ ボックスは
Take Picture ボックスをベースに
撮った写真をプロジェクトフォルダー
内に保存するようにカスタマイズ
したボックスです)
・プロジェクトに html フォルダーを
作りそこに写真を保存するように
すれば、タブレット表⽰と画像認識を
同じ写真で⾏うことが可能です
24
Smart Robotics CO.,LTD. 2016 All rights reserved
HTTPリクエスト(3)
⾳声データの送信
(Watson Speech To Text で⾳声認識)
25
03uploadaudio
Smart Robotics CO.,LTD. 2016 All rights reserved
Speech to Text で⾳声認識
26
1. IBM Bluemix コンソール、カタログ Watson の中の Speech To Text を選択、アプリに追加
Smart Robotics CO.,LTD. 2016 All rights reserved
Node-RED で Pepper とのインターフェースを作成
27
1. Node-RED 側で HTTP リクエストで受け⼝、Speech to Text につなぎ結果をレスポンスで返す
Smart Robotics CO.,LTD. 2016 All rights reserved
1. 認識させる⾳声データをプロジェクトに取り込む
Pepper側 - Update ファイルボックスで⾳声ファイルを送る
2. ʻUpload fileʼ ボックス、upload url に Node-RED のアクセスポイント、src file
に プロジェクトに保存した ⾳源ファイル、ʻcontenxt-typeʼ に audio/wav を設定
3. ʻSay To Textʼ ボックス、または ʻLogʼ ボックスにつなげて結果を確認
※⾳源データは wav 形式でサンプリングレート 16000Hz のモノラルで
ある必要があります。
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper が録⾳した⾳声を⾳声認識
※この実装を動作確認するためには実機での実⾏が必要です
・ ʻRecord Sound custʼ ボックス
(ʻRecord Sound custʼ ボックスは
ʻRecord Soundʼ ボックスをベースに
録⾳した⾳声をプロジェクトフォルダ
内に保存するようにカスタマイズ
したボックスです)
・ 保存するファイル名をプロパティで
設定(拡張⼦はつけません)
29
Smart Robotics CO.,LTD. 2016 All rights reserved
HTTPリクエスト(4)
データの保存
30
04downloadfile
Smart Robotics CO.,LTD. 2016 All rights reserved
Download file ボックスを使ってHTTPレスポンスをファイルに保存
31
• 例えば Watson Text to Speech が⾳声合成した⾳声データを Pepper
本体に保存、再⽣
Smart Robotics CO.,LTD. 2016 All rights reserved
WebSocket 通信
32
05websocket
Smart Robotics CO.,LTD. 2016 All rights reserved
WebSocket ボックスを使って Node-RED と通信
33
出⼒⼊⼒
⼊⼒
出⼒
形式は ws://サーバー/パス
Node-RED Pepper (Choregraphe)
直結するとおうむ返し
WebSocket を使って、双⽅向、リアルタイムの通信を実現
Smart Robotics CO.,LTD. 2016 All rights reserved
外部サービスを
Node-RED 経由で利⽤
34
06useotherservice
Smart Robotics CO.,LTD. 2016 All rights reserved
Node-RED 経由で Google Cloud Vision API を呼んでみる
35
※:Vision API の有効化、API キーの設定は https://console.developers.google.com/ から
Google Cloud のAPIキー
Smart Robotics CO.,LTD. 2016 All rights reserved
⼿法 連携⽅法
サービスを利⽤する
ための認証
サービスを利⽤する
ロジック
適⽤場⾯
各サービスの API
に直接アクセス
Web API にアク
セス
Pepper が⾏う Pepper 側で実装 ミニマムのシステム構
成でシステムを構築し
たい場合。API の機能
を最⼤限利⽤したい場
合
Node-RED を使う Node-RED が⾏う Node-RED 側と
Pepper 側で分散可能
ラピッドプロトタイピ
ングに適したソリュー
ション
サービス提供の
SDK を使う
サービス提供の
SDK をプロジェ
クトに取り込む
Pepper が⾏う(SDK
を使って)
Pepper 側で実装 • Watson Developer
Cloud Python SDK
• Bluemix 全体に関す
る Python での
SDK 提供はない。
IBM Bluemix と Pepper の連携
36
Smart Robotics CO.,LTD. 2016 All rights reserved
各サービスの API に
直接アクセス
37
Smart Robotics CO.,LTD. 2016 All rights reserved
各サービスの API に直接アクセス利点と⽋点
• 利点
• 各サービスAPI に直接アクセスすることで機能を最⼤限利⽤できる
• 最⼩限のシステム構成でシステム構築
• ⽋点
• リクエスト、レスポンスのデータ整形を Pepper で⾏う必要あり。
• サービスを利⽤するための認証情報を Pepper 側で保持しなければならない
• 安全に、セキュアに認証情報を保存する仕組みが必要
38
Smart Robotics CO.,LTD. 2016 All rights reserved
例:Watson Speech to Text の WebSocket インターフェースを使ってライブSTT
39
• Speech to Text のサービスクレデンシャルを作成
Smart Robotics CO.,LTD. 2016 All rights reserved
例:Watson Speech to Text の WebSocket インターフェースを使ってライブSTT
40
• Pepper アプリサンプル watson_live_stt_sample1
• Watson STT が認識した⾳声をおうむ返しで返します。
STT との通信はサービスとして実装
サービスを起動
サービスを呼び出し
サービスに与えるパ
ラメータ。Watson
STT の userid /
password を設定
※サービスの実装は 次の Watson の記事を参考にしました
https://www.ibm.com/blogs/watson/2016/07/getting-robots-listen-using-watsons-speech-text-service/
Smart Robotics CO.,LTD. 2016 All rights reserved
⼿法 連携⽅法
サービスを利⽤する
ための認証
サービスを利⽤する
ロジック
適⽤場⾯
各サービスの API
に直接アクセス
Web API にアク
セス
Pepper が⾏う Pepper 側で実装 ミニマムのシステム構
成でシステムを構築し
たい場合・API の機能
を最⼤限利⽤したい場
合
Node-RED を使う Node-RED が⾏う Node-RED 側と
Pepper 側で分散可能
ラピッドプロトタイピ
ングに適したソリュー
ション
サービス提供の
SDK を使う
サービス提供の
SDK をプロジェ
クトに取り込む
Pepper が⾏う(SDK
を使って)
Pepper 側で実装 • Watson Developer
Cloud Python SDK
• Bluemix 全体に関す
る Python での
SDK 提供はない。
IBM Bluemix と Pepper の連携
41
Smart Robotics CO.,LTD. 2016 All rights reserved
サービス提供の SDK を使う
42
Smart Robotics CO.,LTD. 2016 All rights reserved
外部モジュールの取り込み⽅
43
Smart Robotics CO.,LTD. 2016 All rights reserved
外部モジュールの取り込み
• ⽅針:
• プロジェクトに任意のフォルダを作成(例:lib)
• フォルダに外部モジュールのファイルを保存
• プロジェクト実⾏時に python のモジュール参照パスに任意のフォルダを追加
• 注意点:
• アプリの実⾏は Pepper 本体で⾏われる。 Pepper 本体は Intel Atom CPU 上
で動く Gentoo Linux。この環境で動くファイルが⼀通りフォルダ内にそろって
いる必要あり。特にネイティブコードを含むモジュールなど注意が必要
• ⼿法:
• ⼿法1:モジュールがアーカイブされているものはこれを⼊⼿
• ⼿法2:pip を使う場合はインストール先を指定、アウトプットを取り込む
• pip install --install-option="--prefix=$PREFIX_PATH" package_name
• ⼿法3:NAOqi バーチャルマシンを使ってインストールイメージを作る
44
Smart Robotics CO.,LTD. 2016 All rights reserved
Watson Developer Cloud の python SDK を使う
• http://www.ibm.com/watson/developercloud/
45
Smart Robotics CO.,LTD. 2016 All rights reserved
サンプルプログラム
46
Smart Robotics CO.,LTD. 2016 All rights reserved
Pepper のタブレット
47
Smart Robotics CO.,LTD. 2016 All rights reserved
タブレットの活⽤
• 活⽤シーン:
• ⾳声認識ではうまくコミュニケーションが取れない場合の補助
• 既存 Web サービス画⾯の活⽤
• 機能:
• 画像の表⽰
• タッチ位置の検出
• HTML ページの表⽰
• ビデオファイルの再⽣(ただし⾳はタブレットからしか出ない)
• プロジェクトのファイルをタブレットに表⽰させることも、外部のリソースを
開くことも可能
48
Smart Robotics CO.,LTD. 2016 All rights reserved
例:プロジェクトのファイルを開く
49
• プロジェクトの中のHTMLフォルダー内のファイルを開くことができる
• 例えばアプリが撮った写真をタブレットに表⽰したい場合、プロジェク
トの HTML フォルダー内に保存すればいい。
• キャッシュに注意
• URL の末尾に ?乱数 でキャッシュブレーク
• イメージの表⽰は ALTabletService.showImage() の代わりに
ALTabletService.showImageNoCache() を使う
Smart Robotics CO.,LTD. 2016 All rights reserved
例:外部ファイルを開く
50
• HTML ページについては標準ではボックスがないので標準ボックスをカ
スタマイズして
• 例えば Show Web View ボックス、スクリプトで showWebView を
呼び出しているところの引数に URL を与える
Smart Robotics CO.,LTD. 2016 All rights reserved
終わり
51

More Related Content

PPTX
NAO/Pepper 開発環境 について
PPTX
NAO Workshop #1
PPTX
Pepper アプリデベロッパーのための NAO アプリ開発講座1
PDF
Fortranが拓く世界、VSCodeが架ける橋
KEY
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
PDF
マイクロサービス時代の動画配信基Ruby×go=∞
PPTX
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
PDF
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
NAO/Pepper 開発環境 について
NAO Workshop #1
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Fortranが拓く世界、VSCodeが架ける橋
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
マイクロサービス時代の動画配信基Ruby×go=∞
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)

What's hot (20)

PDF
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
PDF
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
PDF
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
PDF
OSC福岡 20111203
PDF
エンタープライズソフトウェア開発とOSS
PDF
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
PDF
Gitで安定マスターブランチを手に入れる
PDF
NEDO特別講座 ロボット共通プラットフォーム講習会 (1)
PPTX
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
PDF
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
PDF
Pepperのアプリ開発について - ABC2015 Summer -
PDF
東大大学院 電子情報学特論講義資料「ハイパーパラメタ最適化ライブラリOptunaの開発」柳瀬利彦
PDF
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
PDF
SPAを実現するために必要な通信技術
PDF
Yahoo!ブラウザーにおける市場環境の分析と戦略化
PPTX
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
PDF
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
PDF
【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化
PDF
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
PDF
ブラウザのPerformance APIの話
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
OSC福岡 20111203
エンタープライズソフトウェア開発とOSS
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
Gitで安定マスターブランチを手に入れる
NEDO特別講座 ロボット共通プラットフォーム講習会 (1)
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
Pepperのアプリ開発について - ABC2015 Summer -
東大大学院 電子情報学特論講義資料「ハイパーパラメタ最適化ライブラリOptunaの開発」柳瀬利彦
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
SPAを実現するために必要な通信技術
Yahoo!ブラウザーにおける市場環境の分析と戦略化
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
ブラウザのPerformance APIの話
Ad

Viewers also liked (20)

PDF
PepperとWatson音声関連API
PPTX
それでもタブレットと付き合っていく方法 公開版
PDF
20160529 Pepper SDK for Android Studio
PDF
Pepper DAYS ☆ -Pepperのいる世界-
PDF
Pepperって実際何モノ?
PPTX
ニンニンPepperアプリ概要と技術説明
PDF
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
PDF
アトリエ秋葉原 Choregraphe WS#1
PDF
アトリエ秋葉原 Choregraphe WS#3
PDF
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
PPTX
Pepper活用提案書
PPT
作品発表
PDF
Pepperで翻訳ソフトを作ってみた
PDF
20151002 Android app for Pepper
PDF
Mobius from Maplesoft
PPTX
Pepper tech festival_2014_技術セッション応用
PPTX
第一回Pepperハンズオン
PDF
ロボット介護機器設計支援ツール、中坊嘉宏(産総研)
PDF
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
ODP
Hacking Robotics
PepperとWatson音声関連API
それでもタブレットと付き合っていく方法 公開版
20160529 Pepper SDK for Android Studio
Pepper DAYS ☆ -Pepperのいる世界-
Pepperって実際何モノ?
ニンニンPepperアプリ概要と技術説明
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
アトリエ秋葉原 Choregraphe WS#1
アトリエ秋葉原 Choregraphe WS#3
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
Pepper活用提案書
作品発表
Pepperで翻訳ソフトを作ってみた
20151002 Android app for Pepper
Mobius from Maplesoft
Pepper tech festival_2014_技術セッション応用
第一回Pepperハンズオン
ロボット介護機器設計支援ツール、中坊嘉宏(産総研)
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
Hacking Robotics
Ad

Similar to IBM Blluemix を Pepper とつないでみよう (20)

PDF
Watsonを使ってAIアプリを作ってみよう!-ハンズオン-
PDF
【大阪】Bluemix勉強会 - Watson ハンズオン -
PDF
ラズパイ+SL+BMでワトソンと話そう
PPTX
Ibm bluemix を使ってモバイルのセンサーデータを利用する
PDF
Watson API トレーニング 20160716 rev02
PDF
第三回北海道ワトソン勉強会 Watson + IoT 丼
PDF
HTML5 によるロボット制御
PDF
イノベート・ハブ九州 Bluemix勉強会(第2回)
PPTX
AlexaPepperTalk
PPTX
Twilio bluemix hands-on 資料
PDF
Smart at robo
PDF
Ibm io t hands on 150717
PDF
IBM IoT Foundation - Develop IoT Appl in 10 min
PDF
Ibm io t hands on 150717
PDF
話題のNode-REDでIoTアプリを作ってみよう
PPTX
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.1.0対応)
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.2.0対応)
PDF
WWCT ラズパイ Bluemix 講習資料
PDF
GPU と PYTHON と、それから最近の NVIDIA
Watsonを使ってAIアプリを作ってみよう!-ハンズオン-
【大阪】Bluemix勉強会 - Watson ハンズオン -
ラズパイ+SL+BMでワトソンと話そう
Ibm bluemix を使ってモバイルのセンサーデータを利用する
Watson API トレーニング 20160716 rev02
第三回北海道ワトソン勉強会 Watson + IoT 丼
HTML5 によるロボット制御
イノベート・ハブ九州 Bluemix勉強会(第2回)
AlexaPepperTalk
Twilio bluemix hands-on 資料
Smart at robo
Ibm io t hands on 150717
IBM IoT Foundation - Develop IoT Appl in 10 min
Ibm io t hands on 150717
話題のNode-REDでIoTアプリを作ってみよう
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.1.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.2.0対応)
WWCT ラズパイ Bluemix 講習資料
GPU と PYTHON と、それから最近の NVIDIA

IBM Blluemix を Pepper とつないでみよう

  • 1. IBM Bluemix を Pepper とつないでみよう 2016/10/31 株式会社スマートロボティクス Pepper x Bluemixハンズオンワークショップ&デモ
  • 2. Smart Robotics CO.,LTD. 2016 All rights reserved 内容 • IBM Bluemixとの連携その様々な⼿法 • Node-RED を使って Pepper と Bluemix を連携 • HTTPリクエスト(1)単純な HTTP リクエスト • HTTPリクエスト(2)画像データの送信 (Watson Visual Recognition で画像認識) • HTTPリクエスト(3)⾳声データの送信 (Watson Speech To Text で⾳声認識) • HTTPリクエスト(4)データの保存 • WebSocket 通信 • 外部サービスを Node-RED 経由で利⽤ • Bluemix 各サービスAPIに直接アクセス • 例:Watson Speech To Text の Websocket インターフェースを使う • サービス提供の SDK を使う • Watson SDK • Pepper のタブレット 2
  • 3. Smart Robotics CO.,LTD. 2016 All rights reserved IBM Bluemixとの連携 その様々な⼿法 3
  • 4. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper とのサービス連携 • Web API にアクセス or サービス提供のSDK を使う? • Web API にアクセス • REST API が提供されている場合、HTTP リクエストを⽤いてクラウドサービスと連携する • その他、連携のためのプロトコルが公開されている場合、それらを⽤いてクラウドサービス 連携する • WebSocket • MQTT • など • サービス提供の SDK をプロジェクトを使う • Linux で稼働する Python SDK があれば Pepper で利⽤できる可能性⾼い • それぞれの SDK に仕様上の特性あり。使いこなせれば開発が楽 4
  • 5. Smart Robotics CO.,LTD. 2016 All rights reserved ⼿法 連携⽅法 サービスを利⽤する ための認証 サービスを利⽤する ロジック 適⽤場⾯ 各サービスの API に直接アクセス Web API にアク セス Pepper が⾏う Pepper 側で実装 ミニマムのシステム構 成でシステムを構築し たい場合。API の機能 を最⼤限利⽤したい場 合 Node-RED を使う Node-RED が⾏う Node-RED 側と Pepper 側で分散可能 ラピッドプロトタイピ ングに適したソリュー ション サービス提供の SDK を使う サービス提供の SDK をプロジェ クトに取り込む Pepper が⾏う(SDK を使って) Pepper 側で実装 • Watson Developer Cloud Python SDK • Bluemix 全体に関す る Python での SDK 提供はない。 IBM Bluemix と Pepper の連携 5
  • 6. Smart Robotics CO.,LTD. 2016 All rights reserved ⼿法 連携⽅法 サービスを利⽤する ための認証 サービスを利⽤する ロジック 適⽤場⾯ 各サービスの API に直接アクセス Web API にアク セス Pepper が⾏う Pepper 側で実装 ミニマムのシステム構 成でシステムを構築し たい場合。API の機能 を最⼤限利⽤したい場 合 Node-RED を使う Node-RED が⾏う Node-RED 側と Pepper 側で分散可能 ラピッドプロトタイピ ングに適したソリュー ション サービス提供の SDK を使う サービス提供の SDK をプロジェ クトに取り込む Pepper が⾏う(SDK を使って) Pepper 側で実装 • Watson Developer Cloud Python SDK • Bluemix 全体に関す る Python での SDK 提供はない。 IBM Bluemix と Pepper の連携 6
  • 7. Smart Robotics CO.,LTD. 2016 All rights reserved Node-RED を使って Pepper と Bluemix を連携 7
  • 8. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper から Web API へのアクセス • Python 標準ライブラリ or 外部モジュール利⽤ • 標準ライブラリを使った場合実装が煩雑になりがち • 今回は HTTP アクセスのモジュールとして requests、WebSocket の モジュールとして liris/websocket-client を利⽤ 8
  • 9. Smart Robotics CO.,LTD. 2016 All rights reserved サンプルアプリケーション 9 プロジェクト名 概要 01simplehttprequest 単純な HTTP リクエスト 02uploadimage 画像を Node-RED に送る 03uploadaudio ⾳声データを Node-RED に送る 04downloadfile バイナリデータを Node-RED からダウンロードする 05websocket WebSocket で通信をする 06useotherservice Node-RED を介して外部 WebAPI を使う
  • 10. Smart Robotics CO.,LTD. 2016 All rights reserved HTTPリクエスト(1) 単純な HTTP リクエスト 10 01simplehttprequest
  • 11. Smart Robotics CO.,LTD. 2016 All rights reserved Simple HTTP request ボックス 11 1. プロパティー url に適当な URL を設定して、実⾏結果を確認。(「ログビューア」に結果が出る) アプリ起動後 ダブルクリック URL を設定
  • 12. Smart Robotics CO.,LTD. 2016 All rights reserved Simple HTTP request ボックス 12 2. スクリプトエディタでスクリプトを確認
  • 13. Smart Robotics CO.,LTD. 2016 All rights reserved Simple HTTP request + Node-RED 13 1. Node-RED 側で HTTP リクエストの受け⼝作成
  • 14. Smart Robotics CO.,LTD. 2016 All rights reserved Simple HTTP request + Node-RED 14 2. Pepper アプリプロジェクト、Simple HTTP Request 接続先を Node-RED の HTTP request ノードに 3. 実⾏して結果を確認
  • 15. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper のクラウド連携 Tips.1 – Say Text 15 出⼒内容を Pepper に発話させるには Say Text ボックス(⾝振りなし)または Animated Say ボックの中にある Animated Say Text (⾝振りあり)ボックスを使うのが楽 コピー&ペーストで 発話内容はバーチャルロボットでは「ダイアログ」ビューで確認できる
  • 16. Smart Robotics CO.,LTD. 2016 All rights reserved HTTPリクエスト(2) 画像データの送信 (Watson Visual Recognition で画像認識) 16 02uploadimage
  • 17. Smart Robotics CO.,LTD. 2016 All rights reserved Watson Visual Recognition で画像認識 17 1. IBM Bluemix コンソール、カタログ Watson の中の Visual Recognition を選択
  • 18. Smart Robotics CO.,LTD. 2016 All rights reserved Watson Visual Recognition で画像認識 2. Connect to で Node-RED アプリケーションを選択し [Create] ボタンでサービス作成 3. アプリケーションをリステージして、サービスを有効にする
  • 19. Smart Robotics CO.,LTD. 2016 All rights reserved Node-RED で Pepper とのインターフェースを作成 19 1. Node-RED 側で HTTP リクエストで受け⼝、Visual Recognition につなぎ結果をレスポンスで返す
  • 20. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper側 - Update file ボックスで画像ファイルを送る 1. 認識させる画像をプロジェクトに取り込む 20 2. Upload file ボックス、ʻupload urlʼ に Node-RED のアクセスポイント、 ʻsrc fileʼ に プロジェクトに保存した イメージファイル、 ʻcontenxt-typeʼ に image/jpg を設定
  • 21. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper側 – 動作確認⽤の接続 3. Upload file ボックスは結果を ʻoutputʼ 出⼒に出⼒する これを Log ボックスにつなげてることで出⼒内容をログビューアで ⾒る事ができる 21
  • 22. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper のクラウド連携 Tips.2 – JSON モジュール 22 Watson Vision Recognition は結果を JSON 形式で返します。 JSON 形式のデータのやり取りには json モジュールの利⽤が便利です。 ※ json.loads でデコードされたディクショナリオブジェクトの中の⽂字列は unicode ⽂字列、 ⼀⽅ Pepper は⽂字列を str 型で扱う必要があるため、⽂字列のエンコードが必要 例: json ⽂字列 jsonStr から result の内容を取り出す jsonObj = json.loads(jsonStr) result = jsonObj[”result”].encode(“utf-8”) json.loads( JSON形式⽂字列) JSON 形式の⽂字列を python のオブジェクト (ディクショナリオブジェクト)に変換 json.dumps(ディクショナリオブジェクト) python のオブジェクト (ディクショナリオブジェクト)をJSON形式の ⽂字列に変換 ・・・・・ ・・・・・
  • 23. Smart Robotics CO.,LTD. 2016 All rights reserved JSON モジュールを⽤いた結果データのパース処理例 1. Vision Reco JSON parts ボックス Watson Visual Recognition からの結果をパース 23
  • 24. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper が撮った写真を画像認識 ※この実装を動作確認するためには実機での実⾏が必要です ・ ʻTake Picture custʼ ボックス (ʻTake Picture custʼ ボックスは Take Picture ボックスをベースに 撮った写真をプロジェクトフォルダー 内に保存するようにカスタマイズ したボックスです) ・プロジェクトに html フォルダーを 作りそこに写真を保存するように すれば、タブレット表⽰と画像認識を 同じ写真で⾏うことが可能です 24
  • 25. Smart Robotics CO.,LTD. 2016 All rights reserved HTTPリクエスト(3) ⾳声データの送信 (Watson Speech To Text で⾳声認識) 25 03uploadaudio
  • 26. Smart Robotics CO.,LTD. 2016 All rights reserved Speech to Text で⾳声認識 26 1. IBM Bluemix コンソール、カタログ Watson の中の Speech To Text を選択、アプリに追加
  • 27. Smart Robotics CO.,LTD. 2016 All rights reserved Node-RED で Pepper とのインターフェースを作成 27 1. Node-RED 側で HTTP リクエストで受け⼝、Speech to Text につなぎ結果をレスポンスで返す
  • 28. Smart Robotics CO.,LTD. 2016 All rights reserved 1. 認識させる⾳声データをプロジェクトに取り込む Pepper側 - Update ファイルボックスで⾳声ファイルを送る 2. ʻUpload fileʼ ボックス、upload url に Node-RED のアクセスポイント、src file に プロジェクトに保存した ⾳源ファイル、ʻcontenxt-typeʼ に audio/wav を設定 3. ʻSay To Textʼ ボックス、または ʻLogʼ ボックスにつなげて結果を確認 ※⾳源データは wav 形式でサンプリングレート 16000Hz のモノラルで ある必要があります。
  • 29. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper が録⾳した⾳声を⾳声認識 ※この実装を動作確認するためには実機での実⾏が必要です ・ ʻRecord Sound custʼ ボックス (ʻRecord Sound custʼ ボックスは ʻRecord Soundʼ ボックスをベースに 録⾳した⾳声をプロジェクトフォルダ 内に保存するようにカスタマイズ したボックスです) ・ 保存するファイル名をプロパティで 設定(拡張⼦はつけません) 29
  • 30. Smart Robotics CO.,LTD. 2016 All rights reserved HTTPリクエスト(4) データの保存 30 04downloadfile
  • 31. Smart Robotics CO.,LTD. 2016 All rights reserved Download file ボックスを使ってHTTPレスポンスをファイルに保存 31 • 例えば Watson Text to Speech が⾳声合成した⾳声データを Pepper 本体に保存、再⽣
  • 32. Smart Robotics CO.,LTD. 2016 All rights reserved WebSocket 通信 32 05websocket
  • 33. Smart Robotics CO.,LTD. 2016 All rights reserved WebSocket ボックスを使って Node-RED と通信 33 出⼒⼊⼒ ⼊⼒ 出⼒ 形式は ws://サーバー/パス Node-RED Pepper (Choregraphe) 直結するとおうむ返し WebSocket を使って、双⽅向、リアルタイムの通信を実現
  • 34. Smart Robotics CO.,LTD. 2016 All rights reserved 外部サービスを Node-RED 経由で利⽤ 34 06useotherservice
  • 35. Smart Robotics CO.,LTD. 2016 All rights reserved Node-RED 経由で Google Cloud Vision API を呼んでみる 35 ※:Vision API の有効化、API キーの設定は https://console.developers.google.com/ から Google Cloud のAPIキー
  • 36. Smart Robotics CO.,LTD. 2016 All rights reserved ⼿法 連携⽅法 サービスを利⽤する ための認証 サービスを利⽤する ロジック 適⽤場⾯ 各サービスの API に直接アクセス Web API にアク セス Pepper が⾏う Pepper 側で実装 ミニマムのシステム構 成でシステムを構築し たい場合。API の機能 を最⼤限利⽤したい場 合 Node-RED を使う Node-RED が⾏う Node-RED 側と Pepper 側で分散可能 ラピッドプロトタイピ ングに適したソリュー ション サービス提供の SDK を使う サービス提供の SDK をプロジェ クトに取り込む Pepper が⾏う(SDK を使って) Pepper 側で実装 • Watson Developer Cloud Python SDK • Bluemix 全体に関す る Python での SDK 提供はない。 IBM Bluemix と Pepper の連携 36
  • 37. Smart Robotics CO.,LTD. 2016 All rights reserved 各サービスの API に 直接アクセス 37
  • 38. Smart Robotics CO.,LTD. 2016 All rights reserved 各サービスの API に直接アクセス利点と⽋点 • 利点 • 各サービスAPI に直接アクセスすることで機能を最⼤限利⽤できる • 最⼩限のシステム構成でシステム構築 • ⽋点 • リクエスト、レスポンスのデータ整形を Pepper で⾏う必要あり。 • サービスを利⽤するための認証情報を Pepper 側で保持しなければならない • 安全に、セキュアに認証情報を保存する仕組みが必要 38
  • 39. Smart Robotics CO.,LTD. 2016 All rights reserved 例:Watson Speech to Text の WebSocket インターフェースを使ってライブSTT 39 • Speech to Text のサービスクレデンシャルを作成
  • 40. Smart Robotics CO.,LTD. 2016 All rights reserved 例:Watson Speech to Text の WebSocket インターフェースを使ってライブSTT 40 • Pepper アプリサンプル watson_live_stt_sample1 • Watson STT が認識した⾳声をおうむ返しで返します。 STT との通信はサービスとして実装 サービスを起動 サービスを呼び出し サービスに与えるパ ラメータ。Watson STT の userid / password を設定 ※サービスの実装は 次の Watson の記事を参考にしました https://www.ibm.com/blogs/watson/2016/07/getting-robots-listen-using-watsons-speech-text-service/
  • 41. Smart Robotics CO.,LTD. 2016 All rights reserved ⼿法 連携⽅法 サービスを利⽤する ための認証 サービスを利⽤する ロジック 適⽤場⾯ 各サービスの API に直接アクセス Web API にアク セス Pepper が⾏う Pepper 側で実装 ミニマムのシステム構 成でシステムを構築し たい場合・API の機能 を最⼤限利⽤したい場 合 Node-RED を使う Node-RED が⾏う Node-RED 側と Pepper 側で分散可能 ラピッドプロトタイピ ングに適したソリュー ション サービス提供の SDK を使う サービス提供の SDK をプロジェ クトに取り込む Pepper が⾏う(SDK を使って) Pepper 側で実装 • Watson Developer Cloud Python SDK • Bluemix 全体に関す る Python での SDK 提供はない。 IBM Bluemix と Pepper の連携 41
  • 42. Smart Robotics CO.,LTD. 2016 All rights reserved サービス提供の SDK を使う 42
  • 43. Smart Robotics CO.,LTD. 2016 All rights reserved 外部モジュールの取り込み⽅ 43
  • 44. Smart Robotics CO.,LTD. 2016 All rights reserved 外部モジュールの取り込み • ⽅針: • プロジェクトに任意のフォルダを作成(例:lib) • フォルダに外部モジュールのファイルを保存 • プロジェクト実⾏時に python のモジュール参照パスに任意のフォルダを追加 • 注意点: • アプリの実⾏は Pepper 本体で⾏われる。 Pepper 本体は Intel Atom CPU 上 で動く Gentoo Linux。この環境で動くファイルが⼀通りフォルダ内にそろって いる必要あり。特にネイティブコードを含むモジュールなど注意が必要 • ⼿法: • ⼿法1:モジュールがアーカイブされているものはこれを⼊⼿ • ⼿法2:pip を使う場合はインストール先を指定、アウトプットを取り込む • pip install --install-option="--prefix=$PREFIX_PATH" package_name • ⼿法3:NAOqi バーチャルマシンを使ってインストールイメージを作る 44
  • 45. Smart Robotics CO.,LTD. 2016 All rights reserved Watson Developer Cloud の python SDK を使う • http://www.ibm.com/watson/developercloud/ 45
  • 46. Smart Robotics CO.,LTD. 2016 All rights reserved サンプルプログラム 46
  • 47. Smart Robotics CO.,LTD. 2016 All rights reserved Pepper のタブレット 47
  • 48. Smart Robotics CO.,LTD. 2016 All rights reserved タブレットの活⽤ • 活⽤シーン: • ⾳声認識ではうまくコミュニケーションが取れない場合の補助 • 既存 Web サービス画⾯の活⽤ • 機能: • 画像の表⽰ • タッチ位置の検出 • HTML ページの表⽰ • ビデオファイルの再⽣(ただし⾳はタブレットからしか出ない) • プロジェクトのファイルをタブレットに表⽰させることも、外部のリソースを 開くことも可能 48
  • 49. Smart Robotics CO.,LTD. 2016 All rights reserved 例:プロジェクトのファイルを開く 49 • プロジェクトの中のHTMLフォルダー内のファイルを開くことができる • 例えばアプリが撮った写真をタブレットに表⽰したい場合、プロジェク トの HTML フォルダー内に保存すればいい。 • キャッシュに注意 • URL の末尾に ?乱数 でキャッシュブレーク • イメージの表⽰は ALTabletService.showImage() の代わりに ALTabletService.showImageNoCache() を使う
  • 50. Smart Robotics CO.,LTD. 2016 All rights reserved 例:外部ファイルを開く 50 • HTML ページについては標準ではボックスがないので標準ボックスをカ スタマイズして • 例えば Show Web View ボックス、スクリプトで showWebView を 呼び出しているところの引数に URL を与える
  • 51. Smart Robotics CO.,LTD. 2016 All rights reserved 終わり 51