デジタルツインを実現するCAEの真価

ロボットバトルはメタバースでもやれんのか! VRChatで大会を開催してみたVRでROBO-ONEやってみた(2/4 ページ)

» 2021年12月06日 10時00分 公開
[大塚実MONOist]

VR上にリアルロボットの動きを再現

 まずプラットフォームを何にするか考える必要があるが、これはソーシャルVRサービスである「VRChat」を使用することにした。VRChatはグローバルなサービスでユーザー数が非常に多く、開発情報も豊富にある。利用は無料で、「Oculus Quest 2」などのVRゴーグルがない人は、Windows PCのアプリからでも参加できる。

 VRChatでは、プレイヤーが“ワールド”と呼ばれる仮想空間に入り、自由に移動しながら、その世界を楽しむことができる。このワールドは誰でも自由に作成できるため、VRChatの中には、きれいな風景を堪能したり、ロケットの打ち上げを見学したり、サバゲーで遊んだりと、実にさまざまなワールドがある。

 VRChatを使えば、プレイヤー同士をマッチングさせる機能などは自分で用意する必要がない。VRChatのワールド作成には「Unity」を使うのだが、重力などの再現にはUnityの物理エンジンが利用できるため、ロボットのシミュレーターとして活用しやすい。後は、ロボットと会場の3Dモデルや、ロボットを動かすプログラムが必要なくらいだ。

Unityの画面 Unityの画面[クリックで拡大]

 筆者はROBO-ONE Lightに近藤科学の市販機「KHR-3HV」で出場しているので、まずはこの動きを再現してみたい。VRChatでは、非公式ツールの「UdonSharp」を使えば、C#でプログラムを作ることが可能だ。ロボットの各関節の角度を、このプログラムから制御してやれば、KHR-3HVのように動かせるだろう。

 KHR-3HVの動き(モーション)は、複数の姿勢(ポーズ)から構成。パラパラ漫画のように、ポーズを順番に切り替えていくことで、モーションを再生している。今回のプログラムの詳細については省略するが、基本的にはこれと同じ原理で動いている。各フレームでの関節の角度は、配列に格納したポーズのデータから線形補間で求めた。

 ちなみにKHR-3HVには、GUIベースの専用ソフト「HeartToHeart4」が付属しており、ポーズを指定したブロックを線でつなげるだけで、簡単にモーションを作ることができる。ここからデータを手動で移植するのは面倒だったので、モーションファイルからポーズデータだけ抽出するPythonプログラムも作り、これを活用した。

HeartToHeart4の画面 HeartToHeart4の画面[クリックで拡大]

 モーションはいくらでも実装できるのだが、取りあえず、前後左右の歩行、左右の旋回、起き上がり、攻撃といった、バトルに最低限必要なものを用意。それぞれ、ワールド上に配置したコントローラーのボタンから呼び出すように設定した。ロボットの3Dモデルは、筆者の友人の吉村氏がKHR-3HV風のものを作ってくれたので、それを使っている。

 筆者はKHR-3HVをもう10年以上使っているのだが、実際にVRChat内で試してみたところ、ロボットの操作感については、驚くほど違和感がなかった。これなら、ROBO-ONE Lightのトレーニングにも使えるかもしれない。

KHR-3HV実機より少し不安定な印象はあるものの、よく再現できている[クリックで再生]

 リアルだとサーボモーターが焼けたりするため、連続して10分以上動かしたくないところだが、VRであれば故障の心配なく、好きなだけ練習できる。また実機の“お試し”としても使えるかもしれない。これで興味を持った人が実機を買ってくれて、ROBO-ONE Lightに新規参入したら面白い。

 ただ1つ残念だったのは、ロボットの移動で少し“ズル”をしていることだ。本来なら、ロボットは足裏の摩擦により移動すべきなのだが、諸事情により、Unityでそれがうまく実現できなかったため、プログラムからロボットの位置を変えることで、移動を表現している。このあたりは今後の課題としたい。

Copyright © ITmedia, Inc. All Rights Reserved.