← トップへ戻る

HOW TO USE

使いかた

ロボットの配置や移動など、基本的な使い方はどの端末でも同じです。操作する場所の選び方と決定のしかたが端末によって異なります。

このページの中身

  1. 6つの手順
  2. ロボットアーム付きの機体では、腕も操作できます
  3. 記録して、同じ場所で再現する
  4. お使いの端末での始めかた
  5. AR の画面を PC や大きな画面に映す
  6. ロボットを重ねた映像を、カメラ映像として配信する
  7. USD や ROS 2 のログ(MCAP)から記録を作る

1. 6つの手順

床に出た青い輪
青い輪は床の位置を指定するときに表示されます

置く場所、移動先。床を指しているときに出ます。

機体の足元に出たオレンジの輪
オレンジの輪はロボットを選択したときに表示されます

選ばれている機体の足元に出ます。点線の輪は行き先です。

  1. 1床を指す

    置きたい場所を指すと、床の上に青い輪が出ます。段差や傾きのある場所でも、実際の床の上に乗ります。

  2. 2機種を選ぶ

    青い輪の位置を決定すると、「ここに置く」メニューが表示されます。「配置」を選ぶと、ロボットの一覧が表示されます。ヒューマノイド型、四足歩行型、ロボットアーム、AMR など、7種類のロボットから選べます。

  3. 3置く

    選んだ場所に、実物と同じ大きさで表示されます。近づいて見上げることも、横から回り込むこともできます。

  4. 4移動先を指す

    置いた機体を選ぶと足元にオレンジの輪が出ます。そのまま床を指すと、行き先に点線の輪が出ます。ロボットから 8 m 以内の場所を移動先に指定してください。

  5. 5動かす

    移動先を決定すると、ロボットはその方向を向いてから移動します。脚のある機体は歩幅に合わせて脚が動きます。

  6. 6操作する・消す

    機体を選ぶとメニューが出ます。「操作」(腕のある機体だけ)で腕を動かし、「置き直す」で別の場所へ置き直し、「削除」で消します。ロボットの足元に表示される ⟲ または ⟳ を選んで決定すると、その場で向きを変えられます。何体でも置けます。

2. ロボットアーム付きの機体では、腕も操作できます

腕を操作している様子
手先を持って動かす

VRゴーグルなら、握ったまま手を動かすと手先がついてきます。手を動かした分だけ、ロボットの手先も動きます。たとえば手を 10cm 動かすと、手先も約 10cm 動きます。

胴を上下させている様子
胴を伸ばす・縮める

昇降する胴を持つ機体(TIAGo++)は、頭上に出る上下の矢印で高さを変えられます。

3. 記録して、同じ場所で再現する

  • AR の中のメニュー「記録」で、床に目印を2つ置いて「記録を保存」を選びます。配置したロボットと移動経路が、アカウントに保存されます。
  • 保存した記録は、アプリの画面の「記録」に並びます。
  • 記録を選んで AR を始め、前回と同じ2か所に目印を置いてメニュー「再現」→「記録を再現」を選ぶと、記録した場所と動きを再現できます。
  • 記録はアカウントごとにサーバに保存されるので、ログインした別の端末にも同じ記録が並びます。通信が切れている間は記録を端末に保存し、「サーバ未保存」と表示します。通信が復旧するとサーバへ送信します。
  • ほかの人へ渡すときは、「ファイルに保存」で .json として書き出し、相手が「ファイルを開く」で読み込みます。
  • 設定で MQTT ブローカーを設定すると、記録内の機器と MQTT メッセージを送受信できます。

4. お使いの端末での始めかた

VRゴーグル

WebXR に対応した機種(Meta Quest 3 / 3S など)。屋内でお使いください。

  1. スマートフォンまたはパソコンで Google アカウントでログインします
  2. ヘッドセットのブラウザで physicalsandbox.com を開き、右上の「VRゴーグル認証」を選びます(6桁のコードが表示されます)
  3. スマートフォンまたはパソコンでアプリの右上のアイコンから「VR ゴーグルをつなぐ」を開き、ヘッドセットに表示された6桁のコードを入力し、「許可する」を押します
  4. 「現地で試す(AR)」を押す
  5. 右のコントローラで指して、トリガーで決める
  6. メニューを閉じたり、選択を取り消したりするには、手を握ります(グリップでも同じ)
  7. ARを終えるときは、床を指して決め、メニューの「AR を終了」を選ぶ

