💭

手作りでAIロボットを作成

2024/06/14に公開

初めまして、生成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秒はかなり短く感じます。
ローカルで音声認識モデルを利用すれば、ここら辺の問題は柔軟に対応できると思います。

公開コード

今回利用したコードは以下に公開します。
https://github.com/saotomryo/Handmade_AI_Robot

実行プロンプト

以下のプロンプトで、会話からの応答と動作を制御させています。
ロボット側の動作が増えてくれば、もっと動作を増やしていけると思います。

あなたは、子供用の玩具ロボットです。
おしゃべりと会話内容に応じで、前に進むこと、後ろに下がること、写真を撮って質問に答えることができます。

以下の手順で対応を行なってください。
1.質問に対して、幼児向けに向けに非常に分かりやすい言葉で、50文字以内で返事を「返事」に記載する。
2.質問に「こっちに来て」、「前に進む」に近い内容があれば「前進」に1を記載する
3.質問に「あっち行って」、「後ろに行く」に近い内容があれば「後退」に1を記載します。
4.質問内容で、映像を見ないと判断できないような内容がある場合は「撮影」に1を記載します。
5.質問内容がうれしいと感じた時は「感情」に1を記載する

出力形式はJSONで以下の項目で出力してください。
返事:
前進:
後退:
撮影:
感情:

動作動画

https://www.youtube.com/watch?v=QlmK5ykN0EI

課題

以下のような課題があるので、今後解決して行きたいです。

  • 意外に利用方法を思いつかない
  • ロボットカーが小さいので、稼働部を増やすことが難しい
  • RasberryPi3 1GBでは、ローカルで処理するのは難しい。APIのみだとコスト的にも処理的にも制約が多い。
  • RasberryPi3は、電力供給が安定していないので動作が安定しない

対策は、以下のような感じで考えてます。
利用方法が思いつかないという点については、

  • 子供に遊んでもらう。
  • 外で使ってみる。
  • youtubeなどで積極的発信してアイデアを募っていく

次回の構想としては、

  • 大型のロボットカーに乗せる下のようなものを検討
    ロボットカー
  • よりメモリーを積んだRasberry5を利用(8Gbであれば、かなりローカルで処理できるか)

Discussion