今回紹介するのは、それに比べると全然違うものなんですけど、
トイオっていう飼育玩具みたいなもので、ちょっと遊んでみた中から考えたことについてお話をしてみたいと思います。
そのトイオっていうのは、ソニーが開発した、いわゆる飼育玩具的なものなんですけど、
キューブ型のちっちゃいロボットというか、走る、走行する車みたいな、そういうものなんですけど、
見た目はちょっとググってもらったりしたらいいと思うんですが、真っ白なちっちゃいキューブで、それがちょこちょこ走るんですよね。
本来の使い方というか、子供向けに使うという意味では、カードがいろいろあってですね、
まっすぐ進むとか、曲がるとか、くるくる回るとか、いろんなカードがあってですね、それを並べていって、
その上を走らせていくと、そのトイオを自由自在にコントロールできるみたいな、
スクラッチっていう子供向けの教育用のプログラミング言語がありますよね。
あれの物理版みたいな感じのものです。
それを人に勧められて、面白いよって勧められて、子供と一緒に遊ぶために買ったんですね。
子供はまだ2歳なんで、そんなに使いこなすみたいなことはまだまだできないんですけど、
それでもカードを置いて、その上にトイオを置いたら走ったりするんで、面白がって遊んだりしているところです。
子供と遊ぶために買ったっていうのは、半分以上はいいわけで、自分が遊びたいから買ったんですよね。
自分が遊ぶときのポイントとしては、トイオっていうのはいろんな機能があって、
Bluetooth経由で制御できるんですよね。
さらにトイオはいろんなセンサーがついていて、そのセンサー情報をBluetooth経由で取得して、
それに基づいてさらに制御のフィードバックをかけるってこともできます。
なので、本当にちっちゃい簡単なロボットみたいな、そういうものなんですね。
なんで、エンジニアとしては結構遊びがいのあるおもちゃだなというふうに思っています。
このトイオというのを使って、ある方がXでこんなデモをしていたのを見かけました。
それはルロボっていうフレームワークがあって、
それはどういうものかっていうと、いわゆるフィジカルAIのためのフレームワークで、
データ収集とか学習から推論までのフィジカルAIにおけるロボットを作るための一揃い揃ったフレームワークがあるんですね。
それでトイオを動かしている方がいらっしゃったんですよ。
それを見て、トイオでいろいろ遊んでみたいなと思っていたので、
こんなことができるんだと思って、それで感動して自分でも試してみようと思ったわけです。
実際にはルロボっていうフレームワークは使わなかったんですけど、
そのフレームワークが用意している、いわゆる模倣学習と呼ばれるやり方、
それを簡単な形で試せるようなものを作ってみました。
それでトイオBCっていう簡単なプログラムを書いて遊んでたっていうのが、
ここ数日の僕のやっていたことになります。
フィジカルAIの流れの中でどういうふうにロボットを学習させるかっていうと、
このルロボっていうフレームワークだと、実際にロボットをまず人間の手で動かす。
実際に触って動かすでもいいし、コントローラーとかを使って、
人間がロボットを操作してあげて、やりたいことをまずやらせる。
その様子をロボットのセンサーデータを取ったりとか、
カメラ画像を撮って動画でその様子を撮影してっていうのをまずデータセットを作るんですね。
そのデータを元にロボットが学習をして、
次は人間が操作しなくてもその学習したモデルで、
人間がやらせた動作を自律的にできるようになる。
そういう一連の流れっていうのを簡単にできるようなフレームワークなんですけど、
それをトイヨ用にプロセスを簡略化して作ってみて遊んでました。
具体的にはトイヨっていうのは衝突検知をすることができるんですね。
何か壁にぶつかったら、今ぶつかったっていうデータをBluetooth経由で取得できるんですよ。
なので、これを使ったらお掃除ロボットみたいなのがあるじゃないですか。
あれみたいに何かにぶつかったらそれを回避するみたいな行動をトイヨに学習させられるんじゃないかなと思って、
そういうことを試してみました。
実際に自分でコントロールして制御してトイヨを動かしてみて、
壁にぶつかったら回避してみたいなデータを作って、それを学習をさせて、
次はその学習したモデルだけで実際に動かしてみて、壁に当たったら回避するみたいな、
そういう動きを実現したわけです。
詳しくはコードを公開しているところに書いてあったりするんですけど、
実際には自分で動かしてみてモデルを学習させてもあんまりうまくいかなくて、
衝突をしてから回避行動をするまでにやっぱり人間がやってるんで、
タイムラグがあったりしてうまくデータが取れなかったんですよね。
なのでデータ自体もスクリプトで生成するようにして、
そのデータに基づいてニューラルネットワークを学習させてモデルを作ったんですけど、
やってること自体は別にニューラルネットワークを使うほどのことではなくて、
ぶつかったら回避するみたいなスクリプトを書けば、
全然普通に機械学習と関係なくできるようなことなんですけど、
やりたかったのは人間が操作をしてロボットに学習をさせて、
ロボットが自分だけで動く、そういうプロセスを一回ちょっと試してみたかったなっていうことがあってやったわけです。
なのでそんなに大した話ではないんですけど、
その一連の流れっていうのを試せたのが個人的には面白かったなというふうに思います。
それをもっと発展させていくと、今度はカメラ画像とかも使って、
そのカメラ画像に基づいて何か行動するとか、
あるいはトイヨには専用のマットがあって、そのマットを使うと位置情報を取れるんですね。
なのでその位置情報に基づいて何か特定の動きを学習させたりとか、
あるいは複数のトイヨが協調して動くような、そういうことも多分できるんじゃないかなと思います。
まだそこまではやってないんですけど、おそらく十分可能なのかなというふうに思っております。
そんなわけでトイヨっていう簡単なシンプルなロボットの仕組みを使って、
ちょっと大げさですけど、フィジカルAIの入門みたいなことをしてみたということをして最近は遊んでいました。
すごく楽しいですね。やっぱり自分で操作してみたのをトイヨが再現してくれた。
実際にはうまく再現できなかったんですけど、それでも動いているのを見たときにはめちゃくちゃ興奮しましたね。
昔、本当にプログラミングを始めた頃にWebアプリケーションが動いたりとか、
あるいはMetaverse、VRChatとかそういうところでものを作って、そのものが仮想空間上で自分が思ったように動いたりとか、
そういうときの感動みたいなものがありましたね。
すごい胸がドキドキ高なって、これすげえみたいな、そういう興奮を覚えました。
そこからちょっといろいろ考えたりしてたんですけど、
僕は1976年に生まれて、今今年49歳なんですけど、自分が生まれた頃っていうのは当然Webというのは存在しなかったんで、
僕の親は今僕がこういうインターネットサービスを作るみたいな仕事をするだろうみたいなことを思うことはありえなかったわけですよね。
Webがなかったんで当たり前なんですけど。
それが僕が高校生から大学に入るぐらいのときにインターネットやWebが日本でも普及してきて、
それでWebアプリケーションというものを作る仕事が出てきて、その後僕はそういう仕事に行ったわけです。
何が言いたいかというと、今僕の子供2歳なんですけど、
その2歳の子供が将来どういうことをやるのかなみたいなことを思ったりもするんですが、
多分今職業としてはまだ確立してないような、あるいは全然今思いもつかないようなことをもしかしたらやってるのかなと思ったりしていて、
それが例えばロボットに関係するようなことであるとか、
あるいは最近僕宇宙に興味があって、このポッドキャストでもそういう話をしてますけど、
そういう宇宙関連の仕事をしたりとか、今の僕には想像もつかないようなことをもしかしたらやってるのかなと思いつつ、
ちょっと想像してみようみたいなことを考えたりしてたんですね。
Webっていうのは、いわば人間の知性とかあるいは行動っていうのを情報空間上で再現して、
それを分散的に実行できるようにした技術なんだと思うわけです。
抽象的に言えばそういうことなのかなというふうに思います。
例えば、お買い物とかお店に行って買い物するみたいなのを情報空間上で再現したのが、いわゆるeコマースっていうやつで、
今ネットで買い物するって当たり前じゃないですか。
そういう感じで、実際現実でやってたのを情報空間上にマッピングして、
そこでそういうことができるようになったっていうのが、Webのもたらした非常に大きなイノベーションなんだと思うんですけど、
一方で今後は逆に情報空間上だけじゃなくて、ロボットによってまた物理空間上に情報空間的な自由さとか、
あるいはAIみたいなある種の知性に基づく行動とか、あるいは仕組み、あるいは操作可能性みたいなのが、
物理空間に逆に広がってくるみたいなことになるんじゃないかなというふうに思ってます。
ロボットが無数に動くようになったら、Webが情報空間を操作可能にしたように、
ロボットっていうのが今度は物理空間を操作可能にする。
これは人間だったらなかなかコストとか、あるいはそこにはいけないとか、あるいは操作が難しいとか、
いろいろあってできなかったようなこともプログラミングによって、
ロボットを介して物理空間を操作可能にする、そういうことができるようになるんじゃないかなというふうに思うわけです。
そんな感じで、人間っていうのは、いろんなことをありのままにするっていうよりは、
それを何とかして操作可能に、自動的にとか、あるいはインテリジェントに操作可能にするっていうことをずっとやってきて、
そういうことが今後ロボットを通じて物理空間により広がっていくのかなというふうに思ってます。
そんな感じで、情報科学っていうのは、いろいろいろんな役割があると思うんですけど、
繰り返しになりますけど、知性みたいなものを新たに作って、
いろんな空間で、情報空間だったり物理空間だったりで、物事を操作可能にする、
そういうことをこれまでしてきたんじゃないかなというふうに思うわけです。
そういう構造の変化を通して、僕の子供も大人になった頃には、
僕は子供の頃にそういう職業がなかったような職業について、
例えば今のロボットっていうのは、
ウェブの比喩でいうと、サーバーを作ったりとか、プロトコルを作ったり、
基盤を今みんなが頑張って作っているレイヤーだと思うんですよね。
だけどまだそのロボットが何をするかっていうところは、
要するに応用としてアプリケーションとして何をするかっていうのは、
まだまだこれからなんじゃないかなと思うんですけど、
そういう応用とかアプリケーションとか、
現実への何か面白かったり有用だったりする適応みたいなことを、
今後やっていくのかなと思うんですけど、
もしかしたらそういう仕事に就くのかもしれないな、
みたいなことを思ったりしたわけです。