5.3.4.手を作る

ロボットの手となる、基本的な機能を作成します。

ロボットの手にはサーボモータを使います。5.3.2.足を作ると同じように音声で「手を上げる」、「手を下げる」、「手を振る」をできるようにしていきます。

サーボモーターとは、DCモータのように連続的に回転してタイヤなどを動かすモータとは異なり、指定した角度に軸を回転させるモータになります。

例えば、90度の角度で回転させると腕を挙げるような挙動を表現でき、90度と0度に交互に動かすと腕を振っているように見えます。

その角度の指示をRaspberry Piからの信号により制御します。サーボモータの制御信号としてはpwm制御という方式にて実現します。

1.サーボモータを動かす(配線/回路作成)

2.サーボモータを動かす(プログラム作成)

3.sevo.pyをBrainAction.pyへ組み込む

上記の手順で手を作っていきます。

 

前の投稿/次の投稿/メニューページへ戻る

 

5.3.2.3.足の部品を組み立てて動かす

前回の章で音声でDCモーターを操作するプログラムが完成しました。今回はDCモーターにギアを取り付けて実際に走らせます。

1)ギアを組み立てる

使用するギアは5.3.2で紹介した「タミヤ ダブルギア」を使います。

※ギア比が1番大きいDタイプを組み立てました。ギア比が大きければスピードは落ちますが、重いものを運ぶことができます

※組み立て方法は説明書で確認してください。

2)RasberryPiやブレッドボードなどを載せる台を作る

※ギアと取り付ける台の作成方法は同じでなくても大丈夫です。(参考までに2枚の段ボール(22㎝×10㎝)と発泡スチロール(10㎝×5㎝)を使用しました。)

 

3)すべての部品を接続して組み立てる

上記まで作成した足となるギアや土台と頭脳となるrasberryPiとブレッドボードを載せての動作テストを行います。(スピーカー、Webカメラ、バッテリー(RaspberryPiの電源)、電池などすべて載せてください。)

全てのパーツを足に載せたら前章でDCモーターを音声で動かした時のようにジャンパー線の接続を行ってください。

前から見ると上記のような形になります。

 

4)動作テスト

では、NagoRobo_Main.pyのプログラムを実行し、発声にてロボットを動かしてみてください。

前の投稿/次の投稿/メニューページへ戻る

5.3.2.足を作る

ロボットの足となる、基本的な機能を作成します。

ロボットの足のはDCモータとタイヤで実現し、そのタイヤを操作するプログラムを作成します。最終的には音声で前進、後退、左、右へ移動できるようにします。

1.DCモーターを動かす

2.motor_drv.pyをBrainAction.pyへ組み込む

3.足の部品を組み立てて動かす

事前に下記の材料を用意してください。

①タイヤ(前輪用)

②後輪

③ギア(タミヤ ダブルギアボックス/DCモーター(FA-130RA-2270) 付)

④乾電池ボックス

⑤単3電池 4本

⑥ジャンパー線

⑦ブレッドボード

⑧セラミックコンデンサー0.1μF50V2.54mm 2個

⑨抵抗  5.1KΩ 2個

⑩バッテリー(5V/2A)

⑪モータードライバ(TA7291P) 2個

前の投稿/次の投稿/メニューページへ戻る

5.3.1.1.写真を撮る機能の作成

[写真を撮るプログラムの開発]

写真を撮るプログラム「takeapicture.py」の作成はRaspberry Piで行います。また、USBタイプのWebカメラを準備してください。WebカメラをRaspberry Piに接続し、写真を撮ります。(webカメラにマイクが内蔵されている場合には、個別に取り付けているマイクデバイスは不要となります。)

①openCVをRaspberry Piにインストールします。仮想環境にて下記のコマンドを実行してください。

sudo pip3 install opencv-python

sudo apt-get install libatlas-base-dev

sudo apt-get install libjasper-dev

sudo apt-get install libqtgui4

sudo apt install libqt4-test

②takeapicture.pyの作成

[takeapicture.py]

③仮想環境にてtakeapicture.pyの実行確認

sudo python3 takeapicture.py

py3testのフォルダにphoto.jpgという写真ファイルが保存されますので、写真が撮れているか確認してください。写真が撮れていればプログラムの完成です。

前の投稿/次の投稿/メニューページへ戻る

5.3.1.3.AnalysisImageToSpeech_Google.pyをBrainAction.pyへ組み込む

前章で作成したAnalysisImageToSpeech_Google.pyをBrainAction.pyへ組み込んでいきます。組み込む前にDialogflowへ新たなIntentsを作成します。

[Dailogflow:Intentsを作成する]

上記の表の通りにIntentsを作成してください。

※作成方法については、5.4.3の章にて説明しておりますので、省略します。

[BrainAction.pyへAnalysisImageToSpeech_Pyを組み込む]

※BrainAction.pyを開く前にバックアップとして、コピーをラズベリーパイのデスクトップ上に保存しておきましょう。

