1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unity + Oculus Quest2 + ROS2 + 箱庭でロボットを動かす(2/3)

Last updated at Posted at 2022-02-12

概要

TOPPERS/箱庭では,ROS2 で Unity ロボット制御できるようにしていましたが,これが VR 空間上で体験・操作できるようになりました!

ちなみに,こんな感じのことができます!!

この体験をいろんな方と共有したく,3 回に分けてインストール手順を説明しています.

前回は,Oculus を使って,Unityで作られた箱庭VR空間にダイブできるようになりました.ですが,移動することはもちろん,モノをつかむこともできません.

2 回目である今回は,移動とモノをつかめるようにするまでのインストール手順を説明していきます.

なお,今回のトライでは,こちらの記事に助けられました(感謝,感謝)

手順サマリ

  1. 左手を追加する
  • 右手を追加する
  • モノをつかめるようにする
  • レッツ ダイブ!

左手を追加する

左手を追加するために,まずは前回作成したキャラクタ(OVRPlayerController)をプロジェクトビューを開いてみましょう.

image.png

上図の「LeftControllerAnchor」が見えます.ここに,左手の部品をD&Dします.

左手の部品は,Oculusのアセットとして以下にあります.

image.png

それでは,「DistanceGrabHandLeft」をドラッグして,「LeftControllerAnchor」の下にドロップします.

image.png

このまま使えると良いのですが,実は細かなパラメータ設定が必要となりますので,インスペクタビューを見てみます.

image.png

設定が必要となるパラメータは以下です.

  • Handスクリプト
    • Animator
      • 「l_hand_skeletal_lowres」を選択
      • image.png
  • OVRGrabberスクリプト
    • Grip Transform
      • DistanceGrabHandLeft配下にある「gripTrans」をD&Dします
      • image.png
    • Controller
      • 「L_Touch」を選択
    • Parent Transform
      • 「LeftControllerAnchor」をD&Dします
    • Player
      • 「OVRPlayerController」をD&Dします

パラメータ設定が終わった状態はこうなります.
image.png

右手を追加する

右手が不要な方は本ステップはスキップいただけます.
追加したい方は,同じ要領で右手を追加していきましょう.

追加する場所は,「RightControllerAnchor」です.

image.png

右手の部品は,Oculusのアセットとして以下にあります.

image.png

「DistanceGrabHandRight」をドラッグして,「RightControllerAnchor」の下にドロップします.

ここで,DistanceGrabHandRightをドロップして,インスペクタビューを見てみると,左手とは違うことに気づきます.左手は「OVRGrabber」がアタッチされてましたが,右手は「DistanceGrabber」がアタッチされています.

image.png

このままでも良いかもしれないのですが,左手と右手を同時にシミュレーションしようとすると,Assertが発生することがわかりました.

今回は両手を使いたいので,これらのスクリプトを外して,左手と同じスクリプトを割り当てることにします.

まずは,DistanceGrabHandRightのprefabをアンパックし,Handスクリプトを削除します.
次に,以下からHandスクリプトをアタッチします.

image.png

アタッチするとこうなります.
image.png

あとは,左手と同様な手順でパラメータを設定するだけです.
なお,Handスクリプトの「Default Grab Pose」は,以下からD&Dしてください.

image.png

設定後のパラメータはこうなります.

image.png

モノをつかめるようにする

Oculusでモノをつかめるようにするには,2つやるこがあります.

  • GrabManagerを配置する
  • つかみたいモノにDistanceGrabbableスクリプトをアタッチする

GrabManagerを配置する

GrabManagerを配置するには,その入れ物が必要です.

以下のprefabをOVRPlayerController直下にD&Dします.
image.png

こうですね.

image.png

DetectGrabRangeのインスペクタビューを開いて,GrabManagerスクリプトをアタッチしましょう.
GrabManagerスクリプトは以下にあります.
image.png

アタッチ後の状態はこうです.

image.png

つかみたいモノにDistanceGrabbableスクリプトをアタッチする

DistanceGrabbable スクリプトをアタッチするモノには, rigidbody と boxコライダが割り当たっている必要があります.

ここでは,事前に用意している以下の黒い「Cube」を使います.

image.png

DistanceGrabbableは,Oculus のスクリプトとして,こちらにあります.

image.png

これをCubeにアタッチして,インスペクタービューをみるとこんな感じで見えます.

image.png

以上で設定は終わりです!!

レッツ ダイブ!

では,いざダイブです!

ダイブ後,自分の場所がわからなくて,左右を見渡したら,ロボットを確認できました.
目的の場所に移動して,モノをつかめていますよね.

なお,移動のオペレーションは以下の通りです.

  • 場所の移動:左手のスティック
  • 方向転換:右のスティックの左右

お知らせ:箱庭もくもく会

TOPPERS箱庭WGでは,もくもく会を不定期に開催しています.
本記事の内容を実際に試してみたい方や試してみたけど詰まっている方は,ぜひご参加ください.画面共有しながら参加者同士でサポートしたり,一緒に新しい機能を実装したりと”もくもく”しましょう.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?