Tutorial using ROS for ver.3

概要

人間とロボットが同じ仮想空間にログインし、人間がロボットに対して指差しでCleanup指示を出します。

人間側は、Windows+VRデバイス(Oculus Rift)を使用して仮想空間にログインします。
ロボット側は、Windows+Ubuntu(ROS:Robot Operating System)を使用して仮想空間にログインします。

遠隔地の人間とロボット(ROS)がインターネット経由で繋がれ、同じ仮想空間でコミュニケーションを取ることが出来ます。

CleanupUsingCloudAndVR_Overview.png

前提条件

共通の前提条件

人間とロボットの共通の前提条件としてネットワークを使用します。

クラウドにはPhoton 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

※ウイルス対策ソフトが通信を遮ぎらないように注意してください。

クラウドを使用する場合とローカルサーバを使用する場合の環境構築方法は、環境構築にて説明します。

人間(VR)側の前提条件

ロボット(ROS)側の前提条件

環境構築

環境構築手順は、人間(VR)側とロボット(ROS)側で共通です。

クラウドを使用する場合は、4a.クラウド環境を構築してください。
ローカルサーバを使用する場合は、4b.ローカルサーバ環境を構築してください。

1. Photonアカウントの作成

まずPhotonのアカウントを作成する必要があります。
以下の手順で作成してください。

  1. Photonの公式サイトにアクセスします。
  2. ページ右上のサインインからPhotonのアカウントを作成します。

2. Oculus Integrationのインポート

  1. 以下のリンクから、Oculus Integration for Unity ver.14.0 をダウンロードします。
    https://developer.oculus.com/downloads/package/unity-integration-archive/14.0/
  2. UnityでSIGVerseプロジェクトを開きます。
  3. Unityメニューの[Assets]-[Import Package]-[Custom Package...]をクリックします。
  4. "OculusIntegration_14.0.unitypackage"を選択します。
  5. [Import]ボタンをクリックします。
  6. "Update Spatializer Plugins"画面で[Upgrade]ボタンを押下します。
  7. "Restart Unity"画面で[Restart]ボタンを押下します。
  8. "Update Oculus Utilities Plugin"画面で[Yes]ボタンを押下します。
  9. "Restart Unity"画面で[Restart]ボタンを押下します。
  10. Consoleウィンドウにエラーが出ていないことを確認してください。

3. OculusとPUNライブラリの使用

  1. [SIGVerse]-[SIGVerse Settings]からSIGVerse設定画面を開きます。
  2. [Define symbols Settings]の[Use Oculus]と[Use PUN]にチェックを入れます。

#ref(): File not found: "SIGVerseSettingsOculusPUN.png" at page "(HSR)クラウドとVRを使用したCleanupタスクの実行"

4a. クラウド環境の構築

Photon Cloudのフリープランでは同時に20人まで接続可能です。詳細は次のページを参照してください。
https://www.photonengine.com/en-US/Realtime/pricing

クラウドに接続するにはPUN(Photon Unity Networking)を使用します。
PUN環境構築手順は次の通りです。

  1. Photonの公式サイトにサインインします。
  2. アプリケーションIDを取得します。
    1. サインイン後のダッシュボードで、[新しくアプリを作成する]ボタンを押下します。
    2. [Photonの種別]を"Photon PUN"にし、アプリケーション名を設定します。(アプリケーション名は例えば"CleanupVR"など。)
    3. [作成する]ボタンを押下します。
    4. ダッシュボードのアプリ一覧にPUNのアプリが追加されていることを確認し、"アプリケーションID"をメモします。
      (IDは36桁でクリックすると全桁表示されます。)
      PhotonAppId.png
  3. UnityプロジェクトにPUN2アセットをインポートします。
    1. UnityでSIGVerseプロジェクトを開きます。
    2. Unity Asset StoreのPUN2のページにアクセスします。
    3. ページ右上からUnityアカウントにサインインします。
    4. [Open in Unity(Unityで開く)]ボタンを押下すると、Unityの[Asset Store]タブにPUN2が表示されます。
    5. 一部のライブラリのチェックを外します。
      "Photon/PhotonLibs/WebSocket/websocket-sharp.dll"のチェックボックスを外してください。websocket-sharp.dllはSIGVerseアセットの中に既に含まれており競合してしまうからです。

      #ref(): File not found: "PUN2ExcludeWebsocket-sharp.png" at page "(HSR)クラウドとVRを使用したCleanupタスクの実行"

    6. [Import]ボタンをクリックします。
    7. [PUN Wizzard]が開かれるので"AppId"の欄に前述の"アプリケーションID"を入力し、[Setup Project]ボタンを押下します。

      #ref(): File not found: "PunWizardCloud.png" at page "(HSR)クラウドとVRを使用したCleanupタスクの実行"

      次のような[PhotonServerSettings]画面が開かれます。
      PhotonServerSettingsForCloud.png
      (この画面は[Window]-[Photon Unity Networking]-[PUN Wizzard]-[Locate PhotonServerSettings]からも開けます。AppIdは"App Id Realtime"に設定されます。)
  4. Unityメニューの[Assets]-[Reimport All]をクリックします。
  5. [Reimport]ボタンを押下してリビルドします。

4b. ローカルサーバ環境の構築

