3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Watson TJBotをつくりました【2】ツイッターの感情をLEDの色で表示

Last updated at Posted at 2017-11-11

PDF資料はこちらからどうぞ。
http://seahorse-inc.com/QIITA/TJBot-2/Sentimentセットアップ全手順_20170718.pdf

1. はじめに

TJBotは声を文字、文字を声にしたり、話しかけられた意図(意味)を理解してお話したり、色々な情報から欲しい情報を探してくれるといった、「IBM WatsonコグニティブAPI」をこれからやってみようという人にはうってつけのキットです。

厚紙や3Dプリンターでホディを作り、小さく低価格のコンピュータ(Raspberry PI)で頭脳を組み込みます。手を振ったり、LEDの色を変えたり、話しかけると答えてくれます。
機能的にはシンプルですが、反応してくれるとワクワクして楽しく、ボディは簡単に組み立てられるようになっています。

TJBotはすでに、色々な「IBM WatsonコグニティブAPI」を組み合わせた「レシピ」があります。

本投稿は、できあがっている「レシピ」を参考に、実際に作ってみた手順となっています。
使用するパーツなどの関係で、そのままの「レシピ」ではうまくいかないところや分からない点がありましたが、試行錯誤の末、ちゃんと動作することができました。
さらに、おまけとして日本語対応しました。
00.png

尚、厚紙でTJBotのボディ作成は割愛させていただきますが、下記URLを参考に作ってみてください。
https://www.youtube.com/watch?v=UEnuF--LA-0
https://www.instructables.com/id/Build-TJ-Bot-Out-of-Cardboard/

厚紙、3Dプリンター用の図面は下記URLです。
https://ibmtjbot.github.io/#gettj

ちなみに私は、A2サイズ2mmの厚紙にpdf印刷出力の図面を貼り、デザインナイフでカットしました。
デザインナイフでカットすると、かなり時間と労力を要しますので、レーザーカットをお勧めします。
レーザーカッターを時間制で使えるサービスもあるようです。

厚紙とRaspberry Pi、マイク、スピーカー、LED、モーターでTJBotを組み立て、Watson Cognitive APIを使って、色々なレシピが生まれています。
本投稿は、各レシピを実際に作成し、日本語化を行ってみた際の手順内容となっています。

2. TJBotについて

TJBotは、IBM ResearchのMaryam Ashooriによって、認知対象の設計と実装におけるベストプラクティスを見つけるための実験として作成されました。
https://www.ibm.com/blogs/research/2016/11/calling-makers-meet-tj-bot/

TJBotは、楽しい方法でWatsonサービスを理解するために生まれた、オープンソースプロジェクトです。
https://ibmtjbot.github.io/

3. 今回作成するレシピ

Watson 「Watson Tone Analyzer」と「Twitter Streaming API」、Raspberry Piを使って、指定したキーワードでTwitterに流れている情報から、感情をリアルタイムで分析してLEDの色を変えます。

使用させていただいたレシピのサイト情報:
https://www.instructables.com/id/Make-Your-Robot-Respond-to-Emotions-Using-Watson/

4. 材料

価格は変わる可能性があります。
01.png
厚紙は、ミューズ KMKケントボード SS-A22mm厚を使いました。 

5. H/Wセットアップ

Raspberry Pi用のOS Rasbianのインストールは割愛させていただきます。
http://qiita.com/Mitsu-Murakita/items/90907782b6aec9959328
の「3. Raspbian関連のインストール」などを参考にしてください。

5-1. LED

スイッチサイエンス社 NeoPixel スルーホールLEDを使用しました。
03.png04.png

LEDは平らにカットされている方から
1.--- 使用しない
2.--- GND  ⇒  6番ピン
3.--- +3.3V ⇒  1番ピン
4.--- Data in ⇒ 12番ピン
になっています。
(注意!)RaspberryPiに接続する際は、2⇒4⇒3の順番に接続する
05.png

6. Watson「Tone Analyzer」サービスの作成

Bluemixにログイン
https://console.bluemix.net/

06.png

07.png

08.png

カタログより「Tone Analyzer」を選択
09.png

「作成」をクリック
10.png

「サービス資格情報」をクリック
11.png

「資格情報の表示」をクリック
27.png

「username」「password」を後程使用しますので、メモ帳などにコピー保存してください。
13.png
14.png

7. Twitter API 利用登録

Twitterを利用していない場合、事前にアカウント作成をしてください。
 https://twitter.com/?lang=ja 

次にAPI利用登録を行います。
API利用登録をして、下記4点を入手します。 https://apps.twitter.com/ 
・consumer_key
・consumer_secret
・access_token_key
・access_token_secret

