会話ができる「ぴよロボ」作りました! (Raspberry Pi + Pico + ChatGPT)

「ぴよ将棋」に登場する「ひよこ」のロボットを作成しました。
音声で会話ができます。

動いたり、会話している様子は以下の動画を見てください。

音声認識AI、文章生成AI、音声合成AI、物体検出AIを組み合わせています。

音声認識AI: OpenAI Whisper
文章生成AI: OpenAI ChatGPT API
音声合成AI: VOICEVOX:ずんだもん
物体検出AI: YOLOv8

上記はサーバで動作しています。(OpenAI ChatGPT APIはOpenAIのサーバを利用し、他は自前のサーバ上で動作)

ロボット側からサーバに送られてきたカメラ画像と音声から、返答の音声や人物を認識した座標をロボットに返します。

下図はサーバー側の画面です。物体検出AIのYOLOv8にて人物が認識されています。
認識した人物の座標を元に、目や顔が人物の方を向いたりします。また、呼んだら近寄って来たり、人の後をついて行ったりします。

ロボット側の使用パーツ

■CPU周り
CPU:Raspberry Pi 2
画面(顔):OSOYOO HDMI 3.5インチLCD (480×320)
カメラ・マイク:Logicool C270
Wifiドングル:IO-DATA WN-G300UA
スピーカー:KKHMF PAM8403
バッテリー:Anker PowerCore Slim 10000

■制御周り
マイコン:Raspberry Pi Pico
サーボ:GWS MINI x 4
モータードライバー:TB6612
モーター: DAISEN ギヤドモーター 60:1 x 2
バッテリー:単3 eneloop x 4 (4.8V)

ロボットの説明

構成図

ロボット側のCPUはRaspberry Pi 2を使用しました。
最新版のRaspberry Pi 4が入手困難なため、手元にあったPi 2を使用しましたが、ロボット側ではそれほど重い処理は行わないので、電力消費を考えると意外とマッチしていたかもしれません。

Raspberry Pi 2とRaspberry Pi Picoはシリアルで接続しています。

サーバ側のプログラムAとRaspberry Piで動作するプログラムBはソケット通信で接続し、通信します。プログラムはPythonで作成しました。
Raspberry Pi PicoのプログラムCはArduino開発環境で作成しました。

カメラにはLogicool C270を使用していますが、画角が狭かったので、広角レンズ(エレコム P-SL04BK)をグルーガンで張り付けました。画質が少し悪くなりましたがYOLOv8で問題なく認識でき、広角になっったことで人を発見しやすくなりました。

顔はHDMI接続の小型の液晶ディスプレーを使用しました。2017年に購入したものです(笑)
OSOYOO HDMI 3.5インチLCDディスプレイモニターを購入してみた
PythonでTkinterを使用して表情を描画しています。

台車には、昔BeagleBoardというRaspberry Piのようなシングルボードコンピュータで遊んでいた時に作ったものを流用しました。
自走BeagleBoard(その7:カメラにサーボをつけた)

ChatGPTの返答をすべて受け取ってから音声を合成すると、数十秒かかる場合があるため、ChatGPTの返答は順次受け取って、句読点(。、)や改行で区切った文ごとに音声合成・再生しています。
こうすると、返答のスタートが短くなり、待ち時間が短くなります。また、音声の再生中にも並行して音声合成ができるので、トータルの時間も短縮できます。ChatGPT APIで返答を逐次受け取る方法については以下の記事に書きました。
ChatGPT APIで返答を逐次受け取る方法

呼んだら後をついてきます。物体検出にはYOLOv8を使っています。

写真集w

服を脱いだところ(笑)

脱ぎ捨てられた服(笑)

Raspberri Pi Pico、モータードライバー

Raspberri Pi 2

赤外線距離センサー、、スピーカー

モバイルバッテリー、単三充電バッテリー(eneloop)

ロボットに使用したパーツなどのリンク

エレコム 自撮り セルカレンズ 0.4倍 広角レンズ スーパーワイド スマホ用 ブラック P-SL04BK

■Raspberry Pi Picoの関連記事
Raspberry Pi Pico+Arduinoでサーボをたくさん動かしたい
会話ができる「ぴよロボ」作りました! (Raspberry Pi + Pico + ChatGPT)
Raspberry Pi Pico W でPCとBluetooth(シリアル)接続する
Raspberry Pi Pico/Pico WをArduino開発環境で使うためのメモ
超音波距離センサー + Raspberry Pi Picoで潜水艦ソナー風
コップの水がこぼれない台 MPU6050 + Raspberry Pi Pico(Arduino)
MPU6050 + Raspberry Pi Pico(Arduino) -> PCで3Dのキューブを回転表示

本格派対局将棋 ぴよ将棋
本格派対局将棋アプリ ぴよ将棋
[Android] [iOS]

かわいい「ひよこ」と対局する将棋アプリ。かわいいけどAIは本格派!
対局後の検討機能や棋譜管理機能も充実!棋譜解析機能も搭載!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です