AIにペットの餌やりを任せてみた!
AIにペットの餌やりを任せてみた!
皆さん、こんにちは!
今回は、我が家の愛猫の食事をもっと快適にするために、ある実験的な試みを行ってみました。その結果をレポートとしてお届けしたいと思います!
愛猫の食事事情
我が家の猫ちゃんは、いつも自動給餌器でご飯を食べています。自動給餌器は、スケジュールを設定できるので、決まった時間に餌をあげることができて便利です。
でも、猫ちゃんの食欲って毎日同じじゃないです。ある日はたくさん食べてくれるけど、次の日はちょっと少なめだったり… なので、自動給餌器を使っているとはいえ、餌の残量を気にしながら、手動で調整する必要がありました。
そこで、「猫ちゃんの食欲に合わせて、自動で餌の量を調整してくれるシステムを作れないかな?」と考えたのが今回のプロジェクトの始まりです。
プロジェクト始動
アイデア
考えたのは、定期的に給餌器の中の餌の量をチェックして、少なくなったら自動で餌を補充するシステムです。
実現方法
まず、使わなくなったAndroidスマホを給餌器の上に設置し、カメラで餌皿を撮影できるようにしました。そして、以下の2つの方法を試してみました。
初めての試み:スマホで餌の量を検知
最初は、餌の色(茶色)を基準に、餌皿に占める餌の割合を計算して量を判断する方法を試しました。
// Process image and return food level (0.0 to 1.0)
fun processFoodImage(image: ImageProxy): Float {
// ...
var foodPixels = 0
var totalPixels = 0
// Scan ROI(Region of Interest) for food-colored pixels
for (x in (roiLeft.toInt() until (roiLeft + roiWidth).toInt())) {
for (y in (roiTop.toInt() until (roiTop + roiHeight).toInt())) {
val pixel = bitmap.getPixel(x, y)
if (isPixelFood(pixel)) {
foodPixels++
}
totalPixels++
}
}
return if (totalPixels > 0) {
min(1.0f, max(0.0f, foodPixels.toFloat() / totalPixels.toFloat() * 1.5f))
} else {
0.0f
}
}
// Check if a pixel color matches food color range
private fun isPixelFood(pixel: Int): Boolean {
val red = Color.red(pixel)
val green = Color.green(pixel)
val blue = Color.blue(pixel)
return red in Color.red(MIN_FOOD_COLOR)..Color.red(MAX_FOOD_COLOR) &&
green in Color.green(MIN_FOOD_COLOR)..Color.green(MAX_FOOD_COLOR) &&
blue in Color.blue(MIN_FOOD_COLOR)..Color.blue(MAX_FOOD_COLOR)
}
しかし、実際にやってみると、この方法はうまくいきませんでした…
- カメラの画像の色は、照明や角度、周りの環境によって大きく変化してしまうため、正確な判断が難しかった
- 餌を検知する範囲を自動で設定することができず、スマホや餌皿の位置が少しでもずれると、設定をやり直す必要がありました
画像処理の知識が乏しい私は、ChatGPTに相談しながら色々試してみましたが、結局うまくいかず…
2度目の挑戦:AIに判断を任せる!
そこで、AIに餌の量を判断してもらうことを思いつきました。AIなら、色の問題を解決できるだけでなく、様々な環境にも自動で対応してくれるはず!
どのAIを使う?
自分でモデルを学習させるのも面白そうでしたが、今回は週末の2日間で完成させることを目標にしていたので、Gemini API を使うことにしました。
なぜGeminiを選んだのか?
理由は簡単。Geminiの無料枠が、このプロジェクトにピッタリだったからです。
15 RPM(リクエスト / 分)
100 万 TPM(1 分あたりのトークン数)
1,500 RPD(1 日あたりのリクエスト数)
このプロジェクトでは 5 分に 1 回のリクエストで十分であり、この制限内で余裕で運用できます。
具体的な実装
大まかな流れは以下の通りです。
- 初期設定で、スマホのカメラ映像を表示し、餌皿が完全に映るように位置を調整します。
- 5分ごとに写真を撮影し、Geminiに送信して解析してもらいます。Geminiが「餌が必要」と判断したらtrue、「必要ない」と判断したらfalseを返します。
- 給餌器の手動給餌機能をAPIで操作し、Geminiの判断結果に基づいて餌をあげます。
完成したアプリはこんな感じです!
カメラ位置調整画面 | 稼働中画面(デモ用に検知間隔を5秒に設定しています) |
---|---|
![]() |
![]() |
実際に動作している様子を動画でご覧ください!(デモ用に検知間隔を5秒に設定しています)
結果はいかに…?
3日間のテスト運用を行った結果…なんと、 驚くほど順調でした!
心配していた「朝起きたら餌が溢れてる!」なんて事態も一度も起こらず (笑)
途中で何度かプロンプトを調整しましたが、AIが餌の残量を判断してくれるおかげで、照明や角度が変わっても問題なく動作してくれました。
まとめ
今回は、AIを活用したペットの自動給餌システムを作ってみました。
AIの進化には本当に驚かされますね!これからも、AIを使って生活を便利にしていきたいと思います。
リポジトリはこちら↓
Discussion