現在、ArduinoUNOで駆動系を日々制作していますが、元々はAIを学ぶという目的があります。そのため制御と並行に自律という課題に対しても準備する必要があります。ロボット制御の上位の指示・命令機構としては、やはりPC並みのスペックが必要なのではないかと思います。そうなると小型・軽量かつある程度、高性能なPCを手に入れる必要があるのではないかと考えました。そこで行き着いたのが「Raspberry PI 4 ModelB」です。
Raspberry PI 4 Model B
驚くほど小さく、そして値段も手頃なPC、Raspberry PI の最新モデル 4B をAmazonでぽちっと購入してしまいました。選択したのは、Marstudyのスターターキットです。スターターキットには、起動するために必要なケーブルやスイッチ付き電源、プリインストールされたマイクロSDカード、ケースなどの一式が付属しているため初心者に優しいセット内容になっています。


Raspberry Pi 4B の組み立て
それでは、開封して組み立てたいと思います。
Raspberry OS の準備
このMarstudyのキットの場合は、MicroSDカードにすでにOSがプリインストール済みで実は初回起動したときにからRaspberry Pi OS (Raspbian)が立ち上がりました。そのまま使っても良いかとも思いましたが、初めてなのでOSの初期設定からやってみることにしました。
OSイメージから作るには、一度、MicroSDカードを初期化してPCなどからOSイメージを書き込む必要があります。そのためのツール「Raspberry Pi Imager」をダウンロードして使います。
まずは、付属のMicroSDカードホルダーにキットに付いていたMicroSDカードをセットします。

PCへの接続はTYPE-Cのようです。WindowsPCでTYPE-Cを持っているのは少ない気がしますが、たまたま持っていたので、そのPCで初期化とOSイメージをセットアップしたいと思います。

外すとこのようにTYPE-Cのコネクタが出てきます。
続いてソフトウェアの準備をします。ラズベリーパイOSにサイトへアクセスします。

私は、WindowsPCを使ってイメージを作成しましたので、Windows用をダウンロードします。



ここで先ほどRaspberry Pi 4Bから抜いたMicroSDカードをPCのTYPE-Cコネクタに接続します。Imagerソフトを使って、既に入っているデータをクリアするためにフォーマットを行います。
ちなみにWindowsPCがUSBトライブからデータが読み取れないとしきりにメッセージを出してきて結構うっとおしかったです。


OSは、「削除(カードをFAT32でフォーマットする)を選択」ストレージでは、「表示されたUSBデバイス」選択します。

書き込みをすると上の図のような警告メッセージが表示されますが、気にせず「はい」を選択しました。

続いて、OSのインストールイメージを作成します。


OSは、「Raspberry Pi OS (Other)」から「Raspberry Pi OS (64-bit)」を選択しました。
ストレージを選びます。私は、ここで設定(歯車ボタン)を選択し、必要な設定をすべてしておきました。これにより起動時の作業が軽減されるのではないかと思います。

書き込むを実行すると、書き込みとチェックが行われて完了です。おおよそ書き込みとチェックが10分くらい要しました。どうもチェックは飛ばすことができるようです。

これで「Raspberry Pi OS」の準備が完了しました。
Raspberry Pi の起動
準備も整ったので他の機器も併せてセットアップし、Raspberry Piを起動したいと思います。

今回、用意したのは比較的小さめのLogicoolのワイヤレス、キーボードマウスセット とElecrowの5インチのモバイルモニタ(タッチパネル)をRaspberry Pi 4B 専用に用意したので合わせてセットアップしたいと思います。




必要なケーブルを繋ぐとこんな感じです。本当にRaspberry本体とモニタは小さくてロボットに搭載できそうな予感がします。
ちなみにケーブル接続は、以下のように行いました。


ちなみにモニタには、電源ケーブルが別にはなく、このUSBで電源供給するようです。
接続が完了したので、いざ起動してみます。

モニタは小さいですが結構きれいに表示される印象です。

日本語化する
最初、起動したときには英語なので日本語化の方法を載せておきます。まず、メニューなどの日本語化は、設定で行うことができます。

メニューからConfigrationを選択し、Raspberry Pi Configrationを選択します。表示されるウィンドウのLocalisationを設定します。




上記をすべて日本に設定して、再起動します。

これでメニューなどが日本語化されます。
続いて日本語入力のために、iBus と Mozc をインストールします。iBusは様々な言語の入力メソッドを提供し、Mozcは日本語変換エンジンです。この2つのソフトを組み合わせて日本語入力を実現します。

