- Unity :
2021.3.1f1 LTS
- ROS# :
version 1.6
- Unity 개발 환경 구축
- Unity Hub 실행
install
버튼을 선택 시Android Build Support
플러그 인 추가Android SDK
,Android JDK
모두 선택
- 보유한 Oculus Quest 2의 개발자 모드를 유효화
- 링크에서 Organization 작성
- 휴대폰 Oculus 앱에서
설정
-기타 설정
-개발자 모드
-on
선택
- 프로젝트 작성
- 3D 템플릿 선택
- Build Setting 변경
File
-Build Setting
선택- Platform에서
Android
선택 후Switch Platform
클릭
- Oculus Integration
Window
-Asset Store
선택 후Oculus Integration
설치 후 import
- XR Plug-in Management 설치
Window
-Package Manager
선택XR Plug-in Management
설치
Player Setting
변경
Edit
-Project Settings
-Player
-Other Settings
선택Package Name
설정Minimum API Level
:Android 7.1 'Nougat'(API level 25)
API Compatibility Level
:NET 4.x
XR Plug-in Management
:Oculus
- ROS# import
- 링크에서
RosSharp.unitypackage
다운로드 Asset
-Import Package
-Custom Package
에서 다운로드한 패키지 선택
- 추가 세팅
Edit
-Project Settings
-Player
-Other Settings
에서 추가 세팅Rendring
-Color Space
:Linear
선택Configuration
-Active Input Handling
:Both
선택
Hierarchy
-Main Camera
삭제Project
에서Asset/Oculus/VR/Prefabs
열고OVRCameraRig
를Hierarchy
에 드래그 & 드롭OVRCameraRig
의OVR Manager
스크립트의 Target Devices를Quest
로 변경
Project
-Assets/Oculus/VR/Prefabs
-OVRControllerPrefab
을Hierarchy
-RightControllerAnchor
에 드랍LeftControllerAnchor
에도 똑같이 하고Inspector
-Controller
-L Tracked Remote
로 변경Oculus
-Tools
-Remove AndroidManifest.xml
Create store-compatible AndroidManifest.xml
- 아래를 따라 코드 변경
<!--category android:name="android.intent.category.INFO"/-->
<category android:name="android.intent.category.LAUNCHER"/>
-
Unity와 Oculus Quest 2를 유선 연결 해준 뒤,
Build and Run
실행 -
Oculus Quest 2 실행 후, 알 수 없는 앱을 선택한 후 설정해 준 Package Name의 앱을 실행
Hierarchy
에서 오른쪽 클릭 후Create Empty
-Game Object
, 이름을RosConnector
로 변경Project
-Assets/RosSharp/Scripts/RosBridgeClient/RosCommunication
RosConnector
script를RosConnector
Object에 드래그 & 드롭
- 아래의 명령을 통해
RosBridge Server
install
$ sudo apt-get install ros-<rosdistro>-rosbridge-server
$ roslaunch rosbridge_server rosbridge_websocket.launch
-
ROS PC와 Oculus Quest 2가 같은 Wifi에 연결되어야 함
-
연결 후 ROS PC terminal에
Client Connected
가 뜨면 성공
Hierarchy
에서 오른쪽 클릭 후3D Object
-Plane
작성 후ImageReceiver
로 변경Inspector
에서 다음과 같이 변경
Position
: (0,0,10)Rotation
: (90,0,0)Scale
: (-1,-1,0.75)
Project
에서Assets/RosSharp/Scripts/RosBridgeClient/RosCommunication
ImageSubscriber
스크립트를RosConnector
Object에 터치- 터치한
ImageSubscriber
의 Topic을/camera/color/image_raw/compressed
로 설정 MessageReceiver
에ImageReceiver
Object를 드래그 & 드랍
- PC 설정 (D435i 예시)
$ roslaunch rosbridge_server rosbridge_websocket.launch
$ roslaunch realsense2_camera rs_camera.launch
Project
-Assets/RosSharp/Scripts/RosBridgeClient/RosCommunication
에서
PoseStampedPublisher
스크립트를RosConnector
Object에 터치- 이후 토픽 명을 설정
- 세 개의 객체를
Hierarchy
에서 드래그 & 드랍 - 헤드셋 :
CenterEyeAnchor
- L컨트롤러 :
LeftControllerAnchor
- R컨트롤러 :
RightControllerAnchor
Project
-Assets/RosSharp/RosBridgeClient/RosCommunication
에서
JoyPublisher
스크립트를RosConnector
Object에 터치- 토픽 명 설정
Assets/RosSharp/Scripts/RosBridgeClient/MessageHandling
에서JoyAxisReader
스크립트와JoyButtonReader
를 필요한만큼RosConnector
에 터치JoyAxisReader
에서 읽고싶은 Name을JoyButtonReader
의 Name에 설정