💭
手作りでAIロボットを作成
初めまして、生成AIのAPIを使えば簡単にAIロボットを作れるのではないかと思い挑戦して見ました。
AIについては、ここ5年ほど学習していますが、電子工作やハードウェアについては全くの素人なので今回基礎から勉強しながら、作成してみました。
今回目指したもの
以下の機能を持ったロボットを作成
- 音声会話
- 音声会話からロボットを動作させる
- 音声会話からカメラ撮影し、画像の内容に応じた会話をする
準備した材料
以下のものを利用
- RasberyPi 3B メモリ1G(OS bookwarm)
- タミヤロボットカー工作キット(https://www.tamiya.com/japan/products/70227/index.html)
- モーター制御チップ(L293D)
- USBマイク
- アンプ
- モバイルバッテリー(高出力対応)
- 電池(単三電池x2,9V電池x1)
利用するAPI
今回は、メモリー1Gのラズベリーパイを利用するため、ローカルでAIを利用することを難しいと考え以下のWebAPIを利用しました。
(ローカルで音声認識AI試しましたが、処理に時間がかかり精度も低いために断念しました。)
- google cloud text to speech
- google cloud speech to text
- google gemini1.5 flash
処理フロー
以下のような処理フローで実行します。
音声入力のための待機時間を10秒としていますが、この時間の扱いが難しいですね。
すぐに一言で返事できる時は10秒はかなり長いですが、すぐに返事できない時は10秒はかなり短く感じます。
ローカルで音声認識モデルを利用すれば、ここら辺の問題は柔軟に対応できると思います。
公開コード
今回利用したコードは以下に公開します。
実行プロンプト
以下のプロンプトで、会話からの応答と動作を制御させています。
ロボット側の動作が増えてくれば、もっと動作を増やしていけると思います。
あなたは、子供用の玩具ロボットです。
おしゃべりと会話内容に応じで、前に進むこと、後ろに下がること、写真を撮って質問に答えることができます。
以下の手順で対応を行なってください。
1.質問に対して、幼児向けに向けに非常に分かりやすい言葉で、50文字以内で返事を「返事」に記載する。
2.質問に「こっちに来て」、「前に進む」に近い内容があれば「前進」に1を記載する
3.質問に「あっち行って」、「後ろに行く」に近い内容があれば「後退」に1を記載します。
4.質問内容で、映像を見ないと判断できないような内容がある場合は「撮影」に1を記載します。
5.質問内容がうれしいと感じた時は「感情」に1を記載する
出力形式はJSONで以下の項目で出力してください。
返事:
前進:
後退:
撮影:
感情:
動作動画
課題
以下のような課題があるので、今後解決して行きたいです。
- 意外に利用方法を思いつかない
- ロボットカーが小さいので、稼働部を増やすことが難しい
- RasberryPi3 1GBでは、ローカルで処理するのは難しい。APIのみだとコスト的にも処理的にも制約が多い。
- RasberryPi3は、電力供給が安定していないので動作が安定しない
対策は、以下のような感じで考えてます。
利用方法が思いつかないという点については、
- 子供に遊んでもらう。
- 外で使ってみる。
- youtubeなどで積極的発信してアイデアを募っていく
次回の構想としては、
- 大型のロボットカーに乗せる下のようなものを検討
ロボットカー - よりメモリーを積んだRasberry5を利用(8Gbであれば、かなりローカルで処理できるか)
Discussion