まずは、最新パッケージリストを入手します。ターミナルで「sudo apt update」と入力してEnterを押します。続けて、ibos-mozcをインストールします。「sudo apt install ibus-mozc」と入力してEnterを押します。


途中で続行しますか?と聞かれますのでデフォルトの「Y」のままEnterを押します。

上記のようにエラーなく完了すればインストールは完了です。インストールが完了したら再起動します。

Chromeで日本語を入力して検索してみました。
私は、上記の画面をWindowsPCに送るために、zip/unzipをインストールしました。

色々、セットアップしていて思ったのは、GUIでシステムが出来上がった後であれば5インチモニタでも使いやすいのですが、ターミナルやプログラミングは、少し不便でした。普通の時は、大きめのディスプレイを使って開発をしていこうと思いました。
その後、VOICEVOXで声を手に入れようとしたものの…
まずは、声を手に入れようとVOICEVOXをインストールしようとしましたが、ダウンロードはできるもののサンプルを実行しようとしてもエラーがでて進めることが出来ませんでした。基本的にインストーラーなどが見つからず、自分でコピー(使うところにシンポリックリンクを作る)する形なのですかね。新しい記事にしようかと思いましたが、実行できなかったので途中までの忘備録を残します。
必要パッケージのインストール
sudo apt update
sudo apt install -y git
sudo apt install -y cmake
sudo apt install -y libgomp1
sudo apt install -y libsndfile1
sudo apt install -y libatlas-base-dev
VOICEVOX CORE の最新版をダウンロード
cd ~/
wget https://github.com/VOICEVOX/voicevox_core/archive/refs/tags/0.14.3.zip
unzip 0.11.4.zip
cd voicevox_core-0.14.3/
mkdir release
cd release
wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.3/voicevox_core-linux-arm64-cpu-0.14.3.zip
unzip voicevox_core-linux-arm64-cpu-0.14.3.zip
一応、onnxruntimeも環境にあったものをダウンロードしておきました。ただ、voicevox_coreに付いてきていたので、今のところ使ってはいません。
wget https://github.com/VOICEVOX/onnxruntime-builder/releases/download/1.14.1/onnxruntime-linux-arm64-cpu-v1.14.1.tgz
tar zxvf onnxruntime-linux-arm64-cpu-v1.14.1.tgz
あと、open_jtalk の辞書が必要なようなので「open_jtalk_duc_utf_8」でウェブを検索して、sourceforgeで見つかったのでダウンロードしました。
一応、ソフトは揃ったのでPythonでサンプルプログラムを動かそうとしましたが、エラーが出てここまででした。一応、実行前にライブラリなどのシンボリックリンクをサンプル実行しようとしているフォルダ配下に作成しておきました。(これをしないとエラーになります)
cd ~/voicevox_core-0.14.3/example/python/
mkdir voicevox_core
ln -s ../../release/voicevox_core-linux-arm64-cpu-0.14.3/libvoicevox_core.so ./voicevox_core/libcore.so
ln -s ../../release/voicevox_core-linux-arm64-cpu-0.14.3/libonnxruntime.so.1.13.1 ./voicevox_core/libonnxruntime.so.1.13.1
ln -s ../../release/open_jtalk_dic_utf_8-1.11 ./open_jtalk_dic_utf_8-1.11
いざ、サンプルコードを実行してみます。
cd ~/voicevox_core_0.14.3/example/python/
python run.py --speaker_id 2 --openjtalk_dict "./open_jtalk_dic_utf_8-1.11" --text "おはようございます" --output goodmorning.wav
…
以下のようにメッセージが出て実行できませんでした。
Traceback (most recent call last):
File "/home/hoge/voicevox_core-0.14.3/example/python/run.py", line 3, in <module>
import core
File "/home/hoge/voicevox_core-0.14.3/example/python/core.py", line 61, in <module>
lib.voicevox_load_openjtalk_dict.argtypes = (c_char_p,)
File "/usr/lib/python3.9/ctypes/__init__.py", line 387, in __getattr__
func = self.__getitem__(name)
File "/usr/lib/python3.9/ctypes/__init__.py", line 392, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /home/hoge/voicevox_core-0.14.3/example/python/voicevox_core/libcore.so: undefined symbol: voicevox_load_openjtalk_dict
どうもPythonのサンプルコードは、メンテが出来ておらず変更が必要なのかもしれません。ライブラリとサンプルコードの呼び出し方に違いがあるのかもしれませんね。
その後、本格的に調べながらインストールしました。
以上
コメント