はじめに
1993年、大学院生だった私は「産業用ロボットに日本語で命令する」システムを作り、人工知能学会と機械学会で発表しました。日本語の文を形態素解析し、中間言語に変換してロボットを動かす、というものです(当時はLisp/Prologでした)。
それから30年。ローカルで動く小さなLLMが出てきたことで、同じことを机の上のロボットでできるようになりました。そこで、六本脚ロボットのキットを土台に、日本語で話しかけるとAIがPythonのプログラムを書き、そのとおりに脚が動くロボット「アラクネ」を一人で作りました。
この記事では、その構成と、作る途中でつまずいたところを書きます。
できること
- 「右の前足を上げて」と話しかけると、AIがPythonのプログラムを書いて画面に表示し、そのプログラムを実行して脚が動く
- ふつうの会話もできる。話している間は脚や首で身振りをする
- 会話・音声認識・プログラム生成はすべて手元のパソコンの中で処理し、インターネットにはつながない
書かれたプログラムが画面に出るので、「言葉 → プログラム → 動き」のつながりがそのまま見えます。キーボードに慣れていない子どもや大人でも、言葉からプログラミングに入れる、というのがねらいです。
構成
| 役割 | 使っているもの |
|---|---|
| 本体(脚・首) | Freenove Big Hexapod Robot Kit(FNK0052) |
| 本体の制御 | Raspberry Pi 4B(4GB) |
| 目・耳・口 | カメラ、単一指向性マイク、スピーカー、ディスプレイ |
| 頭脳 | ノートPC(Core i7、メモリ16GB、GPU 8GB) |
| 声 | VOICEVOX(もち子さん) |
| 電源 | 12V ACアダプター+降圧コンバーター |
処理の流れは次のとおりです。
- マイクで声を拾う
- ノートPCで音声を文字にする
- ローカルLLMが、会話の返事か、脚を動かすPythonプログラムを作る
- プログラムをディスプレイに表示する
- Raspberry Piでプログラムを実行し、サーボを動かす
- VOICEVOXで返事を読み上げ、身振りをつける
Raspberry Piが自分でWi-Fiのアクセスポイントを立て、ノートPCはそこにつなぎます。ロボットとPCだけの閉じたネットワークの中で完結するので、家や教室のネットワークがなくても動きます。
なぜローカルで動かすのか
子どもや家族の声を、外部のサーバーに送りたくなかったからです。クラウドのAIを使えば賢い返事は簡単に作れますが、教室や家庭で使うものなら、声や会話が外に出ないことのほうが大事だと考えました。
その代わり、使えるのはPCで動く小さなモデルだけです。賢さと返事の速さのバランスを取るのが一番の苦労でした。
つまずいたところ
- 組み立てで、6本すべての脚先を上下逆に付けていた。 付属のプログラムの前提と合わなくなったので、脚の制御は自分で書きました。
- サーボが壊れていた。 サーボだけの交換はできず、キットごと返品して買い直し、組み直しました。
- 身振りをするとUSB機器がまとめて切れる。 電源不足と見て、アダプター付き(セルフパワー)のUSBハブにつなぎ替えました。
- テレビの声を拾って勝手に返事をする。 マイクを単一指向性に替え、使う人の声を登録して聞き分けるようにしました。
- 返事が遅い。 最初は大きめのモデルを使っていましたが、聞いてから話し始めるまでが長すぎました。ロボットは反応が遅いと何をしているのか分からなくなるので、小さなモデルに切り替えました。
おわりに
30年前、研究室の大きなロボットでやっていたことが、今は机の上でできます。それも、ネットにつながずに、です。プログラミングの入口として、子どもにも大人にも触ってもらえたらと思っています。
アラクネは、組み立て済み・ノートPC付き(届いてすぐ使える状態)で、BOOTH(algoi.booth.pm)とAmazonで販売しています。仕組みについての質問は、コメントでお気軽にどうぞ。
アルゴ知能情報研究所 森田 徹
大学で約23年間、情報工学とプログラミングの教育・研究に携わったあと、福岡県香春町でロボットを作っています。