diff --git a/locale/zh_CN/LC_MESSAGES/2-how_to/5-teleoperation/6-vr_teleop.po b/locale/zh_CN/LC_MESSAGES/2-how_to/5-teleoperation/6-vr_teleop.po index ffd741a..9914309 100644 --- a/locale/zh_CN/LC_MESSAGES/2-how_to/5-teleoperation/6-vr_teleop.po +++ b/locale/zh_CN/LC_MESSAGES/2-how_to/5-teleoperation/6-vr_teleop.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-09 12:40+0000\n" +"POT-Creation-Date: 2026-10-22 06:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,102 +21,102 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:1 -#: d3976e51f0894d24a7c1e74e32058d32 +#: fb23b2f13f554a8a82fddbedcbe5dcc7 msgid "VR Teleoperation" msgstr "VR 遥操作" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:3 -#: 18b546ed0fcb428e9f35ff67bad5f9e1 +#: d6e60f543bb24cfe95ad58a4c966aa3a msgid "Control robots using a VR headset and controllers." msgstr "使用 VR 头显和手柄控制机器人。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:5 -#: f9ed655d80e14ad186cc0353a5c21da6 +#: b2f506e189aa4862988e033989b24ad9 msgid "Supported Headsets" msgstr "支持的头显" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 6c4ee2b5fe8e44deb2c21021159d76dc +#: e4a39674495144dea7655c744db57a13 msgid "Headset" msgstr "头显" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: cd42b7e1835b498fb67e2fb09f6bbb38 +#: 1ab788677b224ebbbd1be13f1a90ede4 msgid "Support Level" msgstr "支持级别" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 4e39ae838031452697c4f82445c08ae8 +#: 6c18754df381445bb28c76e1c7efc7f1 msgid "Modes" msgstr "模式" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: f06b567114ad40f8a938da9c9ad54897 +#: bc0881b1c36b4e6db391b42494dec125 msgid "Notes" msgstr "说明" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 8967f507c9ad4753abb79a0a349c5736 +#: b56e4595b88449b29ae58fd81a862cbe msgid "**Pico Enterprise**" msgstr "**Pico 企业版**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: d70b22608db74ba3af36025066df90c9 +#: e7692c7d9ac6424094ebb1dae9dea259 msgid "**Recommended**" msgstr "**推荐**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 0988194274434aef908820a1377afeb6 b1f727ec4bb44b12b5ee62b87cee641e -#: bd93f1c09d3345e28bed5437a7d31abf +#: 71b9d70fc50242b8881b1937587e7853 b0606ba7f53a47cf948ef306ffb108bb +#: ff72e03fab1340949ef3d1513a2318aa msgid "Web, XRoboToolkit" msgstr "Web、XRoboToolkit" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 0e3eca21883d4f70ae63b74608a6a636 +#: 87bb3646eb44457ea4c205460bd0b16a msgid "" "USB shared networking (USB 网络共享); **its own App**, not the consumer Pico " "App" msgstr "USB 网络共享;**使用自己的 App**,不是消费版 Pico App" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 1da4ae9e52b1425faf24658b49fce0b9 +#: 3ba618a3003842a2bb22bc9905a605d7 msgid "**Pico consumer**" msgstr "**Pico 消费版**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 5d4ec878ca084324972d4006c9505f1c 8ba4848137264b9282d8ac054a005687 +#: 92e484da9ccf4bfebdfa8e00769c347a b49f6376ef7a4a71a9c86377f37ca137 msgid "Supported" msgstr "支持" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 3c32ba6aefae40689bc8a1a4358000b0 +#: fe8e002dd51340b0a7ce27a0eae83691 msgid "Different headset App from Enterprise; no USB-tether path documented here" msgstr "头显 App 与企业版不同;本文不记录 USB 网络共享路径" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 6df80f2ba13842b6bd8f8ae46694d603 +#: fd89b61d3fbc422d829cf55b7a9e24bb msgid "**Meta Quest**" msgstr "**Meta Quest**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md -#: 76e1412a67c84fdaaf7efad11fdadb51 +#: e40477a0e9434c53b07642e6b63976e8 msgid "Good consumer availability" msgstr "消费级产品更容易买到" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:13 -#: 5c8f98892fc242cab89bfa8f444aae50 +#: 3db4ecf8352b4d82ad476e8f697b25f4 msgid "Pico Enterprise vs consumer" msgstr "Pico 企业版与消费版" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:16 -#: 134db74669354a93be77895636841181 +#: 90368dad6def4110bc3e73aa6a992c43 msgid "" "Treat **Pico Enterprise** and **Pico consumer** as different SKUs. Each " "edition has its own headset App." msgstr "将 **Pico 企业版** 和 **Pico 消费版** 视为不同 SKU。不要把同一个头显 App 写成同时覆盖两者。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:18 -#: 7f8dfde380ab4747a8e9e1c070c49333 +#: b35898a863904c8b9c993de20da63d3f msgid "" "**USB shared networking (USB 网络共享)** — Pico Enterprise can share a " "network with the ROS 2 PC over USB. That is an Enterprise capability; it " @@ -124,7 +124,7 @@ msgid "" msgstr "**USB 网络共享** — Pico 企业版可通过 USB 与 ROS 2 主机共享网络。这是企业版能力,不是消费版 Pico 的路径。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:19 -#: b1a1bd56052e4ceba9d003711572321c +#: ea11000ebd3945bf9aed44ac63b6baf9 msgid "" "**Different Apps** — Enterprise and consumer Pico use **different** " "headset Apps. Install the App that matches the headset edition. The fa-" @@ -137,19 +137,19 @@ msgstr "" "WebXR;它没有给出同时覆盖两个 Pico 版本的商店条目。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:21 -#: 5a1360b2ea71440eaa1fcbfae0337fc2 +#: c69ea25cefa942dba12f33fd7ce4db27 msgid "" "Store listings, extra package names, and ADB steps are in the headset / " "fa-py-libraries READMEs when they document them." msgstr "商店链接、额外包名和 ADB 步骤以头显 / fa-py-libraries README 写明的为准。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: c6d733a5ce9849c8870d0d7209945f88 +#: f4a15dccabad44a28b3a5ba5b3d34cf7 msgid "Pico Recommended" msgstr "推荐 Pico" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:27 -#: 1b8f7b8e23e94584b74bc28cd2666430 +#: fc16b12e572d42ceb471af8c601117e7 msgid "" "**Pico Enterprise** is the preferred Pico SKU for VR teleop (USB 网络共享, " "matching Enterprise App, lower-latency tracking / 更跟手). Consumer Pico and" @@ -161,36 +161,36 @@ msgstr "" "xrt`)后端。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:30 -#: af1f3a3fc517440aabde44a2bda0814c +#: ed6baa5665e844d7bd0fa4303def8e5f msgid "Prerequisites" msgstr "前提条件" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:32 -#: f75c5184d002459da1f0842934ff6a2a +#: 7aeb8c31528f4c10987dce6f6933139c msgid "Working robot demo (mock, sim, or real)" msgstr "可用的机器人演示(mock、仿真或真实硬件)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:33 -#: 2bfb95346817468b966cefacc77ed776 +#: 61204e3f1fd8453687ae9fa3af6731b1 msgid "" "VR headset (**Pico Enterprise** recommended; Pico consumer or **Meta " "Quest** also used)" msgstr "VR 头显(**推荐 Pico 企业版**;也可用 Pico 消费版或 **Meta Quest**)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:34 -#: 6c22c620b86b402e8b9954a2052ee427 +#: 87cf0b712a8e4967ad1bef63c38ef93d msgid "fa-py-libraries installed" msgstr "已安装 fa-py-libraries" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:35 -#: 44fbd94e5fd7448d99ffae0b81e038a1 +#: 7a2a05f29e434dc39e5708cb41e3ce7a msgid "" "Network between the headset and the ROS 2 machine (Wi-Fi, or **USB 网络共享**" " on Pico Enterprise)" msgstr "头显与 ROS 2 主机之间的网络(Wi-Fi,或 Pico 企业版上的 **USB 网络共享**)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:36 -#: 7fdf60035bd34ba1ab29ce9eb6498491 +#: 95cf97b2c3b847ccb9293ede6831eb67 msgid "" "**`enable_vr: true`** in the robot description’s " "`config/ocs2/target_manager.yaml` (most robots default off)" @@ -199,7 +199,7 @@ msgstr "" "true`**(多数机型默认关闭)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:38 -#: deb5ff4b85814096930a54ae0c558411 +#: 143fb5548e8a46b49cb20dc13e8da23d msgid "" "Before the controller will consume VR targets, set `enable_vr: true` in " "that YAML. Related fields on the same file: `vr_update_rate` (used when " @@ -211,12 +211,12 @@ msgstr "" "[故障排除](#troubleshooting))。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:40 -#: 99e5c0f2b82d4d0cad37f33b82e8ec8d +#: e15c59d380fa4099b6ff50f56534a929 msgid "Overview" msgstr "概述" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:42 -#: d776dda2204c4f8cab29f502eee9343d +#: f6c2d89b233e4bec9554f56ac653c503 msgid "" "VR teleoperation publishes end-effector pose targets from VR controller " "tracking. The MPC controller then generates joint trajectories to follow " @@ -224,93 +224,93 @@ msgid "" msgstr "VR 遥操作根据 VR 手柄追踪发布末端执行器位姿目标。随后由 MPC 控制器生成关节轨迹以跟随这些目标。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:44 -#: 8c40e29b8e8445c9b20758eb19937ae3 +#: ad49b739259e4ab08ed496d89a5929bf msgid "" "How the arm **complies** with those poses depends on the robot. Two " "different paths are used with VR teleop:" msgstr "手臂如何**柔顺**跟踪这些位姿取决于机型。VR 遥操作使用两条不同路径:" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: 9358aa5205024dc98f72e86e057b61e0 +#: a9aff4fc0ad04b438360636e64318082 msgid "Path" msgstr "路径" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: e75b127bdeda471fb0d522d1dbf859c3 +#: 40caab55b53c48ebaf0fe73ad3fc581a msgid "Robots" msgstr "机器人" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: 4fb45a88353346e283ebc80a28817d2d +#: 7db3d4c9b6a14cb5804c67665f658676 msgid "Who provides compliance" msgstr "柔顺由谁提供" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: 4fddbdc402e84a7a8c0e20ecbc4f330d +#: bdf9aac34a33478ba2b290d40067a670 msgid "What the controller commands" msgstr "控制器下发什么" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: d4800a582fb34e0f9ccf65bdf5088332 +#: 6e480bc495cf4a6f9065c3b6f5b8f78d msgid "**MIT-mode force control**" msgstr "**MIT 力控**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: f7d226c9ceb745779e8a1156f425aba5 +#: 46461eab911a4b908afd1d1366086938 msgid "**HighTorque** (高擎) **Panthera HT**; **ARX** (方舟无限) arms" msgstr "**高擎 Panthera HT**;**方舟无限** 机械臂" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: a27726435f47435a9c31efdb042fdbb0 +#: 0a1952462d264ff0b91e590fdc62e908 msgid "" "Controller + hardware interface in MIT / `full_control` (pos + vel + " "effort; stiffness on the HI)" msgstr "控制器 + 驱动层走 MIT / `full_control`(位置 + 速度 + 力矩;刚度在 HI 上)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: 77093c15a48043caa3f0b8229a8a73f5 +#: cb256be4f45c4818a18a3eb230b6a00a msgid "Force-capable / MIX when the interfaces allow it" msgstr "接口齐全时走带力控 / MIX" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: c1326076762a44daafe1eccdfae2706d +#: 77c1fefd144449cd94eeaef0cb344b10 msgid "**Vendor joint impedance**" msgstr "**厂商关节阻抗**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: 19935374dba649aab93fb383f90c2f54 +#: d3ee5634f007465eb57421e40585b5e6 msgid "**Tianji** (天玑); **Rokae** (珞石)" msgstr "**天玑**;**珞石**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: 0bb783170a5946b298113de0bab725e6 +#: 1533e82b96e9469fae0ee9257d2ae60d msgid "Vendor stack, exposed on the hardware interface" msgstr "厂商栈,经驱动层暴露" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:24 -#: a44637537d554e7ab0e246eb066c97ec +#: 61ebd475005d47e78097497f52211a75 msgid "**Position only**" msgstr "**仅位置**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:51 -#: a034665f1d844c1994dda2d802cf8a8d +#: 1ec4189da0eb4032bf896d775346271e msgid "" "**Payload identification (负载辨识)** belongs to the **vendor-impedance** " "path (Tianji / Rokae), not the MIT path. Details below." msgstr "**负载辨识**属于**厂商阻抗**路径(天玑 / 珞石),不属于 MIT 路径。详见下文。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:53 -#: 9b3878da7da2478b8deaddae98d6243d +#: 4d6c0fded70d4a2dafa946b4c16de07a msgid "Force control and compliance" msgstr "力控与柔顺" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:55 -#: 9fdf07f0810445998f4ccc0bcb40a221 +#: bf2c58b3dbfe4e2495ecefe92b4da401 msgid "MIT-mode force control (Panthera HT / ARX)" msgstr "MIT 力控(Panthera HT / 方舟无限)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:57 -#: 6a0440d65ec940d6bb90164b4196b3e1 +#: 96055cb1816842d680b12bcb4ce01b3b msgid "" "Use this path on **Panthera HT** and **ARX** arms. The hardware interface" " must run a **force-capable** MIT configuration; the controller then " @@ -320,7 +320,7 @@ msgstr "" "速度 / 力矩的组合跟踪 VR 位姿。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:59 -#: 1ceacd95d5c24d9ba896195d6759a0c7 +#: 5e0bd69790ce4d5799133e9dffc47eab msgid "" "**HighTorque Panthera HT** — [ht-ros2-control README](https://github.com" "/fiveages-sim/ht-ros2-control/blob/main/README.md):" @@ -329,33 +329,33 @@ msgstr "" "/fiveages-sim/ht-ros2-control/blob/main/README.md):" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:61 -#: 4c4159fef4a4427aa6d9a6ace43bacaa +#: 2acfa5165ec34ef694995f21d628ca7c msgid "HI `control_mode:=mit` (default; older name `full_control` still accepted)" msgstr "HI `control_mode:=mit`(默认;旧名 `full_control` 仍可用)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:62 -#: fbca67dfa2894690a0395f4c1e1180af +#: 6792da92a6394ad386f9a169025476c4 msgid "" "The driver sends position + velocity + effort + kp/kd " "(`pos_vel_tqe_kp_kd`)" msgstr "驱动下发位置 + 速度 + 力矩 + kp/kd(`pos_vel_tqe_kp_kd`)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:63 -#: a9e082173060425ebc9fb62219a7ce2f +#: 40a778763fe34c52a763b3ccc1c815ca msgid "" "Stiffness is HI parameters `joint_kp` / `joint_kd` (rqt / `ros2 param`), " "**not** kp/kd command interfaces" msgstr "刚度是 HI 参数 `joint_kp` / `joint_kd`(rqt / `ros2 param`),**不是** kp/kd 命令接口" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:64 -#: 90d40ed391104234aa6dd1286afe6c26 +#: 6a0c4210658e424aa47a71100173406f msgid "" "Other documented HI modes: `effort` (torque only), `position` (position " "only)" msgstr "文档中的其他 HI 模式:`effort`(仅力矩)、`position`(仅位置)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:66 -#: e7d9f8baf5eb48dd94249ba905553c48 +#: ced9ffe0210a4ba0a5755b88ea57fa92 msgid "" "**ARX arms** — [arx-ros2-control README](https://github.com/fiveages-sim" "/arx-ros2-control/blob/main/README.md):" @@ -364,33 +364,33 @@ msgstr "" "/arx-ros2-control/blob/main/README.md):" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:68 -#: 654ede17b651409ebb6d3e5ce98b9c1f +#: 78875d2a46d84f35b42d7cb64a3b3778 msgid "" "Arms support only `full_control` / MIT MIX. Other `control_mode` values " "in xacro are warned and ignored" msgstr "机械臂只支持 `full_control` / MIT MIX。xacro 里写的其他 `control_mode` 会告警并被忽略" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:69 -#: ff8047fb5ab04a6bbadad3f0dec18b49 +#: eb64cb251bff4c37974382f60aa3dfc5 msgid "`write()` always sends position + velocity + effort" msgstr "`write()` 始终下发位置 + 速度 + 力矩" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:70 -#: 1b3a3e19794746838b18af40cd0d19a9 +#: 1c781592b9134295aec359130445179d msgid "" "MIT `kp` / `kd` come from HI `joint_k_gains` / `joint_d_gains` (no kp/kd " "command interface)" msgstr "MIT 的 `kp` / `kd` 来自 HI 的 `joint_k_gains` / `joint_d_gains`(没有 kp/kd 命令接口)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:71 -#: aef77a16d2d04153ab4aba6f1761082b +#: fae66a8b3af04263801b89650aec7ba8 msgid "" "README mapping: OCS2 trajectory → position; OCS2 `future_input` → " "velocity; OCS2 effort → gravity / static feedforward torque" msgstr "README 映射:OCS2 轨迹 → 位置;OCS2 `future_input` → 速度;OCS2 力矩 → 重力 / 静力学前馈力矩" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:73 -#: d3945c02add046e1b669726dcf8fb1c4 +#: 37de534aba4048d5a8ce3deaa0b44523 msgid "" "**Controller** — [ocs2_arm_controller README — Interface " "Configuration](https://github.com/fiveages-" @@ -401,19 +401,19 @@ msgstr "" "sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/README.md):" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:75 -#: 650b79ff2bd14eb7bcd0d4f7a30b3711 +#: 6b018a4a738d45fea4cb7f1b87bd87a8 msgid "" "Mode is **auto-detected** from the robot config (no extra launch flag " "named `force:=`)" msgstr "模式由机器人配置**自动检测**(没有名为 `force:=` 的额外 launch 参数)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:76 -#: 5dabe84e5ec34024a287197944d5e259 +#: d76504e9e8424f978900ad7bc1eb4758 msgid "Position-only: command `position`; state `position` + `velocity`" msgstr "仅位置:命令 `position`;状态 `position` + `velocity`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:77 -#: 7528402e92f84e9099b463f01d3b2670 +#: f67eaf4f83a94c27890f2b7da808613a msgid "" "Force / MIX: command `position`, `velocity`, `effort`, `kp`, `kd` all " "present; YAML `force_gains` is `[kp, kd]`" @@ -422,7 +422,7 @@ msgstr "" "`force_gains` 为 `[kp, kd]`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:78 -#: 311c8e8a9bbf4f6da5603184c14c5def +#: 4854e27153b14c1aafd5ec0ab0ef483e msgid "" "ARX documents OCS2 MIX as pos + vel + effort with kp/kd on the HI. HT " "notes that when kp/kd are **not** command interfaces, OCS2 may stay in " @@ -434,7 +434,7 @@ msgstr "" "`joint_kp`(同一份 HT README)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:80 -#: 96c2e2d82a9a4246b418db5810b54733 +#: dc2d8851cef64ee3bd8e4837addd01bc msgid "" "Bring the robot up with the lean-branch `./quick_start.sh` / " "`hardware:=real` path on [HighTorque Panthera " @@ -447,7 +447,7 @@ msgstr "" "2S](../6-deployment/9-go_real_hardware/1-arx_lift2s.md),再按下文启动 VR。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:82 -#: a2f62cc30a064ea5bca8493b240aa210 +#: a6d1886e468d4803bfd678a8b3feaba7 msgid "" "This MIT path is **not** isomorphic teleop. Master–slave `mode:=mit` / " "`effort` on Panthera HT is [Isomorphic Teleop](7-isomorphic_teleop.md)." @@ -456,12 +456,12 @@ msgstr "" "见[同构遥操作](7-isomorphic_teleop.md)。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:84 -#: be6e8bfd5b0c4947a1d04d63e7dcf650 +#: f5334b18f56f4d3abd62eba319d351f9 msgid "Vendor joint impedance (Tianji / Rokae)" msgstr "厂商关节阻抗(天玑 / 珞石)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:86 -#: c95a5d2b60d34583a99de6c8b9a5ad30 +#: e8734a8511694ec09ad85419a468dd78 msgid "" "Use this path on **Tianji** (天玑) and **Rokae** (珞石). The controller only " "sends **joint position**. Joint impedance / compliance is the **vendor** " @@ -469,7 +469,7 @@ msgid "" msgstr "此路径用于 **天玑** 与 **珞石**。控制器只发 **关节位置**。关节阻抗 / 柔顺是**厂商**能力,在驱动层上切换。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:88 -#: b671ddf2bd094070863f220b928ae645 +#: 5b6a33514d2d419582b825685482e998 msgid "" "**Tianji** — [marvin-ros2-control README](https://github.com/fiveages-sim" "/marvin-ros2-control/blob/master/README.md):" @@ -478,14 +478,14 @@ msgstr "" "/marvin-ros2-control/blob/master/README.md):" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:90 -#: 49a2ffed98a647b2b26581e4a63b8711 +#: 0e2b931b60db49d39a7c4ebcfc5a3f36 msgid "" "Command interfaces: joint **`position` only**. State: `position`, " "`velocity`, `effort`" msgstr "命令接口:关节 **仅 `position`**。状态:`position`、`velocity`、`effort`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:91 -#: 43c807f5f9e2467cb2661ab298662088 +#: b70dc5883f2d439fade893e00f2b7393 msgid "" "Runtime `ctrl_mode`: `POSITION` / `JOINT_IMPEDANCE` / `CART_IMPEDANCE` / " "`POWER_OFF`" @@ -494,7 +494,7 @@ msgstr "" "`POWER_OFF`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:92 -#: 3c1e86d77ad5498faf87d813475f4a5e +#: ef29444d589943f69f759feaa70e6961 msgid "" "Joint impedance gains: `joint_k_gains` / `joint_d_gains` (7 values). " "Cartesian: `cart_k_gains` / `cart_d_gains`" @@ -503,12 +503,12 @@ msgstr "" "`cart_d_gains`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:93 -#: 31389764f2b54548b7fe86f37f3cde7c +#: 6ec6cb3824f04f2bb7fc3a0f3c15a83b msgid "Example: `ros2 param set / ctrl_mode JOINT_IMPEDANCE`" msgstr "示例:`ros2 param set / ctrl_mode JOINT_IMPEDANCE`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:95 -#: 3a42ad8c0ee14d9da1cc48a4c02c5b42 +#: 09728f4ae9f643ef971f1f5c4d3cb982 msgid "" "**Rokae** — same pattern (position commands; compliance in the vendor " "HI). Parameter names are in the private `rokae-ros2-control` README after" @@ -519,7 +519,7 @@ msgstr "" "README。概览:[驱动层](../../4-reference/hardware/0-index.md)。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:97 -#: de968ea4c3a542df90f4b5126b372121 +#: 7b35adc32ce142e2bbc0c7455b81b5b6 msgid "" "Internal FA robots that use Tianji / Rokae arms live in [fa-deploy-ws " "Setup](../../1-getting_started/4-fa_deploy_ws.md). Extra robot IDs and " @@ -530,19 +530,19 @@ msgstr "" "参数在开通后的该仓库 README。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:99 -#: d245c367756d44f5a39bcbd9092cf6d3 +#: 14bbc3ab4aab4c1391b7add6071a1f75 msgid "Payload identification (负载辨识)" msgstr "负载辨识" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:101 -#: 944601018a0e407eaf0249f033f43ea0 +#: e875c9da0ba249029bca78e927a0266e msgid "" "负载辨识 is **only** on the Tianji / Rokae (vendor impedance) path. It is not" " an MIT / OCS2 `force_gains` procedure." msgstr "负载辨识**只**在天玑 / 珞石(厂商阻抗)路径上。它不是 MIT / OCS2 `force_gains` 流程。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:103 -#: b523d81c69cb49abbb9c1110b1d54fc2 +#: ba7aba1456114225b7eab31f75277c88 msgid "" "**Public, verified Tianji wizard** (semi-automatic tool-dynamics ID on " "CCS): [marvin-ros2-control " @@ -559,7 +559,7 @@ msgstr "" "`install(PROGRAMS … RENAME tool_dyn_identify_wizard)`)。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:105 -#: 43f671412e8c4bee96ddb8750a07171d +#: 07f8b4f9b641476eb1007b867a416964 msgid "" "The wizard banner is **机械臂负载辨识向导(工具动力学参数辨识 / CCS)**. It connects to the " "Marvin controller IP, collects no-load then loaded PVT trajectories, and " @@ -571,7 +571,7 @@ msgstr "" "`left_dyn_param` / `right_dyn_param`。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:107 -#: 7cdb25c469314b12beb5d03fd9cefb22 +#: b3f3207f37aa4b67b5460b0d72d06ebb msgid "" "There is **no** public `open-deploy-ws` payload-ID flow. Internal on-site" " Tianji payload identification is in the private **fa-deploy-ws** README " @@ -583,17 +583,17 @@ msgstr "" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:109 #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 406973df2c9c4208b14353ce8a83b5cb 6bd70102207e4a9f866b1a0d7220a9fe +#: 268baebf1cc646cab0dacd36cad4803e e83302d52ab441b5b773be40944a29f1 msgid "Setup" msgstr "设置" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:111 -#: 6bd49431d44e4827abd3fb5819b81701 +#: b8e1af7f2fed4a0180da51969bb32567 msgid "1. Install fa-py-libraries" msgstr "1. 安装 fa-py-libraries" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:113 -#: bd66940d907a43fca216f19bc7830016 +#: ea6386cee9014810aa80234400a5b826 msgid "" "cd ~/\n" "git clone https://github.com/fiveages-sim/fa-py-libraries.git\n" @@ -606,7 +606,7 @@ msgstr "" "./init.sh all" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:120 -#: 8a9bd29737184c9394352e553d822e6b +#: 4eb39e4d1bf04bebb5f27840648eafd4 msgid "" "HTTPS is the public clone. SSH (`git clone git@github.com:fiveages-sim" "/fa-py-libraries.git`) is optional if you already have keys." @@ -615,7 +615,7 @@ msgstr "" "libraries.git`)为可选项。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:122 -#: 7ad112a6d0014d8a8d98249715b684b4 +#: 0236261431334678b52fe195cdaf8aae msgid "" "What `./init.sh all` does: submodules + Python 3.12 env + " "`ros2_robot_interface` / `ros2-viser` / `vr_pose_publisher`." @@ -624,12 +624,12 @@ msgstr "" "`ros2-viser` / `vr_pose_publisher`。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:124 -#: f51b0913a30548d7ab1a3664ca4b9689 +#: 700e89985c5149378888fc0e988791db msgid "2. Start Robot Demo" msgstr "2. 启动机器人演示" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:126 -#: 12ae6f7539d246978b88e4a3b691b427 +#: 818b2dcc663b464b956648df8d35bca9 msgid "" "source ~/open-deploy-ws/install/setup.bash\n" "ros2 launch ocs2_arm_controller demo.launch.py\n" @@ -638,19 +638,19 @@ msgstr "" "ros2 launch ocs2_arm_controller demo.launch.py\n" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:131 -#: 760caaf38def486fb82c0b75e764d038 +#: 1fb361d4c0c64ad087a1487609d8984d msgid "3. Start VR Bridge" msgstr "3. 启动 VR 桥接" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:133 -#: 909ab0569b15487197f358748bd30fa8 +#: 63652647a8ba4c3e95e7cc2a2ce3af36 msgid "" "In a new terminal, from fa-py-libraries (README commands — there is no " "`./run.sh vr --mode`):" msgstr "在新终端中,于 fa-py-libraries 内执行(README 命令 — 没有 `./run.sh vr --mode`):" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 2d6f0c9bc7524645988d97f0b0c99034 +#: cb75812dc0274a53b0d22e6af38fc645 msgid "" "cd ~/fa-py-libraries\n" "./run.sh vr" @@ -659,126 +659,126 @@ msgstr "" "./run.sh vr" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:140 -#: 878ed6bb954c4582a2ffb439d4cfc185 +#: 6daa39525abe4f208bb5595b58e01a41 msgid "This starts the Vuer/WebXR VR pose publisher." msgstr "这会启动 Vuer/WebXR 的 VR 位姿发布器。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:142 -#: f0670a05384d47e9a674635c7eeca763 +#: 23c5b916865844bf895381dbd0ce32ca msgid "VR Modes" msgstr "VR 模式" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:144 -#: 4fffde80c74f4927880f6e8d301b04a2 +#: ef272f13901043698a2554cfa77b30d3 msgid "Both **Pico** and **Meta Quest** support two connection modes:" msgstr "**Pico** 和 **Meta Quest** 都支持两种连接模式:" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 2eb061ef98b748b4ae60f639b08f8c27 +#: b27a972ac766458db25ae6dd9ef6d61c msgid "Mode" msgstr "模式" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 68c72fffe5b6470b8fbc3246f38ba49a +#: 07d5f7bc326f4060ae4d4bcc041ae7b0 msgid "Connection" msgstr "连接" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: ec0f1075d5434b4db7c47240c57807ac +#: 84a30e9bc65c424482d4837a99d3b700 msgid "Latency" msgstr "延迟" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: e1da0ab1ae494483a8cbcf5acee3e626 +#: 92c404f325834d33a5857bcdb995f685 msgid "Command" msgstr "命令" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: ad041dae04bb4cdfab7f659a87e13fc6 +#: 4a0f9705725a40a29384e692c62d1fd4 msgid "**Web** (WebXR)" msgstr "**Web**(WebXR)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: e24cb5a225b94f43985836720e31ac03 +#: 92ed5e2d4a084d6b862fb29076cf4d26 msgid "Browser-based" msgstr "基于浏览器" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: cbc5921147e54771ba26f4972dcdc05f +#: 0b7d2088be694cfe872bb02d7f2cb990 msgid "Easy" msgstr "简单" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 7f1bbce6cb274a26bc3664de06b52e33 +#: 4fb936c3988644ddb92dbb58421c85ac msgid "Higher" msgstr "较高" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: edc92e0d15874a4e8d30a71ccd2c6d5d +#: 5e8902c468e74cbfaa867b762f1bb04e msgid "`./run.sh vr`" msgstr "`./run.sh vr`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 244899e404474b7f8d42a1c0b22ac7bf +#: 03c89dc00db04c41a1648b85f37cb998 msgid "**XRoboToolkit**" msgstr "**XRoboToolkit**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 1e3ecf39d4b147b1ba50a7544203482d +#: 988de1e980fd426892b228c469aa38d8 msgid "Native app + PC Service" msgstr "原生应用 + PC Service" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: bce36ae4fd2d4ac5b7f64984e38c39c9 +#: f2864b21bfff4e21b80d44b8d650510b msgid "Requires app install" msgstr "需要安装应用" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: b129e613f35344a39bd265b0c68d5acd +#: 281812cb4bf6407a8bdb69d1e8c3c6ef msgid "Lower" msgstr "较低" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:135 -#: 4a3b9efc0add4091ae91c22a1e195722 +#: 6a78e64ebdbd4caaa48ce79a5db6e3a4 msgid "`./run.sh vr-xrt-service` then `./run.sh vr-xrt`" msgstr "先 `./run.sh vr-xrt-service`,再 `./run.sh vr-xrt`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:151 -#: a15a028645ec44ba8ad8e8113e48ca19 +#: e02b20afdae3422fadaf718330ceb137 msgid "Web Mode (WebXR)" msgstr "Web 模式(WebXR)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:153 -#: efdd286ae70b45b583e93ea5349422eb +#: b871f2d5206c455c84a837729ad724b0 msgid "Browser-based VR using Vuer — works on both Pico and Meta Quest:" msgstr "基于浏览器、使用 Vuer 的 VR — Pico 和 Meta Quest 均可使用:" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:155 -#: c484b15227a8416583418742235a8a63 +#: a7167262972b42138b81383e24f38694 msgid "./run.sh vr" msgstr "./run.sh vr" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:159 -#: d723a16721b049d3b6dc9f8cc0f353b0 +#: 4cfe5d394b4a41ff8e288638f591c18c msgid "" "Open the displayed URL on your VR headset's browser. No app installation " "required." msgstr "在 VR 头显的浏览器中打开显示的 URL。无需安装应用。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:161 -#: 849450746b7d4390ae00fc826256e4d4 +#: e628b2792df3434b826678b19b4f0a7d msgid "XRoboToolkit Mode" msgstr "XRoboToolkit 模式" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:163 -#: f8b4e99961974584a0b74c06685e02b8 +#: 8531e90af2644655a5433d2d2d8e773a msgid "" "Native application for lower latency — recommended for production. From " "the fa-py-libraries README:" msgstr "更低延迟的原生应用 — 推荐用于生产环境。摘自 fa-py-libraries README:" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: f39fcbaf75cb4aaa9cd4daef13cedb40 +#: f25997eed6a1405dbb5ff468bb7b117c msgid "" "./init.sh install-xrobotoolkit-pc-service\n" "./init.sh install-xrobotoolkit\n" @@ -791,7 +791,7 @@ msgstr "" "./run.sh vr-xrt" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:172 -#: 021968219228491183d7415913abe593 +#: 0e9d029674114520bd4396ed3a2d3325 msgid "" "Requires the **edition-matching** XRoboToolkit App on the headset " "(Enterprise App ≠ consumer Pico App) plus PC Service. `./run.sh vr-xrt-" @@ -801,93 +801,93 @@ msgstr "" "Service。`./run.sh vr-xrt-service stop` 关闭 PC Service。" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:174 -#: e8509c2511564a3a9103b063bd4f1311 +#: e64ecdccaaa64477bd2f82d4c6682558 msgid "Topics" msgstr "主题" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:176 -#: 57493ad8fa6d4cfaafb8aefe8d0e324a +#: 85f634f76c434dc48950c45b790b1678 msgid "VR teleoperation publishes to:" msgstr "VR 遥操作发布到:" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: d3752b503b434cfd8696d0258af78170 +#: 3028e66eac534af59cf7aef8b3a86715 msgid "Topic" msgstr "话题" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: f526c440707448ba8180885cb2acbcb9 +#: af5881e135e6484bbfa183112de10542 msgid "Type" msgstr "类型" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 623e18ce733543f799ad177595f268aa +#: ed199859c361438bb8f2e82e798bd1ff msgid "Description" msgstr "描述" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: d4d1ddda4d4a4488a6d63111c983fa9b +#: 9dcea0edb67b4851803e4f589e15a6dc msgid "`/teleop/left_ee_pose`" msgstr "`/teleop/left_ee_pose`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 3e85c749b7fd48c5ad8e66abb907e785 7e7958ccdbae4e749a9155906980ed12 -#: a1515510daec4b16b37afd5022ef5687 +#: 102bd5773bdb4197895b60c24687795e 3f9836d925634e0da6a3a949b60cf310 +#: a6771499f4a0440fb88bc5066eb19c2e msgid "`PoseStamped`" msgstr "`PoseStamped`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 12fb21b8935c45a486105055de965fe3 +#: 9602c9c9c19d4b6997ef54ca5776eb62 msgid "Left hand target pose" msgstr "左手目标位姿" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 7a95c3dccc824ca69f9bcbeaf14bdd4e +#: cfae798c38194cccb8032eafea2ce178 msgid "`/teleop/right_ee_pose`" msgstr "`/teleop/right_ee_pose`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 260036178ce14095b3b22acb5521d71a +#: 5b39b82ee7184a8fb1a1edba4363df23 msgid "Right hand target pose" msgstr "右手目标位姿" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 722e9113895b4924b7f6b2f4b4c22135 +#: cb9289c5525f45c98c54f5f82d5fad22 msgid "`/teleop/head_pose`" msgstr "`/teleop/head_pose`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 594414adbadc48079235d6755e238efc +#: f21c3eb91e9543668836afbf5c566d9d msgid "Head tracking" msgstr "头部追踪" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 751eac8252684376b4abc42cc92bfeac +#: d2ea4b8fb4164c379ffb820271243622 msgid "`/teleop/trigger`" msgstr "`/teleop/trigger`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: d7e80035c8524e9cbff6583f1d7a1c30 +#: 318ea53489ed402f9c22fae24e1c494e msgid "`Bool`" msgstr "`Bool`" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 25fb6f55716a4b71a16ec9f268c1199c +#: 1018a67a94774a9b84c31cb973fdefcf msgid "Controller trigger state" msgstr "手柄扳机状态" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:185 -#: 26182418f22b416e9d121b6f92e7ecf9 +#: 14db25defa0e4d11b6c96c2c2ee1090a msgid "Arm Following" msgstr "机械臂跟随" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:187 -#: 2e26ec39fb6846f68b07d4828de80d92 +#: a267bd73a4f749e8b5e189dd7c6d19fe msgid "Configure which arm follows which controller:" msgstr "配置哪条机械臂跟随哪个手柄:" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:189 -#: 8dad40f7b3cf4466a39503aeb1c63265 +#: 36a5b346c893449aaff93c631c3fd2ac msgid "" "# In configuration or launch\n" "teleop_config:\n" @@ -904,12 +904,12 @@ msgstr "" " right_arm: \"any_controller\"\n" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:198 -#: 26486d24da7c41229d89e28bfd89ebf8 +#: c38d1a70056a40898f2bad52a8e22414 msgid "Controller buttons (分体 vs 全身)" msgstr "手柄按键(分体 vs 全身)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:200 -#: b4c6e86905cc4c8ea284c496b807bcd2 +#: 7c2fe80040d0487eaa3f4da2f2008fcf msgid "" "Bindings depend on whether the robot is running **分体** " "(`split_body.launch.py`) or **全身** (`full_body.launch.py`). Shared on " @@ -919,156 +919,342 @@ msgstr "" "**全身**(`full_body.launch.py`)。两种模式共用:" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 09387797c3c047dc9efaeec4c20d4142 872dbc9fbe9f49089c36a7debdf7828b +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 1d1c307788c14423ba0e7613518efbda 986677b32a85483aacf9bbdafd63c5bd +#: ba7d3ce994c14e668673630d056455bf msgid "Control" msgstr "操作" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 3c9468b2bc004fc883172b5f93e4f3a6 89238dc1e44b4320beb85b70a3a66e4e +#: 34f5290fee1b4c00a76d6707465a0b6b 624d5138f27f4ae6a4df14523e0076ad msgid "Action" msgstr "动作" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 7d753fabb6a440e0aeeb7bbe80dccbb3 +#: 380f29188d474f819bb6921ad51d0bc1 msgid "Trigger" msgstr "扳机" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: e5ed01ff86ac48508c81923e700da79f +#: 8b589bd8030345deafe582f3cc70fbc2 msgid "" "Gripper — pull for proportional open/close; in open/close mode, tap " "toggles" msgstr "夹爪 — 按拉动比例开合;开合模式下点按切换" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 5936e4b265754ad084bd74d98f1bb40d +#: 5f16d3228c864536918482965744d024 msgid "Right **A** / left **X**" msgstr "右 **A** / 左 **X**" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: c58aab5702824d17a0be453be8910608 +#: 555b3435dc46406b97d7caeab7a4d232 msgid "" "FSM forward (`HOLD`→`OCS2`, `HOME`→`HOLD`) / back (`OCS2`→`HOLD`, " "`HOLD`→`HOME`)" msgstr "FSM 前进(`HOLD`→`OCS2`,`HOME`→`HOLD`)/ 后退(`OCS2`→`HOLD`,`HOLD`→`HOME`)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: ac593ba4ffd84d1b9d0c82c152bd26ca +#: e4727b27b1bb4fd5833b4932456d8e19 msgid "Left stick click" msgstr "左摇杆点击" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 481d3f312f4247d5994d1cca2ddfcd97 +#: e47d9ffc637b44c79efeab33468930fd msgid "Mirror" msgstr "镜像" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 2802f4b20bfc4dee97ad19bcc6d3b68a +#: 3a7839c229b64820b5bda1bd166f8eb1 msgid "Right stick click" msgstr "右摇杆点击" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 647d0dfc120f44438d78e61983a481e0 +#: fb18088c359940ab8f85a3f4f5403072 msgid "`STORAGE` ↔ `UPDATE` (**OCS2 only**)" msgstr "`STORAGE` ↔ `UPDATE`(**仅 OCS2**)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 7467a256d1f043d7994ec2b708590275 +#: f08c33f7452d44399fa03123ed1eb6a8 msgid "Grip (short press)" msgstr "握把(短按)" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 85d5f8843fda4b10b8237cd24a9438dd +#: 409ab575c9aa48aab97528982aeaa13d msgid "Toggle stick plane (`XY` ↔ `Z+Yaw`)" msgstr "切换摇杆平面(`XY` ↔ `Z+Yaw`)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:210 -#: 55f6ab7e0c7c41beba81a10bc8a72c3b +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 +#: 0b618aec77794fb49e54b80c8cfe82a6 +msgid "Left **Y** / right **B**" +msgstr "左 **Y** / 右 **B**" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 +#: 0d12153e812c4f2db39e388c67a568cf +msgid "" +"Per-arm: **分体** = VR pause/resume (停发指令). **全身** default = that arm’s WBC" +" ENABLE/DISABLE (停单臂); after event 16, same pause/resume. See [Stop one " +"arm vs stop sending VR commands](#stop-one-arm-vs-stop-sending-vr-" +"commands)." +msgstr "" +"按臂:**分体** = VR 暂停/恢复(停发指令)。**全身** 默认 = 该臂 WBC `ENABLE`/`DISABLE`(停单臂);事件" +" 16 之后变为同样的暂停/恢复。见 [停单臂 vs 停发指令](#stop-one-arm-vs-stop-sending-vr-" +"commands)。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:211 +#: 247a1183213140a78b10ba17722eb11f msgid "**全身** adds grip + stick (ignored in 分体; FSM must already be **OCS2**):" msgstr "**全身** 额外提供握把 + 摇杆(分体下忽略;FSM 须已在 **OCS2**):" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: f63d7537ef0f4450ab9166840a986edd +#: a56ec3624e2549d38940cf372cca5fa2 msgid "Left grip + left stick" msgstr "左握把 + 左摇杆" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 58e1f73f2b0a4fec853597b36857f666 +#: 745ca1425e1a494f8657d2a979012e08 msgid "Body: up = upright, down = lock waist, left = follow, right = custom lock" msgstr "身体:上 = 竖直,下 = 锁定腰部,左 = 跟随,右 = 自定义锁定" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 1a144c5732d746f8be0255e65368075f +#: 797048a3587b4ac998fef8476914cb33 msgid "Right grip + right stick" msgstr "右握把 + 右摇杆" #: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 -#: 7f8da80c32fe4f0e8203c02925950e68 +#: 7830e9c373c74c07a75dd17443c94c69 msgid "" "WBC: up = dual-arm couple on/off, down = chassis unlock/lock, left = " "reserved, right = reference-joint track" msgstr "WBC:上 = 双臂耦合开/关,下 = 底盘解锁/锁定,左 = 预留,右 = 参考关节追踪" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:217 -#: 6563a7e4fa4b4a27beabc05ceda24a92 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 +#: 1befbfd207e1445798e892b4719ccbf5 +msgid "Both grips + left **Y** + right **B**" +msgstr "双手握把 + 左 **Y** + 右 **B**" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:165 +#: dc50aad1fb624e53987fde5890be7207 +msgid "Event 16: toggle the Y/B latch between WBC arm disable and VR pause/resume" +msgstr "事件 16:把 **Y**/**B** 锁存在 WBC 停单臂与 VR 停发指令之间切换" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:219 +#: b673bf2c68b14b19b5400f974e33e8c7 msgid "" "Grip + same-hand trigger switches that trigger’s gripper between percent " -"and open/close. Left **Y** + right **B** is scale-align (turns mirror off" -" and returns to `STORAGE`). Both sticks together toggle chassis teleop ↔ " -"end-effector control." +"and open/close. Pressing left **Y** and right **B** together (no grips) " +"is scale-align (turns mirror off and returns to `STORAGE`). Both sticks " +"together toggle chassis teleop ↔ end-effector control." msgstr "" -"握把 + 同侧扳机切换该扳机所映射夹爪的百分比 / 开合模式。左 **Y** + 右 **B** 为尺度对齐(关闭镜像并退回 " +"握把 + 同侧扳机切换该扳机所映射夹爪的百分比 / 开合模式。同时按下左 **Y** 和右 **B**(不按握把)为尺度对齐(关闭镜像并退回 " "`STORAGE`)。左右摇杆同时按下切换底盘遥控 ↔ 末端控制。" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:219 -#: 9b81600b7116432d84bd6f3ddf5a3b57 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:221 +#: 9405c5e1c93349ab9ff71530fbcc5a0b +msgid "Stop one arm vs stop sending VR commands" +msgstr "停单臂 vs 停发指令" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 98fbc4b5c0fa42ad886a40e875228de9 +msgid "停单臂 vs 停发指令" +msgstr "停单臂 vs 停发指令" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:226 +#: b1acc93d12494386b37611eafe211ebe +msgid "" +"On **全身**, default left **Y** / right **B** requests that arm’s WBC " +"ENABLE/DISABLE (**停单臂**). That is not the same as freezing VR input for " +"that arm (**停发指令** / pause). Event 16 flips which of those two Y/B does." +msgstr "" +"在**全身**下,默认左 **Y** / 右 **B** 向 WBC 请求该臂 `ENABLE`/`DISABLE`(**停单臂**)。这与冻结该臂的 " +"VR 输入(**停发指令**)不是一回事。事件 16 切换 **Y**/**B** 当前属于哪一种。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:229 +#: 7cf3e7bfd18e4a2db6545c5dacd87e31 +msgid "" +"Y/B disable and event 16 apply when **全身** is active " +"(`ocs2_wbc_controller`), VR is enabled, and FSM is **OCS2**. " +"Implementation: [VRInputHandler README](https://github.com/fiveages-" +"sim/arms_ros2_control/blob/b55274481140ceb6e3e694ea4777b7fdd4cfa433/command/arms_target_manager/VR_INPUT_HANDLER_README.md)" +" (「单臂启用 / 禁用与 Y/B 语义锁存」)." +msgstr "" +"**Y**/**B** 停单臂与事件 16 仅在**全身**已激活(`ocs2_wbc_controller`)、已启用 VR、且 FSM 为 " +"**OCS2** 时生效。实现见 [VRInputHandler README](https://github.com/fiveages-" +"sim/arms_ros2_control/blob/b55274481140ceb6e3e694ea4777b7fdd4cfa433/command/arms_target_manager/VR_INPUT_HANDLER_README.md)" +"(「单臂启用 / 禁用与 **Y**/**B** 语义锁存」)。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 7fbe923f360f45f79fc07666d8d1cd02 +msgid "What you want" +msgstr "目的" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: e609f3ee983d4b878d7a8784a7547f23 +msgid "Result" +msgstr "结果" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: f950ed076eb34011a40436b1d5642429 +msgid "**Stop one arm** (停单臂)" +msgstr "**停单臂**" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 62991357c4164f6ea069d265ccc65783 +msgid "Default left **Y** / right **B**" +msgstr "默认左 **Y** / 右 **B**" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 576ec1a5171f4d4296b11c54e5d088f9 +msgid "" +"Request that arm’s WBC ENABLE/DISABLE. After WBC confirms `ARM_DISABLED`," +" VR stops publishing pose to that arm and stops accumulating that arm’s " +"stick offset. The other arm stays controllable. Re-enable rebases from " +"the current robot pose and the current headset / controller pose, then " +"clears that arm’s stick offset. Does not require `UPDATE` / `STORAGE`." +msgstr "" +"向 WBC 请求该臂 `ENABLE`/`DISABLE`。WBC 确认 `ARM_DISABLED` 后,VR " +"停止向该臂发布位姿,也不再累积该臂摇杆偏移。另一臂仍可控制。重新启用时从当前机器人位姿和当前头显/手柄位姿重新对齐基准,并清零该臂摇杆偏移。不要求处于" +" `UPDATE` / `STORAGE`。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 80d82666020649fc94dcc04c0e68a68a +msgid "**Stop sending VR commands** (停发指令)" +msgstr "**停发指令**" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: fb635707855f45d98c9433e1a000b283 +msgid "After event 16, same left **Y** / right **B**" +msgstr "事件 16 之后,仍是左 **Y** / 右 **B**" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: ba0e2b72c55a4d46b77421b490d9bf0d +msgid "Freeze / resume VR input for that arm (pause). Needs `UPDATE`." +msgstr "冻结 / 恢复该臂的 VR 输入。需要 `UPDATE`。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 5e99dbeb5fec4c7197981f34a4e88624 +msgid "Switch Y/B meaning" +msgstr "切换 **Y**/**B** 含义" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: 9ad458a67a5d4bb7a5213f20046808bc +msgid "Event 16: both grips + left **Y** + right **B**" +msgstr "事件 16:双手握把 + 左 **Y** + 右 **B**" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:223 +#: a77689ddfdae4872b2d30d4b708da5a6 +msgid "Latch toggles between “WBC arm disable” and “VR pause/resume”." +msgstr "锁存在「WBC 停单臂」与「VR 停发指令」之间切换。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:237 +#: bd72c6e732d94477ae0a9952b977b503 +msgid "**分体** ignores event 16. Left **Y** / right **B** stay VR pause/resume." +msgstr "**分体**忽略事件 16。左 **Y** / 右 **B** 始终是 VR 停发指令(暂停/恢复)。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:239 +#: 9953e61024784f5192fd7b085f2aa7ce +msgid "" +"Mirror swaps which physical button maps to which arm. WBC " +"enabled/disabled state and rebase stay on the real arm." +msgstr "镜像只交换物理按键到机械臂的映射。WBC 启用/禁用状态与重新对齐始终按实际机械臂保存。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:241 +#: 2658cee4defe4e76b59df3ea5df2e464 +msgid "" +"When event 16 switches to pause and that arm is already `ARM_DISABLED`, " +"the handler requests ENABLE, rebases, then freezes as paused. When it " +"switches back to disable and that arm is already VR-paused, it requests " +"DISABLE, then clears pause after WBC confirms. Under pause semantics, " +"entering `UPDATE` with the right stick click does not clear the pause." +msgstr "" +"事件 16 切到停发指令且该臂已是 `ARM_DISABLED` 时,会先请求 `ENABLE`,重新对齐后再冻结为暂停。切回停单臂且该臂已处于 " +"VR 暂停时,会请求 `DISABLE`,WBC 确认禁用后再清除暂停。处于停发指令语义时,点右摇杆进入 `UPDATE` 不会清除暂停。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:243 +#: 465b90d253c34c239f9f48e80b81f9d7 +msgid "Constraints on **全身**:" +msgstr "**全身**约束:" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:245 +#: 1225d23ed52d456f845175c656eadabd +msgid "While the arms are coupled, Y/B cannot toggle a single arm." +msgstr "双臂已耦合时,**Y**/**B** 不能单独切换任一臂。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:246 +#: 76780de64d004bae8662579aafa75dfa +msgid "You cannot enable couple while any arm is disabled." +msgstr "任一臂处于禁用时,不能开启双臂耦合。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:247 +#: cd5aa3fe4b234892a5748d1b9fb9887d +msgid "" +"While coupled, event 16 cannot switch the latch from pause back to " +"disable (the latch stays)." +msgstr "耦合期间,事件 16 不能把锁存从停发指令切回停单臂(锁存不变)。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:248 +#: 2e5be55e2cc54292a931d1c8d40c65c2 +msgid "" +"While a WBC switch or an event-16 conversion is still pending, event 16 " +"and Y/B are ignored." +msgstr "WBC 开关或事件 16 转换仍在等待确认时,事件 16 与 **Y**/**B** 均被忽略。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:249 +#: ebd238d217a04f05be3a61e98a884412 +msgid "" +"If the topology leaves 全身, the latch returns to the default disable " +"meaning." +msgstr "控制拓扑离开全身后,锁存回到默认的停单臂含义。" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:251 +#: 54aa4f9eed6b4ef19fdb28820337da52 msgid "Safety" msgstr "安全" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:221 -#: 0e03d2be1a2e4ba49b19a200b62b0f70 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:253 +#: 21ab2c43733f45b39e27f6a5241988c1 msgid "Motion Limits" msgstr "运动限制" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:224 -#: e6afef628d2143f2bc2f71d1ea81fc6d +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:256 +#: 15b99ec3f0c14755ba29a27e663bc653 msgid "VR teleoperation can command rapid motions. When using real hardware:" msgstr "VR 遥操作可能发出快速运动指令。使用真实硬件时:" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:225 -#: e5235af3cca74390bea6f286bb4cfe38 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:257 +#: 2a920bfa9e224206b4196efd6dddcdf1 msgid "Start with low speed limits" msgstr "从较低速度限制开始" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:226 -#: 73f26146b9df42868e35c620f2052953 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:258 +#: 88948c4f3aa942a097bc14986b4dd1dd msgid "Keep hand on emergency stop" msgstr "手放在急停开关上" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:227 -#: 8d0820913b7a4810b42287625058fa06 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:259 +#: c54fe2f3a3af4e42b2cc3efe64c2e617 msgid "Clear the robot workspace" msgstr "清空机器人工作空间" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:228 -#: 8f2d705d28864d0cac923db7ad78b24b +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:260 +#: a7ddfc19d42849518c7cc8942d6e3ac1 msgid "Use workspace limits in software" msgstr "在软件中使用工作空间限位" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:231 -#: f507aca6d96049468d7edf095c4b5999 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:263 +#: 1a9fa71eec1a45f6aed1600136e63c30 msgid "Network Setup" msgstr "网络设置" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:233 -#: e6225814743740e2af4b117156cd49dd +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:265 +#: 32afa838371748bcb1b719f8ed6fca0b msgid "" "The headset and the ROS 2 PC must be on a reachable network (same Domain " "ID; Zenoh or DDS as needed)." msgstr "头显与 ROS 2 主机必须处于可达网络(相同 Domain ID;按需使用 Zenoh 或 DDS)。" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:235 -#: 5957e7e57a8349c798dc921e4b6b9366 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:267 +#: 97cc8ae66e4645a2afe6f13d533f47df msgid "" "**Pico Enterprise:** USB shared networking (USB 网络共享) is supported — " "tether the headset to the PC over USB so they share a network. Follow the" @@ -1078,147 +1264,157 @@ msgstr "" "**Pico 企业版:** 支持 USB 网络共享 — 用 USB 将头显连接到电脑以共享网络。按头显自带的 USB 网络界面操作;本页不列出 " "ADB 或 `usb0` 命令。" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:236 -#: fdc44f419fbc48c7ac2bda343253add1 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:268 +#: d275abffffbf472cb4da9f5042ea91ee msgid "" "**Pico consumer / Meta Quest:** use the usual Wi-Fi (or other IP) path. " "Do not assume USB 网络共享." msgstr "**Pico 消费版 / Meta Quest:** 使用常规 Wi-Fi(或其他 IP)路径。不要假定有 USB 网络共享。" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:238 -#: aef95c205056442aa7095b98b1965ae1 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:270 +#: 8ce3b6deec43451ab64a09713b257c88 msgid "Then:" msgstr "然后:" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:240 -#: b4350f87f8d84db798e45e0c71992fb1 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:272 +#: 8a524ff56352491486b7945e703919c5 msgid "Confirm both devices can reach each other" msgstr "确认两台设备能够互相访问" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:241 -#: 8552edf991b0457a9b73e7305769b12c +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:273 +#: 212146655cde46d8aba371250cc1f31a msgid "Configure ROS 2 domain or Zenoh bridge if they are not on one LAN" msgstr "若不在同一局域网,配置 ROS 2 Domain 或 Zenoh 桥接" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:242 -#: c9ae869ba648472cb5685f2abaeb58a7 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:274 +#: 4af1ce8f9cb54eadb85d6b5e65a7bdb6 msgid "Set firewall rules for ROS 2 ports" msgstr "为 ROS 2 端口设置防火墙规则" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:244 -#: ebda25ab6beb4ce7aed94217d5266315 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:276 +#: 48039264c1f344468f24c9174ddb9cff msgid "Verification" msgstr "验证" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:246 -#: c94c88c93ea640588e1b75fac596b62f +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:278 +#: dc648859183549c08bc7c56b958910da msgid "VR bridge logs show tracking data" msgstr "VR 桥接日志显示追踪数据" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:247 -#: cf5637f3452840928d97da1ecbf246cc +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:279 +#: a83a7b16ee9c4e4582d3873124a92414 msgid "`ros2 topic echo /teleop/right_ee_pose` shows updates" msgstr "`ros2 topic echo /teleop/right_ee_pose` 有更新" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:248 -#: 8af6302e8d534c05a827282c484fc53a +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:280 +#: 86719e89802142d29ac9e08712da173c msgid "Robot follows VR controller motion" msgstr "机器人跟随 VR 手柄运动" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:250 -#: d502aa7bd2f242db86ea72620753dac2 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:282 +#: 2fa81a8a2dc149898bb6ddd3bbf6109e msgid "Troubleshooting" msgstr "故障排除" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:252 -#: 398a1b19a2564ff189527489fa7b8c2a +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:284 +#: 1f9f2907539b4bdfb725e1d51201cad0 msgid "No tracking data" msgstr "没有追踪数据" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:254 -#: 123255adaa8741fb84298b4fa4c7438a +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:286 +#: bb5b614ef3e04e2db76b0f7836c4ab45 msgid "Check VR device is properly tracked" msgstr "确认 VR 设备追踪正常" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:255 -#: cfa3f9cf4d5a4ed29e9124a51282f7af +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:287 +#: 2c4c432eeb44434f842b93ea9ed98e77 msgid "Verify browser/app has WebXR permissions" msgstr "确认浏览器/应用已获得 WebXR 权限" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:256 -#: dd0a9e75a6eb486486aad8360938aa84 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:288 +#: 37d52eaaf99546da91474524fa06711d msgid "Check network (Wi-Fi, or USB 网络共享 on Pico Enterprise)" msgstr "检查网络(Wi-Fi,或 Pico 企业版上的 USB 网络共享)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:257 -#: c544af18417042e79cb708c043543964 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:289 +#: a3df2f0040684d58b4b66594e508318f msgid "Confirm the headset App matches the Pico edition (Enterprise vs consumer)" msgstr "确认头显 App 与 Pico 版本匹配(企业版 vs 消费版)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:259 -#: 23f5ae5ca7be462981a7ce9aee9741e8 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:291 +#: f7ee15b234d9424e858f8e17214da20f msgid "High latency" msgstr "延迟较高" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:261 -#: e2be0839dc0a4a569f994d27a99d7d32 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:293 +#: 8399322bd2e74c8ea05785bd448fc661 msgid "Prefer **Pico Enterprise** (USB 网络共享 when possible)" msgstr "优先使用 **Pico 企业版**(尽可能用 USB 网络共享)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:262 -#: eb0109a158ac4917932784405e38cb9a +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:294 +#: e3d50e8991fc423db07ffc8fc4fc3949 msgid "Use **XRoboToolkit** (`./run.sh vr-xrt`) instead of WebXR" msgstr "使用 **XRoboToolkit**(`./run.sh vr-xrt`)而不是 WebXR" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:263 -#: 6f71213af79449279dcbf8abfbd9282f +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:295 +#: 4a645b766d27438580f51cf4c5f88924 msgid "Use wired / USB-tethered networking when the headset edition supports it" msgstr "在头显版本支持时,使用有线 / USB 共享网络" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:264 -#: 3375e47371ce4f1fad8af53e19a19ce4 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:296 +#: bc55a2dea1ba4e3a922f6d6833b0e778 msgid "Reduce update rate in configuration" msgstr "在配置中降低更新频率" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:265 -#: eece7ad592414ad2a338248e6be8398c +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:297 +#: c35b815e1ec44731a2aaef389e1e556f msgid "Check for network congestion" msgstr "检查是否存在网络拥塞" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:267 -#: 07bf58fbd9674d93b458ef72cd648124 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:299 +#: aabfe530a64b466cb309baa8a24ddd00 msgid "Robot doesn't follow" msgstr "机器人不跟随" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:269 -#: e8c0cac7ae324c719cce0634e02afb24 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:301 +#: 39da8852092543cd94a4e4350f64643f msgid "" "Confirm `enable_vr: true` in the description’s " "`config/ocs2/target_manager.yaml` (most robots default off)" msgstr "确认描述包 `config/ocs2/target_manager.yaml` 中 `enable_vr: true`(多数机型默认关闭)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:270 -#: eb1448fd24a6456da492507bb63a24ef +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:302 +#: 07189fb1397e4f3a85e21e99c25039e6 msgid "Verify controller is in teleop mode (`UPDATE` after entering OCS2)" msgstr "确认控制器处于遥操作模式(进入 OCS2 后再到 `UPDATE`)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:271 -#: c9b7f6e1ee6a4eb5abddb2f74d7eabce +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:303 +#: 8ccd24a06ba04e99af63f97e485d4f7b +msgid "" +"On **全身**, confirm that arm is not WBC-disabled (`ARM_DISABLED`) and that" +" Y/B is not in VR-pause for that arm — [Stop one arm vs stop sending VR " +"commands](#stop-one-arm-vs-stop-sending-vr-commands)" +msgstr "" +"在**全身**下,确认该臂未被 WBC 禁用(`ARM_DISABLED`),且该臂的 **Y**/**B** 不处于 VR 暂停 — [停单臂 vs " +"停发指令](#stop-one-arm-vs-stop-sending-vr-commands)" + +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:304 +#: f01f858f6bcd4de0bcdf66dd76c21a8e msgid "Check target poses are within workspace" msgstr "确认目标位姿在工作空间内" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:272 -#: 06f0a3aaf5284f1eac4541170ce87ef7 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:305 +#: 47feca6879f048188c88586e40fee71a msgid "Ensure no safety limits are triggered" msgstr "确认没有触发安全限位" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:274 -#: 8e21c7711927404aaa60779a2b081193 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:307 +#: 3771f352422e42eca9a3152854719a6b msgid "`base_footprint` missing (全身 / FULL_BODY)" msgstr "`base_footprint` 缺失(全身 / FULL_BODY)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:276 -#: 1cf88c5d55664cf09da517331b1502f1 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:309 +#: 78d1da20944349ca82a7cf667bc6df21 msgid "" "FULL_BODY may warn that `base_footprint` does not exist " "(`lookupTransform` target_frame). Default `vr_follow_frame` is " @@ -1230,13 +1426,13 @@ msgstr "" "`vr_follow_frame` 是 `base_footprint`。在 `config/ocs2/target_manager.yaml` " "里把 `vr_follow_frame` 改成机器人实际基座(例如 `base_link`)。" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:278 -#: 7b37ae2fdde84565a49c43949d27264f +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:311 +#: 1faf1de0c8d74f3f9c58106d67591aba msgid "Next Steps" msgstr "下一步" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:280 -#: bed599aa652c43a5b5d80728f815f74f +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:313 +#: 215fdbcf25ac47d2a4eadbabb88df813 msgid "" "[Isomorphic Teleop](7-isomorphic_teleop.md) for master–slave joint " "following (Panthera HT `mode:=mit` / `effort` — not the VR MIT path " @@ -1245,13 +1441,13 @@ msgstr "" "[同构遥操作](7-isomorphic_teleop.md) 用于主从关节跟随(Panthera HT 的 `mode:=mit` / " "`effort` — 不是上面的 VR MIT 路径)" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:281 -#: ba70390766bb4554b8a817f41345f2d6 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:314 +#: 22504a5bce054e7eaff3613eb8038890 msgid "[FSM and Topics](../../3-concepts/4-fsm_and_topics.md) for mode control" msgstr "[状态机与话题](../../3-concepts/4-fsm_and_topics.md) 用于模式控制" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:282 -#: b9a76949b9df4520bd4ee49986396cb4 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:315 +#: 01920c0a57f8456aa0d4167e13952345 msgid "" "[ocs2_arm_controller](../../4-reference/controllers/2-ocs2_arm_controller.md)" " — `force_gains` and MIX detection" @@ -1259,8 +1455,8 @@ msgstr "" "[ocs2_arm_controller](../../4-reference/controllers/2-ocs2_arm_controller.md)" " — `force_gains` 与 MIX 检测" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:283 -#: b5c7e32c68c2411ca84bfe743483b2b1 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:316 +#: c0b5037be4fe4c5586cd88b1e8101f48 msgid "" "[marvin-ros2-control](../../4-reference/hardware/6-marvin.md) — Tianji " "position + `JOINT_IMPEDANCE`" @@ -1268,8 +1464,8 @@ msgstr "" "[marvin-ros2-control](../../4-reference/hardware/6-marvin.md) — 天玑位置 + " "`JOINT_IMPEDANCE`" -#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:284 -#: a5e3bfd699294bc8b9e2a77713c15771 +#: ../../source/2-how_to/5-teleoperation/6-vr_teleop.md:317 +#: 34238eec537a464b8757a9607ed24b59 msgid "" "[vr_pose_publisher](../../4-reference/teleop/1-vr_pose_publisher.md) — " "published `/teleop/*` topics" diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/teleop/1-vr_pose_publisher.po b/locale/zh_CN/LC_MESSAGES/4-reference/teleop/1-vr_pose_publisher.po index dcb0610..4c4346c 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/teleop/1-vr_pose_publisher.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/teleop/1-vr_pose_publisher.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-09 02:14+0000\n" +"POT-Creation-Date: 2026-10-22 06:35+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,110 +21,110 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:1 -#: 0e76bc44776a4b2d80b728f55c642456 +#: 1143229b27094e5cae46407089e36506 msgid "vr_pose_publisher" msgstr "vr_pose_publisher" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:3 -#: 1b72a9c86a4a4551a0aac457192fcf38 +#: b1e094a639514ceeb26c46fb8144c2e7 msgid "VR pose bridge for teleoperation." msgstr "用于遥操作的 VR 位姿桥接。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: c3a45740438246c8806618d0483320e1 +#: 9c3e71e794bb4650856924c2365b3bce msgid "Access Note" msgstr "访问说明" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:8 -#: 70bece909ac0473fb4c0c57b615e75fb +#: 3b8a2b2673f4406ab2860bca76d26847 msgid "Available through fa-py-libraries (public) or as standalone (private)." msgstr "可通过 fa-py-libraries(公开)使用,也可作为独立软件包(私有)使用。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:11 -#: 6ebef0b53b4546dd8b7d48f139ff3ed7 +#: 648b1cfd31d9477abe62e9f85e9c7b0d msgid "Supported Headsets" msgstr "支持的头显" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 5a9553b1aded48ee945cbd5d996ba064 7c9d45ecd9ba4bd38242dc666dde131f +#: 541c6d50ef974c8dafe2f962209f0798 dbdbdd09e7b14fadb7838cd0e9082874 msgid "Headset" msgstr "头显" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: a1bed2bbf43f4943af169dad50ae1197 +#: f4f8c8d57e4f4707bbfe3d82b8f4e7c4 msgid "Support Level" msgstr "支持级别" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 3ec748b6721e41ce8f52dbd6e31a818b +#: 53cb16f1c8de47fba22c21340a66ee71 msgid "Notes" msgstr "说明" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 768fb644d8ce440fa425ef02495a2681 +#: 604871c4d1814286a63eb6d78c5a46c1 msgid "**Pico Enterprise**" msgstr "**Pico 企业版**" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 35df171d3347411d8ada2a139be380db +#: 66b9b20663e445ecabac9ea3c6278188 msgid "**Recommended**" msgstr "**推荐**" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 73f38526216d4d249e814429495186fd +#: 929998d62804492c9afc1f0efe4da816 msgid "USB 网络共享; **different App** from consumer Pico" msgstr "USB 网络共享;**App 与消费版 Pico 不同**" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 338287beb9e84cfc8e2d1301203138e6 +#: 518c07a247bb4263860abd693d4f2e0b msgid "**Pico consumer**" msgstr "**Pico 消费版**" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 189db32280a94e9b9418c575a016fc3a 4bde578dbaf34be59090de98f8f8fba4 +#: 815491a327ab49d18f343c9ff6eb8979 90a04a8bfdfc4320a1e29efd91f87832 msgid "Supported" msgstr "支持" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: fef0a2c1282d48f09f0c5e43c7a63a8f +#: dd8f905b23e94e56bbe8f24a117ec87d msgid "Own App (not the Enterprise App); no USB-tether path here" msgstr "使用自己的 App(不是企业版 App);本文不记录 USB 网络共享路径" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 7ad12adba39f4abfa2cd2840725b7af6 +#: 226f76a0b9ef4c0b92b68be688310602 msgid "**Meta Quest**" msgstr "**Meta Quest**" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:5 -#: 59f18665e0b14f7488ab438ef93eef34 +#: 232c618544de44be800820662a269686 msgid "Good consumer availability" msgstr "消费级产品更容易买到" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:19 -#: bb4798d1fbd14121b640d633adbb1754 +#: ff0ba5bbf4144ebf8a0ff2a9e1eaab82 msgid "Pico Enterprise vs consumer" msgstr "Pico 企业版与消费版" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:22 -#: 9e64d0a655ae4e95a4d34e5106e2eb93 +#: c4c7fa0e8466423cb2fa241076303e30 msgid "Pico **Enterprise** and Pico **consumer** are not the same SKU:" msgstr "Pico **企业版** 与 Pico **消费版** 不是同一 SKU:" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:24 -#: 35637d5fd7964efc955a7aa8dab05df1 +#: 35dd73c4e32d4dab933ade4f6bb8d850 msgid "Enterprise supports **USB shared networking (USB 网络共享)**." msgstr "企业版支持 **USB 网络共享**。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:25 -#: 9845ee9bf5b4452085b2bafaf447ed38 +#: 325b7b67ee9643e89d73fd0bc45b25e5 msgid "" "They use **different headset Apps** — do not install one App and expect " "it to cover both." msgstr "它们使用**不同的头显 App** — 不要安装一个 App 就期望同时覆盖两者。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:27 -#: 0b66098390274047b9254472786a30ec +#: 91753f928e5a4944a605c852eb0f28dc msgid "" "fa-py-libraries documents XRoboToolkit as “XRoboToolkit App + PC Service”" " vs browser WebXR (`./run.sh vr` / `./run.sh vr-xrt`). It does not " @@ -134,37 +134,37 @@ msgstr "" "WebXR(`./run.sh vr` / `./run.sh vr-xrt`)。它不为任一 Pico 版本提供商店链接或 ADB 步骤。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:30 -#: 0b4288ae4b384a0183cb0302358809d1 +#: 9f19d3a1afd64ebdb9d934363bc98b6b msgid "Purpose" msgstr "用途" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:32 -#: a3f8e7cdcab047f2801f43873d532ab7 +#: 6cda9d2280204e12bbb256ba0603f1d7 msgid "Bridges VR tracking data to ROS 2 topics:" msgstr "将 VR 追踪数据桥接到 ROS 2 话题:" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:33 -#: fa97ad62fed44132aa68e97a52d8822f +#: 8dec9f1cbd564b42a8fd25c4c2efd0ba msgid "Head tracking" msgstr "头部追踪" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:34 -#: 8a7ddf7555e144859a76b2e4d0d3e79f +#: eccc0c0330454f1782fd174a987319be msgid "Controller poses" msgstr "手柄位姿" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:35 -#: 782f29e09e6b4136bf646d48791cb4af +#: 80af10204746448c97366ff89998f16f msgid "Button states" msgstr "按键状态" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:37 -#: 9d41b8d3e15a459cb364f7f4fabefd23 +#: 9f9d1115f5fe4556bafc7b539be7883c msgid "Modes" msgstr "模式" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:39 -#: 23f0c6c9da39499fbd7fca1d6f35607a +#: e64a3c3edd5347bf9acbf2c7456ec522 msgid "" "Both Pico and Meta Quest support **WebXR (Vuer)** and **XRoboToolkit** " "backends. Launch from **fa-py-libraries** (`./init.sh all` first). There " @@ -174,12 +174,12 @@ msgstr "" "libraries** 启动(先 `./init.sh all`)。没有 `./run.sh vr --mode` 参数。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:41 -#: 330febc412354c63978b4eb30f86e350 +#: bff11aafc05241e3963249b3bb2112b2 msgid "Web Mode (WebXR/Vuer)" msgstr "Web 模式(WebXR/Vuer)" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:43 -#: e54cc3e45f7f412bb6346325babe53be +#: 7d05ca0802414f768a47d69411b31ac7 msgid "" "cd fa-py-libraries\n" "./run.sh vr" @@ -188,22 +188,22 @@ msgstr "" "./run.sh vr" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:48 -#: e027d30b3d3f4ba589de4216f6639d54 +#: 5e0f1d61ba374a5092a4570fa8658c95 msgid "Opens a WebXR session accessible from the VR headset browser." msgstr "打开可从 VR 头显浏览器访问的 WebXR 会话。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:50 -#: acd0e16f2e9f4a24ac6873dff56413d8 +#: ef178b94c8024eae8d9c8ba4076ded60 msgid "XRoboToolkit Mode" msgstr "XRoboToolkit 模式" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:52 -#: cd89ccbc3a2545bcb881d6f39555c523 +#: 0f080e9d253441faaea6c8ecdf3bdd68 msgid "Native application — lower latency, recommended for production:" msgstr "原生应用——延迟更低,建议用于生产环境:" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 5cabfe3e5ca6494fb2e1ccd5fee60825 +#: 8a12b4002e6846b4ba2c19977cff67b7 msgid "" "./init.sh install-xrobotoolkit-pc-service\n" "./init.sh install-xrobotoolkit\n" @@ -216,7 +216,7 @@ msgstr "" "./run.sh vr-xrt" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:61 -#: d53b3765a662413e805a36cc4e84c451 +#: 706db41e104842e0ae22a3fd74f6f2b4 msgid "" "Requires the **edition-matching** XRoboToolkit App on the headset " "(Enterprise ≠ consumer Pico App). `./run.sh vr-xrt-service stop` shuts " @@ -226,104 +226,104 @@ msgstr "" "service stop` 关闭 PC Service。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:63 -#: 3ad9cecd840f4a4aa3eb35a3cabba15e +#: c81c976ad5d14148bbf8ce7ee0bfa0d9 msgid "Topics Published" msgstr "发布的话题" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 73f9db77479f4558844d140a3b98ed8e +#: 466c606d5e414f78874203c9b3d1a4ba msgid "Topic" msgstr "话题" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 4ce8bbcffc7e4dfbbae39625a8f4e704 +#: 3c18ef47f0a24fe6b389cccc629c8be6 msgid "Type" msgstr "类型" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: e5212d7b825144bc8ed47cd9ee5d9b21 +#: 8845ef33cde049588fba5c81798c9a51 msgid "Rate" msgstr "频率" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: f817c3d2c8764478b328101b5290702b +#: 9e92adfa97b349119784ad8eef967228 msgid "Description" msgstr "描述" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 675c41244b4e4ac99b76f82995233c7b +#: 038b5122aa2b4390baa62ccc37b3b7f7 msgid "`/teleop/left_ee_pose`" msgstr "`/teleop/left_ee_pose`" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 981b364a4f634bd081e3123aeca58c54 98add28aff1f402cb7b448e5c7da8a2a -#: c34584521e2b4e849a7aa4bfa0dc57f3 +#: 124052b26ff04e2db324999df4390086 906442d50f5b425bbb54522a79502987 +#: f0c76a49ab814eb99140433dd103b13f msgid "`PoseStamped`" msgstr "`PoseStamped`" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 30ed854b4b804797b7c7d9d8f767c73d 31698bef051f4028adaa76cfa116f39b -#: 59f37b1d92b4449ba8f61fce8858d3cf +#: 605923f7615e4c5a91d0ae2e00474b81 91f03a1714c24e51848f9f0a31d8973f +#: f99b59f6ea0642a89287ea536347f2f9 msgid "90Hz" msgstr "90Hz" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 4686e13d66dc4964abd59e2ddcf9d4fb +#: 83ac64990dd748e78e77c218bdd9c7ab msgid "Left controller" msgstr "左手柄" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: e7303f5981ae427c884dd7c0f5b25777 +#: 83a216e7769c4f388a23cb7de5e4e8b1 msgid "`/teleop/right_ee_pose`" msgstr "`/teleop/right_ee_pose`" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 0824e3fc2c7c43989d5d1548cc192956 +#: 92ee0240d9e344cc8995224c0b342720 msgid "Right controller" msgstr "右手柄" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: fa52d9ac4fe44927acd441d214147c24 +#: 703ec5e22ea74f159cebfb94a4354bbd msgid "`/teleop/head_pose`" msgstr "`/teleop/head_pose`" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 8ce5382bc7344945bde281a7ea46421d +#: 9e54c0604c0b49189c2e487ab870ae0d msgid "`/teleop/left_trigger`" msgstr "`/teleop/left_trigger`" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 4da710fcc7474c0ca582004505a31cf7 f8f914cba33d4cc6a60a48e6e8d4f139 +#: 9714de71d0874011acb335024f21e0d1 f65cb45b05374cad8c863801b28f9ea3 msgid "`Bool`" msgstr "`Bool`" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 8338f64bf79d46f1b974100756c4c376 a494fcb740354152badd39819ea1f35f +#: 01d8949e98f8441a94bcbe2dfe741369 6099c49acaf84f0f89a9fc34e125b8d9 msgid "Event" msgstr "事件" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 449a52577f134cd7ac1a121e5e8c7dda +#: 73ab1585927940ffa2341a1b2d9bee4e msgid "Left trigger" msgstr "左扳机" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: 0dc9e5c862844ffd9e7c35e12c68a1bc +#: f5a4ee5921744cbda751c03dc1f0538e msgid "`/teleop/right_trigger`" msgstr "`/teleop/right_trigger`" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:54 -#: fb54a8d6ab45463ba73276381c36fb17 +#: 0290bec123ff4bdf91ee996997db069d msgid "Right trigger" msgstr "右扳机" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:73 -#: a069c007c05c48279bca05e917b8484e +#: 55e9d19660c74813b08f63fa646daa31 msgid "Configuration" msgstr "配置" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:75 -#: bb49b04f912242ee9c5a57a711d84cd4 +#: d3e1fd4e704443328b46b16944439978 msgid "" "vr_pose_publisher:\n" " frame_id: base_link\n" @@ -342,71 +342,72 @@ msgstr "" " right: right_ee\n" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:85 -#: 82d4f21556fe4c66a2aaee872db4b314 +#: 42793048a8b7426aac441323eedbf6d4 +#, python-brace-format msgid "" "Robot-side VR insertion is separate: set `enable_vr: true` in the " "description’s `config/ocs2/target_manager.yaml` (most robots default " -"off). Same file: `vr_update_rate`, `vr_follow_frame`. Button map and " -"follow-frame troubleshooting: [VR Teleop How-" -"To](../../2-how_to/5-teleoperation/6-vr_teleop.md)." +"off). Same file: `vr_update_rate`, `vr_follow_frame`. Button map " +"(including WBC stop-one-arm vs VR pause) and follow-frame " +"troubleshooting: {ref}`stop-one-arm-vs-stop-sending-vr-commands`." msgstr "" -"机器人侧的 VR 接入是另一处:在描述包 `config/ocs2/target_manager.yaml` 中设置 " -"`enable_vr: true`(多数机型默认关闭)。同一文件还有 `vr_update_rate`、" -"`vr_follow_frame`。按键表与跟随坐标系排查见 [VR 遥操作](../../2-how_to/5-teleoperation/6-vr_teleop.md)。" +"机器人侧的 VR 接入是另一处:在描述包 `config/ocs2/target_manager.yaml` 中设置 `enable_vr: " +"true`(多数机型默认关闭)。同一文件还有 `vr_update_rate`、`vr_follow_frame`。按键表(含 WBC 停单臂 vs " +"VR 停发指令)与跟随坐标系排查见 {ref}`stop-one-arm-vs-stop-sending-vr-commands`。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:87 -#: dbe5718bfc8240eba4921eb0ee2ee91e +#: 2eeca36fa0ab4a44a2b4bf542cf975bc msgid "Network Setup" msgstr "网络设置" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:89 -#: 38f043b0960c4278b7881d2f34ba3d6d +#: 2695529b209446338a2fcb99ffd5eaf2 msgid "" "**Pico Enterprise:** USB shared networking (USB 网络共享) can put the headset" " and PC on one network. Use the headset UI; no ADB steps here." msgstr "**Pico 企业版:** USB 网络共享可将头显与电脑放在同一网络。使用头显界面;此处不写 ADB 步骤。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:90 -#: e30e3a7f25bc4e96b324fa89899bd2ba +#: 72d51eacec6e4ce98977359523a0dd59 msgid "**Pico consumer / Quest:** Wi-Fi (or other IP) only for this doc." msgstr "**Pico 消费版 / Quest:** 本文仅记录 Wi-Fi(或其他 IP)。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:92 -#: 04d67705434a49138a5df9987e5dc753 +#: 2abab6538f35444ab3cc075d29768a02 msgid "" "If the VR device is on a different network: Zenoh or DDS discovery, " "firewall, matching Domain IDs." msgstr "若 VR 设备在不同网络:使用 Zenoh 或 DDS 发现、防火墙、匹配的 Domain ID。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:94 -#: ade5a2c0ce174299b84862e6b7b07a1a +#: bf4e579b74d444dcb7192e53c3fb011c msgid "Certificates" msgstr "证书" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:96 -#: 0111902243b34380b641c292e836ae34 +#: 272fc0a6928c48cb9da837666668027d msgid "Security Note" msgstr "安全说明" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:99 -#: a8b75a787dd94249a14c90fc871a1ac4 +#: 1822e49d92cf420688acae5829a5a1dc msgid "" "WebXR requires HTTPS. Certificates are user-generated and should not be " "committed to version control." msgstr "WebXR 需要 HTTPS。证书由用户自行生成,不应提交到版本控制。" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:102 -#: dde98e030a8a41529e2e9e877a75679a +#: 96ba4244fa53423a846cd06bdffbb828 msgid "Related" msgstr "相关内容" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:104 -#: e7679abac8624f69abfbb66d7202a68e +#: ea8224723ed4430fb96460d178ac10ae msgid "[VR Teleop How-To](../../2-how_to/5-teleoperation/6-vr_teleop.md)" msgstr "[VR 遥操作指南](../../2-how_to/5-teleoperation/6-vr_teleop.md)" #: ../../source/4-reference/teleop/1-vr_pose_publisher.md:105 -#: e5e56c831ad44508a022c764a9561b6a +#: 1e962ff9d5b24ed59aa19926df49ec5a msgid "[FSM and Topics](../../3-concepts/4-fsm_and_topics.md)" msgstr "[FSM 与话题](../../3-concepts/4-fsm_and_topics.md)" diff --git a/source/2-how_to/5-teleoperation/6-vr_teleop.md b/source/2-how_to/5-teleoperation/6-vr_teleop.md index 243fbea..b215711 100644 --- a/source/2-how_to/5-teleoperation/6-vr_teleop.md +++ b/source/2-how_to/5-teleoperation/6-vr_teleop.md @@ -206,6 +206,7 @@ Bindings depend on whether the robot is running **分体** (`split_body.launch.p | Left stick click | Mirror | | Right stick click | `STORAGE` ↔ `UPDATE` (**OCS2 only**) | | Grip (short press) | Toggle stick plane (`XY` ↔ `Z+Yaw`) | +| Left **Y** / right **B** | Per-arm: **分体** = VR pause/resume (停发指令). **全身** default = that arm’s WBC ENABLE/DISABLE (停单臂); after event 16, same pause/resume. See [Stop one arm vs stop sending VR commands](#stop-one-arm-vs-stop-sending-vr-commands). | **全身** adds grip + stick (ignored in 分体; FSM must already be **OCS2**): @@ -213,8 +214,40 @@ Bindings depend on whether the robot is running **分体** (`split_body.launch.p |---------|--------| | Left grip + left stick | Body: up = upright, down = lock waist, left = follow, right = custom lock | | Right grip + right stick | WBC: up = dual-arm couple on/off, down = chassis unlock/lock, left = reserved, right = reference-joint track | +| Both grips + left **Y** + right **B** | Event 16: toggle the Y/B latch between WBC arm disable and VR pause/resume | -Grip + same-hand trigger switches that trigger’s gripper between percent and open/close. Left **Y** + right **B** is scale-align (turns mirror off and returns to `STORAGE`). Both sticks together toggle chassis teleop ↔ end-effector control. +Grip + same-hand trigger switches that trigger’s gripper between percent and open/close. Pressing left **Y** and right **B** together (no grips) is scale-align (turns mirror off and returns to `STORAGE`). Both sticks together toggle chassis teleop ↔ end-effector control. + +(stop-one-arm-vs-stop-sending-vr-commands)= +### Stop one arm vs stop sending VR commands + +```{admonition} 停单臂 vs 停发指令 +:class: important + +On **全身**, default left **Y** / right **B** requests that arm’s WBC ENABLE/DISABLE (**停单臂**). That is not the same as freezing VR input for that arm (**停发指令** / pause). Event 16 flips which of those two Y/B does. +``` + +Y/B disable and event 16 apply when **全身** is active (`ocs2_wbc_controller`), VR is enabled, and FSM is **OCS2**. Implementation: [VRInputHandler README](https://github.com/fiveages-sim/arms_ros2_control/blob/b55274481140ceb6e3e694ea4777b7fdd4cfa433/command/arms_target_manager/VR_INPUT_HANDLER_README.md) (「单臂启用 / 禁用与 Y/B 语义锁存」). + +| What you want | Control | Result | +|---------------|---------|--------| +| **Stop one arm** (停单臂) | Default left **Y** / right **B** | Request that arm’s WBC ENABLE/DISABLE. After WBC confirms `ARM_DISABLED`, VR stops publishing pose to that arm and stops accumulating that arm’s stick offset. The other arm stays controllable. Re-enable rebases from the current robot pose and the current headset / controller pose, then clears that arm’s stick offset. Does not require `UPDATE` / `STORAGE`. | +| **Stop sending VR commands** (停发指令) | After event 16, same left **Y** / right **B** | Freeze / resume VR input for that arm (pause). Needs `UPDATE`. | +| Switch Y/B meaning | Event 16: both grips + left **Y** + right **B** | Latch toggles between “WBC arm disable” and “VR pause/resume”. | + +**分体** ignores event 16. Left **Y** / right **B** stay VR pause/resume. + +Mirror swaps which physical button maps to which arm. WBC enabled/disabled state and rebase stay on the real arm. + +When event 16 switches to pause and that arm is already `ARM_DISABLED`, the handler requests ENABLE, rebases, then freezes as paused. When it switches back to disable and that arm is already VR-paused, it requests DISABLE, then clears pause after WBC confirms. Under pause semantics, entering `UPDATE` with the right stick click does not clear the pause. + +Constraints on **全身**: + +- While the arms are coupled, Y/B cannot toggle a single arm. +- You cannot enable couple while any arm is disabled. +- While coupled, event 16 cannot switch the latch from pause back to disable (the latch stays). +- While a WBC switch or an event-16 conversion is still pending, event 16 and Y/B are ignored. +- If the topology leaves 全身, the latch returns to the default disable meaning. ## Safety @@ -268,6 +301,7 @@ Then: - Confirm `enable_vr: true` in the description’s `config/ocs2/target_manager.yaml` (most robots default off) - Verify controller is in teleop mode (`UPDATE` after entering OCS2) +- On **全身**, confirm that arm is not WBC-disabled (`ARM_DISABLED`) and that Y/B is not in VR-pause for that arm — [Stop one arm vs stop sending VR commands](#stop-one-arm-vs-stop-sending-vr-commands) - Check target poses are within workspace - Ensure no safety limits are triggered diff --git a/source/4-reference/teleop/1-vr_pose_publisher.md b/source/4-reference/teleop/1-vr_pose_publisher.md index 7e58377..37b9e32 100644 --- a/source/4-reference/teleop/1-vr_pose_publisher.md +++ b/source/4-reference/teleop/1-vr_pose_publisher.md @@ -82,7 +82,7 @@ vr_pose_publisher: right: right_ee ``` -Robot-side VR insertion is separate: set `enable_vr: true` in the description’s `config/ocs2/target_manager.yaml` (most robots default off). Same file: `vr_update_rate`, `vr_follow_frame`. Button map and follow-frame troubleshooting: [VR Teleop How-To](../../2-how_to/5-teleoperation/6-vr_teleop.md). +Robot-side VR insertion is separate: set `enable_vr: true` in the description’s `config/ocs2/target_manager.yaml` (most robots default off). Same file: `vr_update_rate`, `vr_follow_frame`. Button map (including WBC stop-one-arm vs VR pause) and follow-frame troubleshooting: {ref}`stop-one-arm-vs-stop-sending-vr-commands`. ## Network Setup