diff --git a/README.md b/README.md index 2d26b1e..1f01578 100644 --- a/README.md +++ b/README.md @@ -169,13 +169,13 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ sudo ufw allow 8012 # 2. Configure certificate paths, choose one method -# 2.1 Environment variables (optional) +# 2.1 User config directory (optional) +(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ mkdir -p ~/.config/xr_teleoperate/ +(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ cp cert.pem key.pem ~/.config/xr_teleoperate/ +# 2.2 Environment variables (optional) (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ echo 'export XR_TELEOP_CERT="$HOME/xr_teleoperate/teleop/televuer/cert.pem"' >> ~/.bashrc (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ echo 'export XR_TELEOP_KEY="$HOME/xr_teleoperate/teleop/televuer/key.pem"' >> ~/.bashrc (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ source ~/.bashrc -# 2.2 User config directory (optional) -(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ mkdir -p ~/.config/xr_teleoperate/ -(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ cp cert.pem key.pem ~/.config/xr_teleoperate/ ``` @@ -239,7 +239,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA ## 2.1 📥 Environment Setup -> The v1.4 version’s simulation deployment is not yet available. Please use v1.3 for testing temporarily. +> Since the image service has been upgraded to `teleimager`, the simulation deployment for v1.4 is temporarily unavailable. Please use v1.3 for testing for now. First, install [unitree_sim_isaaclab](https://github.com/unitreerobotics/unitree_sim_isaaclab). Follow that repo’s README. @@ -284,7 +284,20 @@ Next steps: 2. Connect to the corresponding Wi‑Fi -3. Open a browser (e.g. Safari or PICO Browser) and go to: `https://192.168.123.2:8012/?ws=wss://192.168.123.2:8012` +3. Only proceed if your head camera has WebRTC enabled (`cam_config_server.yaml → head_camera → enable_webrtc: true`); otherwise jump to Step 4. Open a browser (e.g. Safari or PICO Browser) and go to: + **https://192.168.123.164:60001** + + > **Note 1:** This IP is the address of **PC2**—the machine running teleimager service. + > **Note 2:** You may see a warning page like step 4. Click **Advanced**, then **Proceed to IP (unsafe)**. Once the page loads, press the **start** button in the top-left corner; if you see the head-camera preview, the check is successful. + + > **Note 3:** This step serves two purposes: + > + > 1. Verify that the teleimager service is running correctly. + > 2. Manually trust the WebRTC self-signed certificate. + > + > Once this has been done on the same device with the same certificate, you can skip it on subsequent launches. + +4. Open a browser (e.g. Safari or PICO Browser) and go to: `https://192.168.123.2:8012/?ws=wss://192.168.123.2:8012` > **Note 1**: This IP must match your **Host** IP (check with `ifconfig`). > @@ -296,11 +309,11 @@ Next steps:

-4. In the Vuer web, click **Virtual Reality**. Allow all prompts to start the VR session. +5. In the Vuer web, click **Virtual Reality**. Allow all prompts to start the VR session.

Vuer UI

-5. You’ll see the robot’s first-person view in the headset. The terminal prints connection info: +6. You’ll see the robot’s first-person view in the headset. The terminal prints connection info: ```bash websocket is connected. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90 @@ -308,13 +321,13 @@ Next steps: Uplink task running. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90 ``` -6. Align your arm to the **robot’s initial pose** to avoid sudden movements at start: +7. Align your arm to the **robot’s initial pose** to avoid sudden movements at start:

Initial Pose

-7. Press **r** in the terminal to begin teleoperation. You can now control the robot arm and dexterous hand. +8. Press **r** in the terminal to begin teleoperation. You can now control the robot arm and dexterous hand. -8. During teleoperation, press **s** to start recording; press **s** again to stop and save. Repeatable process. +9. During teleoperation, press **s** to start recording; press **s** again to stop and save. Repeatable process.

Recording Process

diff --git a/README_zh-CN.md b/README_zh-CN.md index b3c51f3..c10db26 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -170,13 +170,13 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ sudo ufw allow 8012 # 2. 配置证书路径,以下方式任选其一 -# 2.1 环境变量配置(可选) +# 2.1 用户配置目录(可选) +(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ mkdir -p ~/.config/xr_teleoperate/ +(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ cp cert.pem key.pem ~/.config/xr_teleoperate/ +# 2.2 环境变量配置(可选) (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ echo 'export XR_TELEOP_CERT="$HOME/xr_teleoperate/teleop/televuer/cert.pem"' >> ~/.bashrc (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ echo 'export XR_TELEOP_KEY="$HOME/xr_teleoperate/teleop/televuer/key.pem"' >> ~/.bashrc (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ source ~/.bashrc -# 2.2 用户配置目录(可选) -(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ mkdir -p ~/.config/xr_teleoperate/ -(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ cp cert.pem key.pem ~/.config/xr_teleoperate/ ``` ```bash @@ -254,7 +254,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA ## 2.1 📥 环境配置 -> v1.4 版本仿真部署暂未上线,请暂时使用 v1.3 进行测试 +> 因为图像服务升级为`teleimager`,v1.4 版本仿真部署暂未上线,请暂时使用 v1.3 进行测试 首先,请安装 [unitree_sim_isaaclab](https://github.com/unitreerobotics/unitree_sim_isaaclab)。具体安装步骤,可参考该仓库 README 文档。 @@ -311,7 +311,21 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA 2. 连接对应的 WiFi 热点 -3. 打开浏览器应用(比如 Safari 或 PICO Browser),输入并访问网址:https://192.168.123.2:8012/?ws=wss://192.168.123.2:8012 +3. 如果您头部相机开启了WebRTC功能(`cam_config_server.yaml => head_camera => enable_webrtc: true`),那么执行此步骤,否则直接跳到第 4 步。打开浏览器应用(比如 Safari 或 PICO Browser),输入并访问网址:https://192.168.123.164:60001 + + > 注意1:此 IP 地址为开启teleimager图像服务的 PC2 设备 IP + + > 注意2:此时可能弹出类似第4步相同的警告提示。请点击`Advanced`按钮后,继续点击 `Proceed to ip (unsafe)` 按钮,使用非安全方式继续登录WebRTC图像服务器。进入后,点击左上角`start`按钮,如果预览到头部相机图像,那么操作成功。 + > + >