[BrainAction.py]

①AnalysisImageToSpeech_Google.pyをBrainAction.pyへ、インポートする処理を追記してください。

②「ここから–ここまで」の部分をプログラムに追記してください。

以上でBrainAction.pyの修正が完了しました。

プログラムの実行確認を行います。「NagoRobo_Main.py」を実行。webカメラ接続したうえで、そのカメラに対象を写るように向けて「これは、何。」と話しかけてみてください。

下記のようにWebカメラで撮影した写真から何らかの情報を取得し、音声で読み上げればプログラムの組み込みの成功です。

前の投稿/次の投稿/メニューページへ戻る

5.3.1.目を作る

ロボットの目となる、基本的な機能を作成します。

※この章は5.4.1の章から5.4.5.4の章まで完了してから進めてください。

今回は、Google Cloud Visionを使って写真画像を認識し発声する「Webカメラに写った物を何か教えてくれる」プログラムを作成します。

画像認識のプログラムには、下記のプログラムを作成します。

1.写真を撮る機能の開発(takeapicture.py)

2.写真を撮ってその情報を発話するプログラム(VisionToText_Google.pyの作成/Translate_Google.pyの修正/AnalysisImageToSpeech_Google.pyの作成)

3.AnalysisImageToSpeech_Google.pyをBrainAction.pyへ組み込む

次の投稿/メニューページへ戻る

5.2.2.3.Raspberry Piのバックアップとバックアップファイルの書き込み

Raspberry Piのすべてのデータは1枚のmicroSDカードに格納されています。よって、この中microSDカード自身や中のデータが破損してしまった場合には、今まで準備してきたものが失われてしまうことになります。よって、その際のためにバックアップファイルを作成し、何かあった場合には作成したバックアップファイルから復旧できるように準備しておきましょう。

[Win32DiskImagerのダウンロード]

Win32DiskImagerはバックアップファイルを作成する為のソフトウエアです。下記のURLからWindowsのPCへダウンロードしてください。バックアップファイルをWindowsPC内に作成します。

https://ja.osdn.net/projects/sfnet_win32diskimager/

①「ダウンロードファイル一覧」をクリックします。

②一覧の中から「Win32DiskImager-0.9.5-install.zip」を探し、ダウンロードしてください。

③ダウンロードした「Win32DiskImager-0.9.5-install.zip」を選択し、右クリックでメニューからすべて展開をクリックして展開します。

④展開したファイルの中に「Win32DiskImager.exe」がある事を確認してください。

[バックアップファイルの作成]

WindowsにWin32DiskImagerのダウンロードができたら、実際にバックアップファイルを作成してみます。

①バックアップを作成するRaspberry PiからmicroSDを取りだし、PCに接続します。PCにmicroSDカードを直接接続できない場合にはアダプターを利用してください。

②ダウンロードした「Win32DiskImager.exe」を起動してください。

③赤枠のアイコンをクリックしするとエクスプローラーが起動しますので、ファイルの種類を「Disk Images(*.img*.IMG)」から「*.*」に変更してください。

④次に、デスクトップに移動し、右クリックでテキストドキュメントを作成します。

⑤ドキュメントを作成する際に、ファイル名を任意のものを、拡張子を「.img」に変更して作成してください。ファイル名を今回は「NagoRobo.img」としました。下記のようなファイルができたら開くをクリックします。

⑥Image Fileの指定が作成したNagoRobo.imgになっていることを確認し、Deviceをバックアップ対象のmicroSDに指定します。

⑦Readボタンをクリックすると書き込みが始まります。「Are you sure you want to overwrite the specified file?」という警告表示されますが、Yesをクリックしてください。

⑧「Read Successful」と表示されるとバックアップファイルの完成となります。

[バックアップファイルの書き込み]

①バックアップ用のmicroSDカードを用意し、PCに接続します。バックアッフの用のファイルはバックアップ対象のmicroSDカードと同じ容量のものを用意してください。

Windows上にダウンロードしたWin32DiskImager.exeを起動します。をクリックし、作成したバックアップファイルを選択してます。

②Deviceに接続したバックアップ用のmicroSDを選択します。

③Writeをクリックすると書き込みが開始されます。

④Confirm overwriteという書き込みの確認が表示されますのでYESで進めます。

⑤Write Successfulが表示されたらバックアップ用のmicroSDカードへのバックアッフデータの書き込み終了です。

⑥正常にバックアップが機能するか、Raspberry Piに作成したmicroSDカードを接続して起動し、確認します。バックアップ元のmicroSDのようにRaspberry Piが起動し、保存していたプログラム等の起動が確認できたら書き込み成功です。

前の投稿/次の投稿/メニューページへ戻る

5.4.5.4.中継サーバーを利用してGoogle Cloud Speechを使えるようにする

