ナビをラズパイZeroWで作る【#1:GoogleAIYをスタンドアローン化④】ドラエもんを人工知能で作る

500円のPiZeroと800円のGPSでナビを作ろうという企画が、Googleアシスタントやドラレコとしても機能する日が来ました。

ZeroWと『ReSpeaker 2-Mics Pi HAT』(千円)

が家にあって放置されていたので、これでやってみよう。
とりあえず目標はナビ(Navit)が動けばOKとします。

車載ナビっぽい構成:モニタ、ラズパイ、GPS、人工知能用マイク、ドラレコ用カメラ、バックカメラ、

<手順>
①SDカードにAI入りOSを書き、基本インストール
②Navitのインストール準備
③USB₋GPSの確認
④Navit本体のインストール
⑤Navitを起動

Navitを入れるまでがメイン。AIYは2018-08-03イメージが◎?

⑥ReSpreakerの設定
⑦Googleアシスタントを入れる
⑧Cloudspeechも入れる
⑨Hotword
⑩自動起動とドラレコ
<番外>声が出ない時の対処法
<参考>

参考にしたURLは一番下にリンク貼っときます。感謝♪

ちなみに使用した激安小型USB₋GPSの精度は 5-10mらしい。U-bloxのVK-172という機種だが、Aliexpressで800円位だったけど十分♪

① OSをラズパイにインストール

aiyprojects-2018-11-16.img.xz をコチラからPCにダウンロード。前回の記憶がないのでxzを解凍するのは7zipを使いました;

(音などが出なかったので、2018-08-03イメージを再インストールしました。2018-11-16では最後までインストしてないです)

次にPC上でEtcherというソフトでSDカードを焼き、終わったらそのSDカードからラズパイZeroWを起動します。少し新しくなっていて、起動したら設定やアップデートまでやっちゃいます♪


<所要時間:1.2GBをダウンロード(10~150分)、Etcherで書き出し(10分)、OSのインストール&アップデートダウンロード10~90分、アップデートインストール60分>

RealVNCのビューアーをPCにインストールしておきます。
ラズパイ側で設定にてVNCをONにしておきます。というのもコマンドを手打ちしていたら日が暮れてしまいます。

②Navitを本家に従ってインストール準備

以下をコピペして実行していきます:(本家を参照してね)

という感じです。<所要時間:(計30分)>:

ここでGUI好きな私は、LeafPadEXというツールを作りました。

右クリックメニューに LeafpadEx なる権付 LeafPadが出来ます。これはLinux初心者には非常に便利です。<所要時間目安:3分>

デスクトップの左上のフォルダマークをクリックし、/boot/config.txt を開いて、「#arm_freq=800」→「arm_freq=1000」

③USB₋GPS機器の確認

これでgpsdがGPSデーモンがインストールされました。

Busのデバイスに登録されているので、フォルダで確認

をを!5分後に、生まれて初めてGPSを手動受信したぞ・・・!

すぐ受信したのが、運が良かった。また受信しなくなった;
GPSDの設定ファイル(/etc/default/gpsd)の項目はたった4つ。

START_DAEMON=”true“ ← ラズパイスタート時に起動
USBAUTO=”true“ ← USBを差し込むだけで認識
DEVICES=”/dev/bus/usb/001/002“ ← デバイス位置を登録
GPSD_OPTIONS=””
勝手に自動起動されていた。デヴァイスを登録して保存した。

おお、出た。

何も難しくない。

何なんだ?他のブログは。。

もっと簡単に書けよな。。

④Navit本体をインストール

2/3行目はnavit.xmlという設定ファイルをコピーしている。
要するにxmlを起動時に読んでからスタートさせるようだ。

地図はコチラからダウンロード。ファイル名300km.binとする。
navit.xmlを開き、<!– Mapset template for garmin maps –>の前に

を追加。他の”yes”の箇所はnoにしておいた。それにしてもラズパイはファイル移動にD&Dできるようになって便利たね。

⑤Navitを起動。あまりにもすんなり

で、できた。怖いくらいスムーズ。何だったんだ、これまで。。

以下はGoogleアシスタントのインストールです。

ReSpeakerの設定

ReSpeakerは面倒くさそう、と思ったが、やれば簡単だった。
(番外に書きましたが、デフォルトで音声が出ない場合アリ)

「aplay l」とコマンド。自分のスピーカーのリストを表示。

arecord l」とコマンド。マイク(CAPTURE)のリスト。

