介護ロボットを創る(通信機能編)
娘:ねえ、ネエ お母さん! お父さんAIスピーカー作ってんだって!
娘:『フリスク! テレビつけて!』って言えば良いのね
・・・・・などと無謀な会話から始まった介護ロボットの作成
ここで一挙に実用的なロボットを試作する
前回の「音声認識編」では、大笑いのフリスクだった
原因はフリスク(RaspberryPiZeroW)の処理能力(遅い!)
ので、介護ロボットをRaspberryPi3に変えて次の機能を組み込む
(1)お喋りさせる(音声合成)機能の作成
(2)介護ロボットとセンサーロボ(子機)間の通信機能を作成
(3)センサーロボにタッチセンサーを取り付け
1.お喋りさせる
まずは、可愛らしくお喋りが出来るよう音声合成パッケージ”Open JTalk”をinstallする
1 2 |
$ sudo apt-get update $ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001 |
デフォルトでは男性の声なので、若い女性の声を持ってきて設定値などを変更する
女性の声の音声パッケージは、ここMMDAgentサイトにあるExample-1.7.zip
(現時点で最新パッケージ)をダウンロードし、/home/pi 傘下に置いて、以下の作業を実施
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ unzip MMDAgent_Example-1.7.zip $ sudo cp -r MMDAgent_Example-1.7/Voice/mei /usr/share/hts-voice/ $ wget https://raw.githubusercontent.com/neuralassembly/raspi/master/speech.sh $ chmod a+x speech.sh $ sudo mv speech.sh /usr/local/bin $ sudo vi /usr/local/bin/speech.sh HTSVOICE=/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice #HTSVOICE=/usr/share/hts-voice/mei/mei_happy.htsvoice <=1行目をコメントアウトしここを生かす #HTSVOICE=/usr/share/hts-voice/mei/mei_angry.htsvoice #HTSVOICE=/usr/share/hts-voice/mei/mei_bashful.htsvoice #HTSVOICE=/usr/share/hts-voice/mei/mei_normal.htsvoice #HTSVOICE=/usr/share/hts-voice/mei/mei_sad.htsvoice |
更に、今回スピーカーはUSB接続のものを使うので、デフォルトでHDMI出力になっている音の出力先を
USBに変更する
1 2 3 4 5 6 |
$ sudo vi /usr/local/bin/speech.sh # for the device on Raspberry Pi aplay -q $TMPVOICE <=ここをコメントアウト # for USB sound card #aplay -D plughw:1,0 -q $TMPVOICE <=ここを生かす |
さてさて、早速、喋ってもらいましょう
1 |
$ speech.sh 今日は良い天気ですね! 何かご用ですか? |
あっはー 今日は雨が降ってました _(_^_)_ まだまだAIではありません!
2.介護ロボットとセンサーロボ(子機)間の通信
ここが、私としては一番の肝でしたが・・・・・
手足・目鼻となるセンサーロボ(ここにRaspberryPiZeroWを使っちゃいます)と通信できるように
親機・介護ロボット(RaspberryPi3)と子機・センサーロボ(RaspberryPiZeroW)間でネットワークを
作ります
(1)介護ロボットをwifiスポット(DNS、DHCP機能具備)に仕立てます
この介護ロボット、インターネット設備などがない老人ホーム等の施設で使うことを想定して
ローカルなwifiネットワークを構築します
使うパッケージはhostapdとdnsmasq(世の中便利になりましたです)
で、それぞれの環境設定を済ませて、注意点は次の事項
①dnsmasqを使う場合、センサーロボ側からネットワークに接続するときには、
介護ロボット側のDHCP機能を使わないと、その後の通信が上手くできない
IPアドレスの払い出しでもいいのだが、
ここはDHCP機能を使った固定IPアドレス付与方式を採用
設定も簡単 介護ロボ側でdnsmasq.confを作成・編集
1 2 3 4 5 6 7 8 |
$ sudo vi /etc/dnsmasq.conf で編集 interface=wlan0 listen-address=192.168.2.1 <= 自分のIPアドレス bind-interfaces server=8.8.8.8 domain-needed dhcp-range=192.168.2.2,192.168.2.17,12h <=使わないが、DHCPでの払い出しIPアドレス範囲 dhcp-host = b8:**:eb:**:a1:**,cl2001,192.168.2.18,infinite <=子機のMACアドレス、子機名前(適当)、固定で割振るIPアドレス |
(2)センサーロボ側の設定
こちらは、普通にwifiネットワーク(SSID)にIPアドレス払い出しのまま接続させれば、
固定IPアドレスが割り振られて立ち上がる
(3)センサーロボにセンサーを取り付ける
世の中には、介護ロボットと称して「見守り支援」というサービスがある
まずは、圧力センサーを使って「お年寄りがベットから降りた」ことを通知するサービスを
想定して次のサービスを構築する
が、まずはデモ映像をご覧下さい(笑っちゃいけないよ!!)
少し解説
構成は次の絵のようになってます
今回のテーマは「通信機能」なので、蛇足ですが家の近所で通信距離を試したところ
なんと、なんと、家の中に置いた介護ロボットと、外に持ち出したセンサーロボ間が50mで
余裕で通信できてました(外部アンテナなしなのに、恐るべしRaspberryのWiFi )