aiboの開発者・川部祐介さんとUnityについて語ってみた【コモさんの「ロボっていいとも!」】
こんにちは、コモリでございます。
今回から始まりました「ロボっていいとも!」は、某番組のワンコーナーと同様に、毎回ゲストのお友達を紹介してもらい、そのゲストとUnityについて語ってみるコーナーです。
で、誰でも紹介してよいかというと、さすがにそれではコーナー名に意味がありませんので、ロボティクス業界のキーパーソンの皆様を中心に友達の輪を広げていこう・・・というのがこのコーナーの目的であります。
普段あまり知ることがないロボティクス業界の話、またそこでUnityがどのように使われているのか、そして未来のロボティクスはどうなっていくかを掘り下げていき、最後にはゲストのお友達を聞き出しまして、また次回につなげるという流れになります。
さて、当然ながら初回は友達紹介によるゲストがおりませんので、わたくしコモリのお友達の中からゲストを紹介したいと思います。
それでは、今回のゲストにご登場いただきましょう。
ソニー株式会社でaiboを手掛けております川部 祐介さんです。どうぞー。
川部 祐介
ソニー株式会社 AIロボティクスビジネスグループ
Sony Outstanding Engineer 2018
川部:こんにちはー。
ゲーム開発の良さをaiboの開発に導入したかった
――では、川部さんの自己紹介をしてもらってよいですか。
はい、ソニー株式会社の川部祐介と申します。
私は初期の頃からaiboに関わっていて、主にはaiboの動きを作るところを担当していました。
元々はソニーモバイルコミュニケーションズという会社でXperiaの開発部隊に在籍していたのですが、そこでの上司に「aiboをやるぞ!」と誘われてソニーに転籍しました。
aiboには大きく分けて2つのプロセッサが搭載されています。
ひとつはアプリケーションプロセッサというaiboの機能面を担うプロセッサ、もうひとつはモーションプロセッサというaiboが持つ22軸の関節モーターを制御するプロセッサです。
私はそのモーションプロセッサの開発リードをしておりました。
――学生時代からロボット開発に興味があったのですか?
はい、メカや電気をかじりながらでしたね。大学の頃はどちらかといえばコンピュータサイエンスの分野で、たとえばプログラミングコンテストに参加したりなど、そういう活動が多かったです。
あとはゲームAIなど。リアルなロボットではなく、デジタルやバーチャル寄りな活動ですね。
――なるほど。では本題に入るのですが、aiboの開発現場でUnityが使われているということを聞いたのですが、なぜUnityを使い始めたのでしょうか?
今もそうかもしれないですし当時はもっとそうだった訳ですが、ロボット開発のデファクトツールみたいなものがあまり無いんですよね。
そういう中で、たとえば3DCGのアニメーション経験とかゲーム開発の経験とか、幅広い知見を受け止めて活用できるツールのほうがaibo開発に向いているだろう・・・という考えでUnityを使い始めてみました。
あとは「実機がなくてもツール上でシミュレートできる」というゲームエンジンの良さを取り込みたいとも考え、コードをたくさん書くイメージが強いロボット開発にゲーム開発のような要素、たとえば3Dモデルを置いてアニメーションさせてロボットの動きを再現するとか、デザイナーさんでもUIベースで操作できるような開発ツールを作りたいと思い、そのベースにUnityを使おうと思ったのもキッカケでした。
――周囲のUnityに対する評価というか意見とかはどうでした?
先ほど紹介した上司が元々ゲーム開発の現場にいた経験もあり、そこでもUnityを使っていたこともあったようなので、「Unityを使いたい」という話を先ほど説明したような意図・背景含めて相談したら、割とすんなり理解してもらえました。
これは導入する点で幸運だったかなと思います。おかげで導入も速く、また開発のスピードも速かったですね。
実はaiboのモーション作りについては、できることならコードとかを書かずUI操作で実現できるようにして、敷居を下げて多くの人が開発に参画できるような環境を実現したいというイメージが自分の中にあったのですが、Unityを導入したおかげでそれも実現できるようになりました。
そしてaiboチームの中でモーションデザインの担当はチーム内唯一の全員女性だけの組織になったりもしました。その未来像も、Unityを導入した時点で割とイメージもできていました。
「物語」と「生命感」を想像するためのツール
――aibo開発でUnityが活用された部分について、もう少し詳しく教えてもらえますか。
aiboはロボットですが、キャラクターとも言えると思うんです。
そして、aiboでは「物語」と「生命感」という2つのテーマを大事にしていて、aiboがオーナーの方のパートナー的な存在になれることをコンセプトにしています。
その「物語」と「生命感」がモーションデザインを通じて伝えられるようにと、モーションを開発するツールをUnity上で開発しています。
ひとつは「モーションエディタ」という、たとえばお手とかお座りとか、22軸の関節モーターで実現するaiboの動きを制作するツール。
もうひとつは、たとえば人が触ったら喜ぶとか人がいなかったら寂しがるとか、aiboの気持ちや行動を制御するようなもの、物語を行動で表現する言わば絵コンテみたいなものを制作する「ビヘイビアーツリー」というツール。
この2つをUnityにアドオンする形で開発に利用しています。
――他にもプラグインとかライブラリみたいなものなどを作っていますか?
そうですね。先ほどの2つのツール以外にも、どうやったらロボット開発がスムーズに進むかという観点で、UIデザインや必要なコンポーネントの設計などを社内のR&Dチームの人たちが親切に手伝ってくれて、必要な開発環境は作りこまれていますね。
――実際にUnityをロボット開発に組み入れてみたことによる成果はどうでしたか?
元々ロボット開発のデファクト的なGUIツールがなく、参考にできるものが乏しかったこともあって、導入当初はどうやって活用していったらよいかを暗中模索で進めていて、その場その場で問題発生が続く日々でした。
当時は結構つらい時期でしたが、そういう時期を経て最近は完成度も高くなり、たとえば3DCGのモーションデザイナーさんからも「他のDCCツールの使い方が分かっていれば、直感的にUnity上の開発ツールも触れる」というフィードバックももらえるようになりました。
あとは、実機がなくてもUnity上でリアルタイムにシミュレーションを実行できるのは大きいですね。
たとえば、CGアニメーション制作を通じてロボットのモーションによりこだわることができたり、そのモーションによってaibo本体がバランスを崩さないかの(をシミュレートした)数値を確認できたり、それを踏まえてPC上で修正できたり。こういうメリットがあったと思います。
――逆に問題点というか、まだ解決できていない点などありますか?
PC上のシミュレーションと実機での動きとの差異がいくらか出てきてしまうんですよね。
ちょっとした差なのですが、aiboの動きの印象がUnity上のシミュレーションとちょっと違う感じになるんです。そのあたりのこだわりとかいうか、しなやかさみたいなものは、実機で動きを確認して微調整をしています。
おそらく、ゲームや映像であればデジタルの中で完結できるわけですが、ロボット開発の場合は最終的にはリアル世界での物理挙動になるため、ゲームエンジンの物理挙動とリアル世界での物理挙動とのギャップをまだ埋め切れていない・・・ということかもしれないです。
――他にもUnityでのロボット開発を通じて気づいた点などありますか?
3Dモデルの動きをコーディングなどで編集・調整してPC上で試せる環境としては、Unityはこの上ないツールだなと感じました。
たとえばaiboを構成するパーツがいくつもありますが、そのパーツごとにオブジェクトやコンポーネントで管理・開発するのがしやすかったとR&Dチームからも聞いています。
そのほか、aiboが咥える骨型おもちゃ(アイボーン)のようなアクセサリー・関連グッズがあるのですが、それらもUnity上でオブジェクトとしてすぐ組み込んで動きを実装したり確認したりできるのも良かったです。
将来的には、一般的なパーツ類やセンサー類を取り扱える標準コンポーネントがあると、ロボットやアクセサリーなどをもっと楽に開発できるようになるでしょうね。
エンタテインメントロボット開発とUnityの相性の良さ
――Unityのようなリアルタイムエンジンのツールをロボット開発に取り込むことによる、ロボット業界での影響・インパクトはどんなものがあるとお考えですか?
やはり実写と同じような絵作りができるというか、コードベースで説明したり見るよりビジュアルベースのほうが作りやすさが違うと思うので、物語性やエンタテインメントを必要とするロボットの開発用途ではUnityは重要かなと思っています。
工場で使うようなロボットが同じ作業を延々と繰り返すのと違い、aiboのようなロボットは人間に寄り添ったり心を通わせたりという部分が要求されますので、動きの印象が可視化できないと開発が難しいですし。
また、そういう状況でリアルと同じように3D空間の中でオブジェクトを置けたり動きを確認できたりすることは、たとえば倍速でシミュレーションしてその様子を見ることができたり。さらにはAIでシミュレーションを自動実行し実行結果を入手することも考えられますよね。
先ほど話したリアル世界との物理挙動のギャップを埋める難しさはありますが、それでもロボット業界でUnityのようなツールが標準的に使われていくメリットはあると感じています。
――今後の目標やUnityに期待することなどありますか?
aiboについて言えば、やはりエンタテインメントロボットではあるので、もっと人のことを理解して寄り添うような、あるいは人に愛させるテクノロジーというか、ロボットと人とが心を通わせる未来を作りたいと思っています。
そういう意味では、CGで映画を作ることやゲームを作ることが好きな方やアーティストの方がもっと参入できるような 開発環境を作る必要があるかと思います。
そこをUnityが橋渡しをするというか、たとえばボタン一つでロボット用のビルドもできるとか、そういうロボット開発のプラットフォーム革命みたいなことを起こしたいと思いますし、Unityに期待したいところです。
そういう事を実現するためにも、Unityとソニーでロボットを一緒に作ってみるのも面白いかもしれないですね。
――いいですね。ちなみに、Unityと一緒に作ってみたいロボットのイメージはありますか?
やはりエンタテインメントロボットが相性良いのではないかと思っています。
たとえばお掃除ロボットのようなものは動作検証などを行う環境はそこまで複雑でなくても良いので割と簡単に用意できるのですが、エンタテインメント性が入ってくると検証環境はグッと複雑になるので、バーチャルでシミュレーションできる環境は欲しいですよね。
そういう意味では「ユニティちゃんロボット」とかは面白いかもしれないですね。
ゲームのAI技術って元々はロボット開発で培った技術を応用している部分はあるんですよね。それまでリアルでは環境要素が不安定なので検証するには難しかったものが、ゲーム世界では環境要素を安定・拘束できるので検証しやすく一気に技術が育った面がありまして。で、今度はその育った技術をもう一度リアルのロボット開発に戻す際に、Unityならその行き来・橋渡しができると思うんです。そういう未来を志向したいです。
お友達紹介
コモ:まだまだお話を伺いたいのですが、そろそろお友達紹介のお時間でして・・・。
川部:ではPreferred Networksの矢島さんをお願いします。
コモ:矢島さんに伝言はありますか?
川部:そうですね。最近コロナウイルスの影響で会えておりませんが、落ち着いたら業界飲みを復活させたいですね、って感じですかね。
コモ:「・・・復活させたいですね」と。はい、今日はありがとうございましたー。