ローカルネットワークにPhoton Serverを立てて、クラウドの代わりにすることもできます。

  1. Photonの公式サイトにサインインします。
  2. Photon Serverをインストールします。
    1. Photon Serverのページにアクセスします。
    2. "Download SDK"の右のバージョン番号をクリックして、実行ファイルをダウンロードします。
    3. ダウンロードしたファイルを実行し、インストールしたいディレクトリに展開します。
  3. Photon Serverを起動します。(Windowsを再起動した後などはPhoton Serverも再度起動する必要があります。
    1. "Photon-OnPremise-Server-SDK_vxxxxxxx\deploy\bin_Win64"フォルダの中のPhotonControl.exeをダブルクリックしてアプリを起動します。
      (Windowsタスクバーにアプリアイコンが現れます)
    2. WindowsタスクバーのPhotonControlアイコンをクリックして、[Game Server IP Config]で適切なサーバのIPアドレスを選択します。

      #ref(): File not found: "PhotonServerIP.png" at page "(HSR)クラウドとVRを使用したCleanupタスクの実行"

    3. [LoadBalancing (MyCloud)]-[Start as application]をクリックしてPhoton Serverを起動します。
    4. [LoadBalancing (MyCloud)]-[Run TestClient (LoadBalancing]をクリックすると動作確認が出来ます。
  4. UnityプロジェクトにPUN2アセットをインポートします。
    1. UnityでSIGVerseプロジェクトを開きます。
    2. Unity Asset StoreのPUN2のページにアクセスします。
    3. ページ右上からUnityアカウントにサインインします。
    4. [Open in Unity(Unityで開く)]ボタンを押下すると、Unityの[Asset Store]タブにPUN2が表示されます。
    5. 一部のライブラリ以外をImportします。
      "Photon/PhotonLibs/WebSocket/websocket-sharp.dll"のチェックボックスを外してください。websocket-sharp.dllはSIGVerseアセットの中に既に含まれており重複してしまうからです。

      #ref(): File not found: "PUN2ExcludeWebsocket-sharp.png" at page "(HSR)クラウドとVRを使用したCleanupタスクの実行"

    6. [PUN Wizzard]が開かれるので、[Skip]ボタンを押下します。

      #ref(): File not found: "PunWizardLocalServer.png" at page "(HSR)クラウドとVRを使用したCleanupタスクの実行"

    7. [PhotonServerSettings]が開かれるので以下の設定を行います。
      • [Use Name Server]のチェックを外す
      • [Server]にPhoton ServerのIPアドレスを入力する
      • [Port]に"5055"を入力する。
        PhotonServerSettingsForLocalServer.png
        (この画面は[Window]-[Photon Unity Networking]-[PUN Wizzard]-[Locate PhotonServerSettings]からも開けます。)
  5. Unityメニューの[Assets]-[Reimport All]をクリックします。
  6. [Reimport]ボタンを押下してリビルドします。

実行手順

人間(VR)側として実行する場合は、こちらの手順に従って実行してください。

ロボット(ROS)側として実行する場合は、こちらの手順に従って実行してください。

どちらから先に実行しても問題ありませんが、ローカルサーバを使用する場合は、先にPhoton Serverを起動してください。

人間(VR)側の実行手順

起動手順

* ローカルサーバを使用する場合は、先にPhoton Serverを起動してください。

Windows側の起動手順

  1. Oculus Riftを接続し使用できる状態にしてください。
  2. こちらを参考に[Assets/SIGVerse/ExampleScenes/HSR/HsrCleanupVR(.unity)]シーンを開始します。
  3. [Human]ボタンを押下して、人間としてログインしてください。
  4. ロボットがログインしていない場合は、ロボットがログインするのを待ちます。

Windows (Login Screen)

HSRCleanupVRLogin.png

実行

ヒューマンアバターを操作して、ロボットにCleanup指示を出してください。

基本的には次のような流れになります。

  1. 把持対象を指差しながら"Pick it up!"というメッセージをロボットに送信する。
  2. 届け先を指差しながら"Clean up!"というメッセージを送信する。

Oculus Touchの操作方法は次の通りです。

Windows

HSRCleanupVRHuman.png

ロボット(ROS)側の実行手順

起動手順

* ローカルサーバを使用する場合は、先にPhoton Serverを起動してください。

まずUbuntu側を起動します。その後 Windows側を起動してください。

Ubuntu側の起動手順

新しいターミナルを開き、以下のコマンドを実行します。

$ roslaunch sigverse_hsr_teleop_key teleop_key.launch

rvizも起動する場合は、以下のコマンドを実行します。

$ roslaunch sigverse_hsr_teleop_key teleop_key_with_rviz.launch

Windows側の起動手順

  1. こちらを参考に[Assets/SIGVerse/ExampleScenes/HSR/HsrCleanupVR(.unity)]シーンを開始します。
  2. [Robot]ボタンを押下して、ロボットとしてログインしてください。
  3. 人間がログインしていない場合は、人間がログインするのを待ちます。

Windows (Login Screen)

HSRCleanupVRLogin.png

実行

Ubuntu側の teleop_key.launch のターミナル上でHSRをキー操作することが出来ます。

ロボットを操作して机の上にあるオブジェクトの中から1つを把持し、人間が指さした場所に運んでください。

※操作方法の詳細はターミナルの表示を確認してください。

終了する際は、Unity側を停止させてからROS側を終了してください。

Ubuntu側

HSRCleanupVRRobotUbuntu.png

Windows側 (Logged in)

HSRCleanupVRRobotWindows.png

Windows側 (Pointing)

#ref(): File not found: "HSRCleanupVRRobotWindowsPointing.png" at page "(HSR)クラウドとVRを使用したCleanupタスクの実行"


Front page   New List of pages Search Recent changes   Help   RSS of recent changes