卓上ロボット制作記録
最近、LLMと連動した卓上ロボットの制作を再開しました。
とりあえず、一通りの機能テストが終わりました。
完成した機能一覧
機能:👂 耳(音声入力)
・ハードウェア: ReSpeaker USB Mic Array v2.1
・ソフトウェア: Whisper ASR + VAD
機能:🗣️ 声(音声出力)
・ハードウェア: 3Wスピーカー(ReSpeaker USB Mic Array v2.1へ接続)
・ソフトウェア: Style-Bert-VITS2(API接続)
機能:👁️ 目(視覚認識)
・ハードウェア: Camera Module V3 + AI HAT+
・ソフトウェア: YOLOv8-Pose + ジェスチャー認識
機能:😊 顔・表情(表現)
・ハードウェア: WAVESHARE 1.9inch LCD (ST7789V2)
・ソフトウェア: PIL
今回はアクチュエータ系(サーボ制御)は見送りました。
外装の加工に時間がかかりそうだったので…
機能テスト内容
音声対話システム
✅ リアルタイム音声認識(Whisper base)
✅ GPU最適化(0.4秒応答)
✅ VAD自動検出(webrtcvad)
✅ 高品質音声合成(0.25秒生成)
視覚認識システム
✅ リアルタイム姿勢推定(16fps)
✅ ジェスチャー認識(手振り、バンザイ、頭傾け、腕組み)
✅ Hailo-8L NPU活用
表情表示システム
✅ ST7789V2制御
✅ 瞳移動アニメーション
✅ 瞬きアニメーション
表情の表現について
唯一GPIOを使ったのが、表情用の SPI接続のLCDです。
配線自体は Raspberry Pi の GPIO 端子に接続するだけですが、
簡単には表示してくれませんでした…
LCD表示までの道のり
① Raspberry Pi 5のGPIOライブラリの互換性問題
・表情アニメーション表示に使った luma.coreが使用している
GPIOライブラリが Raspberry Pi 5 に未対応
・以下の互換ライブラリを個別導入で対応
- rpi-lgpio - RPi.GPIOの互換レイヤー(lgpioベース)
- python3-lgpio - 低レベルGPIOライブラリ
② 無表示問題(バックライトは点灯)
・luma.lcdを使わず、直接SPIdevでコマンド送信
・「ノイズ」が表示され、ハード的には正常と確認
※この時点でluma.lcdを使わなくなったので①の作業は無意味に…

③ ノイズ以外表示されない問題
・コマンド送信のタイミング修正(SPI速度を16MHzに設定)で、
カラーパターンが正しく表示されるように
④ 画像が正しく表示されない問題
・画像の向きが違う(90度回転)、解像度の不一致
・アドレスパターンを複数試して、正しい値で表示成功
そして、やっと瞬きのアニメーションが表示されました!

写真上は粗い表示ですが、実際には以下のような画像が表示され、瞬きのアニメーションをしています。

今回のテストコードを元にモジュール化して、統合しようと思います。
技術的にはLLM との接続をのぞけば枯れた技術ばかりなので、そこまで難しい作業ではありません。
ただ、OS カーネルやドライバの互換性が合わず、思った通りに動かない壁に悩まされます。(カーネルが新しすぎてドライバが未対応とか…)
今回も、ドライバに適合するカーネルバージョンを探すのに時間を要しました…
余談…
制作中に気づいたのですが、思ったより老眼が進んでいたようで…💦
GPIO のピンが見えず、ハズキルーペを二重に重ねて作業していました(笑)
普段は裸眼なので、手元から視線を移す時にハズキルーペを外さないといけないのが地味に煩わしい。
こんな調子だと、IC チップとかのはんだ付け、大丈夫かな…?💦
