実験 001フィジカルAI

AIにロボットアームを動かさせて、レシートを仕分けさせた

吸盤アームとAIの目で、レシートを科目ごとに仕分けられる?

5/55枚とも金額・科目が正解
仮想では成功

結論

  • 5枚のレシートを1枚ずつ吸い上げ、AIが店名・日付・金額・科目を読んで仕分けた
  • 5枚とも金額と科目が正解。モーターを4個に減らした安い構成でも5/5
  • まだシミュレーションの中だけ。実物のアームで試すのは次の実験
使ったデータ
物理シミュレーション(MuJoCo)・ダミーのレシート5枚

やったこと

机の上にレシートの山を置き、ロボットアームに次の流れをやらせました。

  1. 山から吸盤でレシートを1枚だけ吸い上げる
  2. 撮影台に置き、真上のカメラで撮る
  3. AI(Gemini)が店名・日付・金額・科目を読む
  4. 「飲食」「交通費」「消耗品」の置き場に運ぶ

アームは実在する小型アーム「SO-101」のモデルを使い、指(爪)を吸盤に付け替えています。家のノートPC(GPUなし)で動かしました。

撮影台でレシートを読み取っているところ。右側に科目ごとの合計が出る
撮影台でレシートを読み取っているところ。右側に科目ごとの合計が出る

結果

店 金額 AIが選んだ科目 正解
すずかけ文具 1,200円 消耗品 ○
駅前きらりパーキング 2,950円 交通費 ○
ひだまり食堂 550円 飲食 ○
ひだまり食堂 3,850円 飲食 ○
あおば交通タクシー 1,250円 交通費 ○

5枚とも金額と科目が正解でした。5枚を仕分けるのに、シミュレーションの計算でおよそ12分かかっています(物理計算が重いため。実物ならもっと速いはずです)。

5枚を仕分け終わったところ
5枚を仕分け終わったところ

モーターを減らしても動くか

実物を作るときの費用を下げるため、モーターを6個から4個に減らした構成(爪と手首のひねりを固定)でも試しました。

手首をひねれないと、紙は根元の回転と逆向きに回ってしまいます。そこで、関節の角度から紙がどれだけ回ったかを計算し、撮った画像を回してまっすぐに戻してからAIに読ませました。結果は同じく5/5でした。

読み取りの正解数(5枚中)
モーター6個 5枚
モーター4個 5枚

目盛り 0枚〜5枚

つまずいた所

  • 紙がすり抜ける:実物と同じ薄さにすると、物理計算でアームが紙をすり抜けました。厚さを2mmにして回避しています。
  • 2枚いっぺんに吸う:吸盤を押し付けすぎると下の紙まで持ち上がりました。「触れたら止めて吸う」動きに変えて解決しました。
  • AIの無料枠が少ない:最初に使ったロボット向けのモデルは1日20回までだったので、読み取りは1日500回使える軽いモデルに変えました。同じ画像は保存しておき、2回目からはAIに聞かずに使い回しています。

仕事で使うなら

経理の「レシートを科目ごとに分ける」作業そのものです。ただ、紙を動かすのはロボットの仕事で、読む・分けるだけなら、スマホで撮ってAIに読ませるほうがずっと早く安くできます。ロボットが役に立つのは、量が多くて人が触らずに済ませたい場面です。

次の実験

部品代2万円前後の安いアームで、実物でも同じことができるか試す予定です。

使った道具

  • MuJoCoロボットの物理シミュレーション
  • Gemini APIレシートの読み取り(無料枠)
  • Pythonアームの動きとAIの連携
  • OpenCVレシートの傾きの計算