ラズベリーパイで会話したり写真取ったりするロボットを作りたい(準備) ==================================================================== はじめに -------- ラズベリーパイに話しかけたら色々してくれるようなものを作りたい。 その準備の覚書。 環境 ---- - Raspberry Pi 2 Model B - NOOBS-RASPBIAN 最初にいろいろ更新 ------------------ - ``sudo apt-get update`` - ``sudo apt-get upgrade`` - ``sudo rpi-update`` - ``sudo reboot`` 日本語フォントを入れる ---------------------- - ``sudo apt-get install fonts-takeo ibus-mozc`` - 再起動 日本語入力できるようにする -------------------------- - ``sudo apt-get install ibus-anthy`` - Menu > Preference > RaspberrypiConfig > Locale変更 でメニューを日本語化 - Menu > 設定 > IBus > 入力メソッド > 追加,日本語,Anthy,追加の順 - Menu > 設定 > IBus > 一般 > 入力メソッドをCtrl+Spaceに変更 - これでCtrl+Spaceでメソッド変更できるらしいけどできない - 全角/半角キー効くから別にいらない 日付を直す ---------- - sudo dpkg-reconfigure tzdata - Asia -> Tokyo を選択 起動後に自動でwifiに接続する ---------------------------- - そのうちSIMドングルに差し替えたい - 手順 - ネットワークの確認 - ``wpa_passphrase SSID PASSWORD`` :: network={ ssid="SSID" #psk="PASSWORD" psk="XXXXXXXX" } - サプリエント設定 - ``sudo vi /etc/wpa_supplicant/wpa_supplicant.conf`` :: network={ ssid="SSID" psk="XXXXXXXX" key_mgmt=WPA-PSK proto=WPA pairwise=CCMP group=CCMP priority=2 scan_ssid=1 } 正規カメラモジュールの接続 -------------------------- - 設定 - 接続→https://www.raspberrypi.org/help/camera-module-setup/ - コマンド ``raspi-config`` - 6.Enable camera選択->Enable - Finish選択で再起動 - 写真を撮ってどこかに送る - ``raspistill -w 320 -h 240 -o stream.jpg --nopreview`` - ``curl -F upload=@stream.jpg http://xxx.yyy.zzz/upload > /dev/null`` リモート接続の設定 ------------------ - Remote Desktop Protocol : xrdp - ``sudo apt-get install xrdp`` - DNS : avahi-daemon - ``sudo apt-get install avahi-daemon`` - /etc/hosts に書いてある127.0.1.1:raspberrypi の名前が使える - WindowsからはBonjourが必要なのでiTunesをインストール - raspberrypi.localの名前でリモート接続 - デフォルトだとID:pi,PASS:raspberry - キーボードを日本語キーボードにする :: cd /etc/xrdp/ sudo wget http://w.vmeta.jp/temp/km-0411.ini sudo ln -s km-0411.ini km-e0010411.ini sudo ln -s km-0411.ini km-e0200411.ini sudo ln -s km-0411.ini km-e0210411.ini ssh,scpの準備 ------------- - raspberry側 - ``sudo vi /etc/avahi/services/ssh.service`` :: %h _ssh._tcp 22 - ``sudo /etc/init.d/avahi-daemon restart`` - ホスト側 - ``ssh pi@raspberry.local`` - ``scp XXXX pi@raspberry.local:/home/pi/XXXX`` node.jsの準備 ------------- コマンド ~~~~~~~~ - nodebrew経由で入れる :: $ wget git.io/nodebrew $ perl nodebrew setup $ vi ~/.bashrc 追記:export PATH=$HOME/.nodebrew/current/bin:$PATH $ source ~/.bashrc $ nodebrew install-binary latest - 使う :: mkdir test & cd $_ npm init npm install express socket.io dateformat jquery request ... git install ----------- ``sudo apt-get install git`` マイクを使う ------------ - デバイスの優先度を上げる(すでにあるなら編集する) - モジュール確認 - ``sudo cat /proc/asound/modules`` - /etc/modprobe.d/alsa-base.conf でモジュール読み込み順設定 :: options snd slots=snd_xxx,snd_usb_audio options snd_usb_audio index=0 options snd_xxxxxxxxx index=1 - カード番号を見て環境設定する - ``arecord -l`` - ``export ALSADEV=hw:カード番号`` - マイク音量を設定する - ``amixer sset Mic 50 -c 0`` - ``(amixer sset Mic 0-62 -c カード番号)`` 音声認識-Juliusを使う --------------------- - Julius本体を解凍してインストール - ``./configure`` - ``make`` - ``sudo make install`` - module組み込み - ``sudo sh -c "echo snd-pcm-oss >> /etc/modules"`` - ほかのモジュールも解凍して使ってみる - ``julius -C pathToGrammar/testmic.jconf -charconv EUC-JP UTF-8`` - ``julius -C pathToDictation/main.jconf -C pathToDictation/am-gmm.jconf -nostrip`` 音声認識-Juliusを使う2 ---------------------- - 特定のワードのうちどれが使われたか判断する - text.yomi(定義よみを列挙) - ファイルがUTF8,yomi2voca.plがEUCJPなのでコンバートとしてコンバート - ``iconv -f utf8 -t EUCJP text.yomi | yomi2voca.pl > text.dic`` - text.jconfを作ってtext.dicを指定する :: -w text.dic -v dictation-kit-master/model/lang_m/bccwj.60k.bingram -h dictation-kit-master/model/phone_m/jnas-tri-3k16-gid.binhmm -hlist dictation-kit-master/model/phone_m/logicalTri -n 5 -output 1 -input mic -input oss -rejectshort 500 -charconv euc-jp utf8 -lv 1000 - ``julius -C text.jconf`` 音声を出させる-AquesTalk ------------------------ - http://www.a-quest.com/products/aquestalkpi.html - 解凍して置くだけ - ``alsamixer`` 音量調節やF6でデバイス変更したり - ``amixer cset numid=3 NUM`` NUM=(1:アナログ優先,2:HDMI優先,3:自動) - ``chmod 755 AquesTalkPi`` 実行できるようにする - ``./AquesTalkPi "漢字も読めます。" | aplay`` - USBマイクとUSBスピーカを使う場合 - /etc/modprobe.d/alsa-base.conf でモジュール読み込み順設定 ``options snd slots=snd_xxx,snd_usb_audio,snd_usb_audio options snd_usb_audio index=0 options snd_usb_audio index=1 options snd_xxxxxxxxx index=2`` - ``./AquesTalkPi "漢字も読めます。" | aplay -D plughw:1`` 写真を撮る ---------- - raspistill -t 1 -w 320 -h 240 -o stream.jpg --nopreview - 1m秒後に320x240サイズの写真をstream.jpgにプレビューなしで保存 写真を送る ---------- - AWSにでもnode.jsで待機させとけばいいんじゃないかな - ``curl -F f=@stream.jpg http://xx.xx.xx.xx:port/upload > /dev/null``