検索
連載

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

新型コロナウイルス感染症によりロボット競技会が大きな影響を受ける中、ROBO-ONE Lightの公認機をリモート操縦で戦い合わせるためのシステムを独自に構築した筆者の大塚実氏。しかしこの環境でもさまざまな制限があるということで、注目を集めるメタバース(というかVR)に戦いの舞台を求めた。VRでロボットバトル、どれだけやれんのか!

Share
Tweet
LINE
Hatena

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.

ページトップに戻る