コントローラーを使わず、ハンドトラッキングでも基本的な操作ができます(つまむ=決定、握る=キャンセル)。
置く・動かす・腕・胴:すべて

Android

ARCore 対応の端末と Chrome。屋外でも使えます。

  1. Chrome で physicalsandbox.com を開いてGoogle でログイン
  2. 「現地で試す(AR)」を押す
  3. 端末を床に向けると、画面の中央の床に青い輪が出る
  4. 画面下の「決定」で決める
  5. 腕のある機体を選んで「操作」を押すと、画面下にスティックが出ます。動かし終えたら「終了」

画面をタップしても選択は確定しません。画面に触れただけでロボットを配置しないようにするためです。
置く・動かす・腕・胴:すべて

iOS

Safari は WebXR に対応していないため、WebXR Viewer(無料)が必要です。

  1. App Store から WebXR Viewer を入れる
  2. WebXR Viewer で physicalsandbox.com を開き、Google アカウントにログインします
  3. 「現地で試す(AR)」を押す
  4. 端末を床に向けると、画面の中央の床に青い輪が出る
  5. 青い輪が表示されている位置をタップすると決定します。メニューは、操作したい項目をタップします
  6. 腕のある機体を選んで「操作」を押すと、画面下にスティックが出ます(左右同時にも動かせます)。動かし終えたら「終了」

置く・動かす・腕・胴:すべて

5. AR の画面を PC や大きな画面に映す

画面をほかの人に見せたり録画したりするには、お使いの端末の画面共有・録画機能を使います。端末に表示されている画面が、そのまま別の画面に表示されます。Physical Sandbox 側の設定は要りません。

VRゴーグル

Meta Quest の「キャスト」。ヘッドセットとパソコンを同じ Wi-Fi ネットワークに接続します。

  1. PC の Chrome か Edge で oculus.com/casting を開き、ゴーグルと同じ Meta アカウントでログインする
  2. ゴーグルでメニューを開き、カメラ → キャスト を選ぶ
  3. 映す先にコンピューターを選ぶ

スマホの Meta Horizon アプリにも映せます。

iOS

Mac があれば、QuickTime Player で映して、そのまま録画もできます。

  1. iPhone・iPad を Mac にケーブルでつなぐ
  2. Mac で QuickTime Player を開き、「ファイル」→「新規ムービー収録」を選びます
  3. 録画ボタンの横の ∨ から、つないだ端末を選ぶ

ケーブルなしなら、コントロールセンターの画面ミラーリングで Mac や Apple TV に映せます。

Android

テレビや大きな画面へは「画面のキャスト」。機種によって呼び名が違います。

  1. 画面の上から下へなぞって、クイック設定を開く
  2. 画面のキャスト(スクリーンキャスト・Smart View など)を選ぶ
  3. 映す先(Chromecast・Google TV など)を選ぶ

PC に映すときは、USB でつないで使う無料のツール scrcpy があります。

6. ロボットを重ねた映像を、カメラ映像として配信する

PC の「映像に重ねる」画面の映像(カメラの映像+ロボット)を、ネットワークカメラと同じ形式で配信できます。Node-RED のダッシュボード、録画ソフト、ロボット学習のツール(LeRobot など)が、通常のカメラ映像と同じように読み込めます。映像はお使いのパソコン内で処理され、Physical Sandbox のサーバには届きません。

準備する物

