AIラジコンを育てて走らせて競わせる! KAWAII!新時代のレジャー、ロボレーシング
2019.07.17
Updated by Ryo Shimizu on July 17, 2019, 06:55 am JST
2019.07.17
Updated by Ryo Shimizu on July 17, 2019, 06:55 am JST
その日はしとしとと雨が降る日曜日だった。
僕たちは本郷の大学にほど近い、ちょっとした邸宅の屋上で、雨だと言うのにバーベキューに勤しんでいた。
少しくらいの雨ならば、ちょっとした装備があれば凌げてしまうのである。
「DonkeyCar(ドンキーカー)というオープンソースベースのオモチャが面白いんですよ」と、アスキー総研の遠藤諭さんはおもむろにオモチャのラジコンカーを広げてみせた。
市販のラジコンのシャーシに、3Dプリンタで打ち出したフレームがついていて、RaspberryPiと、カメラがくっついている。
「またなんだか面妖なものが出てきたな」
と思ったのだが、「じゃあ走らせてみてくださいよ」と頼むと、それはそれでいろいろかなり面倒くさいので今日はよしましょう、ということになった。
「動いてるところが見たければ7月16日の夜7時にアスキーまで参られよ」
ということなので、早速馳せ参じることになった。
会場に到着すると、すでに十数名の方々が熱心に講義を聞きながらハンズオンに勤しんでいた。
実はこの日のために僕自身も自前のDonkeyCarをFaboShopで購入していた。
DonkeyCarの入手方法はいろいろあるが、日本ではFaboShopで買うのが一番カンタンで、かつ詳細な日本語マニュアルも公開されているので日本でやるならここがオススメである。
自前のDonkyCarを買ってセットアップまでは済ませていたが、いざ電車でもってこようとするとちょうどいいカバンや袋が見当たらず、「とりあえず動いてるところだけでもみるか」くらいの気持ちでぶらりと会場を訪れた。我ながら、まったく呆れた志の低さである。
さて、RaspberryPiをセットアップし、DonkeyCarの設定を終えると、いよいよ学習データ作成に移る。
学習データ作成といっても、完全にラジコン感覚でコースを走行させるだけ!
驚きの手軽さだ。
実はレースに大きく差がついてしまうのがこの「学習データ作成」である。
できるだけ多様に、できるだけ正確なデータを作る必要があるが、必ずしも「上手な走行データ」が良い教材になるとは限らない。
遠藤さんなどは、いきなりコースを縦断するようないい加減な走行をしていたが、10周もすれば十分なデータが集まり、実際にうまく自動走行させることに成功していた。
この、教師用データは重要だが必ずしも自分が上手く走らせれば良い、というわけではないところがミソである。
学習データを作成したあとは、RaspberryPiからデータをPCにダウンロードし、Google Colabにアップロードして学習させる。このあたり、ハンズオンを繰り返しているFaboShop版だとかなり整理されていて楽ちんだ。
遠藤さんがいともあっさりと自分の走行法をAIラジコンに学習させ、走らせているのを見て、さすがにムズムズしてきた。
「僕にもやらせて!」
「えー!しょうがないなあ」
学習用の走行はゲームパッドで行う。学習データといっても、カメラの画像と、そのときゲームパッドのボタンをどう押していたかをひたすら記録するだけ。
特にプログラム的にも難しい工夫はない。
スイスイと10周分のデータを作るが、他の人と同じ走らせ方だと自分のものという気がしないので、シケインをカーブせずに直進するような動きを多用して個性を植え付けてみる。
問題はここから。
コマンドライン操作が多いので、そこらへんは全部遠藤さんにお任せ。
Google Colabへのアップロードに異常に時間が掛かる。
アップロードしてから、学習、これまた遅い。無料だからか。
学習中、実際のニューラルネットワークがどんな感じになっているのかソースコードを見てみる。
Donkeycarのミソは実はここで、ものすごく単純なニューラルネットワークしか使っていないのだ。
たとえば今回使ったニューラルネットワークはこんな感じ
入力された画像を畳み込んで、最終的にスロットル開度がどのくらいかを20段階、ステアリングがどれくらいかを15段階で分類(categorical)問題として学習するだけ。
少しニューラルネットワークを知っていれば小学生でも理解できる単純な構造だ。
この単純な構造しかないニューラルネットワークで、驚くほどちゃんと動く自動運転が作れてしまうのがDonkeyCarのダイナミズムである。
多少のトラブルはあったが、終了時刻の23時前にはほぼ全員が自分のAIラジコンを自動運転で走らせることができるようになっていた。
こうなるともう、全員が「運動会のお父さん」状態。我が子(AIラジコン)の姿を撮り漏らすまいと大撮影会に移行。なんだこの楽しさは。
実際、僕が訓練したAIラジコンも、実に小気味よいくらいに僕の癖を掴み取り、シケインを攻める攻める。
もともとレースゲーム中毒だった僕らしいスロットルワークが上手く再現されていて、感動した。
プログラム、一行も書いてないけど。これは紛れもなく僕のAI。
作業したのは遠藤さんだけど、間違いなく僕のAIである。
これを見てると飽きない。もうひたすら走るのを眺めてるだけ。
この境地を遠藤さんは「茶の湯の心」と呼ぶ。うーん、ちょっと違うけどわからないでもない。
しかも凄いのは、複数台が同時に走っても、親(ユーザー)たちは我が子(ラジコン)の姿を見失わないところ。
もちろん一台ずつよく見ると少しずつ違う特徴があるのだが、傍から見たら「なぜ自分のマシンだと識別できるんだ」と首をかしげるほどに、みんな自分のマシンを見失わない。
多分走り方から、自分のマシンだとわかるんだろう。
僕の子はぐるぐると何十周か回ったあと、赤いパイロンを見たら興奮状態に陥って暴走してしまった。
そんなところもまた面白く、カワイイのである。
今回、講師をしていたGClueの佐々木さん(FaboStoreの主催者でもある)は、次回はJetsonベースのハンズオンなどもやっていきたい、と鼻息を荒げる。
こんな楽しいロボレーシング、来る8月3日、4日に東京ビックサイトで開催される、Maker Faire Tokyo2019でも開催予定とのこと。
当日時間のある人は是非お立ち寄りいただきたい。
けっこう世界観変わる勢いで面白い。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。