見出し画像

卓上ロボット制作記録

最近、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 チップとかのはんだ付け、大丈夫かな…?💦

いいなと思ったら応援しよう!