「$ alsamixer」と入力。キーボード必須。 F6を押して、seeed2micを選び、一番左のHeadphonを0→70や80にした。

「arecord -f cd -Dhw:1 | aplay -Dhw:1」で確かめられた。イヤフォンをseeed2micに挿して確認できた。動いている。

<この後、アシスタントの音声が出ない場合は番外を参照>

⑦アシスタントを入れます

ラズパイ3でVoiceKITを一度やったのですが、またやります;

#dtparam=audio=on の#を外し、以下のようにboot/configを設定

https://console.cloud.google.com/ で新しいプロジェクトを作る。

そのプロジェクトでメニューからAPIを選び、GoogleAssistant APIを有効にします。

APIメニューの「認証情報」を選び、名前を付ける。

「クライアントID」「クライアント シークレット」とかあるけど無視して、「認証情報」画面の右側にあるダウンロードっぽいボタンを押す。JSONを(PCに)ダウンロードします。それをラズパイの/home/pi/下に置いて、assistant.json とリネームします。

ラズパイデスクトップの Start dev terminal アイコンを押し入力。

とすると、googleアカウントになるのでパスワードを入力。

これでOKなのだが、VoiceKITボタンをReSpeakerに変えとくのを忘れたので、~/AIY-projects-python/src/aiy/voicehat.pyを探したのだがない。代わりにpins.pyを変更、「#BUTTON_GPIO_PIN = 23」を17とするが動かない。

結果AIYイメージが2018-08-03を再インストールしたので、それはvoicehat.pyがありましたから、設定できました。

ちょいムカついたので、CloudspeechAPIも使うことにした。
サービスアカウントキーを作って、もう一回JSONを落とす。
/home/pi/下に置いて、cloud_speech.json とリネームします。
(RoleはViewerと設定。)

⑧Cloudspeechとか

自分の過去のブログを見ても、わかりにくい。。。アホだ。。

つまりhotwordという「OK、Google」に該当する機能でGoogleアシスタントを起動させ、並行してローカル機能をcloudspeech _demo.pyに書き込んでいたようだ。書き換えた内容はコチラ:

⑨HotwordはZeroでは非対応だった

結果的にできなかったが、Hotwordは普通以下の手順で入れる:

ターミナルが(env)付きになります。

my-dev-projectは、Google Cloud Consoleで自由に決めたプロジェクト名です。確認方法は以下を叩けばわかる:

googlesamples-assistant-devicetool などの命令が通らないので、img内にない、もしくはZeroの場合は通常は無理なのだろう。

さくっと諦めることにする。とりあえず現状はCloudspeechの機能を使うしかないし、それで良いかも。

“Unfortunately, Pi Zero is not powerful enough for real time hotword detection. We rely on assistant library which is optimized only for armv7l, i.e. for Pi 3” ←中の人

そもそもZeroはGoogleSDKとして、非力ゆえにサポートされていないということだ^^; これは意味がないw OK

⑩自動起動とドラレコ

cd /lib/systemd/system/ に以下のvoicerecognizer.serviceを作る:

これをコピペし、Ctrl+X で保存→Y→Enterでファイル作成終了。
あとはこれを自動起動するように登録します:

なおmain.pyの中身は気に入ったpyをモディファイすればOK

ドラレコはこの記事を参考にしてください:

500円のラズパイZeroをドラレコにしてみる【FAT32パーティション拡大】タイムスタンプ録画

要するにカメラさえあれば、Sdカードに録画できるよって話。

ちなみにナビはこんな感じ:


コントラストや明るさを設定してあげれば実用になりそうだ。

あとはNAVITのナビ機能は気休めなのだけど、設定してやれば、補助の意味にはなりそう。次回は細かい設定や追加を行いたい。

持ち出して分かったのは、スマホのWifiホットスポットをONにしておいて、ラズパイ起動。VNCを使って操作するのが良いかな。

<番外>音が出ない時の対処法

実は私の場合⑥に追加して行った音声(ALSA)の設定がある。

を打ち込んでも、ヘッドフォンに聞こえないのだ。

/home/pi/nano .asoundrcを新規作成。

つまりデフォルトでReSpreakerを指定するということだね。

<参考>

GPSを取り付けたRaspberry Piの現在位置をオフラインで地図に表示するには Navit版

インストール関連は過去記事でやっています:

【GUIで超簡単】ラズパイ インストール まとめ 【最新2018】RaspberryPi(ZeroW)

QR Code