映像を受信する中継ツールを、PS を開くパソコンと同じパソコンに用意します。

  1. PC と Web カメラ
  2. Chrome か Edge
  3. Node-RED(同じ PC で起動。http://localhost:1880)
  4. Node-RED の ps camera ノード(公開版の nodes/node-red-contrib-ps-camera)

Node-RED を使わないときは、公開版の tools/camera_relay.py を動かします(http://localhost:8790)。

手順

「映像配信」を有効にしている間だけ、映像を配信します。画面に「配信中」と表示されます。

  1. Node-RED に ps camera ノードを1つ置き、名前(cam-1)を付けてデプロイする
  2. 「現地で試す(AR)」→「この PC で映像に重ねる」→「カメラを使う」
  3. 画面の方眼を机や床に合わせ、「決定」で位置を決定して、ロボットを置く
  4. 上の帯の「映像配信」を押す
  5. ブラウザが「このサイトが手元の機器へ接続しようとしています」と尋ねたら、許可する

絵に写るのは、カメラの映像とロボットだけです。方眼・メニュー・ラベルは写りません。

読む側

カメラ映像を表示できるアプリや機器に、以下のアドレスを設定します。

  1. 連続して取得する: http://localhost:1880/ps-camera/cam-1.mjpg
  2. 1枚だけ取得する: http://localhost:1880/ps-camera/cam-1.jpg
  3. Node-RED の中では、ノードの出口から1枚ずつ(JPEG)流れます

読めるのは同じ PC の中からだけです。5 秒以上新しい映像が届かない場合、古い映像の配信を停止します。Safari では試していません。

7. USD や ROS 2 のログ(MCAP)から記録を作る

Blender などで付けた USD 形式のロボット動作データや、ROS 2 で記録した走行ログ(MCAP)を、JSON 形式の記録に変換してから「ファイルを開く」で読み込みます。Physical Sandbox は USD も MCAP もそのままは開けません。変換には公開版に付属するツールを使います。変換はお使いのパソコンの中で済み、場面のデータは Physical Sandbox のサーバには届きません。

準備する物

公開版(physical-sandbox)の tools/ フォルダーにある変換ツールを、パソコンの Python 環境で実行します。

  1. 公開版のリポジトリ(GitHub)を PC に置き、tools/dev-serve.sh を一度動かす(ロボットのモデルデータが生成されます)
  2. Python 3 と、USD なら pip install usd-core、MCAP なら pip install mcap mcap-ros2-support
  3. Blender を使うなら 5.3 以降(3D Gaussian Splatting(3DGS)形式を読み込めます)。手順は公開版の examples/usd/blender/README.md

変換ツールが、座標や関節の動き、時刻の形式を変換します: 床の目印 2 点を原点と +x に、機体の関節を角度に、時刻を 1 秒 30 コマに。選んだ物だけを書き出せば、絞り込みの指定は要りません。

USD(Blender など)

場面に目印 2 点とロボットの機種名が要ります。

  1. Blender で PhysicalSandbox という空のオブジェクトの下に Marker1・Marker2 を置く(現実の床の目印 2 点の場所)
  2. ロボットモデルは公開版の examples/usd/blender/ps_robot_import.py を使って配置します(機種名 ps_model が付きます)。関節に対応するオブジェクトを回転させ、キーフレームを設定します
  3. File → Export → USD で、Animation と Custom Properties をオン、Selection Only で書き出す
  4. python3 tools/usd_to_record.py 場面.usda --out 場面.recording.json --site desk
  5. Physical Sandbox の「ファイルを開く」で 場面.recording.json を選び、「選ぶ」→「現地で試す(AR)」→ 目印 2 点を置いて「再現」

USD の単位と上向きの軸は道具が読み替えます。他のツールで作ったシーン全体を含む USD ファイルは、--model /World/arm=so101 や --marker1 x,y,z --marker2 x,y,z でロボットモデルと目印の位置を指定します。

ROS 2 のログ(MCAP)

bag には複数のデータが記録されているため、機体ごとに使用するトピックを指定します。

  1. rosbag2 の sqlite3 形式なら ros2 bag convert で MCAP にする
  2. python3 tools/mcap_to_record.py 走行.mcap --out 走行.recording.json --site yard --device scout=scout,odom=/odom --device arm=so101,joints=/joint_states
  3. 目印を 2 点指定する場合は、map 座標を使います(--marker1 x,y,z --marker2 x,y,z)。指定しない場合は、原点と +x 方向を目印として扱います
  4. 「ファイルを開く」で 走行.recording.json を選ぶ

読めるのは odometry(nav_msgs/Odometry)、/tf の親子 1 組、joint_states(sensor_msgs/JointState)です。ROS は要りません。

Google でログインして始める