From 8c4ba67ceaa8fbeeb5735072dd685caf606168d4 Mon Sep 17 00:00:00 2001
From: silencht
Date: Fri, 21 Nov 2025 09:55:49 +0800
Subject: [PATCH] [update] lib version and doc
---
README.md | 35 +++++++++++++++++++++++-----------
README_zh-CN.md | 36 ++++++++++++++++++++++++-----------
teleop/teleimager | 2 +-
teleop/teleop_hand_and_arm.py | 2 +-
teleop/televuer | 2 +-
5 files changed, 52 insertions(+), 25 deletions(-)
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.
-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:
-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.
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`按钮,如果预览到头部相机图像,那么操作成功。
+ >
+ >
+ >
+ >
+ >
+ >
+ >
+ > 注意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