[[Tutorial using ROS for ver.3]] * UNDER CONSTRUCTION [#e505a109] * UNDER CONSTRUCTION [#g20367bd] * UNDER CONSTRUCTION [#i3f16a16] * UNDER CONSTRUCTION [#u7e79004] * UNDER CONSTRUCTION [#v187cbbc] * UNDER CONSTRUCTION [#z41d367f] #contents * 概要 [#me21a0b1] 人間とロボットが同じ仮想空間にログインし、人間がロボットに対して指差しでCleanup指示を出します。 人間側は、Windows+VRデバイス(Oculus Rift)を使用して仮想空間にログインします。~ ロボット側は、Windows+Ubuntu(ROS:Robot Operating System)を使用して仮想空間にログインします。 遠隔地の人間とロボット(ROS)がインターネット経由で繋がれ、同じ仮想空間でコミュニケーションを取ることが出来ます。 * 前提条件 [#r10a7b3e] ** 共通の前提条件 [#ofa841b3] 人間とロボットの共通の前提条件としてネットワークを使用します。 クラウドには[[Photon Realtime>https://www.photonengine.com/en-US/Realtime]]を使用しますが、インターネット接続時に以下のページのポート番号を使用します。~ ポートが使用可能かどうかを事前に確認してください。~ https://doc.photonengine.com/en-us/realtime/current/connection-and-authentication/tcp-and-udp-port-numbers ポートが使用できない場合クラウドは使用できませんが、ローカルネットワークにPhoton Serverを立てて代わりにすることは可能です。~ Photon ServerはWindowsにのみ対応しています。~ https://doc.photonengine.com/en-us/server/current/operations/requirements クラウドを使用する場合とローカルサーバを使用する場合の環境構築方法は、[[環境構築>#Environments]]にて説明します。 ** 人間(VRデバイス)側の前提条件 [#s38cc158] - Windows環境~ [[SIGVerseアセットを使用するための基本的な要件>Tutorial for ver.3#SystemRequirements]]以外にも、[[Oculus Riftを使用するための要件>https://support.oculus.com/248749509016567/]]も必要です。 - Oculus Rift~ Oculus Riftは、Oculus Rift CV1及びOculus Rift Sにて動作確認済みです。~ [[Oculus Software>https://www.oculus.com/setup/]]をWindowsにインストールし、Oculus Riftを使用するための基本的な環境を整えてください。 ** ロボット(ROS)側の前提条件 [#y682edd3] - Windows環境とUbuntu環境~ 詳細は[[こちら>Tutorial using ROS for ver.3#SystemRequirements]]を参照。 * 環境構築 [#Environments] クラウドを使用する場合は、[[4a.クラウド環境を構築>#PhotonCloud]]してください。~ ローカルサーバを使用する場合は、[[4b.ローカルサーバ環境を構築>#PhotonServer]]してください。 ** 1. Photonアカウントの作成 [#CreatePhotonAccount] まずPhotonのアカウントを作成する必要があります。~ 以下の手順で作成してください。 + [[Photonの公式サイト>https://www.photonengine.com/]]にアクセスします。 + ページ右上のサインインからPhotonのアカウントを作成します。 ** 2. Oculus Utilitiesのインポート [#k0ec0826] Oculus UtilitiesをUnityプロジェクトにインポートする必要があります。。 +以下のリンクから Oculus Utilities for Unity ver.1.28.0 をダウンロードします。~ https://developer.oculus.com/downloads/package/oculus-utilities-for-unity-5/1.28.0/ +ダウンロードしたzipファイルを解凍します。 +UnityでSIGVerseプロジェクトを開きます。 +Unityメニューの[Assets]-[Import Package]-[Custom Package...]をクリックします。 +解凍したフォルダ中の"OculusUtilities.unitypackage"を選択します。 +[Import]ボタンをクリックします。 +"Update Oculus Utilities Plugin"画面で[Yes]ボタンを押下します。 +"Restart Unity"画面で[Restart]ボタンを押下します。 //+Unityの[Console]タブに"Multiple plugins with the same name 'ovrplugin'..."エラーが発生するので、修正します。~ //参考1:https://developer.oculus.com/downloads/package/oculus-utilities-for-unity-5/~ //'''* If you have updated your OVRPlugin version from Utilities, you may see a spurious error message when the Editor first launches saying “Multiple plugins with the same name 'ovrplugin'”. Please disregard.'''~ //参考2:https://forum.unity.com/threads/multiple-plugins-with-the-same-name-error.466447/~ //++ [Project]タブの"Assets/OVR/Plugins/1.28.0/Win/OVRPlugin.dll"を選択します。 //++ [Inspector]タブの[Select platforms for plugin]のチェックを全て外します。 //++ [Apply]ボタンを押下します。 //#ref(OVRPluginFixError.png) //Import Oculus Utilities for Unity //Download Oculus Utilities for Unity ver.1.28.0 from the following link. //https://developer.oculus.com/downloads/package/oculus-utilities-for-unity-5/1.28.0/ //Unzip the downloaded file. //Open this project with Unity. //Click [Assets]-[Import Package]-[Custom Package...]. //Select and open "OculusUtilities.unitypackage". //Click [Import] button. //Click [Yes] on "Update Oculus Utilities Plugin" window. //Click [Restart] on "Restart Unity" window. ** 3. OculusとPUNライブラリの使用設定 [#y0decaa9] + [SIGVerse]-[SIGVerse Settings]からSIGVerse設定画面を開きます。 + [Define symbols Settings]の[Use Oculus]と[Use PUN]にチェックを入れます。 #ref(SIGVerseSettingsOculusPUN.png) ** 4a. クラウド環境の構築 [#PhotonCloud] Photon Cloudのフリープランでは同時に20人まで接続可能です。詳細は次のページを参照してください。~ https://www.photonengine.com/en-US/Realtime/pricing クラウドに接続するには[[PUN(Photon Unity Networking)>https://www.photonengine.com/en-US/PUN]]を使用します。~ PUN環境構築手順は次の通りです。 + [[Photonの公式サイト>https://www.photonengine.com/]]にサインインします。 + アプリケーションIDを取得します。 ++ サインイン後のダッシュボードで、[新しくアプリを作成する]ボタンを押下します。 ++ [Photonの種別]を"Photon PUN"にし、アプリケーション名を設定します。(アプリケーション名は例えば"CleanupVR"など。) ++ [作成する]ボタンを押下します。 ++ ダッシュボードのアプリ一覧にPUNのアプリが追加されていることを確認し、"アプリケーションID"をメモします。~ (IDは36桁でクリックすると全桁表示されます。) #ref(PhotonAppId.png) + UnityプロジェクトにPUN2アセットをインポートします。 ++ UnityでSIGVerseプロジェクトを開きます。 ++ Unity Asset Storeの[[PUN2のページ>https://assetstore.unity.com/packages/tools/network/pun-2-free-119922]]にアクセスします。 ++ [Open in Unity(Unityで開く)]ボタンを押下すると、Unityの[Asset Store]タブにPUN2が表示されるので、Importします。~ このとき、''"Photon/PhotonLibs/WebSocket/websocket-sharp.dll"のチェックボックスを外してください。''websocket-sharp.dllはSIGVerseアセットの中に既に含まれており重複してしまうからです。 #ref(PUN2ExcludeWebsocket-sharp.png) ++ [PUN Wizzard]が開かれるので"AppId"の欄に前述の"アプリケーションID"を入力し、[Setup Project]ボタンを押下します。~ (AppIdは、[Window]-[Photon Unity Networking]-[PUN Wizzard]-[Locate PhotonServerSettings]からも設定できます。"App Id Realtime"にAppIdを設定します。) #ref(PunWizardCloud.png) 次のような[PhotonServerSettings]情報が開かれます。 #ref(PhotonServerSettingsForCloud.png) ** 4b. ローカルサーバ環境の構築 [#PhotonServer] ローカルネットワークにPhoton Serverを立てて、クラウドの代わりにすることもできます。 + [[Photonの公式サイト>https://www.photonengine.com/]]にサインインします。 + ライセンスファイルを取得します。 ++ [[Photon Serverのページ>https://www.photonengine.com/en-US/Server]]で[TRY FREE LICENSE]をクリックします。 ++ [DOWNLOAD FREE]をクリックしてライセンスファイルを取得します。~ (ライセンスファイルは"メールアドレス.Photon-vX.free.100-ccu.license"という名前です。) + Photon Serverをインストールします。 ++ [[Photon Serverのページ>https://www.photonengine.com/en-US/sdks#server-sdkserverserver]]にアクセスします。 ++ "Download SDK"の右のバージョン番号をクリックして、実行ファイルをダウンロードします。 ++ 実行ファイルをダウンロードし、インストールしたいディレクトリに展開します。 ++ 展開したフォルダの"Photon-OnPremise-Server-SDK_vxxxxxxx\deploy\bin_Win64"をエクスプローラで開きます。 ++ 前述のライセンスファイルを配置します。例えば次の図のようになります。 #ref(PhotonServerFolder.png) + Photon Serverを起動します。(''Windowsを再起動した後などはPhoton Serverも起動する必要があります。'') &aname(LaunchPhotonServer); ++ インストールしたフォルダの中のPhotonControl.exeをダブルクリックしてアプリを起動します。~ (タスクバーにアプリアイコンが現れます) ++ WindowsタスクバーのPhotonControlアイコンをクリックして、[Game Server IP Config]で適切なサーバのIPアドレスを選択します。 #ref(PhotonServerIP.png) ++ [LoadBalancing (MyCloud)]-[Start as application]をクリックしてPhoton Serverを起動します。 ++ [LoadBalancing (MyCloud)]-[Run TestClient (LoadBalancing]をクリックすると動作確認が出来ます。 + UnityプロジェクトにPUN2アセットをインポートします。 ++ UnityでSIGVerseプロジェクトを開きます。 ++ Unity Asset Storeの[[PUN2のページ>https://assetstore.unity.com/packages/tools/network/pun-2-free-119922]]にアクセスします。 ++ [Open in Unity(Unityで開く)]ボタンを押下すると、Unityの[Asset Store]タブにPUN2が表示されるので、Importします。~ このとき、''"Photon/PhotonLibs/WebSocket/websocket-sharp.dll"のチェックボックスを外してください。''websocket-sharp.dllはSIGVerseアセットの中に既に含まれており重複してしまうからです。 #ref(PUN2ExcludeWebsocket-sharp.png) ++ [PUN Wizzard]が開かれるので、[Skip]ボタンを押下します。 #ref(PunWizardLocalServer.png) ++ [PhotonServerSettings]が開かれるので以下の設定を行います。 --- [User Name Server]のチェックを外す --- [Server]にPhoton ServerのIPアドレスを入力する --- [Port]に"5055"を入力する。 #ref(PhotonServerSettingsForLocalServer.png) * 人間(VR)側の実行手順 [#g6353dd6] ** 起動手順 [#vafd19d3] ''* ローカルサーバを使用する場合は、先に[[Photon Serverを起動>#LaunchPhotonServer]]してください。'' *** Windows側の起動手順 [#t197903c] + Oculus Riftを接続し使用できる状態にしてください。 + [[こちら>Tutorial using ROS for ver.3#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/HSR/HsrCleanupVR(.unity)]シーンを開始します。 + [Human]ボタンを押下して、人間としてログインしてください。 + ロボットがログインしていない場合は、ロボットがログインするのを待ちます。 Windows (Login Screen) #ref(HSRCleanupVRLogin.png) ** 実行 [#v04386d7] ヒューマンアバターを操作して、ロボットにCleanup指示を出してください。 基本的には次のような流れになります。 + 把持対象を指差しながら"Pick it up!"というメッセージをロボットに送信する。 + 届け先を指差しながら"Clean up!"というメッセージを送信する。 Oculus Touchの操作方法は次の通りです。 - 中指トリガーを引くと、手が指差し姿勢になります。 - AまたはXボタンを押下すると、"Pick it up!"というメッセージをロボットに送信します。 - BまたはYボタンを押下すると、"Clean up!"というメッセージをロボットに送信します。 - 左スティックを倒すと、倒した方向に移動します。 - 右スティックを押下すると、"Good!"というメッセージをロボットに送信します。 - 左スティックを押下すると、"Bad!"というメッセージをロボットに送信します。 Windows #ref(HSRCleanupVRHuman.png) * ロボット(ROS)側の実行手順 [#u9fec3a1] ** 起動手順 [#vafd19d3] ''* ローカルサーバを使用する場合は、先に[[Photon Serverを起動>#LaunchPhotonServer]]してください。'' まずUbuntu側を起動します。その後 Windows側を起動してください。 *** Ubuntu側の起動手順 [#qd09b4ab] 新しいターミナルを開き、以下のコマンドを実行します。 $ roslaunch sigverse_hsr_teleop_key teleop_key.launch rvizも起動する場合は、以下のコマンドを実行します。 $ roslaunch sigverse_hsr_teleop_key teleop_key_with_rviz.launch *** Windows側の起動手順 [#t197903c] + [[こちら>Tutorial using ROS for ver.3#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/HSR/HsrCleanupVR(.unity)]シーンを開始します。 + [Robot]ボタンを押下して、ロボットとしてログインしてください。 + 人間がログインしていない場合は、人間がログインするのを待ちます。 Windows (Login Screen) #ref(HSRCleanupVRLogin.png) ** 実行 [#v04386d7] Ubuntu側の teleop_key.launch のターミナル上でHSRをキー操作することが出来ます。 ロボットを操作して机の上にあるオブジェクトの中から1つを選んで把持し、人間が指さした場所に運んでください。 ※操作方法の詳細はターミナルの表示を確認してください。 終了する際は、Unity側を停止させてからROS側を終了してください。 Ubuntu #ref(HSRCleanupVRRobotUbuntu.png) Windows (Logged in) #ref(HSRCleanupVRRobotWindows.png) Windows (Pointing) #ref(HSRCleanupVRRobotWindowsPointing.png)