← サンプルアプリ一覧へ

猫じゃらしロボット

2 つのサーボで長さ 60 cm の棒を動かし、先の羽根のおもちゃで猫と遊ぶロボットです。ロボットは猫の気持ちを知りません。分かるのは、カメラで測れる猫の位置と動きだけです。それを「反応のよさ」の点数にして、5 つの動かし方のどれがその猫に合うかを、遊びながら学びます(多腕バンディット)。猫は、好みの違う 3 匹のテスト用の猫から選べます。好みはロボットには見えません。

動かし方の選び方

時間0:00
試した回数0
いまの動かし方—
前回の点数—
猫とおもちゃの距離—
飛びかかった0

ロボットの頭の中

1〜3 と 5〜6 は 1 秒に 20 回、4 は 20 秒に 1 回。

  1. 1見るカメラの画像から猫を見つけ(YOLO の cat)、床の上の位置に直す
  2. 2測る猫とおもちゃの距離、近づく速さ、飛びかかり(秒速 1 m 以上の急な動き)
  3. 3点数にする20 秒のあいだに、近くで追っていた時間と飛びかかりの回数から 0〜1 の点数
  4. 4動かし方を選ぶこれまでの点数の平均 + 試した回数が少ない分のおまけ(UCB)が一番大きいもの
  5. 5角度に直すおもちゃを置きたい向きと高さから、2 つのサーボの角度を計算する
  6. 6動かす・安全速さの上限を守って動かす。猫が近すぎる・人がいないときは止める

動かし方ごとの見積もり(棒 = 点数の平均、細い線 = UCB、n = 試した回数)

試すたびの点数(点の色 = 動かし方、線 = 最近 5 回の平均)