はじめに
こんにちは 昨今のAIモデルの多さについていけていない、坂村です。 紙とペンを使ってAIと会話をする、そんな体験ができる装置を制作したので紹介します。
plotchat
このプロジェクトの大きな特徴は、紙とペンという最も原始的なインターフェースによってAIとの会話を行えるというものです。 ユーザーが書いた手書きのメッセージに対し、AIが紙とペンを使って返答をしてくれます。 AIは、ペンプロッターという装置を使ってあなたへのメッセージを紙に書いてくれます。スクリーン上で展開されるチャットUIや音声モードのようなテンポ感は皆無とも言えますが、1字1字メッセージを書いていく様はどこか愛らしさを感じます。
どうやって動いているのか
このシステムは大きく分けて3つの要素からなっています。
- メッセージを読み解き返信を生成する、脳としてのAI
- メッセージを読む、目としてのカメラ
- 実際に文字を書くための手としてのペンプロッター
上記は全てPythonを使って実装されたプログラムによって1つのシステムとして動いています。

脳としてのAI
AIは2つの処理を行なっています。
- ユーザーが書いたメッセージを画像をもとに理解する処理
- そして返信を生成するための処理
今回はテキスト生成と画像認識が可能なGemma3というモデルを使用して上記の処理を行っています。 特筆すべきは全ての処理がローカルで動作し、インターネットの接続がなくても体験することができる点です。普段馴染みのあるOpenAIやClaudeをはじめとしたAIのシステムはAPIによって供給されるため、インターネットの接続、そして何といってもAPIの使用料がかかります。テストのために多くの処理をしているため、この使用料もなかなかな負担です。 今回は簡単なメッセージ生成という比較的軽めな処理のみだったため、ローカルLLMを走らせることで節約を図りました。

目としてのカメラ
装置全体をなるべく小型化したかったことから、小型のマイコンであるESP32のカメラモジュールを使って実装しています。 このカメラモジュールは、WiFiを通じて特定のIPアドレスから画像・映像の送信が可能で、この映像を使ってテキストの検知を行っています。 ユーザーのメッセージは書き終わり次第自動で検出されるようになっています。 MediaPipeという機械学習モデルを使って手を検出し、手が映像領域内から消えたらメッセージを書き終わったとしてメッセージ認識用の画像を撮影する、という流れになっています。

手としてのペンプロッター
ペンプロッターとはXYZ軸を持ち、アームの先端にペンを持つことができる装置で、任意のSVGなどを描くことができる装置です。 この装置を研究室にて発見したことがこのプロジェクトの始まりで、コンピューターとのやり取りに紙とペンが介在するというロマンから構想を始めました。 AIが生成した回答はSVGとしてペンプロッターに渡され、まるでペンプロッターが意思を持ったかのようにメッセージを返してくれます。

動作・リアクション
このシステムは通常のチャットのように連続して会話を行うことができます。ローカルLLMを使用しているため高度な質問には回答できませんが、基本的なあいさつ等はそつなくこなすことができます。 先日大学のオープンキャンパスが開催されたため、研究室の展示の1つとしてこちらを展示を行いました。AIとのチャットに普段から慣れ親しんでいる年代の人々に体験してもらい、返答速度・筆記の遅さや少しづつ返答が紙上に現れる様などは利便性とは異なる視点から面白がってもらうことができました。 誤動作やローカルLLMによる完璧すぎず返答が少し見当違いな様子も愛らしさとして受け止められ、便利さとは異なる方向性でのAIの利用方法にも期待を感じました。
