#TJBot #TJBotzero
目次
0. TJBot zero の動作構成とこのガイドのカバー範囲 ... 2
1. IBM ID と IBM Cloud ライトアカウントの取得 ... 2
1.1 IBM ID の取得 ... 2 1.2 IBM Cloud アカウントの作成 ... 3 2 Watson API 環境の準備 ... 5 2.1 ログイン ... 5 2.2 カタログから使用する API の環境を準備する ... 6 2.3 IBM Cloud ダッシュボードへサービスを追加する ... 6 3. Raspberry Pi zero WH をセットアップする ... 7 3.1 OS イメージのダウンロードと展開 ... 7
3.2 MacOS での Raspberry Pi zero WH のセットアップ ... 8
3.3 Windows PC での Raspberry Pi zero WH のセットアップ ... 10
3.4 Raspberry Pi zero WH を初期設定する ... 12 3.5 Node-RED に必要なモジュールを追加する ... 15 3.6 オーディオとカメラの設定 ... 16 4. Node-RED の起動と基本動作の確認 ... 16 4.1 Node-RED の起動 ... 17 4.2 機能テストフローを読み込み実施する ... 17 5. Watson とつないだフローを動かす ... 21 5.1 スピーチ用フローを読み込む ... 21 5.2 画像認識用のフローを読み込む ... 25 5.3 言語翻訳用のフローを読み込む ... 26 6. 最後に ... 28
TJBot zero
0. TJBot zero の動作構成とこのガイドのカバー範囲
TJBot zero は、インターネットを経由し、IBM Cloud に接続して、IBM Watson の機能を利⽤します。
製作ガイドは、2 種類に分かれていて、当ガイドはソフトウェアやクラウ ドの設定などに関するガイドとなります。最初に、ハードウェア的なガイ ドの組み⽴てガイドをご参照いただき、その後このガイドに進んでくださ い。
1. IBM ID と IBM Cloud ライトアカウントの取得
TJBot zero は、Watson API と連携して、AI を使⽤します。次の⼿順で利 ⽤登録をしてください。Watson を利⽤するためには、IBM ID を取得した のちに IBM Cloud にアカウントを作成します。 1.1 IBM ID の取得 http://ibm.biz/create_ibm_id 上記の URL から IBM ID の登録をします。 BC ) )
⼊⼒が終わり、先へ進むと、E メールに 7 桁のアクティベーションコ ードが送られてきますので、それを⼊れて登録終了です。 1.2 IBM Cloud アカウントの作成 http://ibm.biz/create_ibm_cloud_account 上記のウェブサイトから登録作業を進めます。 IBM ID として登録した E メールアドレスを下記の画⾯に⼊⼒し⼊⼒フィール ドの中にある右⽮印をクリックします。 IBM ID を作成した E メールアドレスを⼊⼒すると、下記の様な画⾯になりま すので、「アカウントの作成」ボタンをクリックします。
ブラウザーを閉じて下さい。 2. Watson API 環境の準備 2.1 ログイン https://console.bluemix.net/へ PC のブラウザーからアクセスし、1.で 作成したアカウントでログインします。 2.2 カタログから使⽤する API の環境を準備する IBM Cloud にログインすると、下記の様なダッシュボードが表⽰され ますので、画⾯上部の”カタログ”をクリックします。
カタログのページでは、様々なコンポーネントを開発環境に組み込ん で⾏くことができます。今回は、左中央の”AI”を選んで先に進んでく ださい。 2.3 IBM Cloud ダッシュボードへサービスを追加する 下記の 4 種類を追加して⾏きます。 o Speech to Text o Text to Speech o Language Translator o Visual Recognition それぞれの API サービスをクリックして、画⾯が変わると、右下に作 成ボタンが出てきますので、クリックします。作成されるとさらに画
⾯が変わり、URL や、ユーザーID、パスワードそして、API キーなど が表⽰されます。これらは API によって異なります。 追加が終わったら、ダッシュボードのトップ画⾯に戻ります。 ダッシュボードへは、画⾯左上の三本線をクリックするとメニューが 出ますので、そこからダッシュボードを選択すると移動できます。 3. Raspberry Pi zero WH をセットアップする 3.1 OS イメージのダウンロードと展開
PC のブラウザーを使⽤して、Raspbian Stretch with desktop を Raspberry Pi の公式ダウンロードサイト
(https://www.raspberrypi.org/downloads/raspbian/)から ZIP 形式で
ダウンロードします。(2018/11/18 現在)
古いものは使わず、2018-11-13 の Version をダウンロードしてくだ さい。
3.2 MacOS での Raspberry Pi zero WH のセットアップ Windows PC を使いの⽅は、3.3 へ進んでください。 Zip ファイルを解凍するツール The Unarchiver
(https://theunarchiver.com/)をインストールし、ダウンロードした RASPBIAN の Zip ファイルを解凍します。 ダウンロードした OS(2018-11-13-raspbian-stretch-full.zip)をアーカ イバーで解凍すると、"2018-11-13-raspbian-stretch-full.img"が展開さ れます。 3.2.1 SD カードのフォーマット 以前別の⽤途で利⽤した SD カードを再利⽤される⽅もいらっし ゃるかと思います。新品を使う⽅も、念のため SD アソシエーシ ョンがリリースしている SD メモリカードフォーマッター (https://www.sdcard.org/jp/downloads/formatter_4/)で SD カー ドのフォーマットをお勧めします。 ダウンロードして、実⾏すると下記のような画⾯が出ますので、 フォーマットします。クイックでも上書きのどちらでも構いませ ん。カードの名前は後で変更されますので、特に気にしなくても ⼤丈夫です。
3.2.2 SD カードへ OS イメージの展開 Mac に SD カードを刺し、ターミナルから、df -h と打ち、SD カ ードのボリューム名を調べます。 ⼀番右の Mounted on にフォーマットの際に指定した名前が出て きているのが、SD カードの Volume になります。下記の例で は、⼀番下の⾏の/dev/disk2s1 が SD カードです。 ⾒つけた SD カードをコマンドでアンマウントします。(Finder か らではなく、コマンドで実施してください) 次に dd コマンドで、SD カードにイメージを展開します。この 時、SD カードの Volume 名を下記の様に⼊⼒します。 /dev/disk2s1 だった場合、/dev/rdisk2 とします。 2018-10-09-raspbian-stretch.img があるディレクトリーで下記の コマンドを実⾏します。 2-3 分無反応ですが、control + T で進捗が確認できます。展開が 終わると下記の様な表⽰が出で終わりです。 $ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1s1 234Gi 221Gi 7.9Gi 97% 16251 922337 0% / devfs 189Ki 189Ki 0Bi 100% 653 0 100% /dev
/dev/disk1s4 234Gi 4.0Gi 7.9Gi 34% 72038 54775803 0% /private/var/vm map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
/dev/disk2s1 15Gi 32Ki 15Gi 1% 0 0 100% /Volumes/NO NAME
$ sudo diskutil unmount /dev/disk2s1
SD カードを Raspberry Pi に装着し、モニターとキーボードとマ ウスを接続し、USB ケーブルから電源を供給して⽴ち上げます。 3.4 へ進んでください。
3.3 Windows PC での Raspberry Pi zero WH のセットアップ ダウンロードした RASPBIAN の Zip ファイルを解凍します。 ダウンロードした OS(2018-11-13-raspbian-stretch-full.zip)を解凍す ると、"2018-11-13-raspbian-stretch-full.img"が展開されます。 3.3.1 SD カードのフォーマット 以前別の⽤途で利⽤した SD カードを再利⽤される⽅もいらっし ゃるかと思います。新品を使う⽅も、念のため SD アソシエーシ ョンがリリースしている SD メモリカードフォーマッター (https://www.sdcard.org/jp/downloads/formatter_4/)で SD カー ドのフォーマットをお勧めします。 ダウンロードして、実⾏すると下記のような画⾯が出ますので、 フォーマットします。クイックでも上書きのどちらでも構いませ ん。ボリュームラベルは後で変更されますので、特に気にしなく ても⼤丈夫です。 3944+0 records in 3944+0 records out
3.3.2 ダウンロードした.img ファイルを SD カードへ書き込む Win32 Disk Imager
(https://ja.osdn.net/projects/sfnet_win32diskimager/)などのツー
ルを使⽤して先ほど展開した.img ファイルを SD カードへ書き込 みます。Win32 Disk Imager をダウンロードする場合は、ダウン ロードタブへ⾏き、その中にある、"Archive"カテゴリーの "win32diskimager-1.0.0-install.exe"をクリックすることで、ダウ ンロードすることができますので、インストールして.img ファイ ルを SD カードへ書き込みます。 3.3.3 SSH が使える環境の準備 Windows PC から Raspberry Pi へ SSH 接続をしてこの先作業し ますので、Windows PC に OpenSSH もしくは、PowerShell が利 ⽤できる様にしておいてください。ネット上にインストール⽅法 が沢⼭ありますので、そちらをご覧ください。
3.4 Raspberry Pi zero WH を初期設定する
このセクションの作業は Raspberry Pi に接続されているキーボード, マウス, モニターを使⽤して作業します。
3.4.1 Raspberry Pi zero WH を⽴ち上げ、IP アドレスを確認する SD カードを Raspberry Pi に装着し、モニターとキーボードとマ ウスを接続し、USB ケーブルから電源を供給して⽴ち上げます。 OS が⽴ち上がり、デスクトップ上に下記の画⾯が出てきたら、 Next で先に進み、国の情報や WiFi の設定などをし、ソフトウェ アのアップデートまで終わらせ、画⾯の指⽰に従って Reboot し ます。
次に Raspberry Pi のコマンドプロンプトを開き、下記のコマンド で IP アドレスを確認します。 wlan0:の中の inet のアドレスをメモしておきます。上の例では、 192.168.0.23 となっています。Ether の項⽬にある、b8:27:eb か ら始まるのが MAC アドレスです。 ※この先、DHCP でアサインされる IP アドレスで不具合が出る場合は、の Raspberry Pi zero の IP アドレスを固定することをお勧めします。 3.4.2 SSH の有効化 Raspberry Pi のコマンドプロンプトから下記のコマンドでツール を実⾏し画⾯の⼿順で SSH を有効化します。
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.23 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::7e31:402:b191:8351 prefixlen 64 scopeid 0x20<link> ether b8:27:eb:--:--:--75 txqueuelen 1000 (Ethernet)
RX packets 2205 bytes 205229 (200.4 KiB) RX errors 0 dropped 2 overruns 0 frame 0 TX packets 1038 bytes 110902 (108.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 $ ifconfig
3.4.3 シャットダウンし、PC から SSH 接続する
再起動する間に、PC から SSH 接続の準備をします。 PC のコマンドプロンプトから下記のコマンドで Raspberry Pi に SSH 接続します。各⾃の IP アドレスを⼊⼒してください。 Windows/Mac の場合 IP アドレスは、前に調べた値を使⽤してください。 Mac の場合(Windows でも構成により下記で接続できます) パスワードの初期値は、"raspberry"です。前の設定で独⾃のパス ワードをつけた⽅はそれを使⽤してください。 WiFi ルータの設定などにより、IP アドレスが変わってしまい、 SSH 接続がうまく⾏かない場合は、"ネットワークに繋がってい る機器の IP と MAC アドレス確認⽅法"などで検索すると⾊々な 解決策が出てきます。 Raspberry Pi の MAC アドレスは、b8:27 から始まりますので簡 単に機器の特定ができます。 以前にお使いの PC から Raspberry Pi に SSH で接続したことがあ ると、raspberrypi.local で接続できない場合があります。その場 合は、.ssh ディレクトリーの下にある known_hosts を探して、削 除します。 3.4.4 OS と Node-RED の更新 OS と Node-RED を最新にアップデートします。Raspberry Pi の コマンドプロンプトから下記のコマンドを⼊⼒してください。 $ ssh [email protected] $ ssh [email protected]
3.5 Node-RED に必要なモジュールを追加する
標準では組み込まれていない IBM Watson や Raspberry pi のハードウ ェアなどを制御するためのノードを追加します。下記のコマンドをコ マンドプロンプトから⼊⼒してください。 インストールが終わったら、リブートしておきます。 3.6 オーディオとカメラの設定 Raspberry Pi zero シリーズでは、標準でオーディオ機能が利⽤可能に なっていませんので、/boot/config.txt の⼀番下の⾏に下記の⾏を追 加する オーディオの⼊出⼒レベルを下記のコマンドであげておきます。 次にカメラを有効化するために、SSH の有効かと同様に下記のコマン ドで、構成ツールを実⾏し、カメラを有効化します。
構成メニュー:5. Interfacing Options =>P1. Camera => はい => 了解
$ sudo npm --unsafe-perm -g install node-red-node-watson node-red-contrib-camerapi
$ sudo reboot
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4
$ sudo raspi-config
$ amixer -D hw:1 sset Mic 100% $ amixer -c0 sset PCM 100% unmute
4. Node-RED の起動と基本動作の確認
いよいよ、Node-RED を起動させ、フローを読み込んで TJBot zero を動作 させます。 4.1 Node-RED の起動 SSH で Raspberry Pi zero にログイン(3.4.3 参照)し、下記のコマンド で Node-RED を起動します。 4.2 機能テストフローを読み込み実施する PC のブラウザーより http://192.168.0.23:1880/へアクセスします。 IP アドレスは、各⾃の Raspberry Pi zero WH のアドレスを使⽤して ください。 下記の URL にこれ以降に使⽤するフローのデータ(JSON 形式)を 置いてありますので、表⽰させて Cut & Paste してご利⽤ください。
http://ibm.biz/tjbot_zero_recipes 4.2.1 LED のテストフローの読み込みと実⾏ 下記の画⾯が表⽰されたら、右上の三本線メニュー=>読み込み=>ク リップボードを選択します。 $ node-red Welcome to Node-RED =================== **途中省略** 22 Nov 22:22:22 - [warn] --- フローのクレデンシャルファイルはシステム生成キーで暗号化されています。 **途中省略** --- 22 Nov 22:22:22 - [info] フローを開始します 22 Nov 22:22:22 - [info] フローを開始しました 22 Nov 22:22:22 - [info] サーバは http://127.0.0.1:1880/ で実行中です
下記のポップアップ画⾯が開きますので、 http://ibm.biz/tjbot_zero_recipesにある led-test.json の内容をコピー して貼り付け、読み込んでください。 フローを読み込むと、下記のような画⾯になりますので、右上の”デ プロイ”ボタンを押し、実⾏の準備をします。 “デプロイが成功しました”と表⽰された後に、画⾯内の点灯、消灯と 書かれたノードの左側にある⽿タブのような場所をクリックします。 そうすると、頭の LED が点灯します。
4.2.2 サーボモーターのテストフローの読み込みと実⾏
LED の テ ス ト フ ロ ー の 読 み 込 み と 同 様 に
http://ibm.biz/tjbot_zero_recipes にある servo-test.json の内容を Cut & Paste して読み込みます。
読み込んだら、忘れずに“デプロイ”します。
先ほどと同様に⽿タブをクリックすると、⼿を上げたり下げたり することができます。
4.2.3 マイク・スピーカーのテストフローの読み込みと実⾏ 同様にhttp://ibm.biz/tjbot_zero_recipesにある audio-test.json の テストフローを読み込み、デプロイします。 ⽿タブをクリックすると、TJBot zero の下側についているマイク から 5 秒間録⾳し、それをそのまま再⽣します。⾳量は、ブレッ ドボードのボリュームで調整できます。 5. Watson とつないだフローを動かす いよいよ Watson とつないだフローを動かしてみます。いくつか準備があり ますので、⼿順に沿って進めてください。 5.1 スピーチ⽤フローを読み込む これまでやってきた⼿順で、http://ibm.biz/tjbot_zero_recipes にある tjbot-speech.json のフローを Node-RED に読み込みます。 読み込むと、下記のようなフローが出てきます。 5.1.1 Watson への接続情報の設定
やパスワードなどをコピーしてフローのノードへインプットしま す。
PC のブラウザーから https://console.bluemix.net/へアクセスす るか、“2. Watson API 環境の準備”を参照して IBM Cloud のダッ シュボードを開きます。
例えば、Speech to Text をクリックすると、下記の様な画⾯が出 てきます。
次に Node-RED のフロー上の Speech to Text の緑のノードをダブ ルクリックします。下記の画⾯が出ますので、上のユーザー名と パスワードをコピーして⼊⼒します。API キーはブランクで OK です。
同様に、Text to Speech にもユーザー情報を設定してデプロイし ます。 5.1.2 TJBot zero に話しかけてみる ⽿タブをクリックるすと頭が⻘に変わり、話を 3 秒間⼈の話を聞 き取ります。“⼿を振って”とか、”頭を⾚くして“というとそれに 反応した動きをします。 Watson Assistant と連携するとより⾼度な応対ができる様になり ますので研究してみてください。 5.2 画像認識⽤のフローを読み込む
http://ibm.biz/tjbot_zero_recipes にある visual.json を Node-RED に 読み込み Text to Speech と Visual Recognition のユーザー情報を設定 し、デプロイします。Visual Recognition は、API キーのみが必要と なっています。
5.2.1 画像判別を試してみる 画像判別には、顔認識と物認識の 2 つのパーターンが⽤意されて います。顔認識では、⾒えている⼈の性別や年齢を判別して教え てくれ、物認識では、⾒えている物の確度の⾼いものから 3 つ教 えてくれます。 5.3 ⾔語翻訳⽤のフローを読み込む
http://ibm.biz/tjbot_zero_recipes にある translate.json を Node-RED に読み込み Speech to Text, Text to Speech そして Language Translator のユーザー情報を設定し、デプロイします。Language Translator は、 API キーのみが必要となっています。
5.3.1 ⾔語翻訳を試してみる
このフローでは、⽿タブをクリックすると 5 秒間声を聞き取り、 ⽇本語から英語へ翻訳してくれます。Speech to Text, Language Translator, Text to Speech のそれぞれの⾔語設定を変更すると 様々な⾔語の翻訳が試せます。外国語を聞かせる場合は、Web の 翻訳サイトなどで喋らせた⾳声を聞かせると良く認識します。
6. 最後に
IBM のサイトをはじめ、ユーザーの⽅々も TJBot zero に関するフローのレ シピやノウハウを公開してくださっています。皆さんも拡張された TJBot zero のフロー・レシピをどんどん公開してください。ロボット本体にペイ ントしてお化粧した姿の写真もぜひ公開をお願いします。ハッシュタグは、 #TJBot #TJBotzero でお願いします。 更新履歴: 2018/11/26 初版 2018/12/10 JSON コードの⽂字の折り返しによる不具合の修正(JSON コードを Web へ掲載) 当資料は、情報提供の⽬的のみで提供されており、いかなる読者に対しても法律的またはその他の指導や助⾔を意図し たものではなく、またそのような結果を⽣むものでもありません。本資料に含まれている情報については、完全性と正 確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗⽰にかかわらずいかなる保証も伴わないも のとします。本資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害が⽣じた場合 も、IBM は責任を負わないものとします。