散歩の途中で寄った喫茶店で、おばちゃんの連れてきた犬が当然のように店内をウロウロしていた。 誰も指示してないのに、客の間をすり抜けて、邪魔にならない位置に座って、また立ち上がる。
ああいうのがやりたい。
やること
ESP32 + LoRa の基板を何枚か並べて、群れとして働かせる。 一枚一枚は大したことをしない。役割(role)とジョブとスキルを全部のボードが同じだけ持っていて、 状況に応じて「今回は誰がやるか」をその場で決めて動く。
イメージはフチコマ(タチコマも可)。 複数いて、勝手に相談して、勝手に分担する。MAGIとかシビュラでもいいけど、明るくいきたい。
題材は農園にした。 虫が出る、雨が降る、獣が来る。分かりやすいイベントを用意して、群れがどう対応するかを見る。
この三つを選んだのは、必要になる協調の種類が全部違うからです。
- 虫 — 局所的でじわじわ広がる。気づいたやつの近くだけで対処して、手に負えなくなったら増援を呼ぶ
- 雨 — 全員が同時に検知する。各自バラバラに判断すると無駄なので、群れとして一つの結論に収束してほしい
- 獣 — 突発で、移動する。見つけたやつが次の担当に情報を渡していかないと追えない
局所応答、全体同期、情報リレー。免疫系っぽい話にしたかったので、まずここから。
あえてAIを使わない
ここが今回の肝で、役割分担をAIじゃなくロジックでやります。
普段、物理インターフェースとAIを繋ぐのが今のロボティクスの本筋だという話をよくしていて、それは本気でそう思っている。 思っているんだけど、じゃあ知性ってどこから立ち上がるんだっけ、という部分を一度手で分解してみたい。
免疫系にはモデルも学習済み重みもない。それでも異常を見つけて、応答して、次は早く反応する。 あれをロジックだけでどこまで再現できて、どこで無理が出るのか。無理が出る場所こそ、 本当にAIが要る場所のはずです。
たぶん最初は綺麗に破綻します。それが見たい。
なぜ今さらRustなのか
実装はRustでやります。へそ曲がりなので。
すっかり聞かなくなりましたよねRust。原因はハッキリしていて、 Rustが本当に効く高並列・高スループット系って、ゼロイチの開発でしか出てこない。 しかもそういうのは大体すぐOSSかデファクトのSaaSが出て、自分で書く理由が消える。
マルチチャネルで同じ画面をみんなでいじれるぞ!みたいなの、得意分野なんですが、 そんなのすぐOSSが出るか規格ができるかして終わる。 この前出た(そして終わる)popopoなんかも向いてると思う。実際の実装は知らんけど。
あと「Rustでやりたい」って言ってくる人、大体Rust分かってない。 ただの小さめWebシステムのリプレイスなのに「Rustでやります!」とのたまってたSIer上がりのPMがいた。 日経ITの知識でプロジェクトやらんでくれ。
……という話を散々してきた上で、こういう小さいボードを群れで動かすやつは、 実はRustが素直にハマる数少ない場所だったりします。メモリ食わないし、 壊れ方が予測しやすい。組み込みで一番効くのはそこです。
成功の条件
連載なので、終わりを先に決めておきます。
- 一台落としても、群として仕事が続く
- 事前に決めた割り当てではなく、状況に応じて担当が変わる
- 同じイベントが二度目に来たとき、一度目より早く片付く
3番まで行けたら大成功。1番で満足して終わる可能性もある。
買い物メモ
ESP32 + LoRa の基板が3000円くらい。大人の理科実験としてはお手頃です。
一点だけ。日本でLoRaを飛ばすなら920MHz帯の技適取得済みモジュールにしてください。 安いやつは海外向けの技適なしが普通に混ざっていて、そのまま電波を出すと普通に電波法違反です。 自分は秋月で技適物を確保しました。
次回はハードを並べて、とりあえず喋らせるところまで。 とはいいつつ、案件が立て込んでいるので(しかもそのうち1つはラズパイ)結構先になりそう。
しかし基板より、梨と桃の皮をむいてくれるロボットの方が先に欲しい気もする。 あれこそ免疫系より難しそうなので、当面はお婆ちゃんを雇う方向で検討します。