KHR-3HV 知能化
製品を基に作成・改造したモノについての解説は、載せてよいとの事でした。
花の育て方や料理を本や授業で見聞きして、作ったモノについて、自分独自なモノについては、載せてよいというのと、似ているとの事です。
また、これは放送大院の武内の研究テーマを基に作りましたが、著作権は武内にある上に積極的にホームページに載せたり、発表して欲しいとの事でした。
(近藤科学さん から許可をいただきました)
ロボットとRaspberry Pi 4(以下RPi)を接続し、RPiを使って、単純な動きを複数、呼び出したりして、再生する事による、複雑な動きを実現する。
また、RPiを基点に音声合成をしたり音声認識をしたりする。
それによって人間から発せられた言葉に対して反応したり、人間にとって意味のある音声で話をしたりする事が可能になる。
まずRPiの記録媒体にOSをインストールする必要がある。SSH (Secure SHell)で、コマンドを実行できるように設定を変更した。
VNC (Virtual Network Computing)で外部のPCからRPiにリモート接続するソフトを使えるように設定した。リモート接続するのには、いくつか方法があるが、Windowsに備わっているリモートデスクトップを使った。
PCとRPiとの間で、ファイルを転送するのに、便利であるため、PCにファイルをやり取りするためのFTP (File Transfer Protocol)設定を入れた。Filezilla(FTP用ソフト)を入れて、ファイル操作をした。
Python 3もインストールした。RPiにはPythonが元々入っているが、それより新しいバージョンである。PIP/PIP3、yumもインストールした。これは、外部のサーバーからファイルをダウンロードするのに便利な道具である。enumやpyserialという、Python用のライブラリーも、インストールした。
ソフトやツール、ライブラリーを、次の表にまとめた。
まず、RPiとロボットのマイコンボードを接続する。
毎回起動しなくても済むように、crontabでshellファイル(ko_usb.sh)が、自動実行されるようにした。
@reboot sudo bash /home/pi/Desktop/ko_usb.sh
音声合成
次の資材を使って、実現した。- RCB-4基盤、DUAL USB ADAPTER HS (近藤科学)
- RCB-4用Pythonライブラリー (近藤科学サイトに無料公開)
- Open JTalk (音声合成の無料Pythonライブラリー)
音声合成の模式図は、次の通りである。
speech.py(Pythonファイル)を基に音声ファイルを作成して音声ファイルを基に音を再生する。
また音声テキストファイルを作成して、音声テキストファイルを読み取る。
音声認識
音声認識プログラムを動かすためにJulius(音声認識API)を、ネット上からダウンロードした。日本語の音声認識をするのにはdictation-kitが必要だがRPi上ではなくWindowsで、一度ダウンロードする必要があった。ホームページにある通りに構築していった。学習リモコン接続
RPiに、「ADRSIR ラズベリー・パイ専用 学習リモコン基板」を取り付けた。公式ホームページから必要なソフトをDLすると、ファイルが入った、フォルダーが格納されている。
(エアコンのオンオフのファイルは後から作った)
コマンドで、エアコンをつけたり切ったりする信号を保存する。
統合動作
基本動作 (音声認識によるエアコン入切制御)
先述の音声認識により、エアコンのオンオフをできるようにした。juliusを使って、音素ファイルと自作辞書で音声認識させた。 これでソケット通信をしてエアコンのオンオフをする。 ソケット通信の概要は、次の通りである。- juliusで音声認識した結果を、ソケット通信で受け取る
- 受け取ったものから必要な文字を抽出
- その文字を基にエアコンのオンオフをする
次のように、右手が上がる。
動作結果は次の通りである。
メモ(shell上で別Windowを起動してコマンド実行):
次のコマンドでRPi上のターミナルで新しいターミナルを呼び出して、かつ、そこでコマンドを動かす事が出来るという事を、今更、知りました。基本的過ぎるからか、現時点でネットにも載っておらず、自分で見つけました。
“lxterminal -e ./何とか.sh”
ちなみに「”-e”をつけないと、出来ない」のと、”./何とか.sh”はPG呼び出しとかでもよいと思います。 (例: python3 何とか.py”)
親の.sh内で、次を呼び出したら、マルチタスク擬きが出来ました。
“lxterminal -e ./何とか1.sh”
“lxterminal -e ./何とか2.sh” ← 敢えて「何とか.sh」内のタイマーで遅れて起動するようにしてある
※ 「何とか1.sh」を起動して一定程度処理していてしばらくした時に、「何とか2.sh」を起動して、かつ、その後、協調動作させたいためです。
※※ lxterminalコマンドも、そうですが、”-e”を見つけるのに時間がかかりました
次のように、右手が上がる。
動作結果は次の通りである。
メモ(shell上で別Windowを起動してコマンド実行):
親の.sh内で、次を呼び出したら、マルチタスク擬きが出来ました。
“lxterminal -e ./何とか2.sh” ← 敢えて「何とか.sh」内のタイマーで遅れて起動するようにしてある