+ > + > webrtc_unsafe + > + >

+ > + > 注意3:此步骤目的有两个:一是检测头部相机服务是否正常;二是手动信任 `webrtc` 自签名证书。相同设备与自签名证书条件下执行一次本步骤后,再次启动时可跳过该步。 + +4. 打开浏览器应用(比如 Safari 或 PICO Browser),输入并访问网址:https://192.168.123.2:8012/?ws=wss://192.168.123.2:8012 > 注意1:此 IP 地址应与您的 **主机** IP 地址匹配。该地址可以使用 `ifconfig` 等类似命令查询。 @@ -323,7 +337,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA

-4. 进入`Vuer`网页界面后,点击 **`Virtual Reality`** 按钮。在允许后续的所有对话框后,启动 VR 会话。界面如下图所示: +5. 进入`Vuer`网页界面后,点击 **`Virtual Reality`** 按钮。在允许后续的所有对话框后,启动 VR 会话。界面如下图所示:

@@ -331,7 +345,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA

-5. 此时,您将会在 XR 头显设备中看到机器人的第一人称视野。同时,终端打印出链接建立的信息: +6. 此时,您将会在 XR 头显设备中看到机器人的第一人称视野。同时,终端打印出链接建立的信息: ```bash websocket is connected. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90 @@ -339,7 +353,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA Uplink task running. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90 ``` -6. 然后,将手臂形状摆放到与**机器人初始姿态**相接近的姿势。这一步是为了避免在实物部署时,初始位姿差距过大导致机器人产生过大的摆动。 +7. 然后,将手臂形状摆放到与**机器人初始姿态**相接近的姿势。这一步是为了避免在实物部署时,初始位姿差距过大导致机器人产生过大的摆动。 机器人初始姿态示意图如下: @@ -349,9 +363,9 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA

-7. 最后,在终端中按下 **r** 键后,正式开启遥操作程序。此时,您可以远程控制机器人的手臂(和灵巧手) +8. 最后,在终端中按下 **r** 键后,正式开启遥操作程序。此时,您可以远程控制机器人的手臂(和灵巧手) -8. 在遥操过程中,按 **s** 键可开启数据录制,再次按 **s** 键可结束录制并保存数据(该过程可重复) +9. 在遥操过程中,按 **s** 键可开启数据录制,再次按 **s** 键可结束录制并保存数据(该过程可重复) 数据录制过程示意图如下: diff --git a/teleop/teleimager b/teleop/teleimager index 58aa69e..81720e0 160000 --- a/teleop/teleimager +++ b/teleop/teleimager @@ -1 +1 @@ -Subproject commit 58aa69e4b44878043dd14b08701a6a379a2c5cf9 +Subproject commit 81720e0bb384d9f79cb10160e9e604d505f1e1a2 diff --git a/teleop/teleop_hand_and_arm.py b/teleop/teleop_hand_and_arm.py index caccfe8..d3f5603 100644 --- a/teleop/teleop_hand_and_arm.py +++ b/teleop/teleop_hand_and_arm.py @@ -80,7 +80,7 @@ if __name__ == '__main__': parser.add_argument('--display-mode', type=str, choices=['immersive', 'ego', 'pass-through'], default='immersive', help='Select XR device display mode') parser.add_argument('--arm', type=str, choices=['G1_29', 'G1_23', 'H1_2', 'H1'], default='G1_29', help='Select arm controller') parser.add_argument('--ee', type=str, choices=['dex1', 'dex3', 'inspire_ftp', 'inspire_dfx', 'brainco'], help='Select end effector controller') - parser.add_argument('--img-server-ip', type=str, default='10.0.7.96', help='IP address of image server, used by teleimager and televuer') + parser.add_argument('--img-server-ip', type=str, default='192.168.123.164', help='IP address of image server, used by teleimager and televuer') # mode flags parser.add_argument('--motion', action = 'store_true', help = 'Enable motion control mode') parser.add_argument('--headless', action='store_true', help='Enable headless mode (no display)') diff --git a/teleop/televuer b/teleop/televuer index 6b9aafd..948f65f 160000 --- a/teleop/televuer +++ b/teleop/televuer @@ -1 +1 @@ -Subproject commit 6b9aafd0b357d31de5e9e8edd2ee322575bd8b8d +Subproject commit 948f65f6852410610483345e69715a0c673a99eb