Browse Source

[update] lib version and doc

main
silencht 4 months ago
parent
commit
8c4ba67cea
  1. 35
      README.md
  2. 36
      README_zh-CN.md
  3. 2
      teleop/teleimager
  4. 2
      teleop/teleop_hand_and_arm.py
  5. 2
      teleop/televuer

35
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 (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ sudo ufw allow 8012
# 2. Configure certificate paths, choose one method # 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_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$ echo 'export XR_TELEOP_KEY="$HOME/xr_teleoperate/teleop/televuer/key.pem"' >> ~/.bashrc
(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ source ~/.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 ## 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. 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 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`). > **Note 1**: This IP must match your **Host** IP (check with `ifconfig`).
> >
@ -296,11 +309,11 @@ Next steps:
</a> </a>
</p> </p>
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.
<p align="center"> <a href="https://oss-global-cdn.unitree.com/static/fdeee4e5197f416290d8fa9ecc0b28e6_2480x1286.png"> <img src="https://oss-global-cdn.unitree.com/static/fdeee4e5197f416290d8fa9ecc0b28e6_2480x1286.png" alt="Vuer UI" style="width: 75%;"> </a> </p> <p align="center"> <a href="https://oss-global-cdn.unitree.com/static/fdeee4e5197f416290d8fa9ecc0b28e6_2480x1286.png"> <img src="https://oss-global-cdn.unitree.com/static/fdeee4e5197f416290d8fa9ecc0b28e6_2480x1286.png" alt="Vuer UI" style="width: 75%;"> </a> </p>
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 ```bash
websocket is connected. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90 websocket is connected. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90
@ -308,13 +321,13 @@ Next steps:
Uplink task running. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90 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:
<p align="center"> <a href="https://oss-global-cdn.unitree.com/static/2522a83214744e7c8c425cc2679a84ec_670x867.png"> <img src="https://oss-global-cdn.unitree.com/static/2522a83214744e7c8c425cc2679a84ec_670x867.png" alt="Initial Pose" style="width: 25%;"> </a> </p> <p align="center"> <a href="https://oss-global-cdn.unitree.com/static/2522a83214744e7c8c425cc2679a84ec_670x867.png"> <img src="https://oss-global-cdn.unitree.com/static/2522a83214744e7c8c425cc2679a84ec_670x867.png" alt="Initial Pose" style="width: 25%;"> </a> </p>
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.
<p align="center"> <a href="https://oss-global-cdn.unitree.com/static/f5b9b03df89e45ed8601b9a91adab37a_2397x1107.png"> <img src="https://oss-global-cdn.unitree.com/static/f5b9b03df89e45ed8601b9a91adab37a_2397x1107.png" alt="Recording Process" style="width: 75%;"> </a> </p> <p align="center"> <a href="https://oss-global-cdn.unitree.com/static/f5b9b03df89e45ed8601b9a91adab37a_2397x1107.png"> <img src="https://oss-global-cdn.unitree.com/static/f5b9b03df89e45ed8601b9a91adab37a_2397x1107.png" alt="Recording Process" style="width: 75%;"> </a> </p>

36
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 (tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ sudo ufw allow 8012
# 2. 配置证书路径,以下方式任选其一 # 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_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$ echo 'export XR_TELEOP_KEY="$HOME/xr_teleoperate/teleop/televuer/key.pem"' >> ~/.bashrc
(tv) unitree@Host:~/xr_teleoperate/teleop/televuer$ source ~/.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 ```bash
@ -254,7 +254,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA
## 2.1 📥 环境配置 ## 2.1 📥 环境配置
> v1.4 版本仿真部署暂未上线,请暂时使用 v1.3 进行测试
> 因为图像服务升级为`teleimager`,v1.4 版本仿真部署暂未上线,请暂时使用 v1.3 进行测试
首先,请安装 [unitree_sim_isaaclab](https://github.com/unitreerobotics/unitree_sim_isaaclab)。具体安装步骤,可参考该仓库 README 文档。 首先,请安装 [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 热点 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`按钮,如果预览到头部相机图像,那么操作成功。
>
> <p align="center">
> <a href="https://oss-global-cdn.unitree.com/static/777f9c6f42d74eb2a6438d1509a73025_2475x1574.jpg">
> <img src="https://oss-global-cdn.unitree.com/static/777f9c6f42d74eb2a6438d1509a73025_2475x1574.jpg" alt="webrtc_unsafe" style="width: 50%;">
> </a>
> </p>
>
> 注意3:此步骤目的有两个:一是检测头部相机服务是否正常;二是手动信任 `webrtc` 自签名证书。相同设备与自签名证书条件下执行一次本步骤后,再次启动时可跳过该步。
4. 打开浏览器应用(比如 Safari 或 PICO Browser),输入并访问网址:https://192.168.123.2:8012/?ws=wss://192.168.123.2:8012
> 注意1:此 IP 地址应与您的 **主机** IP 地址匹配。该地址可以使用 `ifconfig` 等类似命令查询。 > 注意1:此 IP 地址应与您的 **主机** IP 地址匹配。该地址可以使用 `ifconfig` 等类似命令查询。
@ -323,7 +337,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA
</a> </a>
</p> </p>
4. 进入`Vuer`网页界面后,点击 **`Virtual Reality`** 按钮。在允许后续的所有对话框后,启动 VR 会话。界面如下图所示:
5. 进入`Vuer`网页界面后,点击 **`Virtual Reality`** 按钮。在允许后续的所有对话框后,启动 VR 会话。界面如下图所示:
<p align="center"> <p align="center">
<a href="https://oss-global-cdn.unitree.com/static/fdeee4e5197f416290d8fa9ecc0b28e6_2480x1286.png"> <a href="https://oss-global-cdn.unitree.com/static/fdeee4e5197f416290d8fa9ecc0b28e6_2480x1286.png">
@ -331,7 +345,7 @@ build cert.pem key.pem LICENSE pyproject.toml README.md rootCA.key rootCA
</a> </a>
</p> </p>
5. 此时,您将会在 XR 头显设备中看到机器人的第一人称视野。同时,终端打印出链接建立的信息:
6. 此时,您将会在 XR 头显设备中看到机器人的第一人称视野。同时,终端打印出链接建立的信息:
```bash ```bash
websocket is connected. id:dbb8537d-a58c-4c57-b49d-cbb91bd25b90 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 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
</a> </a>
</p> </p>
7. 最后,在终端中按下 **r** 键后,正式开启遥操作程序。此时,您可以远程控制机器人的手臂(和灵巧手)
8. 最后,在终端中按下 **r** 键后,正式开启遥操作程序。此时,您可以远程控制机器人的手臂(和灵巧手)
8. 在遥操过程中,按 **s** 键可开启数据录制,再次按 **s** 键可结束录制并保存数据(该过程可重复)
9. 在遥操过程中,按 **s** 键可开启数据录制,再次按 **s** 键可结束录制并保存数据(该过程可重复)
数据录制过程示意图如下: 数据录制过程示意图如下:

2
teleop/teleimager

@ -1 +1 @@
Subproject commit 58aa69e4b44878043dd14b08701a6a379a2c5cf9
Subproject commit 81720e0bb384d9f79cb10160e9e604d505f1e1a2

2
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('--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('--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('--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 # mode flags
parser.add_argument('--motion', action = 'store_true', help = 'Enable motion control mode') 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)') parser.add_argument('--headless', action='store_true', help='Enable headless mode (no display)')

2
teleop/televuer

@ -1 +1 @@
Subproject commit 6b9aafd0b357d31de5e9e8edd2ee322575bd8b8d
Subproject commit 948f65f6852410610483345e69715a0c673a99eb
Loading…
Cancel
Save