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
またライセンス認証のためにPhoton Serverが動いているPCはインターネットに接続している必要があります。

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

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

人間(VR)側の前提条件

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

環境構築

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

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

1. Photonアカウントの作成

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

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

2. Oculus Utilitiesのインポート

Oculus UtilitiesをUnityプロジェクトにインポートする必要があります。。

  1. 以下のリンクから Oculus Utilities for Unity ver.1.28.0 をダウンロードします。
    https://developer.oculus.com/downloads/package/oculus-utilities-for-unity-5/1.28.0/
  2. ダウンロードしたzipファイルを解凍します。
  3. UnityでSIGVerseプロジェクトを開きます。
  4. Unityメニューの[Assets]-[Import Package]-[Custom Package...]をクリックします。
  5. 解凍したフォルダ中の"OculusUtilities.unitypackage"を選択します。
  6. [Import]ボタンをクリックします。
  7. "Update Oculus Utilities Plugin"画面で[Yes]ボタンを押下します。
  8. "Restart Unity"画面で[Restart]ボタンを押下します。

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. ライセンスファイルを取得します。
    1. Photon Serverのページで[TRY FREE LICENSE]をクリックします。
    2. [DOWNLOAD FREE]をクリックしてライセンスファイルを取得します。
      ライセンスファイルは"メールアドレス.Photon-vX.free.100-ccu.license"という名前です。
  3. Photon Serverをインストールします。
    1. Photon Serverのページにアクセスします。
    2. "Download SDK"の右のバージョン番号をクリックして、実行ファイルをダウンロードします。
    3. ダウンロードしたファイルを実行し、インストールしたいディレクトリに展開します。
    4. 展開したフォルダの"Photon-OnPremise-Server-SDK_vxxxxxxx\deploy\bin_Win64"をエクスプローラで開きます。
    5. 前述のライセンスファイルを配置します。例えば次の図のようになります。

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

  4. Photon Serverを起動します。(Windowsを再起動した後などはPhoton Serverも起動する必要があります。
    1. 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]をクリックすると動作確認が出来ます。
  5. 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
  6. Unityメニューの[Assets]-[Reimport All]をクリックします。
  7. [Reimport]ボタンを押下してリビルドします。

実行手順

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

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

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

人間(VR)側の実行手順

起動手順

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

Windows側の起動手順

  1. Oculus Riftを接続し使用できる状態にしてください。
  2. こちらを参考に[Assets/SIGVerse/SampleScenes/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/SampleScenes/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