前章までにTranslateのAPIを中継サーバーを利用して使えるようにしました。今回は、Google Cloud SpeechをRaspberry Pi Zeroで使えるようにしていきます。

【中継サーバーの準備】

①すでにライブラリのインストールは「5.4.5.1.Node.jsの環境準備」にて行っています。まずは、Google Cloud Speechを利用するための中継サーバーを作成します。

②Google_APIフォルダ内にHerokuへデプロイ時に作成したフォルダがあります。その中に「uploads」という名前のフォルダを新たに作成してください。

③赤線部分にプロジェクトIDとサービスキーを入力してください。

[VoiceToText_Google.py]

④上記で作成したプログラムはVoiceToText_Google.jsというプログラム名でroutesフォルダへ保存しまうす。

⑤app.jsにVoiceToText_Google.jsを呼び出す処理を追記します。下記の図の赤線部分を2か所追記してください。

これで中継サーバーの準備ができました。次にPythonを使って稼働確認のためのプログラムを作成します。

【Pythonを使ってローカル環境での中継サーバーの稼働確認】

[VoiceToText_Node.py]

①プログラムを作成したら、ローカル環境でサーバーを起動し、プログラムを実行してみましょう。実行方法は、5.4.5.2章で行った方法と同じです。

※この時、音声ファイルが必要になりますので、VoiceToText_Node.pyと同じディレクトリにVoice.wavの音声ファイルを配置してください。

音声がテキスト化されたらOKです。

※再度Herokuへデプロイし、赤線部分のurlをHerokuのsettingsで確認したurl+/VoiceToText_Googleに書き換えを行ってからRaspberry Pi上での稼働確認をしてみてください。(取得したURL + /VoiceToText_Google)

5.4.5.APIサービスのカスタマイズ

今までは、各ベンダー等から提供されているAPI等を直接利用していましたが、それらのAPIをカスタマイズし独自のサービスとして用意、利用する方法を整理します。

現在、Google Cloud PlatformのサービスはRaspberry Piから直接Googleのサーバーへリクエストを送りGoogleのサーバーからレスポンスをもらいます。

今回は、RaspberryPiとGoogle Cloud Platform間に中継サーバーを置き、中継サーバーを利用し、Googleの機能(音声のテキスト化機能、翻訳機能)を使えるようにしていきます。

中継サーバーはNode.jsでつくりましょう。中継サーバーの開発作業はWindowsのPCを使って行います。作成した中継サーバーはローカル環境にてテストした後、最終的にHerokuへデプロイし、外部から利用できるようにします。

では、作業していきましょう。

 

前の投稿/次の投稿/メニューページへ戻る

5.4.5.1.Node.jsの環境準備

まず、中継サーバーを開発するためのNode.jsの環境設定について説明します。下記のURLからNode.jsをダウンロードし、WindowのPCにインストールを行ってください。

※中継サーバーの開発はWindowsのPCで行います。

https://nodejs.org/en/

【Node.jsの利用の為の準備】

①「コマンドプロンプト」を起動してください。スタートメニューから検索で探すことができます。

②開発に必要なライブラリをインストールしていきます。

「express-generator」をインストールします。下記のコマンドを入力してください。

npm install -g express-generator

 

【中継サーバーの作成】

①今回開発する中継サーバー用のフォルダを作ります。デスクトップにGoogle_APIというフォルダを作成してください。(フォルダ名は本来なんでも構いません。)

②Google Cloud Platformで取得したサービスキーを配置します。デスクトップに作成したGoogle_APIフォルダを開き、

③デスクトップのフォルダに移動してください。

cd Desktop

④先ほど作成したフォルダGoogle_APIに、Webアプリケーション(express)の生成を行います。下記のコマンドを入力してください。

express Google_API

cd Google_API && npm install

⑤クライアントから送られてきた音声ファイルをサーバーへアップロードする為のモジュールもインストールします。(音声のテキスト化をするプログラムでは、音声ファイルを中継サーバーへアップロードする必要があります。)

npm install multer

⑥Googleの機能を利用するための環境を整えます。

下記のGoogle Cloud Platformのライブラリを2つインストールします。

・Google Cloud Speech

・Google Cloud Translation

npm install –save @google-cloud/speech

※saveの前のハイフンは2つです。

npm install –save @google-cloud/translate

※saveの前のハイフンは2つです。

ライブラリを利用する際に認証に利用する、キーファイルをフォルダGoogle_API内にKeysというフォルダを作成して、コピーして保存してください。

 

これでNode.jsの環境準備ができました。

Webサーバー/アプリケーションが起動できるか、フォルダGoogle_APIから下記コマンドを実行し、ブラウザで確認してください。

サーバー起動

npm start

 

ブラウザでの稼働確認

上記の図のように結果が表示されたら下記にアクセスしてください。

http://localhost:3000

下記のページが表示されれば中継サーバーの起動の成功です。

 

前の投稿/次の投稿/メニューページへ戻る