「Create New App」ボタンを押す。
15.png

16.png
Name:アプリケーションの名前を入力
Description:アプリケーションの説明を入力
Website:アプリケーションのURLを入力
Developer Agreement:チェックする
「Create your Twitter application」ボタンを押す

名前の箇所をクリック。
17.png

「Keys and Access Tokens」タブを選択。
18.png19.png
後程使用しますので、メモ帳などにコピー保存してください。

Twitter API キーの取得手順
下記サイトが参考になります
http://dotnsf.blog.jp/archives/1044796238.html

8. Raspbianの最新化とNode.js、npm、のインストール

TeratermなどでSSH接続します。ID、パスワードの初期値は、
  ID:pi
  Password: raspberry です。

20.png

以下のコマンドを実行してください。

$ sudo apt-get update ⏎
$ sudo apt-get dist-upgrade ⏎
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - ⏎
$ sudo apt-get install -y nodejs ⏎

9. コードのダウンロードとインストール

$ git clone https://github.com/ibmtjbot/tjbot.git ⏎
$ cd ~/tjbot/recipes/sentiment_analysis ⏎
$ npm install ⏎

インストールしたプログラムなど
21.png

10. 「Tone Analyzer」「Twitter API」構成情報の設定

ディレクトリを ~/tjbot/recipes/sentiment_analysis に移動します。

$ cd ~/tjbot/recipes/sentiment_analysis ⏎

インストールされたデフォルト構成ファイル「config.defaule.js」「config.js」という名でコピーし、「config.js」を編集します。

$ cp config.default.js config.js ⏎

“6.Watson「Tone Analyzer」サービスの作成”で取得した、「username」「password」
“7.Twitter API 利用登録” で取得した、
・consumer_key
・consumer_secret
・access_token_key
・access_token_secret

を登録します。

ここではnanoエディターを使用しました。
22.png
各項目を登録し、 Ctrl+xyで保存します。

11. LED 色指定の問題

LEDが指定した色で光るかを確認します。
確認用プログラムをインストールし、実行します。

$ cd ~/tjbot/bootstrap/tests ⏎ 
$ npm install ⏎
$ sudo node test.led.js ⏎

23.png

おそらく意図したように光らなかったと思います。
これは、LEDの色設定(Data in)のPWMモジュールがピン番号12(GPIO 18)を使用していますが、内臓のオーディオ出力も同じGPIO18を使用しているため、競合状態となる為です。
回避策として、内臓のオーディオジャック出力を止める方法があり、以下のコマンドでサウンドカーネルモジュールを無効します。
ただこの場合、オーディオ出力はHDMI、USB、またはBluetooth経由でスピーカーを接続する必要があります。

$ cd ~/tjbot/bootstrap ⏎
$ sudo cp tjbot-blacklist-snd.conf /etc/modprobe.d/ ⏎
$ sudo update-initramfs -u ⏎
$ sudo reboot ⏎

raspberryが再起動したら、確認用プログラムを試して、意図した通り色が光ることを確認してください。
おそらく大丈夫と思います。

$ cd ~/tjbot/bootstrap/tests ⏎
$ sudo node test.led.js ⏎

12. プログラムの実行

$ cd ~/tjbot/recipes/sentiment_analysis/ ⏎
$ sudo node sentiment.js ⏎

24.png
キーワードの初期値は「education」です。
Twitter情報を収集し、分析後LEDの色が変わります。
(色が変わるまで、少々時間がかかります。)

13. LEDの色と感情について

<赤>---------- 怒り
<黄>---------- 喜び
<マゼンタ>----- 恐怖
<緑>---------- 嫌悪
<青>---------- 悲しみ

14. キーワードの変更方法

config.jsファイルのexports.sentiment_keywordを変更します。

$ cd ~/tjbot/recipes/sentiment_analysis/ ⏎
$ sudo nano config.js ⏎

10行目の
exports.sentiment_keyword = "education"; // keyword to monitor in Twitter
を修正します。
25.png

15. 日本語対応に変更

15-1. 変更点1:

~/tjbot/recipes/sentiment_analysis/sentiment.js
sentiment.jsの73行目
tweet = tweet.replace(/[^\x00-\x7F]/g, "");
をコメント行にする
// tweet = tweet.replace(/[^\x00-\x7F]/g, "");

16. 日本語対応版プログラムの実行

$ cd ~/tjbot/recipes/sentiment_analysis ⏎
$ sudo node sentiment.js ⏎

26.png
Twitter情報が少なくて、LEDの色が変わらない場合は、キーワードを変更して、試してください。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?