From 5e5a4037574bd57311afadd22f97dd897b3caea3 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 13 Nov 2026 09:22:21 +0000 Subject: [PATCH] docs: document in-process Isaac control and the FaSim onboarding exam Explain hardware:=isaac versus in-process isaac_sim, point lerobot and composer at main, and link private repos the newcomer path names. Day 7 is now a bring-up exam for one new robot. Co-authored-by: HUANG ZHENBIAO --- .../LC_MESSAGES/0-overview/2-learning_path.po | 956 ++++++++++--- .../LC_MESSAGES/0-overview/3-repo_map.po | 643 +++++---- .../0-overview/4-public_vs_internal.po | 262 ++-- .../1-getting_started/4-fa_deploy_ws.po | 59 +- .../2-how_to/2-simulation/4-isaac_sim.po | 1111 ++++++++++----- .../2-how_to/6-deployment/10-add_a_robot.po | 164 ++- .../2-how_to/7-synthetic_data/0-index.po | 118 +- .../7-synthetic_data/1-isaac_scenes.po | 335 ++--- .../7-synthetic_data/2-orchestration.po | 211 ++- .../7-synthetic_data/3-record_export.po | 168 ++- .../3-concepts/1-ros2_control_here.po | 199 +-- .../4-reference/controllers/3-ocs2_wbc.po | 74 +- .../4-reference/descriptions/2-common.po | 553 ++++---- .../descriptions/4-fiveages_umbrella.po | 308 +++-- .../4-reference/hardware/0-index.po | 251 ++-- .../4-reference/hardware/1-topic_based.po | 182 +-- .../4-reference/python_apps/4-lerobot_ros2.po | 573 +++++--- .../python_apps/5-robot_action_composer.po | 540 ++++---- .../4-reference/simulation/2-fasim_isaac.po | 1217 +++++++++++++---- .../4-reference/simulation/5-env_assets.po | 236 ++-- .../4-simulation_engineer.po | 96 +- source/0-overview/2-learning_path.md | 87 +- source/0-overview/3-repo_map.md | 50 +- source/0-overview/4-public_vs_internal.md | 4 +- source/1-getting_started/4-fa_deploy_ws.md | 2 +- source/2-how_to/2-simulation/4-isaac_sim.md | 143 +- .../2-how_to/6-deployment/10-add_a_robot.md | 3 +- source/2-how_to/7-synthetic_data/0-index.md | 10 +- .../7-synthetic_data/1-isaac_scenes.md | 10 +- .../7-synthetic_data/2-orchestration.md | 22 +- .../7-synthetic_data/3-record_export.md | 18 +- source/3-concepts/1-ros2_control_here.md | 5 +- source/4-reference/controllers/3-ocs2_wbc.md | 2 +- source/4-reference/descriptions/2-common.md | 8 +- .../descriptions/4-fiveages_umbrella.md | 16 +- source/4-reference/hardware/0-index.md | 2 +- source/4-reference/hardware/1-topic_based.md | 4 +- .../4-reference/python_apps/4-lerobot_ros2.md | 55 +- .../python_apps/5-robot_action_composer.md | 62 +- .../4-reference/simulation/2-fasim_isaac.md | 166 ++- source/4-reference/simulation/5-env_assets.md | 23 +- .../4-simulation_engineer.md | 6 +- 42 files changed, 5549 insertions(+), 3405 deletions(-) diff --git a/locale/zh_CN/LC_MESSAGES/0-overview/2-learning_path.po b/locale/zh_CN/LC_MESSAGES/0-overview/2-learning_path.po index ba2dc29..dd8d8fa 100644 --- a/locale/zh_CN/LC_MESSAGES/0-overview/2-learning_path.po +++ b/locale/zh_CN/LC_MESSAGES/0-overview/2-learning_path.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-10-13 03:00+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,12 +18,12 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/0-overview/2-learning_path.md:1 -#: dcb14379b84d4ca3840ffc06914f32ca +#: 1bcc816cbbfa436a8ab93f09801bf63d msgid "Newcomer Learning Path" msgstr "新手学习路径" #: ../../source/0-overview/2-learning_path.md:3 -#: d74c35bec12446328626ac93c1d60366 +#: 3a1c5346eb7f4d27a1383793ae199f87 msgid "" "This guide provides a structured day-by-day approach to learning the " "FiveAges Sim ecosystem. Follow it sequentially to build understanding " @@ -31,118 +31,118 @@ msgid "" msgstr "本指南按天提供结构化学习路径,帮助你掌握 FiveAges Sim 生态系统。请按顺序学习,从基础概念过渡到进阶主题。" #: ../../source/0-overview/2-learning_path.md:5 -#: ab4d8ca797994d1ebe17fc84fc0fa586 +#: f38c081190bf4278b60b06c5e0a83cf5 msgid "Overview" msgstr "概述" -#: ../../source/0-overview/2-learning_path.md 08c16c9c7aae418fac06557bc989776d +#: ../../source/0-overview/2-learning_path.md b21339648a094c37b1f02808d06ba39c msgid "Stage" msgstr "阶段" -#: ../../source/0-overview/2-learning_path.md f69595ff0287472dbb9977bf8ac9e526 +#: ../../source/0-overview/2-learning_path.md 64445541510f4f769c9a3b130eda60af msgid "Goal" msgstr "目标" -#: ../../source/0-overview/2-learning_path.md b937fe5b853947619e0eb6bc18f8269d +#: ../../source/0-overview/2-learning_path.md aaa40e17caff454aaf1080e2b1995573 msgid "Time Estimate" msgstr "预估时间" -#: ../../source/0-overview/2-learning_path.md 0e639f7852b24a50bd91b323f10a61b5 +#: ../../source/0-overview/2-learning_path.md 7270ec571e114a76b246dfcf8569c344 msgid "Day 0" msgstr "第 0 天" -#: ../../source/0-overview/2-learning_path.md 850c6fed185b47b99e465311fbdb1012 +#: ../../source/0-overview/2-learning_path.md 6c1749ba4c584de8b6ea69f326cf5abb msgid "Map the stack" msgstr "梳理技术栈" -#: ../../source/0-overview/2-learning_path.md e17f5cf88e67493cadbc7ec917ac3d9f +#: ../../source/0-overview/2-learning_path.md 3322a15444bf49ffa82d7928f8d267eb msgid "1-2 hours reading" msgstr "阅读 1–2 小时" -#: ../../source/0-overview/2-learning_path.md e7296a621adc4341ab810ec7515f04a6 +#: ../../source/0-overview/2-learning_path.md 749d07ed2660475783e38113ae45cc19 msgid "Day 1" msgstr "第 1 天" -#: ../../source/0-overview/2-learning_path.md af9edd9204a242ec88214e1ffad76db7 +#: ../../source/0-overview/2-learning_path.md a339589d0df34f938176a1e5b2bcc582 msgid "First motion in sim" msgstr "仿真中的首次运动" -#: ../../source/0-overview/2-learning_path.md 21bcc435d2154f1187355819ac1e5ba7 -#: 53f56933d6574c1993ab5f52ede89319 8d8e34a967bd40b38df05c4123d0adf9 +#: ../../source/0-overview/2-learning_path.md 34ff9960b5774414833272681a7711b3 +#: 45413554d1d84ebf90acf7abdd9c8e75 94fcb8ca717d46d898e785e1778b7f91 msgid "2-4 hours" msgstr "2-4 小时" -#: ../../source/0-overview/2-learning_path.md 8ebc4274ef614752a731edc38173853f +#: ../../source/0-overview/2-learning_path.md 60304d9b37884c4f9e9746cf5aa660da msgid "Day 2" msgstr "第 2 天" -#: ../../source/0-overview/2-learning_path.md 8350dd7ad3f24ae6900f1e04b9f4b11a +#: ../../source/0-overview/2-learning_path.md 0a1048d7d08f4d2baa9ca49185474bef msgid "Switch robots" msgstr "切换机器人" -#: ../../source/0-overview/2-learning_path.md 3f7d0ddbdc0346da8a1f55b5754b1518 +#: ../../source/0-overview/2-learning_path.md f081e18c1efc47f4bb3a37ee442f6fd2 msgid "1-2 hours" msgstr "1-2 小时" -#: ../../source/0-overview/2-learning_path.md 96bad7628efb4dd1bdd49bcf31082580 +#: ../../source/0-overview/2-learning_path.md 845fda2fa851418fa3ad9400f707f67c msgid "Day 3" msgstr "第 3 天" -#: ../../source/0-overview/2-learning_path.md e976a0dd83f645258567a5ed9d0f19ad +#: ../../source/0-overview/2-learning_path.md 311eed5e7b2d4b9e8f342073573cc271 msgid "Gazebo / Isaac" msgstr "Gazebo / Isaac" -#: ../../source/0-overview/2-learning_path.md dbe7cc4caacc448b9526176d020e546d +#: ../../source/0-overview/2-learning_path.md 068d7678f8724e23ae08e9f7629b5848 msgid "Day 4" msgstr "第 4 天" -#: ../../source/0-overview/2-learning_path.md 717416c1be9447c7abd0d3363b7f76d5 +#: ../../source/0-overview/2-learning_path.md 01e9824584fa481c9f2df3c668116098 msgid "Python interface" msgstr "Python 接口" -#: ../../source/0-overview/2-learning_path.md 02ef2582fe9546179ae3db7861c1752b +#: ../../source/0-overview/2-learning_path.md 203cccf7a0584e109d71f700f7579084 msgid "2-3 hours" msgstr "2-3 小时" -#: ../../source/0-overview/2-learning_path.md c28220463b1d4686a137ef5d2fa09078 +#: ../../source/0-overview/2-learning_path.md f4b08853006044ebaf76a0e22c7bb275 msgid "Day 5" msgstr "第 5 天" -#: ../../source/0-overview/2-learning_path.md 9bfb603b942a4a4c9a8c9ce937785ae9 +#: ../../source/0-overview/2-learning_path.md 0f8d0003f00045f5b06c395aa4348aaa msgid "Teleoperation" msgstr "遥操作" -#: ../../source/0-overview/2-learning_path.md 1f2207cfa4e54b1785ad355670bd1cfa +#: ../../source/0-overview/2-learning_path.md ca833df77e0b4381ab8ad6e6be9174ce msgid "Day 6" msgstr "第 6 天" -#: ../../source/0-overview/2-learning_path.md d64acdf52b264d2685ed4a09d53be466 +#: ../../source/0-overview/2-learning_path.md 0e487f52168e4b1fbc58a282bdd9a76a msgid "Real hardware" msgstr "真实硬件" -#: ../../source/0-overview/2-learning_path.md 5ed13767f2084fefbeb995db47118b4d +#: ../../source/0-overview/2-learning_path.md 11872dbb87024f8bb5cb17e048ab190e msgid "Varies" msgstr "因情况而异" -#: ../../source/0-overview/2-learning_path.md dbb4b6e9c42d48deb86711dc2925db9f -msgid "Day 7+" -msgstr "第 7 天及以后" +#: ../../source/0-overview/2-learning_path.md 34364df6db7a4f6da02ecec64cb14fd6 +msgid "Day 7" +msgstr "第 7 天" -#: ../../source/0-overview/2-learning_path.md 589d563982974705b0e9834ed047eac7 -msgid "Add a robot" -msgstr "添加机器人" +#: ../../source/0-overview/2-learning_path.md 7189aa22ad0f4df5aab944be23577f4a +msgid "Bring one new robot into FaSim" +msgstr "把一款新机器人接入 FaSim" -#: ../../source/0-overview/2-learning_path.md d8b3fe8cdea446eab5c9bc9b54187429 -msgid "Project-dependent" -msgstr "视项目而定" +#: ../../source/0-overview/2-learning_path.md 8a4640ab2e2c44d08fc0d759750a6e13 +msgid "One robot, mock then sim" +msgstr "一款机器人,先 mock 再仿真" #: ../../source/0-overview/2-learning_path.md:18 -#: 8b5caa936910430c9ebf4b105520d4fe +#: 2bec8dcb62a643a4859df32bf3e17837 msgid "Real Hardware for External Users" msgstr "外部用户的真实硬件" #: ../../source/0-overview/2-learning_path.md:21 -#: 57c0d2416ef54041af784859050bb8a8 +#: 5fe424a783384d46b11189d018c0e431 msgid "" "**ARX Lift 2S** is the full-body ARX (方舟无限) mobile manipulator (including" " chassis). **Acone** / **AC One** is **dual-arm**, not Lift 2S. " @@ -154,68 +154,67 @@ msgstr "" "2S。**高擎 Panthera HT** 是双臂操作臂。请优先看对应操作指南。使用这些 `open-deploy-ws` 分支不需要内部权限。" #: ../../source/0-overview/2-learning_path.md:24 -#: bd008ad11572482d834ab97bac11ad4a +#: f174f8452aac4c04843f2440a9d5b0c8 msgid "Day 0: Map the Stack" msgstr "第 0 天:梳理技术栈" #: ../../source/0-overview/2-learning_path.md:26 -#: 575ceaf441cd464ca4aaff6681a23fa8 +#: 1a6e81353c0d4e00bab4efc7769ff655 msgid "**Goal:** Understand the ecosystem structure and choose your entry path." msgstr "**目标:** 理解生态系统结构,并选择你的入口路径。" #: ../../source/0-overview/2-learning_path.md:28 #: ../../source/0-overview/2-learning_path.md:40 #: ../../source/0-overview/2-learning_path.md:66 -#: ../../source/0-overview/2-learning_path.md:127 -#: ../../source/0-overview/2-learning_path.md:203 -#: ../../source/0-overview/2-learning_path.md:213 -#: 36d3a587094245f19e8200cd2aa2c1cd 68dce2f7e9a847cd9909d95ed528c896 -#: b5c873588aff4150a4b5491f3e999876 bede8242d92e4574b3ec097e4a9cb0d7 -#: d1bb0117f2104f2b99cecd183902330c f2943e38a1964886954e7596b4e0a55d +#: ../../source/0-overview/2-learning_path.md:126 +#: ../../source/0-overview/2-learning_path.md:218 +#: 597fff1e668f4f1b984c6c20225d5457 79e32da957d34854a3c25f6b9f800cc3 +#: ac5ae5ac91c8425da40960f96e1057a7 cf3ed8bcb57a49ca9529e11f70f762f8 +#: e35a30ff89944b029ad1a3c740954257 msgid "**Tasks:**" msgstr "**任务:**" #: ../../source/0-overview/2-learning_path.md:29 -#: 403c387f1ed641a48a75c39c5f716ff9 +#: eb25f0403b3e4a9fbc93d407d5577547 msgid "Read this [Overview](0-index.md) section" msgstr "阅读本[概述](0-index.md)章节" #: ../../source/0-overview/2-learning_path.md:30 -#: 6f09bf368046444cabc039a6b0ae171a +#: ff945fb4e90b4747ac266a8a9f8f81a7 msgid "Study the [Architecture](1-architecture.md) diagram" msgstr "学习[架构](1-architecture.md)图" #: ../../source/0-overview/2-learning_path.md:31 -#: 41a6c32a9b21480c993c1ed603981600 +#: 4108fb149f8140a5aea1f39f80f31509 msgid "Decide: Public path (`open-deploy-ws`) or Internal path (`fa-deploy-ws`)" msgstr "做出选择:公开路径(`open-deploy-ws`)或内部路径(`fa-deploy-ws`)" #: ../../source/0-overview/2-learning_path.md:32 -#: 96712ea9b74b4e93a9b2e12aa15ba625 +#: becfae2441774d0d92236007ab401e97 msgid "Review the [Repository Map](3-repo_map.md)" msgstr "查阅[仓库地图](3-repo_map.md)" #: ../../source/0-overview/2-learning_path.md:34 -#: 14ce8a857d634910b4d3616dcade3577 +#: 154612632ad14b4cbca3fd39156131e2 msgid "" "**Outcome:** You can explain the five layers and know which workspace to " "start with." msgstr "**预期结果:** 你能说明五个层级,并知道该从哪个工作空间开始。" #: ../../source/0-overview/2-learning_path.md:36 -#: 2ffa7685b3b64ad99d1cea7bdcb9daa5 +#: c055a013f09544ed91e53d55d570ce34 msgid "Day 1: First Motion in Simulation" msgstr "第 1 天:仿真中的首次运动" #: ../../source/0-overview/2-learning_path.md:38 -#: 2ffbe533900a420ebcca7f629c5689eb +#: 350748071c9f4e7d9627ea44e55d18c5 msgid "" "**Goal:** Install the environment, then run a robot demo (`hardware` " "default `mock_components`)." msgstr "**目标:** 先安装环境,再运行机器人演示(`hardware` 默认为 `mock_components`)。" #: ../../source/0-overview/2-learning_path.md:41 -#: a5ea605284db485ea8d1d5f470acdc34 +#: 55b62427bd674c59b14711e0f0ab01b4 msgid "" "[Install Environment](../1-getting_started/2-install_environment.md) — " "Ubuntu 24.04, ROS 2 Jazzy + rosdep. On a bare host: add the ROS apt " @@ -228,12 +227,12 @@ msgstr "" "install/setup.bash`。" #: ../../source/0-overview/2-learning_path.md:42 -#: cf537e3b15ec44cda6a7897d01f8ab70 +#: 748bd1ae8f474851964ace7cab26a508 msgid "Clone `open-deploy-ws` and run the official init script:" msgstr "克隆 `open-deploy-ws` 并运行官方初始化脚本:" #: ../../source/0-overview/2-learning_path.md:43 -#: 7294545823da43e8ad127fc597069178 +#: 3a35c570145a4e24b2a2c166c9529b6d msgid "" "git clone https://github.com/fiveages-sim/open-deploy-ws.git\n" "cd open-deploy-ws\n" @@ -244,17 +243,17 @@ msgstr "" "./init_repo.sh\n" #: ../../source/0-overview/2-learning_path.md:48 -#: a8fcc35a4f8c4f009050b067d8c47afa +#: 85ef9f002bce494ebe9a5d07527834a6 msgid "Build the workspace:" msgstr "编译工作空间:" #: ../../source/0-overview/2-learning_path.md:49 -#: d651af3545c942ecbb7cd9f1fbc0a716 +#: 8810794473984103a028b5502c32f04e msgid "colcon build --symlink-install\n" msgstr "colcon build --symlink-install\n" #: ../../source/0-overview/2-learning_path.md:52 -#: 4343775d7a9440e7ab9ee63970f8cc4f +#: 1729f1a8d79f41499c6c124f6798f8b1 msgid "" "Launch the demo (defaults: `robot:=cr5`, `hardware:=mock_components` — " "omit both; there is no `hardware:=mock`):" @@ -263,7 +262,7 @@ msgstr "" "`hardware:=mock`):" #: ../../source/0-overview/2-learning_path.md:53 -#: e9dd7ac5feb24e298ff5d1cb2bd25c9a +#: d4ff262af9a7408c96109790337f641a msgid "" "source install/setup.bash\n" "ros2 launch ocs2_arm_controller demo.launch.py\n" @@ -272,7 +271,7 @@ msgstr "" "ros2 launch ocs2_arm_controller demo.launch.py\n" #: ../../source/0-overview/2-learning_path.md:58 -#: 23b472ef98754b8490c17d23beb8f16b +#: b13539f21ef04250bf80750d1a7c80b0 msgid "" "**Primary sources:** [open-deploy-ws](https://github.com/fiveages-sim" "/open-deploy-ws), [arms_ros2_control](https://github.com/fiveages-" @@ -283,7 +282,7 @@ msgstr "" "sim/arms_ros2_control)" #: ../../source/0-overview/2-learning_path.md:60 -#: b1f654c1f9d34c26a17db586bac4fefa +#: 0c18c8eb5cdf4b00831415e8de80948b msgid "" "**Outcome:** RViz opens with the OCS2 demo; FSM starts in HOLD. See " "[Quick Demo](../1-getting_started/1-quick_demo_public.md)." @@ -292,17 +291,17 @@ msgstr "" "[快速演示](../1-getting_started/1-quick_demo_public.md)。" #: ../../source/0-overview/2-learning_path.md:62 -#: 2861d925e90142b08b19169bbbb5384e +#: a9c9ec6425224d6b8f10362b3ec04448 msgid "Day 2: Switch Robots" msgstr "第 2 天:切换机器人" #: ../../source/0-overview/2-learning_path.md:64 -#: 00b4525d477a47ea82ca9dbc97a30519 +#: 783447721bef439d8d30765a202d5130 msgid "**Goal:** Change the robot model and understand the description system." msgstr "**目标:** 更换机器人模型,并理解描述系统。" #: ../../source/0-overview/2-learning_path.md:67 -#: 5f26b414a5ef47afb2f5e1e9e54aab21 +#: 87e1a039268a40798f8a8f5bf3aefb2c msgid "" "Prefer `./init_repo.sh` so nested modules under `src/robot-descriptions/`" " match `submodules_visibility.conf` (do not recursive-init)." @@ -311,22 +310,22 @@ msgstr "" "`submodules_visibility.conf` 一致(不要递归 init)。" #: ../../source/0-overview/2-learning_path.md:68 -#: eef40cb874d6441791bc4b66fdc6fb76 +#: 09ed8fd469154df0a9a873cbed21faad msgid "Rebuild the packages you need, then `source install/setup.bash`." msgstr "重建所需软件包,然后 `source install/setup.bash`。" #: ../../source/0-overview/2-learning_path.md:69 -#: a5513567676f44db8ec2008eef11e5c5 +#: df8468bad7814c2283102de291e3c758 msgid "Launch with the new robot (omit `hardware:=` to keep `mock_components`):" msgstr "用新机器人启动(省略 `hardware:=` 以保持 `mock_components`):" #: ../../source/0-overview/2-learning_path.md:70 -#: 62c5e3dba0184a0fa476e837e637c144 +#: c016f878064e431384d309eae6820323 msgid "ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone\n" msgstr "ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone\n" #: ../../source/0-overview/2-learning_path.md:73 -#: 248b9d32a9b0472d909b7f55a62adb72 +#: ae48c604d5ea40a8933cbd0d8928ff5e msgid "" "`arx_acone` is **Acone** (dual-arm), not Lift 2S. Full-body ARX Lift 2S " "uses the `arx-lift2s` branch scripts — see [ARX Lift " @@ -337,7 +336,7 @@ msgstr "" "2S](../2-how_to/6-deployment/9-go_real_hardware/1-arx_lift2s.md)。" #: ../../source/0-overview/2-learning_path.md:75 -#: 603ee966273b4bea996a8331a029847f +#: 83077712d8674e4294461f4d284370f9 msgid "" "**Primary sources:** [robot_descriptions](https://github.com/fiveages-" "sim/robot_descriptions), brand-specific READMEs" @@ -346,29 +345,29 @@ msgstr "" "sim/robot_descriptions)、各品牌 README" #: ../../source/0-overview/2-learning_path.md:77 -#: d98107f0608547f19083f8a1d704bf46 +#: ae9a7aa98cd448b999bdddd2331c95a8 msgid "" "**Outcome:** You can switch between Dobot CR5, Acone (dual-arm), Galbot, " "etc." msgstr "**预期结果:** 你可以在 Dobot CR5、Acone(双臂)、Galbot 等机型之间切换。" #: ../../source/0-overview/2-learning_path.md:79 -#: d284ea8b85b946e78dc10430606e99ea +#: 5e9f462d07ff4408883a8b99f3be8c5b msgid "Day 3: Gazebo and Isaac Simulation" msgstr "第 3 天:Gazebo 与 Isaac 仿真" #: ../../source/0-overview/2-learning_path.md:81 -#: 8e41d677fd0041f0a89d7665a236fa50 +#: f89890f197c2446ba1ba937ed3c3d83d msgid "**Goal:** Run physics simulation instead of mock hardware." msgstr "**目标:** 运行物理仿真,而不是 mock 硬件。" #: ../../source/0-overview/2-learning_path.md:83 -#: 5ee1fe889fef42c9adbe1a6a53cc0c33 +#: eb0c730730274a4989007e77472e24db msgid "Gazebo Harmonic" msgstr "Gazebo Harmonic" #: ../../source/0-overview/2-learning_path.md:85 -#: 023c0f04e20444678121b0ab9b2c3e01 +#: da78e53909c04070bf17eee7dc7e8358 msgid "" "# Install Gazebo packages (if not already)\n" "sudo apt install ros-jazzy-gz-*\n" @@ -383,12 +382,12 @@ msgstr "" "ros2 launch ocs2_arm_controller demo.launch.py hardware:=gz\n" #: ../../source/0-overview/2-learning_path.md:93 -#: 26216254e536482684254cea23ed2b8e +#: 94617717d1d3471cb4754ee11ae2149f msgid "Isaac Sim (FaSim)" msgstr "Isaac Sim(FaSim)" #: ../../source/0-overview/2-learning_path.md:95 -#: 720312794aa0486a9f677034f644f716 +#: ac9d480bc7de469ca1e298e33a5d6346 msgid "" "**FaSim** pairs NVIDIA Isaac Sim high-fidelity simulation with the same " "ROS 2 运控 stack as the real robot, so motion matches hardware while the " @@ -401,12 +400,12 @@ msgstr "" "与场景)、[robot_usds](https://github.com/fiveages-sim/robot_usds)。" #: ../../source/0-overview/2-learning_path.md:97 -#: 651c93c7d08c412497805ffeb573ba2e +#: a5ea0b361eb540299f7b83a5904692fb msgid "FaSim-Isaac scripts" msgstr "FaSim-Isaac 脚本" #: ../../source/0-overview/2-learning_path.md:100 -#: 6ce8735b775f435b930e97fc7e357add +#: 20ab5965d8f84fe3ba5a05f9f0fbd430 msgid "" "Use **FaSim-Isaac** `./init.sh` then `./run.sh`. Default Isaac path is " "`ISAACSIM_DIR` (`~/isaacsim`); override in `config/fa_sim.local.conf`. " @@ -419,19 +418,19 @@ msgstr "" "工作空间的版本来自 init 菜单(回退列表见 `config/fa_sim.conf`),不要在文档里写死某个次版本号。" #: ../../source/0-overview/2-learning_path.md:103 -#: a39a3ca6b99e4a6a9a530a384fdd97bf +#: 01573890b72a4ddfb878bf1d4b0c7bde msgid "" "Install NVIDIA Isaac Sim (default directory `~/isaacsim`, or set " "`ISAACSIM_DIR`)." msgstr "安装 NVIDIA Isaac Sim(默认目录 `~/isaacsim`,或设置 `ISAACSIM_DIR`)。" #: ../../source/0-overview/2-learning_path.md:104 -#: 7becce444d0b430cb0164d9346626fcd +#: f7c322b6e77c4954af457e2604a4451a msgid "Clone and initialize FaSim-Isaac:" msgstr "克隆并初始化 FaSim-Isaac:" #: ../../source/0-overview/2-learning_path.md:105 -#: 6b654d9244f945359426c13ea9d3d22a +#: df01b3856a864f41b6a7aeae3f485904 msgid "" "git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" "cd FaSim-Isaac\n" @@ -442,27 +441,45 @@ msgstr "" "./init.sh\n" #: ../../source/0-overview/2-learning_path.md:110 -#: b013d1a66f5c43459467f446dfb345e3 +#: 16b90d29839a4cb28ecf8aa0fc625988 msgid "Start Isaac (`./run.sh` menu: PhysX / Newton / Headless Streaming):" msgstr "启动 Isaac(`./run.sh` 菜单:PhysX / Newton / Headless Streaming):" #: ../../source/0-overview/2-learning_path.md:111 -#: 3e97f49691164947aeb40146f471418b +#: 7b4352ba5b5740ea8cc8035effdc3650 msgid "./run.sh\n" msgstr "./run.sh\n" #: ../../source/0-overview/2-learning_path.md:114 -#: 265288caab8f4ed0b7109892d08fa773 -msgid "In another terminal, launch the ROS 2 side with Isaac hardware:" -msgstr "在另一个终端中,以 Isaac 硬件启动 ROS 2 侧:" +#: a9fbd5aad4344941be83cce420c96de3 +msgid "" +"Connect ROS 2 using **one** of the two Isaac paths in [Isaac " +"Sim](../2-how_to/2-simulation/4-isaac_sim.md):" +msgstr "" +"用下面两条 Isaac 路径中的一条连接 ROS 2,说明见 [Isaac " +"Sim](../2-how_to/2-simulation/4-isaac_sim.md):" #: ../../source/0-overview/2-learning_path.md:115 -#: c26974ecac6f49aeb378fb599940b869 -msgid "ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac\n" -msgstr "ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac\n" +#: 6aa26adcf4424ba59dac702af4a517c7 +msgid "" +"Topic bridge, from the workspace terminal: `ros2 launch " +"ocs2_arm_controller demo.launch.py hardware:=isaac`" +msgstr "" +"话题桥,在工作空间终端执行:`ros2 launch ocs2_arm_controller demo.launch.py " +"hardware:=isaac`" + +#: ../../source/0-overview/2-learning_path.md:116 +#: 04fa3a29f1cc46998b4cb9b1c42f746d +msgid "" +"In-process: open a USD whose ROS payload contains `ROS2ControlLaunch` and" +" press Play. That path sets `hardware=isaac_sim` inside Isaac. It is not " +"a second `hardware:=` on `demo.launch.py`." +msgstr "" +"进程内:打开 ROS 载荷里含有 `ROS2ControlLaunch` 的 USD 并播放。这条路径在 Isaac 内部设置 " +"`hardware=isaac_sim`。它不是 `demo.launch.py` 上的第二个 `hardware:=`。" -#: ../../source/0-overview/2-learning_path.md:119 -#: 752e375bd9a74d3f820801df66d2ad60 +#: ../../source/0-overview/2-learning_path.md:118 +#: bf8f87ba461b42569de9d420bc74d6fa msgid "" "**Primary sources:** [FaSim-Isaac](https://github.com/fiveages-sim/FaSim-" "Isaac), [robot_usds](https://github.com/fiveages-sim/robot_usds)" @@ -470,30 +487,30 @@ msgstr "" "**主要来源:** [FaSim-Isaac](https://github.com/fiveages-sim/FaSim-" "Isaac)、[robot_usds](https://github.com/fiveages-sim/robot_usds)" -#: ../../source/0-overview/2-learning_path.md:121 -#: 5504e71ae2df4a8da959067c5675cecb +#: ../../source/0-overview/2-learning_path.md:120 +#: 91a4682296e746b99f5fec1b318bb7ed msgid "" "**Outcome:** Physics-based simulation with Gazebo, or FaSim (Isaac + ROS " "2 运控, matching real-robot motion plus ground truth)." msgstr "**预期结果:** 基于物理的仿真,可用 Gazebo,或 FaSim(Isaac + ROS 2 运控,运动对齐真机并带仿真真值)。" -#: ../../source/0-overview/2-learning_path.md:123 -#: 8a25a83c4454451bab078c3f02784ba3 +#: ../../source/0-overview/2-learning_path.md:122 +#: e081c4fa03714436ba73bfbac4bd6992 msgid "Day 4: Python Interface" msgstr "第 4 天:Python 接口" -#: ../../source/0-overview/2-learning_path.md:125 -#: 0aa675ec7556430a9052faac0cc3e4e5 +#: ../../source/0-overview/2-learning_path.md:124 +#: 91e31adb96874f3ab0161cb214fc4f3b msgid "**Goal:** Control the robot programmatically." msgstr "**目标:** 以编程方式控制机器人。" -#: ../../source/0-overview/2-learning_path.md:128 -#: 8253ca87f0d74f2a9085bdc2d9f1b30c +#: ../../source/0-overview/2-learning_path.md:127 +#: f6e611d33ac04ec3bae2366e787d86b9 msgid "Install fa-py-libraries:" msgstr "安装 fa-py-libraries:" -#: ../../source/0-overview/2-learning_path.md:129 -#: e59d6f69ae384faca5b63f0cfea0459f +#: ../../source/0-overview/2-learning_path.md:128 +#: 564da87a156d4f11823183e5e38b0af3 msgid "" "cd ~/\n" "git clone https://github.com/fiveages-sim/fa-py-libraries.git\n" @@ -507,13 +524,13 @@ msgstr "" "./init.sh all # Python 3.12 env; installs ros2_robot_interface and " "related submodules\n" -#: ../../source/0-overview/2-learning_path.md:135 -#: f45a47ccde6e471caab005a749efd6e7 +#: ../../source/0-overview/2-learning_path.md:134 +#: 10444b7025b0472885fa305e181bf02d msgid "Write a simple script:" msgstr "编写一个简单脚本:" -#: ../../source/0-overview/2-learning_path.md:136 -#: 8049690b33e04278947bf72025407e9d +#: ../../source/0-overview/2-learning_path.md:135 +#: e705532b05994909bc75f55af6bfb79f msgid "" "from ros2_robot_interface import ROS2RobotInterface, " "ROS2RobotInterfaceConfig\n" @@ -531,8 +548,8 @@ msgstr "" "joint_state = interface.get_joint_state()\n" "pose = interface.left_arm_handler.get_pose()\n" -#: ../../source/0-overview/2-learning_path.md:145 -#: f2e61a63d80b4cb9a7389444c4c8d80c +#: ../../source/0-overview/2-learning_path.md:144 +#: a036d2473ddf48d49817b37cc7058be6 msgid "" "**Primary sources:** [fa-py-libraries](https://github.com/fiveages-sim" "/fa-py-libraries), [ros2_robot_interface](https://github.com/fiveages-" @@ -542,28 +559,28 @@ msgstr "" "libraries)、[ros2_robot_interface](https://github.com/fiveages-" "sim/ros2_robot_interface)" -#: ../../source/0-overview/2-learning_path.md:147 -#: 44f314eac61e4c119615683500341b9b +#: ../../source/0-overview/2-learning_path.md:146 +#: a21c7c47c4ab4f8ea74339e287e4b8f2 msgid "**Outcome:** You can script robot motions in Python." msgstr "**预期结果:** 你可以用 Python 编写机器人运动脚本。" -#: ../../source/0-overview/2-learning_path.md:149 -#: 272670dd318046c192bd7a4b8373caca +#: ../../source/0-overview/2-learning_path.md:148 +#: c3b0b40a078b4731a22c8c82bd46f93a msgid "Day 5: Teleoperation" msgstr "第 5 天: 遥操作" -#: ../../source/0-overview/2-learning_path.md:151 -#: 5a0a85e900854641987105787c930d67 +#: ../../source/0-overview/2-learning_path.md:150 +#: ca5181d6181e40c7821bde68086fb240 msgid "**Goal:** Control the robot via VR or isomorphic teleop." msgstr "**目标:** 通过 VR 或同构遥操作控制机器人。" -#: ../../source/0-overview/2-learning_path.md:153 -#: cba404fb7f874fa083c42998a9a59fa7 +#: ../../source/0-overview/2-learning_path.md:152 +#: fc23cabe93144eab8f3798bde5bde490 msgid "VR Teleoperation" msgstr "VR 遥操作" -#: ../../source/0-overview/2-learning_path.md:155 -#: 55d35b53d9b74e8ab615953be973bd9d +#: ../../source/0-overview/2-learning_path.md:154 +#: 3162e7515e924672bde2b30263dd9e6e msgid "" "**Supported headsets:** Pico Enterprise (recommended; USB 网络共享, " "Enterprise App), Pico consumer (different App), and Meta Quest. Backends:" @@ -572,8 +589,8 @@ msgstr "" "**支持的头显:** Pico 企业版(推荐;USB 网络共享、企业版 App)、Pico 消费版(不同 App)和 Meta " "Quest。后端:WebXR(`./run.sh vr`)或 XRoboToolkit(`./run.sh vr-xrt`)。" -#: ../../source/0-overview/2-learning_path.md:157 -#: 80f96e4cd6154f4e85e1003e99ce580a +#: ../../source/0-overview/2-learning_path.md:156 +#: 0c04f3148ea9409ebeb70a92e39d9012 msgid "" "cd fa-py-libraries\n" "./run.sh vr\n" @@ -581,13 +598,13 @@ msgstr "" "cd fa-py-libraries\n" "./run.sh vr\n" -#: ../../source/0-overview/2-learning_path.md:162 -#: bdc879993aed42ac81048efaf3efd331 +#: ../../source/0-overview/2-learning_path.md:161 +#: 88a116023e2240388da5739aa1755258 msgid "Pico Enterprise vs consumer" msgstr "Pico 企业版与消费版" -#: ../../source/0-overview/2-learning_path.md:165 -#: 82a6009469e84592a575b48e6068d9d6 +#: ../../source/0-overview/2-learning_path.md:164 +#: 3694f426d71147dab391f65cd2c059fd msgid "" "Pico **Enterprise** and Pico **consumer** are different SKUs: Enterprise " "supports USB 网络共享 and uses a **different App**. Install the App that " @@ -596,13 +613,13 @@ msgstr "" "Pico **企业版** 与 Pico **消费版** 是不同 SKU:企业版支持 USB 网络共享,并使用**不同的 " "App**。不要为两者安装同一个 App。" -#: ../../source/0-overview/2-learning_path.md:168 -#: f4e2b63428284c6aa907ab0b8ed84a97 +#: ../../source/0-overview/2-learning_path.md:167 +#: c690c93c797b40ee8135138e6b098559 msgid "Isomorphic Teleop (HighTorque Panthera HT)" msgstr "同构遥操作(高擎 Panthera HT)" -#: ../../source/0-overview/2-learning_path.md:170 -#: 39cb1e770d7d4c7692ac0aacb36be6e8 +#: ../../source/0-overview/2-learning_path.md:169 +#: cdc403a26c2f471ea9f2ab21256c92fd msgid "" "Master–slave **isomorphic teleop** (同构遥操作). On the `panthera-ht` branch, " "real-robot teleop is `./teleop_start.sh` — see [HighTorque Panthera " @@ -614,8 +631,8 @@ msgstr "" "HT](../2-how_to/6-deployment/9-go_real_hardware/2-panthera_ht.md)。模拟(软件包 " "README):" -#: ../../source/0-overview/2-learning_path.md:172 -#: a5405611c131428499791bd5b1387fea +#: ../../source/0-overview/2-learning_path.md:171 +#: bdd92eb18a2a4dc78cfd6577d8e2b2dd msgid "" "ros2 launch drag_teleop_controller drag_teleop_controller.launch.py \\\n" " role:=master hardware:=mock_components\n" @@ -627,8 +644,8 @@ msgstr "" "ros2 launch drag_teleop_controller drag_teleop_controller.launch.py \\\n" " role:=slave hardware:=mock_components\n" -#: ../../source/0-overview/2-learning_path.md:179 -#: 182ce1a919da4076b7b86dcf3d97f068 +#: ../../source/0-overview/2-learning_path.md:178 +#: 0635bab6b5fa464e906d46cf179702f9 msgid "" "**Primary sources:** VR pose publisher, " "[drag_teleop_controller](https://github.com/fiveages-" @@ -637,30 +654,30 @@ msgstr "" "**主要来源:** VR 位姿发布器、[drag_teleop_controller](https://github.com/fiveages-" "sim/drag_teleop_controller)" -#: ../../source/0-overview/2-learning_path.md:181 -#: 4eb70c52120e462886f758ebb2365402 +#: ../../source/0-overview/2-learning_path.md:180 +#: 2b81e8e6b203478a9e89e837de190224 msgid "" "**Outcome:** Real-time control via VR headset or master–slave isomorphic " "teleop." msgstr "**预期结果:** 通过 VR 头显或主从同构遥操作进行实时控制。" -#: ../../source/0-overview/2-learning_path.md:183 -#: 0ed4912efb7c4c33a45c54d00cd1e70e +#: ../../source/0-overview/2-learning_path.md:182 +#: 45fef0bc464c4a958cddf7c83c2c6613 msgid "Day 6: Real Hardware" msgstr "第 6 天:真实硬件" -#: ../../source/0-overview/2-learning_path.md:185 -#: 071db2279ea74a818ae04185d9e9a74e +#: ../../source/0-overview/2-learning_path.md:184 +#: 74318656e22b4923bd97951cc9dcbb49 msgid "**Goal:** Deploy to physical robots." msgstr "**目标:** 部署到实体机器人。" -#: ../../source/0-overview/2-learning_path.md:187 -#: bea3b1d41cab482aa3118ec1641ab720 +#: ../../source/0-overview/2-learning_path.md:186 +#: 04e9b00bb97744e58572d96c5c8b18e0 msgid "Public Path (ARX Lift 2S, Acone, HighTorque Panthera HT)" msgstr "公开路径(方舟无限 Lift 2S、Acone、高擎 Panthera HT)" -#: ../../source/0-overview/2-learning_path.md:189 -#: 14880434bf654a1aa307d617ea5d1620 +#: ../../source/0-overview/2-learning_path.md:188 +#: 039a96dc199648c4a0eac47dfef31e19 msgid "" "Use the matching **branch README** and `./quick_start.sh`. **Acone** / " "**AC One** is **dual-arm**; **Lift 2S** is the full-body platform." @@ -668,8 +685,8 @@ msgstr "" "使用对应 **分支 README** 和 `./quick_start.sh`。**Acone** / **AC One** 是 " "**双臂**;**Lift 2S** 是全身平台。" -#: ../../source/0-overview/2-learning_path.md:191 -#: dc4c1abc0ca8426fae5c87591901fa26 +#: ../../source/0-overview/2-learning_path.md:190 +#: 214a53d70439438c9d38e09e81c9cbb7 msgid "" "**[ARX Lift " "2S](../2-how_to/6-deployment/9-go_real_hardware/1-arx_lift2s.md)** — " @@ -681,8 +698,8 @@ msgstr "" "全身含底盘:`git clone -b arx-lift2s …` 然后 `./init_repo.sh` / " "`./quick_start.sh`" -#: ../../source/0-overview/2-learning_path.md:192 -#: 084d5e52f02843e98456354d876226f5 +#: ../../source/0-overview/2-learning_path.md:191 +#: fd4a1d9f41af4385bd990441dd8bc0b1 msgid "" "**Acone** / **AC One** — **dual-arm**; same `arx-lift2s` workspace, pick " "ACone in `quick_start` for co-debug" @@ -690,8 +707,8 @@ msgstr "" "**Acone** / **AC One** — **双臂**;同一 `arx-lift2s` 工作空间,在 `quick_start` 中选 " "ACone 做联调" -#: ../../source/0-overview/2-learning_path.md:193 -#: b91100123ece42b187a3592c6720b8a1 +#: ../../source/0-overview/2-learning_path.md:192 +#: e7ab06055c444cb1b51cf13c441177c4 msgid "" "**[HighTorque Panthera " "HT](../2-how_to/6-deployment/9-go_real_hardware/2-panthera_ht.md)** — " @@ -702,96 +719,520 @@ msgstr "" "HT](../2-how_to/6-deployment/9-go_real_hardware/2-panthera_ht.md)** — " "双臂:`git clone -b panthera-ht …` 然后 `./init_repo.sh` / `./quick_start.sh`" -#: ../../source/0-overview/2-learning_path.md:195 -#: 52cf9a79b65b4ce3947ccc748045320f +#: ../../source/0-overview/2-learning_path.md:194 +#: 28285e5a89a040b59d3c1eecc0205327 msgid "Internal Path (FA Robots)" msgstr "内部路径(FA 机器人)" -#: ../../source/0-overview/2-learning_path.md:197 -#: 3dd670f1e78243cbb51a2690b8e22464 +#: ../../source/0-overview/2-learning_path.md:196 +#: d3f7528fdeae4530b20c09fd2b44ba1e msgid "Internal Access Required" msgstr "需要内部访问权限" -#: ../../source/0-overview/2-learning_path.md:200 -#: fc49936d054e40989f73f01baaaad00e +#: ../../source/0-overview/2-learning_path.md:199 +#: d710b549755843f3916158ad5b91cddc +msgid "" +"These links need repository access. Without it, GitHub does not open the " +"page. That is expected." +msgstr "这些链接需要仓库权限。没有权限时,GitHub 打不开页面。这是预期情况。" + +#: ../../source/0-overview/2-learning_path.md:201 +#: b1fe0d799fb747c68ec06c71808ae5f3 msgid "" -"FA **deploy** (W1, W2, W2R, S2, S2R, dual-arm CCS) still requires access " -"to `fa-deploy-ws`. W1/W2/S2 URDF and Gen1/Gen2 USD remotes are public; " -"**W2R and S2R are not open**. See [FiveAges robot " -"descriptions](../4-reference/descriptions/4-fiveages_umbrella.md). " -"Contact your team lead for workspace access and hardware allocation." +"FA **deploy** (W1, W2, W2R, S2, S2R, dual-arm CCS) uses [fa-deploy-" +"ws](https://github.com/fiveages-sim/fa-deploy-ws) (default branch " +"`fa-w2`). W1/W2/S2 URDF and Gen1/Gen2 USD remotes are public; **W2R and " +"S2R are not open**. See [FiveAges robot " +"descriptions](../4-reference/descriptions/4-fiveages_umbrella.md)." msgstr "" -"FA **部署**(W1、W2、W2R、S2、S2R、双臂 CCS)仍需开通 `fa-deploy-ws`。W1/W2/S2 URDF 与" -"Gen1/Gen2 USD 远端已公开;**W2R 与 S2R 尚未开放**。见" -"[FiveAges 机器人描述](../4-reference/descriptions/4-fiveages_umbrella.md)" -"。工作区权限与硬件分配请联系组长。" +"五纪 **部署**(W1、W2、W2R、S2、S2R、双臂 CCS)使用 [fa-deploy-ws](https://github.com" +"/fiveages-sim/fa-deploy-ws)(默认分支 `fa-w2`)。W1/W2/S2 的 URDF 与 Gen1/Gen2 的 " +"USD 远程仓库已公开;**W2R 与 S2R 仍未开放**。见 " +"[五纪机器人描述](../4-reference/descriptions/4-fiveages_umbrella.md)。" #: ../../source/0-overview/2-learning_path.md:204 -#: c4831dc2c16641ac998cf6c9d6b7ad1f +#: d52fec16bd36406dba29c39a83362f1f +msgid "" +"Open the private checkout you were given, then follow **that repository’s" +" README**. The shared script name is `./init_repo.sh`. Flags and robot " +"IDs stay in that README." +msgstr "" +"打开已经授权给你的私有检出,然后按**该仓库 README** 操作。共用的脚本名是 " +"`./init_repo.sh`。启动参数和机器人编号只写在那份 README 里。" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 3aac93ef75b04a5ba4c7c4148c9f4d64 +msgid "Repository" +msgstr "Repository" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 8b81c6711fbc4bac98bd3ec9b9e6e3c7 +msgid "What it is" +msgstr "用途" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 866b46b6062641b8973d3df58600abc6 +msgid "Access" +msgstr "Access" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 858aab9e5e32459b9d6bedb748e566d7 +msgid "[fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws)" +msgstr "[fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 68d5ec55ca654f2093e77108ef27e3c7 +msgid "Internal workspace (`fa-w2`)" +msgstr "内部工作空间(`fa-w2`)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 162c2cfe771247c4b05651e7e0e0f4db 1f71a2a79c3f44b8868d137c98ed2d05 +#: 3bde6c220d1845bfb27c152312108701 8b583d967c1641568266e5d315d0f1b7 +#: af11f8136fae4de5a9406cdd805198a1 b600edbb69a34145baae827fe4071ea7 +#: fabe7df63ef8460e8085cc0b8cac1148 +msgid "Required" +msgstr "Required" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 389bd986d6c740d9936ffb4ae1b00c8c +msgid "[fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description)" +msgstr "[fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: a7d6c3c31e7343b7be8eeef5ded06ac7 +msgid "W2R URDF" +msgstr "W2R 的 URDF" + +#: ../../source/0-overview/2-learning_path.md:196 +#: fcd4fafb75ea4a61b347e08a15f131f1 +msgid "[fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description)" +msgstr "[fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 344a3dd3c17e4ef5bcd06d95e2a9e9bd +msgid "S2R URDF" +msgstr "S2R 的 URDF" + +#: ../../source/0-overview/2-learning_path.md:196 +#: d47893da1ba04451a19e80266a3d26eb +msgid "[fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description)" +msgstr "[fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 68ad58ccc12544ebb20642c554d1786c +msgid "Gen3 URDF" +msgstr "Gen3 的 URDF" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 90653cee3461457bbd99783562dd9bfe +msgid "" +"[fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3" +"-robot-usds)" +msgstr "" +"[fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3" +"-robot-usds)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 7058b842db3445489cfb3238f439a5c8 +msgid "Gen3 USD" +msgstr "Gen3 的 USD" + +#: ../../source/0-overview/2-learning_path.md:196 +#: c4a8dece825a455b862ba803bcc24557 +msgid "[ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller)" +msgstr "[ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 847ebfa3498647a98fc16d62e9d31a3a +msgid "Whole-body controller" +msgstr "全身控制器" + +#: ../../source/0-overview/2-learning_path.md:196 +#: aeb41447b77a484ca9d12dc095963999 +msgid "[ocs2-humanoid](https://github.com/fiveages-sim/ocs2-humanoid)" +msgstr "[ocs2-humanoid](https://github.com/fiveages-sim/ocs2-humanoid)" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 591a538a41024d91a6d409e6b17821e8 +msgid "Wheeled-arm motion library" +msgstr "轮臂运动库" + +#: ../../source/0-overview/2-learning_path.md:216 +#: 3885f74fb9694a209edc39844398f068 +msgid "" +"More private descriptions, hardware interfaces, and teleop checkouts are " +"linked on the [Repository Map](3-repo_map.md). Public W1 / W2 / S2 URDF " +"stays on [FiveAges robot " +"descriptions](../4-reference/descriptions/4-fiveages_umbrella.md)." +msgstr "" +"其余私有描述、驱动层和遥操作仓库链在 [仓库地图](3-repo_map.md)。公开的 W1 / W2 / S2 URDF 见 " +"[五纪机器人描述](../4-reference/descriptions/4-fiveages_umbrella.md)。" + +#: ../../source/0-overview/2-learning_path.md:219 +#: 513082baf9c84625b3f09956585ebfa6 msgid "" -"Clone `fa-deploy-ws` and run the init / quick-start scripts named in " -"**that repository’s README** (not public). Flags and robot IDs are " -"documented only there." +"Open [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) and run" +" the init / quick-start scripts named in that README." msgstr "" -"克隆 `fa-deploy-ws`,并运行**该仓库 README**(非公开)中写明的 init / quick-start 脚本。参数和机器人" -" ID 只写在那里。" +"打开 [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws),按该 README" +" 里的初始化 / 快速启动脚本执行。" -#: ../../source/0-overview/2-learning_path.md:205 -#: 56e761773d204d3592b4602b3b939d6d +#: ../../source/0-overview/2-learning_path.md:220 +#: a28c89643fef423c8fb7ef0864c28e0f msgid "Follow [fa-deploy-ws Setup](../1-getting_started/4-fa_deploy_ws.md)." msgstr "见 [fa-deploy-ws 配置](../1-getting_started/4-fa_deploy_ws.md)。" -#: ../../source/0-overview/2-learning_path.md:207 -#: 0da5168d1b664b0a9395ece7a6cec0b8 +#: ../../source/0-overview/2-learning_path.md:222 +#: 9ba7b3206e4a4e009fc3ef6447caf7a1 msgid "" "**Safety:** Verify in `mock_components` (or that workspace’s documented " "sim path) before `hardware:=real`." msgstr "**安全:** 先在 `mock_components`(或该工作区文档中的仿真路径)验证,再使用 `hardware:=real`。" -#: ../../source/0-overview/2-learning_path.md:209 -#: 2d70d9545d72442786bbab8c9c456229 -msgid "Day 7+: Add a Robot" -msgstr "第 7 天及以后:添加机器人" +#: ../../source/0-overview/2-learning_path.md:224 +#: 650bcee9390b4372a0d24ac7ab0e5db1 +msgid "Day 7: FaSim integration exam" +msgstr "第 7 天:FaSim 接入考核" -#: ../../source/0-overview/2-learning_path.md:211 -#: b3d4e87e1df24faaacd4ff333f0c8029 -msgid "**Goal:** Integrate a new robot into the ecosystem." -msgstr "**目标:** 将新机器人集成到生态系统中。" +#: ../../source/0-overview/2-learning_path.md:226 +#: c0f1e41fd758434a8fda2422bcae357e +msgid "" +"**Goal:** Bring **one new robot** into FaSim so Isaac and the ROS 2 运控 " +"stack move it. Pass by taking that robot through mock, then sim, until " +"you can see the joints move. Replaying the existing CR5 or W2 demo is " +"only a warm-up." +msgstr "" +"**目标:** 把**一款新机器人**接入 FaSim,让 Isaac 和 ROS 2 运控栈把它驱动起来。通过标准是这款机器人先过 " +"mock,再过仿真,直到能看见关节在动。重放现成的 CR5 或 W2 演示只算热身。" -#: ../../source/0-overview/2-learning_path.md:214 -#: 964f1d5054ed4a068ea99e09865835fc -msgid "Create a description package with URDF/xacro" -msgstr "用 URDF/xacro 创建描述包" +#: ../../source/0-overview/2-learning_path.md:228 +#: 58b34c828e95465a8a6e1a4d312a88de +msgid "" +"**You already need** Days 0–3: `./init_repo.sh`, a launch that reaches " +"HOLD with `hardware:=mock_components`, and FaSim `./init.sh` / " +"`./run.sh`. Isaac Sim is installed and `ISAACSIM_DIR` is set." +msgstr "" +"**你已经需要** 第 0–3 天:`./init_repo.sh`、一次能到 HOLD 的 " +"`hardware:=mock_components` 启动,以及 FaSim 的 `./init.sh` / `./run.sh`。Isaac " +"Sim 已安装,并且设置了 `ISAACSIM_DIR`。" -#: ../../source/0-overview/2-learning_path.md:215 -#: 309748873f6947d5a2ebf87ae96302b0 -msgid "Add ros2_control hardware-interface YAML" -msgstr "添加 ros2_control 驱动层 YAML" +#: ../../source/0-overview/2-learning_path.md:230 +#: ddacb09740124e8e8e1df8d1d5e29dac +msgid "" +"Pick one robot. Add odometry, Nav2, or a dexterous hand only when this " +"robot has them. Work through the steps below." +msgstr "选定一款机器人。只有这款机器人真有底盘、导航或灵巧手时,才补里程计、Nav2 或灵巧手。按下面的步骤做。" -#: ../../source/0-overview/2-learning_path.md:216 -#: c33a8acb3fdf4a81ab7247b759ed1812 -msgid "Configure OCS2 controller parameters" -msgstr "配置 OCS2 控制器参数" +#: ../../source/0-overview/2-learning_path.md:232 +#: 93c647e5b96b4183b8c866ab8d8ae684 +msgid "" +"Procedure and file layout: [Add a " +"Robot](../2-how_to/6-deployment/10-add_a_robot.md). Isaac start and the " +"two connections: [Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md). " +"Mechanism: [FaSim-Isaac](../4-reference/simulation/2-fasim_isaac.md)." +msgstr "" +"步骤和文件布局:[添加机器人](../2-how_to/6-deployment/10-add_a_robot.md)。Isaac " +"启动和两种连接:[Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md)。机制:[FaSim-" +"Isaac](../4-reference/simulation/2-fasim_isaac.md)。" -#: ../../source/0-overview/2-learning_path.md:217 -#: 9a8d1ad88475409e93becb541463c648 -msgid "Test progression: mock → simulation → real hardware" -msgstr "测试进阶顺序:mock → 仿真 → 真实硬件" +#: ../../source/0-overview/2-learning_path.md:234 +#: 392dc4a5e39540e9b2ebd8aff0aafd01 +msgid "Required for every robot" +msgstr "每款机器人都要做" -#: ../../source/0-overview/2-learning_path.md:219 -#: 7844f2c4734d4aa3a75bd9ddb468e098 +#: ../../source/0-overview/2-learning_path.md:236 +#: d4ee0fb8e60548db8a95e57ca836f1d8 +#, python-brace-format +msgid "" +"**Description.** A `{robot}_description` package whose xacro has a " +"`ros2_control` block. Simulation plugins come from " +"[`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-" +"descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)." +" `ros2 launch ocs2_arm_controller demo.launch.py robot:=` (omit " +"`hardware:=`) reaches HOLD before you open Isaac." +msgstr "" +"**描述包。** `{robot}_description` 的 xacro 里要有 `ros2_control` 块。仿真插件来自 " +"[`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-" +"descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)。`ros2" +" launch ocs2_arm_controller demo.launch.py robot:=`(省略 " +"`hardware:=`)应在打开 Isaac 之前进入 HOLD。" + +#: ../../source/0-overview/2-learning_path.md:237 +#: 4c640ef67d5c4bdf80b90a5e59b4077d +msgid "" +"**USD.** A stage `./run.sh` can open, with one ArticulationRoot for this " +"robot, under [robot_usds](https://github.com/fiveages-sim/robot_usds) or " +"a project scene you can access. There is no `./run.sh --robot`." +msgstr "" +"**USD。** `./run.sh` 能打开的舞台,且这款机器人有一个 ArticulationRoot,放在 " +"[robot_usds](https://github.com/fiveages-sim/robot_usds) " +"或你有权限的项目场景里。启动方式是打开 USD,而不是 `./run.sh --robot`。" + +#: ../../source/0-overview/2-learning_path.md:238 +#: 5817667b8ec24716817910653371b451 +msgid "**One sim connection** for those joints." +msgstr "**这些关节只用一种仿真连接。**" + +#: ../../source/0-overview/2-learning_path.md:239 +#: 4f301263c6974adbaf7c1030be00cb52 +msgid "" +"**Topic bridge:** `hardware:=isaac` → `TopicBasedSystem`. The xacro " +"`joint_commands_topic` / `joint_states_topic` equal that graph’s " +"`topicName`. The shared macro writes `/isaac/joint_command` and " +"`/isaac/joint_states`. A robot graph may use other names (W2 topic-bridge" +" payload: `/joint_command` and `/joint_states`). `demo.launch.py` has no " +"namespace argument." +msgstr "" +"**话题桥:** `hardware:=isaac` → `TopicBasedSystem`。xacro 里的 " +"`joint_commands_topic` / `joint_states_topic` 必须等于该图的 `topicName`。共享宏写入 " +"`/isaac/joint_command` 和 `/isaac/joint_states`。某台机器人的图可能用别的名字(W2 话题桥载荷是 " +"`/joint_command` 和 `/joint_states`)。`demo.launch.py` 没有命名空间参数。" + +#: ../../source/0-overview/2-learning_path.md:240 +#: 9f36513836e24ad2b34ecc4588f669d5 +msgid "" +"**In-process:** Play a payload that contains `ROS2ControlLaunch` (W2: " +"[`fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/fiveages.usda)). The node sets " +"`hardware=isaac_sim` and `isaac_prim_path`. The description xacro must " +"accept `isaac_sim`." +msgstr "" +"**进程内:** 播放含 `ROS2ControlLaunch` " +"的载荷(W2:[`fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2" +"-robot-usds/blob/main/W2/payloads/ROS/fiveages.usda))。节点会设置 " +"`hardware=isaac_sim` 和 `isaac_prim_path`。描述 xacro 必须接受 `isaac_sim`。" + +#: ../../source/0-overview/2-learning_path.md:241 +#: 08f093d4481644c7a0b16e6749594309 +msgid "" +"**Controllers.** Arm or split body: `ocs2_arm_controller` (`demo` or " +"`split_body`). Whole body only when this robot’s planner model includes " +"the mobile base: `full_body.launch.py` and, with access, [ocs2-wbc-" +"controller](https://github.com/fiveages-sim/ocs2-wbc-controller). Leave " +"`infoFile` empty to keep the description default. To lock a mobile base, " +"use `mobile_base_tcp` and `BASE_LOCK`. `full_body` together with a " +"`fixed_base` info file has no virtual chassis joint for that lock, and " +"arm enable can stay waiting." +msgstr "" +"**控制器。** 机械臂或分体:`ocs2_arm_controller`(`demo` 或 " +"`split_body`)。只有规划模型包含移动底盘时才做全身:`full_body.launch.py`,以及有权限时的 [ocs2-wbc-" +"controller](https://github.com/fiveages-sim/ocs2-wbc-" +"controller)。`infoFile` 留空则用描述包默认值。要锁住移动底盘,用 `mobile_base_tcp` 和 " +"`BASE_LOCK`。`full_body` 再配一份 `fixed_base` 的 info " +"时,这次锁定没有虚拟底盘关节,手臂使能会一直等待。" + +#: ../../source/0-overview/2-learning_path.md:242 +#: 664bc4a0d4724e42965c8638b00c8feb +msgid "" +"**Motion you can see.** A small FSM home or joint target changes the same" +" joints in Isaac." +msgstr "**能看见的运动。** 一次小的 FSM 回零或关节目标,会让 Isaac 里同一批关节动起来。" + +#: ../../source/0-overview/2-learning_path.md:244 +#: 4a096772ea7d480bb5f33460e6ea1a3b +msgid "Only if this robot has it" +msgstr "仅当这款机器人具备时" + +#: ../../source/0-overview/2-learning_path.md:196 +#: c4cc94b953da4e8a94ff9c3859a83e25 +msgid "Piece" +msgstr "Piece" + +#: ../../source/0-overview/2-learning_path.md:196 +#: d61a7b785c6f45b18cc596170d160fe1 +msgid "When" +msgstr "When" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 25d6c4437d0547a9bdf018a921004e97 +msgid "What to wire" +msgstr "要接上什么" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 77211c0759b3490ab3d9a7d6bfb92e60 +msgid "Chassis / odom" +msgstr "底盘 / 里程计" + +#: ../../source/0-overview/2-learning_path.md:196 +#: dacc4014514e4a99a9b1b6598541e179 +msgid "It has a mobile base" +msgstr "有移动底盘" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 92e2e9671f7f46d8a9a15f4b01fa4ad1 +msgid "" +"Isaac publishes `world → odom → base_*`. `robot_state_publisher` " +"publishes the URDF tree (`base_footprint → base_link` when both exist). " +"OCS2 `baseFrame` is that same link. One publisher per TF edge. A ROS " +"namespace does not rename `frame_id`." +msgstr "" +"Isaac 发布 `world → odom → base_*`。`robot_state_publisher` 发布 URDF " +"树(两边都有时包括 `base_footprint → base_link`)。OCS2 的 `baseFrame` 就是这同一个连杆。每条 TF" +" 边只有一个发布者。ROS 命名空间不会改写 `frame_id`。" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 5ce8e6e5d00948c880fb9e17b147bdb9 +msgid "Gripper or hand" +msgstr "夹爪或手" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 4f3e80258f3943399564662f69615518 +msgid "It has one" +msgstr "这款机器人有一个" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 53905533b9564177a59f1fde4362eac5 +msgid "Launch `type` / `left_type` / `right_type`. There is no `gripper:=`." +msgstr "Launch `type` / `left_type` / `right_type`. There is no `gripper:=`." + +#: ../../source/0-overview/2-learning_path.md:196 +#: 184d02a0c37b4ca2b8f2303106576be7 +msgid "Navigation" +msgstr "Navigation" + +#: ../../source/0-overview/2-learning_path.md:196 +#: b8ea3061f87f41faaa40cf76ec0ac63a +msgid "The scene drives the base on a map" +msgstr "场景要让底盘按地图行驶" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 71ea1b0b2aee4ff38553209e7290a61c +msgid "" +"`NavigationLaunch` on the USD. `map` is a path relative to the opened " +"`env/` layer. It starts `navigation_isaac_gt.launch.py`. Composer " +"`ros2-stack` is a separate host process." +msgstr "" +"USD 上的 `NavigationLaunch`。`map` 是相对已打开 `env/` 层的路径。它启动 " +"`navigation_isaac_gt.launch.py`。编排器的 `ros2-stack` 是另一个宿主机进程。" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 34c56748733f40b48624861d680fabbd +msgid "Second robot" +msgstr "第二台机器人" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 81ad0fc480e740cb9089fd3ac3b21dd5 +msgid "Two articulations in one stage" +msgstr "同一舞台里有两个关节体" + +#: ../../source/0-overview/2-learning_path.md:196 +#: 717ac2977e3e45a3b76f05e00aa4bb19 +msgid "" +"Each root has its own graph and `ROS2ControlLaunch` `namespace`. Topics " +"live under `//`. Frame names stay `world`, `odom`, `base_link`." +msgstr "" +"每个根有自己的图和 `ROS2ControlLaunch` 的 `namespace`。话题在 `//` 下。帧名仍是 " +"`world`、`odom`、`base_link`。" + +#: ../../source/0-overview/2-learning_path.md:253 +#: e7a018c35d0f4c478c3bc370dd6b1668 +msgid "Phases" +msgstr "Phases" + +#: ../../source/0-overview/2-learning_path.md:255 +#: 9ca0d9ad79ec40b1ab87b14bbf3bd0dc +msgid "Mock: the demo launch above, FSM HOLD, joint names from the xacro." +msgstr "Mock:上面的演示启动,FSM 停在 HOLD,关节名来自 xacro。" + +#: ../../source/0-overview/2-learning_path.md:256 +#: e471bdf2277b4e40b3c08e5b7b271ca3 +msgid "`./run.sh`, open your USD, Play runs physics." +msgstr "`./run.sh`,打开你的 USD,播放后物理在跑。" + +#: ../../source/0-overview/2-learning_path.md:257 +#: da3f1b3fb5334a1c885bdea7894f8936 +msgid "" +"Topic bridge **or** in-process graph. `ros2 topic echo` the joint-state " +"topic, or `ros2 control list_controllers`." +msgstr "" +"话题桥**或**进程内图。对关节状态话题做 `ros2 topic echo`,或执行 `ros2 control " +"list_controllers`。" + +#: ../../source/0-overview/2-learning_path.md:258 +#: 19bd634df45942d2a25479c591a288c4 +msgid "" +"Command a small motion. The sim joints move. On the in-process graph, " +"`ros2 topic hz /clock` tracks the physics step." +msgstr "发一个小运动。仿真关节会动。进程内图上,`ros2 topic hz /clock` 跟着物理步走。" + +#: ../../source/0-overview/2-learning_path.md:260 +#: dd217448cfdd4fcbbc0c8ec920e45ba7 +msgid "What you hand in" +msgstr "要交什么" + +#: ../../source/0-overview/2-learning_path.md:262 +#: e7e45de1031249daaf44cc0d09327bea +msgid "The description package (or branch) and the USD path you opened." +msgstr "描述包(或分支),以及你打开的 USD 路径。" + +#: ../../source/0-overview/2-learning_path.md:263 +#: a6b83566fb7444edbb19a6044cacbc6a +msgid "The launch line **or** the `ROS2ControlLaunch` prim you played." +msgstr "启动命令行,**或**你播放的 `ROS2ControlLaunch` 图元。" + +#: ../../source/0-overview/2-learning_path.md:264 +#: 80628069538945d0ae80776fbd3b996b +msgid "" +"The joint-state topic or controller list you saw, and the motion you " +"commanded." +msgstr "你看到的关节状态话题或控制器列表,以及你下发的运动。" + +#: ../../source/0-overview/2-learning_path.md:266 +#: b47515e587b84409ba544f0b8a7536ec +msgid "Pass when you can show" +msgstr "能演示这些就通过" + +#: ../../source/0-overview/2-learning_path.md:268 +#: 0e06963efbfc4c5aa09d3bf24fabc9f5 +msgid "Mock HOLD, then sim Play, on **this** robot." +msgstr "先 mock 到 HOLD,再仿真播放,对象是**这款**机器人。" + +#: ../../source/0-overview/2-learning_path.md:269 +#: ec1c79d2d79e4aa7b14037444c6e28bb +msgid "" +"Joint state or the controller state interfaces match the xacro joint " +"names." +msgstr "关节状态或控制器状态接口与 xacro 关节名一致。" + +#: ../../source/0-overview/2-learning_path.md:270 +#: 3e8961712cec48f68911bc4984cd4761 +msgid "A command moves those joints in Isaac." +msgstr "一条指令让这些关节在 Isaac 里动起来。" + +#: ../../source/0-overview/2-learning_path.md:271 +#: b2653b9e233842f3a1552850435a9696 msgid "" -"See the [Developer Guide](../5-developer/0-index.md) for detailed " -"instructions." -msgstr "详细说明请参阅[开发者指南](../5-developer/0-index.md)。" +"If the payload publishes odometry: `world → odom → base_*` from Isaac, " +"URDF tree from `robot_state_publisher`, and no second node on the same " +"edge." +msgstr "" +"若载荷发布里程计:`world → odom → base_*` 来自 Isaac,URDF 树来自 " +"`robot_state_publisher`,同一条边没有第二个节点。" + +#: ../../source/0-overview/2-learning_path.md:272 +#: 1354bd31e7844908922cfc195552a619 +msgid "" +"In-process: `/robot_description` comes from `robot_state_publisher`. The " +"controller manager is started with robot-description publishing off." +msgstr "进程内:`/robot_description` 来自 `robot_state_publisher`。控制器管理器启动时关闭了机器人描述发布。" -#: ../../source/0-overview/2-learning_path.md:221 -#: bb89397f9a11402ead134f8f373b4e3c +#: ../../source/0-overview/2-learning_path.md:274 +#: f1ba326bc1344b6d9af2a3c503934306 +msgid "" +"A motion that finishes too fast is a `/clock` problem (physics-step clock" +" versus playback tick). The FaSim reference describes that clock. It is " +"not fixed by editing joint gains." +msgstr "运动结束得过快,是 `/clock` 的问题(物理步时钟相对播放节拍)。FaSim 参考页说明了这套时钟。改关节增益解决不了。" + +#: ../../source/0-overview/2-learning_path.md:276 +#: 1026d30fe8ce4605b075e43c02fcb51a msgid "Optional: Synthetic data (Isaac)" msgstr "可选:合成数据(Isaac)" -#: ../../source/0-overview/2-learning_path.md:223 -#: 199f742892f346669761b266714ad54b +#: ../../source/0-overview/2-learning_path.md:278 +#: ff04abb6c3744d8480604599a7c9d542 msgid "" "**Goal:** Understand the Isaac datagen path (not Gazebo): USD scene → " "`ROS2RobotInterface` → composer `task_queue` → LeRobot dataset on disk." @@ -799,24 +1240,27 @@ msgstr "" "**目标:** 弄清 Isaac 数据采集路径(不是 Gazebo):USD 场景 → `ROS2RobotInterface` → " "composer `task_queue` → 磁盘上的 LeRobot 数据集。" -#: ../../source/0-overview/2-learning_path.md:225 -#: ac681ee67524401186a5822cd1424ac6 +#: ../../source/0-overview/2-learning_path.md:280 +#: abdb2861ed33444eae92bd2e31643e1e msgid "" -"Follow [Synthetic Data](../2-how_to/7-synthetic_data/0-index.md). " -"Documented composer/lerobot branches are `feature/dex-grasp-generator` " -"and `feature/sim-grasp-datagen`. Stop at recording/export; skip training." +"Follow [Synthetic Data](../2-how_to/7-synthetic_data/0-index.md) on " +"[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) `main` and " +"[robot_action_composer](https://github.com/fiveages-" +"sim/robot_action_composer) `main`. Stop at recording/export; skip " +"training." msgstr "" -"见 [合成数据](../2-how_to/7-synthetic_data/0-index.md)。文档对应的 composer/lerobot " -"分支是 `feature/dex-grasp-generator` 与 `feature/sim-grasp-" -"datagen`。停在录制/导出;跳过训练。" +"按 [合成数据](../2-how_to/7-synthetic_data/0-index.md) 走 " +"[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) 的 `main` 和 " +"[robot_action_composer](https://github.com/fiveages-" +"sim/robot_action_composer) 的 `main`。停在录制 / 导出,跳过训练。" -#: ../../source/0-overview/2-learning_path.md:227 -#: 7e4d498558f24283aa2eb8a6d368f61a +#: ../../source/0-overview/2-learning_path.md:282 +#: a6b8a4d8a77d4cd894284eb3d8416443 msgid "After the beginner path" msgstr "新手路径之后" -#: ../../source/0-overview/2-learning_path.md:229 -#: d5c573b1ef93491a9eb9cd1c29682355 +#: ../../source/0-overview/2-learning_path.md:284 +#: 6b5d253de1b942bab0ddc008493220ae msgid "" "Continue by **role** in [More " "applications](../6-more_applications/0-index.md): field commissioning " @@ -826,34 +1270,34 @@ msgstr "" "按 **角色** 继续看[更多应用](../6-more_applications/0-index.md):现场调试、传统方案算法工程师、VLA " "采训推、仿真工程师。" -#: ../../source/0-overview/2-learning_path.md:231 -#: 1840c71ee8ba4ef78027e9a7269a6d51 +#: ../../source/0-overview/2-learning_path.md:286 +#: 7ae5f8b5000f4124b83437e763d9b223 msgid "Tips for Success" msgstr "实用建议" -#: ../../source/0-overview/2-learning_path.md:233 -#: 92d8f578cc0b4b5daaf6c9a5a6c97168 +#: ../../source/0-overview/2-learning_path.md:288 +#: 84245dc734e34ea59f2326c05078fe77 msgid "" "**Don't skip mock mode** — Always verify behavior in mock before " "simulation or real hardware" msgstr "**不要跳过 mock 模式** — 在进入仿真或真实硬件之前,务必先在 mock 中验证行为" -#: ../../source/0-overview/2-learning_path.md:234 -#: 3833dad3cbef47c493c3cf9f8b4864a6 +#: ../../source/0-overview/2-learning_path.md:289 +#: 4367a0d7b8b24a678c90a3a0bb250c9b msgid "" "**Read the warnings** — The stack logs helpful messages about " "configuration issues" msgstr "**阅读警告信息** — 技术栈会记录有助于排查配置问题的日志" -#: ../../source/0-overview/2-learning_path.md:235 -#: 234c5ce0ba444dd6b8af66988499e90b +#: ../../source/0-overview/2-learning_path.md:290 +#: 8ee96f8c22d944f696fb6e69afb460b6 msgid "" "**Use lean branches** — `open-deploy-ws` offers `dobot-cr5`, `arx-" "lift2s`, and `panthera-ht`" msgstr "**使用精简分支** — `open-deploy-ws` 提供 `dobot-cr5`、`arx-lift2s` 和 `panthera-ht`" -#: ../../source/0-overview/2-learning_path.md:236 -#: d6a4b3b6e5224fb2bf1af24e45e07190 +#: ../../source/0-overview/2-learning_path.md:291 +#: 678e88e7bb474d4593fbfadbc985ec19 msgid "" "**Ask questions** — File issues on the relevant repository for bugs or " "unclear documentation" @@ -1053,3 +1497,59 @@ msgstr "**提出问题** — 遇到缺陷或文档不清时,请在相应仓库 #~ " allocation." #~ msgstr "FA 机器人(W2、W2R、S2、S2R、双臂 CCS)需要访问 `fa-deploy-ws`。请联系团队负责人申请仓库权限并分配硬件。" +#~ msgid "Add a robot" +#~ msgstr "添加机器人" + +#~ msgid "Project-dependent" +#~ msgstr "视项目而定" + +#~ msgid "In another terminal, launch the ROS 2 side with Isaac hardware:" +#~ msgstr "在另一个终端中,以 Isaac 硬件启动 ROS 2 侧:" + +#~ msgid "" +#~ "Clone `fa-deploy-ws` and run the" +#~ " init / quick-start scripts named " +#~ "in **that repository’s README** (not " +#~ "public). Flags and robot IDs are " +#~ "documented only there." +#~ msgstr "" +#~ "克隆 `fa-deploy-ws`,并运行**该仓库 README**(非公开)中写明的" +#~ " init / quick-start 脚本。参数和机器人 ID " +#~ "只写在那里。" + +#~ msgid "Day 7+: Add a Robot" +#~ msgstr "第 7 天及以后:添加机器人" + +#~ msgid "**Goal:** Integrate a new robot into the ecosystem." +#~ msgstr "**目标:** 将新机器人集成到生态系统中。" + +#~ msgid "Create a description package with URDF/xacro" +#~ msgstr "用 URDF/xacro 创建描述包" + +#~ msgid "Add ros2_control hardware-interface YAML" +#~ msgstr "添加 ros2_control 驱动层 YAML" + +#~ msgid "Configure OCS2 controller parameters" +#~ msgstr "配置 OCS2 控制器参数" + +#~ msgid "Test progression: mock → simulation → real hardware" +#~ msgstr "测试进阶顺序:mock → 仿真 → 真实硬件" + +#~ msgid "" +#~ "See the [Developer Guide](../5-developer/0-index.md)" +#~ " for detailed instructions." +#~ msgstr "详细说明请参阅[开发者指南](../5-developer/0-index.md)。" + +#~ msgid "" +#~ "Follow [Synthetic " +#~ "Data](../2-how_to/7-synthetic_data/0-index.md). Documented " +#~ "composer/lerobot branches are `feature/dex-" +#~ "grasp-generator` and `feature/sim-grasp-" +#~ "datagen`. Stop at recording/export; skip " +#~ "training." +#~ msgstr "" +#~ "见 [合成数据](../2-how_to/7-synthetic_data/0-index.md)。文档对应的 " +#~ "composer/lerobot 分支是 `feature/dex-grasp-" +#~ "generator` 与 `feature/sim-grasp-" +#~ "datagen`。停在录制/导出;跳过训练。" + diff --git a/locale/zh_CN/LC_MESSAGES/0-overview/3-repo_map.po b/locale/zh_CN/LC_MESSAGES/0-overview/3-repo_map.po index a6d906e..18279bf 100644 --- a/locale/zh_CN/LC_MESSAGES/0-overview/3-repo_map.po +++ b/locale/zh_CN/LC_MESSAGES/0-overview/3-repo_map.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 03:15+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -20,147 +20,149 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.18.0\n" -#: ../../source/0-overview/3-repo_map.md:1 f30292764869400c81a61fa8f72f65f1 +#: ../../source/0-overview/3-repo_map.md:1 04b7eb11a4984bd9bb014c6d432896e0 msgid "Repository Map" msgstr "仓库地图" -#: ../../source/0-overview/3-repo_map.md:3 69b232571501478faed271b991bc3123 +#: ../../source/0-overview/3-repo_map.md:3 a6ba648d75304f89a172638fa5f3ee47 msgid "" "This page lists all repositories in the FiveAges Sim ecosystem, organized" " by architectural layer." msgstr "本页按架构层级列出 FiveAges Sim 生态系统中的全部仓库。" -#: ../../source/0-overview/3-repo_map.md:5 4b3185458647415484d55b8d5691756a +#: ../../source/0-overview/3-repo_map.md:5 6829c698397e43b8a49a4f541202afb8 msgid "Legend" msgstr "图例" -#: ../../source/0-overview/3-repo_map.md:7 7022568f09f740588d33faec60e8e73d +#: ../../source/0-overview/3-repo_map.md:7 2ab6b9c53cf846809e26523d17911682 msgid "**[P]** = Public repository" msgstr "**[P]** = 公开仓库" -#: ../../source/0-overview/3-repo_map.md:8 acda47026a2b4bca9f0c2d708a21fc73 -msgid "**[I]** = Private/internal repository" -msgstr "**[I]** = 私有/内部仓库" +#: ../../source/0-overview/3-repo_map.md:8 92ac31a318bd4fb894a1ec8070dc0971 +msgid "" +"**[I]** = Private/internal repository. The link needs repository access. " +"Without it, GitHub does not open the page." +msgstr "**[I]** = 私有 / 内部仓库。链接需要仓库权限。没有权限时,GitHub 打不开页面。" -#: ../../source/0-overview/3-repo_map.md:9 4dc7deee2242463f917b5ba306956e58 +#: ../../source/0-overview/3-repo_map.md:9 c1bd76a57ff04131862dd8cc34000865 msgid "**[X]** = External repository (not in fiveages-sim org)" msgstr "**[X]** = 外部仓库(不属于 fiveages-sim 组织)" -#: ../../source/0-overview/3-repo_map.md:11 55e83da34cab4ecdaa4e5c6302ea1ce7 +#: ../../source/0-overview/3-repo_map.md:11 68653a50c2984bee9be685c971b285a4 msgid "Entry Workspaces" msgstr "入口工作空间" -#: ../../source/0-overview/3-repo_map.md 215e8bb9fe594fd4919d45b3bbedcf77 -#: 25e16392462b4f458bb145d2742abcc7 27cb53ee232e4efdbbc72cec109636e4 -#: 2aa613c16198477e8cc36276d18047f6 33fbc2400ed2449aa2ba8ae205d8a6b6 -#: 3f323d1e903e45d6b8129eae22be91d5 620c972d345e400aa8aa35c4d59f2287 -#: 7c9fa0d492cd4524b69e71c073b36ad6 7d7c3573cc2b4d289b1621da508171fd -#: 8a830234c35b405ea1f6faca6f8cf7cb fa7495e7a7bc4c2f87249c40edc2aee7 +#: ../../source/0-overview/3-repo_map.md 0496e1d8086344c0a6c50be952408092 +#: 34908548c0b548769ad067f22231b045 7168db1be01b4b20a90fdb798d902bd7 +#: 822ff308f51f4625bf1baca728aab805 8c308a87bcb94f8b862e5e5698019126 +#: 9d6a2bb1d4f54e39969d138e3d75cd79 ab4c3b5ea648461dba241c5cf79abacb +#: b91f8506b7b843688d665b481366063d ba997ac51ba74417b340d8a6217da1eb +#: da0a300a83a140d98bd58b81d88c86e7 ee2d5bf3a62e4005a8cf4657f737076d msgid "Repository" msgstr "仓库" -#: ../../source/0-overview/3-repo_map.md 0e579274bfeb45cc93d03f1d43346ade -#: 147cf0c055784f0c91098ae014471a5c 171492c73eda4a5cbf1440ae575ab115 -#: 2614c6d4889d49e9b693340fb7b28e32 29c73a091ff24b44b111a84a2a569d51 -#: 2be57e315059455c8801a8baf2d7a703 673ddc9e1eb5409bacfe0d0886ef7257 -#: 9e7456b4ddac4085a0f0769bcb23db0e aaa4e99d235e4c3da4c2f4dafc1c683a -#: ae2f560df5e244c18685ead719ff64ef f9995f0c6a3845e582a200623fd20210 +#: ../../source/0-overview/3-repo_map.md 2068cefcece542859bd8ee114d53f80b +#: 31351bbd9aac4f23b003fe56498c57d9 41c5ac3483fa42658a092e733d789957 +#: 5db6c722ea5f4c128f1fd50706c18cc1 63b3261f68ac4765adb8c01dcf5c0d0a +#: 6e7c121714e948c2911831fe1597c49b 957b0161c53a49ce9577b7edbaea57fa +#: 9aeffa6965b74419b9bfeecf7d4944f7 b2ef484997fc4929a54c09ea45763b2c +#: bbeb0664d6984f278d0d5a41b66a5fa8 d5b11dd1bcb246a3b5467698d85234fc msgid "Visibility" msgstr "可见性" -#: ../../source/0-overview/3-repo_map.md 03c1d5d49dbf4458adbcd5b78097b5c3 -#: 05c9f5eef6b948ffb2066d4c21cf8eb5 1f6c3c183d6949f9a54ba607740b093f -#: 5c602b756f5a447face224675b621eeb 8c0987b758ce42d097a4f4afce6b3526 -#: fd2a16c011dd40f6a732d712fcc762e3 +#: ../../source/0-overview/3-repo_map.md 02eb9add8e0f4e85b92babad677a7836 +#: 45119c4c4b1748cf9187ea1600639016 4b254a4bf1344a3ab93c2ea38d99e955 +#: 59438a7a287349b8acf724e29183cada 6ec4af4dbdbf4e2a9c96d0fbca1032eb +#: a6785e0247d14ab0a53f42767e52cd1c msgid "Purpose" msgstr "用途" -#: ../../source/0-overview/3-repo_map.md 19aaa0f9cb434d1a91a2f0ebbc80731a +#: ../../source/0-overview/3-repo_map.md d8b81217beec4246bf5e30a8a288af45 msgid "[open-deploy-ws](https://github.com/fiveages-sim/open-deploy-ws)" msgstr "[open-deploy-ws](https://github.com/fiveages-sim/open-deploy-ws)" -#: ../../source/0-overview/3-repo_map.md 012847e9605a468b9cb90e1bb0cab369 -#: 07745351956447ffb30827116dffceaa 0a3399e9a75a4875bf0f1593d8c18c2d -#: 123dddcf022f466e8c020b1c180497de 13c5e5c5408e4e549f1e6bf321aac714 -#: 14e91c3485544c1184809920b2694005 20487ab4ed6f433abf541eb091cb956c -#: 22a1289fa94c4cdeaacb051f3c4300e0 25dca74343824519899171950e6d36ad -#: 25e6a02c1ef347eeb3638fcbff574d54 25ec366e1844471fa265a12fdd6facff -#: 278ec456d76e465f9af1c799221b721a 311e12c30d314dc48098b937c864f8fc -#: 37cddef857f14ba681069f77aa7d0f83 42d5ef9402564dbc911261f816c6d0d2 -#: 459f938acd9a4d79a0d64b0bad26d82e 484a14c53712434894cb25ffc87879cf -#: 4922c38ae07e42d5905dd9f192633456 4c2d41915bf844a1b40f3001b4d9efa9 -#: 5702a19c2b5d4afc8a097ef1a63203e4 5cdd4351ba6849feacc1f5cdda082b5f -#: 6026d4fcd9904895865b4d534ab50136 60cad0ab66ff493bb4661ec8e6f9822f -#: 6c94cda28c4c487aac479c790cb6bf00 833bf871c22b4636915234b63a0c3cc6 -#: a0b4442ca0804592b34b3d139be3c268 add5866116e24e7faed996a79c07ebb9 -#: cc822faa6ab74a37a74430ca58c90969 d202653bbb8a4c02b3d0c18c1d091092 -#: d4074b6488504cec87e49795ff56f385 d6ab671c08b54954b58e866a7f14a986 -#: ecea294e21134a0e905b364c13d64475 ee91c96dd28c4285beb0e9dc2ae3c354 -#: efd12045caf74801a9868dd1c9f0eff2 f5473d90b0da4547a7b180a30e3ba3c0 -#: fae085bb500d4619aa4e7a54b989d205 fdd88c0f357841488dee9125ce6d658f +#: ../../source/0-overview/3-repo_map.md 00d801040fb54ad0ba2deb30798a8de0 +#: 0ccac043081547a69a4181f6f6d8f670 14e01b0a590e4d548525ef59cb8c6999 +#: 153c0008df7e4a258e1411df9c0924a1 177a149c954b4eb7aafbfad04549ce5c +#: 1af050e0b5f046dc900054d91c380f64 1d9eeb9c8361425c9202ab0e09ec06b1 +#: 2013e33a18f64761ba1e55cc4b2cd6f0 49a034bad8af4ad5974cab3c9aa95438 +#: 589970c561424ad8b3c988c3257c346c 5f746f4a2d804c928d8cec9c7f60edff +#: 6370258dbdd1427cb00542b3ef4b4110 6aa7df9d4bf74ab785d8fdbc1c2d9bc3 +#: 6eb62438cfcd435bb23707fa57962fdf 7240b9545ee54d20b9190fa8f3fead9d +#: 815d6cef6f004124975d7f5ed01bc530 8631bb5553d9423999ab60689055879d +#: 8fdd60cb92994a56867132911e99b385 9099506bf9974e8497a78edb405c029f +#: 91cd9762e81747998858f740686c9e00 960a6b28a48b422ca487e6c427702a99 +#: 97fad771131b42bfb146651ce1692128 a4150c14f4de4040aa740fb4fd821db9 +#: a4d8fc1e625d4e7abdeff95586e48d57 ac25f4779eae48aea1291af6a7c6ef70 +#: acbac7e5da6549aca49bdb3a7047c3b9 afe19e2d54074fbca72cf40cd1d2819a +#: b80df9a4527b498abefb2a0a70cd69ca c5ca56c89111439682d6a0603a11b37b +#: d41c1167b9554c7cbf80dcccdd83d1c0 d89d42e1089f4e18aa60dcc399ef8e4a +#: dd24171c54634c9c97824b68ceb25365 e6458724d8cd4e54bae738fef92240ee +#: e8a973eb65b148c0b2cd440ffa3c4717 ee492e952f9a4b929afe1780b0e657c1 +#: f02d3697f41d44e180a3193b6b9f38c8 f1de3016dbe546e1974e2d5832f4dcac +#: fcb8d4bbe9ac42e0862d20b5def019b5 msgid "[P]" msgstr "[P]" -#: ../../source/0-overview/3-repo_map.md b46bab545a7d4a54bda927d9c5594f88 +#: ../../source/0-overview/3-repo_map.md 8764dbb3205045c589732519ecf38dd8 msgid "Public quick-start workspace" msgstr "公开快速入门工作空间" -#: ../../source/0-overview/3-repo_map.md ec88492f5356462fb658295b2b7d5090 -msgid "fa-deploy-ws" -msgstr "fa-deploy-ws" - -#: ../../source/0-overview/3-repo_map.md 0a518fb4229444508dc7868340f031aa -#: 0e6a798627a54f73acd3b3b24445c437 13dff17b96f14351a72df981b4aaa669 -#: 30682060db2745058781f0f986c349ca 31989b92f8cf4246baf35b6914b2976c -#: 48fcd342d53b405699612ae90ed44308 533d63a9073640eebb9c8aac5c32ed22 -#: 5fbb2e53ae534396904a16efd6f42c82 5fedf380e8cd47728ae774f2e0d188a1 -#: 689f73920ad148acbeea15fd42802392 80d07f56d4a048228f997c4474744bc6 -#: 85caf4adae434202abd31a0dd31cd4db 8b702dd8fd3f4dc0ab0d7f67dbc50181 -#: a892085869354ff9a7f92b38f832f418 aa1990af609e43b88eecfc61be5635ad -#: ac84d75522cb411e9eab0bdab4008ada b51ef0d72f564237a0ca6802b547d598 -#: b777762eb929495a92a460375d67ee17 c08b2059f8ec472cb7f6127f2f16d5ad -#: c8813ab259a94787abe6f6baa0aa84b6 d731e7f73b694f148605aba352c956ac -#: f69f84813c2343a7ae7aa38700aa7b5e +#: ../../source/0-overview/3-repo_map.md 93611917f6d64919ae124e6b7c046303 +msgid "[fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws)" +msgstr "[fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws)" + +#: ../../source/0-overview/3-repo_map.md 0119d5be9cad4fab862c6addff1703db +#: 0986e132a888446a9b45a4f4dedc130b 1037859d4728406cb91ee808edf26099 +#: 12b7ffd4d570425ea17c80679fefd225 147b3951b35d467c96975f614361a19a +#: 1671d0e59b344c46bcd95163f6efe64b 196c6b10fa71491386a02e83565baf49 +#: 1e048f98227c404da49a0838f32db1b3 20e0821da21c44aea994941aed831022 +#: 3a8f606d41e94363b0eaf8859926fc97 42c9df246b6f451392c7cf67350970f6 +#: 706967f69f474eb9bac3a474d6c4e276 8922dc7e14d7416ba907eb22df9f87a6 +#: 959b8591480f43fcbe2a0ecf967dcfb9 bc08d7e96f824ace9d40278750377578 +#: d152b0698fd74c14b5610af411bc247c d48321d2b6d243329195a2e442a0cb94 +#: e7c90edf258c436783995fb3d59e8870 f3cf434f3dcc4a3e841898ecc5773a1a +#: f86ad6221a3b44e3ba2c0e77597f02dc fd01ed2c02a44c4890c478d7849f2b45 msgid "[I]" msgstr "[I]" -#: ../../source/0-overview/3-repo_map.md db46d7d443a94aa49a52f654d2e492e1 -msgid "Internal deployment for FA robots" -msgstr "FA 机器人的内部部署" +#: ../../source/0-overview/3-repo_map.md f81ceeb416154fb1957b69e58287a0a6 +msgid "Internal deployment for FA robots (default branch `fa-w2`)" +msgstr "五纪机器人的内部部署(默认分支 `fa-w2`)" -#: ../../source/0-overview/3-repo_map.md 2be0a569e4e34ad8ba4a0281c6c6bb45 -msgid "dexcap_teleop_ws" -msgstr "dexcap_teleop_ws" +#: ../../source/0-overview/3-repo_map.md 3b8c8894b2ff4cb398011b0a2a9e5c55 +msgid "[dexcap_teleop_ws](https://github.com/fiveages-sim/dexcap_teleop_ws)" +msgstr "[dexcap_teleop_ws](https://github.com/fiveages-sim/dexcap_teleop_ws)" -#: ../../source/0-overview/3-repo_map.md 930f70ce93224aa69ba2ece55a5206f3 +#: ../../source/0-overview/3-repo_map.md e13052b5792c4b1fab882dced8e9abf3 msgid "DexCap teleoperation workspace" msgstr "DexCap 遥操作工作空间" -#: ../../source/0-overview/3-repo_map.md 66fe31bca8c34182aceb349f56f40a28 +#: ../../source/0-overview/3-repo_map.md dea44ef20ba24e41a9611fa2e3e0e0ca msgid "[FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac)" msgstr "[FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac)" -#: ../../source/0-overview/3-repo_map.md 172c7ea1d1b04dbc8c10d52c14fd58c6 +#: ../../source/0-overview/3-repo_map.md 7d130d48dba94f77bd2748ab5a303ac2 msgid "Isaac Sim assets and jazzy_ws" msgstr "Isaac Sim 资源与 jazzy_ws" -#: ../../source/0-overview/3-repo_map.md:20 70ac511d35e2484bbadc7b1033d545b8 +#: ../../source/0-overview/3-repo_map.md:20 8bde7024e3c04faa942764f70fdb75ab msgid "L1: Descriptions" msgstr "L1:描述" -#: ../../source/0-overview/3-repo_map.md:22 56de9d114b444489807863c07d14d24f +#: ../../source/0-overview/3-repo_map.md:22 2e692e380dec4964a2f135d7bf16c155 msgid "Umbrella Repositories" msgstr "聚合仓库" -#: ../../source/0-overview/3-repo_map.md 2492d7e80407434d8bf9259a1bf26cda +#: ../../source/0-overview/3-repo_map.md 8ac3ac50640643538cac45f0337c75bf msgid "[robot_descriptions](https://github.com/fiveages-sim/robot_descriptions)" msgstr "[robot_descriptions](https://github.com/fiveages-sim/robot_descriptions)" -#: ../../source/0-overview/3-repo_map.md c47ea071c4924cef9a9fe95d8419e49e +#: ../../source/0-overview/3-repo_map.md dfdc9b2f998e404fb8fabf5a6757430f msgid "Public umbrella for all descriptions" msgstr "所有描述包的公开总仓" -#: ../../source/0-overview/3-repo_map.md 85ea16f949fe454191f6d476a7a1a0d1 +#: ../../source/0-overview/3-repo_map.md 828b75578d714d598c3a49663bf73c17 msgid "" "[robot-descriptions-common](https://github.com/fiveages-sim/robot-" "descriptions-common)" @@ -168,20 +170,20 @@ msgstr "" "[robot-descriptions-common](https://github.com/fiveages-sim/robot-" "descriptions-common)" -#: ../../source/0-overview/3-repo_map.md dc3d28f87d7f4f8d80ee9b20c1b08000 +#: ../../source/0-overview/3-repo_map.md 27f47a49e4034c14838226b59df8b465 msgid "Grippers, hands, sensors, `robot_common_launch` (umbrella path `common`)" msgstr "夹爪、灵巧手、传感器、`robot_common_launch`(伞形仓路径 `common`)" -#: ../../source/0-overview/3-repo_map.md:29 d5f94cd153ed4d9abddf751313522e96 +#: ../../source/0-overview/3-repo_map.md:29 84293d1a00d94ce6923e9f858e6d092c msgid "Brand-Specific (Public)" msgstr "品牌专用(公开)" -#: ../../source/0-overview/3-repo_map.md 44926d7fe0524fb387a894650730eb0e -#: 4af9071a1f34417293651c3bcf702e88 +#: ../../source/0-overview/3-repo_map.md 1db6b704275f4f9c82516d035803137e +#: b293bb74d91d4295a133da3ad06847df msgid "Robots" msgstr "机器人" -#: ../../source/0-overview/3-repo_map.md 09dedf913cbc4bedad7da1f0c01062dc +#: ../../source/0-overview/3-repo_map.md f23823065bfd4f6396240ae1ccca0ca1 msgid "" "[robot-descriptions-dobot](https://github.com/fiveages-sim/robot-" "descriptions-dobot)" @@ -189,11 +191,11 @@ msgstr "" "[robot-descriptions-dobot](https://github.com/fiveages-sim/robot-" "descriptions-dobot)" -#: ../../source/0-overview/3-repo_map.md d01a8caf0d414134b2fbe148c320417a +#: ../../source/0-overview/3-repo_map.md 8f7ec4b1ed05414b928d12616e7ffcff msgid "Dobot CR series" msgstr "Dobot CR 系列" -#: ../../source/0-overview/3-repo_map.md 7e53187156794ef78c1aa9f7cedd97b4 +#: ../../source/0-overview/3-repo_map.md df64c7b63b0e4ddd8547a07fe365f51e msgid "" "[robot-descriptions-arx](https://github.com/fiveages-sim/robot-" "descriptions-arx)" @@ -201,11 +203,11 @@ msgstr "" "[robot-descriptions-arx](https://github.com/fiveages-sim/robot-" "descriptions-arx)" -#: ../../source/0-overview/3-repo_map.md 5749385f460644fe9e1b1c57afd65bfa +#: ../../source/0-overview/3-repo_map.md fa12d265d6e24546a45128c6ce6ad7ba msgid "ARX X5, Acone (dual-arm), Lift 2S" msgstr "方舟无限 X5、Acone(双臂)、Lift 2S" -#: ../../source/0-overview/3-repo_map.md e4a68a93cc0c47dd87994ac8c7fb7f64 +#: ../../source/0-overview/3-repo_map.md 71cb1835e7ed46ef988df4ece4d8ab6d msgid "" "[robot-descriptions-galbot](https://github.com/fiveages-sim/robot-" "descriptions-galbot)" @@ -213,11 +215,11 @@ msgstr "" "[robot-descriptions-galbot](https://github.com/fiveages-sim/robot-" "descriptions-galbot)" -#: ../../source/0-overview/3-repo_map.md 1c8b7ff0caac4f84ba370f0d3c335361 +#: ../../source/0-overview/3-repo_map.md 24563afb3f9542e79ddcf5c587f57c74 msgid "Galbot mobile manipulators" msgstr "Galbot 移动操作臂" -#: ../../source/0-overview/3-repo_map.md a8c0572c87e44b3aa34dae14174b28d8 +#: ../../source/0-overview/3-repo_map.md bbac806ae4264081873c8f76a1f43977 msgid "" "[panthera_ht_description](https://github.com/fiveages-" "sim/panthera_ht_description)" @@ -225,11 +227,11 @@ msgstr "" "[panthera_ht_description](https://github.com/fiveages-" "sim/panthera_ht_description)" -#: ../../source/0-overview/3-repo_map.md 4e5dc0f3866344e2be7d74220e91f6c7 +#: ../../source/0-overview/3-repo_map.md 4be6f8a4e47c4e4eb8419257ae6b1670 msgid "HighTorque Panthera HT (`manipulator/HighTorque/panthera_ht_description`)" msgstr "高擎 Panthera HT(`manipulator/HighTorque/panthera_ht_description`)" -#: ../../source/0-overview/3-repo_map.md b84acfbb90894a83afc89725b2b42bda +#: ../../source/0-overview/3-repo_map.md 22f90e90e4004ac4a0ee9433bb2a174e msgid "" "[robot-descriptions-quadruped](https://github.com/fiveages-sim/robot-" "descriptions-quadruped)" @@ -237,11 +239,11 @@ msgstr "" "[robot-descriptions-quadruped](https://github.com/fiveages-sim/robot-" "descriptions-quadruped)" -#: ../../source/0-overview/3-repo_map.md 054ad1a6382345e7a615bcf0413e9eb8 +#: ../../source/0-overview/3-repo_map.md cbb403167e434955b6dc53cb7ea05c1c msgid "Quadruped robots" msgstr "四足机器人" -#: ../../source/0-overview/3-repo_map.md d7493b661d35431c8e97ea7b447b0df9 +#: ../../source/0-overview/3-repo_map.md 5f2ea64766554241baebc46363446aa3 msgid "" "[robot-descriptions-tianji](https://github.com/fiveages-sim/robot-" "descriptions-tianji)" @@ -249,11 +251,11 @@ msgstr "" "[robot-descriptions-tianji](https://github.com/fiveages-sim/robot-" "descriptions-tianji)" -#: ../../source/0-overview/3-repo_map.md 282b3ee1f06e415db6db25ed494dc5a4 +#: ../../source/0-overview/3-repo_map.md d42211264e514bf88fc518c070db6ffb msgid "Tianji M6, M6S Lite, M20S, Marvin Pro (`manipulator/Tianji`)" msgstr "天机 M6、M6S Lite、M20S、Marvin Pro(`manipulator/Tianji`)" -#: ../../source/0-overview/3-repo_map.md 53a467c96f6846dfa7e323d157afb1ef +#: ../../source/0-overview/3-repo_map.md 5fb706518a3c4c61823bc1c056411cf4 msgid "" "[robot-descriptions-rokae](https://github.com/fiveages-sim/robot-" "descriptions-rokae)" @@ -261,11 +263,11 @@ msgstr "" "[robot-descriptions-rokae](https://github.com/fiveages-sim/robot-" "descriptions-rokae)" -#: ../../source/0-overview/3-repo_map.md e744b824f0c54549a54c38d145fb107c +#: ../../source/0-overview/3-repo_map.md c8a1d03cc3c648b48ddd6b386a074e90 msgid "Rokae AR5-SRS, AR5-CCS (`manipulator/Rokae`)" msgstr "珞石 AR5-SRS、AR5-CCS(`manipulator/Rokae`)" -#: ../../source/0-overview/3-repo_map.md 32f389cfcb894f08aaf9e08727f67576 +#: ../../source/0-overview/3-repo_map.md a936519d71414929a41b428f8f9c6d20 msgid "" "[robot-descriptions-gento](https://github.com/fiveages-sim/robot-" "descriptions-gento)" @@ -273,43 +275,55 @@ msgstr "" "[robot-descriptions-gento](https://github.com/fiveages-sim/robot-" "descriptions-gento)" -#: ../../source/0-overview/3-repo_map.md fa65bb3e56084f03ab1926f124d8bdd9 +#: ../../source/0-overview/3-repo_map.md 65a712f849ec438ea7f5f0cc53910d90 msgid "Gento Skye, Luna (`humanoid/Gento` on `feature/agilex`)" msgstr "Gento Skye、Luna(`feature/agilex` 上的 `humanoid/Gento`)" -#: ../../source/0-overview/3-repo_map.md:42 f1b33f3e0a554240a21f774694c1eafc +#: ../../source/0-overview/3-repo_map.md:42 7532a617a2b34f9d8e6e80bd6278fd14 msgid "Brand-Specific (Private)" msgstr "品牌专用(私有)" -#: ../../source/0-overview/3-repo_map.md 7ee649dbaca74340aff5397bb1d3bf50 -msgid "robot-descriptions-fairino" -msgstr "robot-descriptions-fairino" +#: ../../source/0-overview/3-repo_map.md e03ac75a25b143408c8dba63f7b624b4 +msgid "" +"[robot-descriptions-fairino](https://github.com/fiveages-sim/robot-" +"descriptions-fairino)" +msgstr "" +"[robot-descriptions-fairino](https://github.com/fiveages-sim/robot-" +"descriptions-fairino)" -#: ../../source/0-overview/3-repo_map.md b10e4cf1fe764faf8e286202074e9f92 +#: ../../source/0-overview/3-repo_map.md 9eb561b3b65b44ff808735c72c901ea6 msgid "Fairino ART7" msgstr "法奥 ART7" -#: ../../source/0-overview/3-repo_map.md 60345e4c6aad462bae8a126c13237d5f -msgid "robot-descriptions-ubtech" -msgstr "robot-descriptions-ubtech" +#: ../../source/0-overview/3-repo_map.md a4ce1163997342fabd4b72165030061d +msgid "" +"[robot-descriptions-ubtech](https://github.com/fiveages-sim/robot-" +"descriptions-ubtech)" +msgstr "" +"[robot-descriptions-ubtech](https://github.com/fiveages-sim/robot-" +"descriptions-ubtech)" -#: ../../source/0-overview/3-repo_map.md 22804dc62d4f4bbbb4444e7bedb4a881 +#: ../../source/0-overview/3-repo_map.md f296d64bd5b64f39b246b3e2e27ae167 msgid "Ubtech humanoids" msgstr "Ubtech 人形机器人" -#: ../../source/0-overview/3-repo_map.md 1db727b78b15481ab745610ac7c4596f -msgid "agibot-g2-description" -msgstr "agibot-g2-description" +#: ../../source/0-overview/3-repo_map.md f434453bdc2d46e3921367f252fe10ad +msgid "" +"[agibot-g2-description](https://github.com/fiveages-" +"sim/agibot-g2-description)" +msgstr "" +"[agibot-g2-description](https://github.com/fiveages-" +"sim/agibot-g2-description)" -#: ../../source/0-overview/3-repo_map.md fef5d85cc96f49d38f6c28756917ad0f +#: ../../source/0-overview/3-repo_map.md 8a7e4d0918df4c539b37862d95f16426 msgid "Agibot G2" msgstr "Agibot G2" -#: ../../source/0-overview/3-repo_map.md:50 91f95db62f14426badca84c2d27b8b3f +#: ../../source/0-overview/3-repo_map.md:50 c52d027009234efc96441540b495e0a2 msgid "FiveAges (gitlinks under `robot_descriptions`)" msgstr "FiveAges(`robot_descriptions` 下的 gitlink)" -#: ../../source/0-overview/3-repo_map.md:52 16813a788f214e28958ec47ba17c7c94 +#: ../../source/0-overview/3-repo_map.md:52 9b7742d99696452f945f0f916a94c91c msgid "" "There is **no** separate `robot-descriptions-fiveages` umbrella (404). " "Remotes below are from [robot_descriptions " @@ -322,87 +336,91 @@ msgstr "" "sim/robot_descriptions/blob/main/.gitmodules)。细节:[FiveAges " "机器人描述](../4-reference/descriptions/4-fiveages_umbrella.md)。" -#: ../../source/0-overview/3-repo_map.md 72032f843db84204b3d1688252b3f046 +#: ../../source/0-overview/3-repo_map.md 808686e0ab584ff5ad9637f4fdaec465 msgid "Umbrella path (`main`)" msgstr "伞形仓路径(`main`)" -#: ../../source/0-overview/3-repo_map.md 79b44105f1a74ed386243b1b5175c438 +#: ../../source/0-overview/3-repo_map.md e8f839dc7a964ffb9b13acf7c07bd852 msgid "[fa-w1-description](https://github.com/fiveages-sim/fa-w1-description)" msgstr "[fa-w1-description](https://github.com/fiveages-sim/fa-w1-description)" -#: ../../source/0-overview/3-repo_map.md c8c70a75ffbc45b1ae3139da44923ea0 +#: ../../source/0-overview/3-repo_map.md 43c53596f520453986f07f0694da4729 msgid "`humanoid/FiveAges/fiveages_w1_description`" msgstr "`humanoid/FiveAges/fiveages_w1_description`" -#: ../../source/0-overview/3-repo_map.md 66aadcf100174f6b870eca6e4ddb74e9 +#: ../../source/0-overview/3-repo_map.md 095100ecf7d24c2a89a2e394608247af msgid "[fa-w2-description](https://github.com/fiveages-sim/fa-w2-description)" msgstr "[fa-w2-description](https://github.com/fiveages-sim/fa-w2-description)" -#: ../../source/0-overview/3-repo_map.md 0af3e6936f4f4af28f03ff975f618c22 +#: ../../source/0-overview/3-repo_map.md 69f325295b044f6887ca2b61ffc94cb0 msgid "`humanoid/FiveAges/fiveages_w2_description`" msgstr "`humanoid/FiveAges/fiveages_w2_description`" -#: ../../source/0-overview/3-repo_map.md 529d2abf7610480295418eb04830be96 -msgid "fa-w2r-description" -msgstr "fa-w2r-description" +#: ../../source/0-overview/3-repo_map.md 0ee7ce3163ec49429f363b5313dcfd06 +msgid "[fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description)" +msgstr "[fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description)" -#: ../../source/0-overview/3-repo_map.md 703a3b429cf046a39cd98abb78bb3896 +#: ../../source/0-overview/3-repo_map.md 0091fae361844434aa44bff526663a11 msgid "[I] — **not open**" msgstr "[I] — **尚未开放**" -#: ../../source/0-overview/3-repo_map.md 289534debff1430fa388282a37da107f +#: ../../source/0-overview/3-repo_map.md 875a219ac2e746628167be3cadaac94d msgid "`humanoid/FiveAges/fiveages_w2r_description`" msgstr "`humanoid/FiveAges/fiveages_w2r_description`" -#: ../../source/0-overview/3-repo_map.md 3ccfd3fedce448328fc81ee5c562671d +#: ../../source/0-overview/3-repo_map.md 354ab54fe3354e648458afa1e7310b20 msgid "[fa-s2-description](https://github.com/fiveages-sim/fa-s2-description)" msgstr "[fa-s2-description](https://github.com/fiveages-sim/fa-s2-description)" -#: ../../source/0-overview/3-repo_map.md a7d085528b8a4548bae6c827f6c4308b +#: ../../source/0-overview/3-repo_map.md d48368d0e434420cbf381acace942bdd msgid "`humanoid/FiveAges/fiveages_s2_description`" msgstr "`humanoid/FiveAges/fiveages_s2_description`" -#: ../../source/0-overview/3-repo_map.md 1b5b21c433f14b8889c76ec8dddb9ab2 +#: ../../source/0-overview/3-repo_map.md cbf633cd27c740d091a8c41094195393 msgid "[fa-w2-components](https://github.com/fiveages-sim/fa-w2-components)" msgstr "[fa-w2-components](https://github.com/fiveages-sim/fa-w2-components)" -#: ../../source/0-overview/3-repo_map.md bdc5f850aded4584a049f0258b1d896d +#: ../../source/0-overview/3-repo_map.md ff1a6b5e89d94ac4a29a5e19126ca4c3 msgid "`humanoid/FiveAges/fiveages_w2_common_description`" msgstr "`humanoid/FiveAges/fiveages_w2_common_description`" -#: ../../source/0-overview/3-repo_map.md:62 3dc7e80e6b9946c3a35e28d98c7ea6e9 +#: ../../source/0-overview/3-repo_map.md:62 7cfa4d19722846f18a5a150805e1cb81 msgid "" -"`fa-s2r-description` (`fiveages_s2r_description`, **still private — not " -"open**) and `fa-wce3-description` (`fiveages_wce3_description`, still " -"private) appear only on `robot_descriptions` **`feature/agilex`** (`Gen2`" -" / `Gen3`)." +"[fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description) " +"(`fiveages_s2r_description`, **still private — not open**) and [fa-" +"wce3-description](https://github.com/fiveages-sim/fa-wce3-description) " +"(`fiveages_wce3_description`, still private) appear only on " +"`robot_descriptions` **`feature/agilex`** (`Gen2` / `Gen3`). Both links " +"need access." msgstr "" -"`fa-s2r-description`(`fiveages_s2r_description`,**仍为私有 — 尚未开放**)和`fa-" -"wce3-description`(`fiveages_wce3_description`,仍为私有)只出现在`robot_descriptions`的" -" **`feature/agilex`**(`Gen2` / `Gen3`)。" +"[fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-" +"description)(`fiveages_s2r_description`,**仍私有,尚未开放**)和 [fa-" +"wce3-description](https://github.com/fiveages-sim/fa-" +"wce3-description)(`fiveages_wce3_description`,仍私有)只出现在 " +"`robot_descriptions` 的 **`feature/agilex`**(`Gen2` / `Gen3`)。两个链接都需要权限。" -#: ../../source/0-overview/3-repo_map.md:64 1262f18bd3af4d7f9c790b55b7ef29b7 +#: ../../source/0-overview/3-repo_map.md:64 1c0a14a14fd84dab90c4eefbab319fb8 msgid "L2: Hardware Interfaces" msgstr "L2:驱动层" -#: ../../source/0-overview/3-repo_map.md:66 ca3e6e400937428e9d38c8eca916126f +#: ../../source/0-overview/3-repo_map.md:66 0bdb6f0c76664d3ca341ee8b4fb377d6 msgid "Public" msgstr "公开" -#: ../../source/0-overview/3-repo_map.md 2f8ee98313484ffda39512208e77c394 -#: aa0acb26b9634e5481f6b79687543e5a +#: ../../source/0-overview/3-repo_map.md 6c300d8fbe234083952e86e1e8737306 +#: df97102d09184ece9f4e3332d13ce3ab msgid "Hardware" msgstr "硬件" -#: ../../source/0-overview/3-repo_map.md 3d4f712b8c6846cb9d7439b918007ab5 +#: ../../source/0-overview/3-repo_map.md 72d9998d4b1b4e4997d1d099a0ee9e88 msgid "[arx-ros2-control](https://github.com/fiveages-sim/arx-ros2-control)" msgstr "[arx-ros2-control](https://github.com/fiveages-sim/arx-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 40e7bcc3db6d44ee9fab7b4701c9d83d +#: ../../source/0-overview/3-repo_map.md 9b4cb7427e8b4bf982d632b617848d8b msgid "ARX CAN interface" msgstr "ARX CAN 接口" -#: ../../source/0-overview/3-repo_map.md d8d9ea7a2ab047018c4f9f82448b3424 +#: ../../source/0-overview/3-repo_map.md 9886c51ec1bb4045a25866aa45e26978 msgid "" "[dobot-cr-ros2-control](https://github.com/fiveages-sim/dobot-cr-" "ros2-control)" @@ -410,11 +428,11 @@ msgstr "" "[dobot-cr-ros2-control](https://github.com/fiveages-sim/dobot-cr-" "ros2-control)" -#: ../../source/0-overview/3-repo_map.md 71ab7d79bad8402cb71f11ecbef2604e +#: ../../source/0-overview/3-repo_map.md 807dfe75d8024193aa3f85e7bab6f104 msgid "Dobot TCP interface" msgstr "Dobot TCP 接口" -#: ../../source/0-overview/3-repo_map.md 2cf88e2afc7e40b5a23da1cb8b310727 +#: ../../source/0-overview/3-repo_map.md c588ba6736aa44beb6b6b890e56fd1f7 msgid "" "[unitree-ros2-control](https://github.com/fiveages-sim/unitree-" "ros2-control)" @@ -422,187 +440,195 @@ msgstr "" "[unitree-ros2-control](https://github.com/fiveages-sim/unitree-" "ros2-control)" -#: ../../source/0-overview/3-repo_map.md eefde1544f44402693c35d3d401af284 +#: ../../source/0-overview/3-repo_map.md c58abad9c50546a79c8fa3be5a6c6584 msgid "Unitree SDK2" msgstr "Unitree SDK2" -#: ../../source/0-overview/3-repo_map.md a7bf845d3c9841bba155574392d4f6de +#: ../../source/0-overview/3-repo_map.md af1589d1633c459ba9294d416ba05840 msgid "[ht-ros2-control](https://github.com/fiveages-sim/ht-ros2-control)" msgstr "[ht-ros2-control](https://github.com/fiveages-sim/ht-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 60984550590b419987ee7765805837aa +#: ../../source/0-overview/3-repo_map.md f470aa2ba369444eb669b617752ceb1a msgid "HighTorque Panthera HT serial" msgstr "高擎 Panthera HT 串口" -#: ../../source/0-overview/3-repo_map.md fd3a19739f7c4992b9e11c9886366b79 +#: ../../source/0-overview/3-repo_map.md ec5dcec9dcaf4fab9443660433d35842 msgid "[marvin-ros2-control](https://github.com/fiveages-sim/marvin-ros2-control)" msgstr "[marvin-ros2-control](https://github.com/fiveages-sim/marvin-ros2-control)" -#: ../../source/0-overview/3-repo_map.md cf05c5727a784a93a8efa9b91666cec5 +#: ../../source/0-overview/3-repo_map.md 31a04a1ef5414bcfbe4afdf0fca65f3f msgid "Tianji + EE matrix" msgstr "Tianji + EE 矩阵" -#: ../../source/0-overview/3-repo_map.md 3d6117bb1cfd48e6baddb9a8f1cfbdf6 +#: ../../source/0-overview/3-repo_map.md 9584a89f461b44359613871bd5354496 msgid "[modbus-ros2-control](https://github.com/fiveages-sim/modbus-ros2-control)" msgstr "[modbus-ros2-control](https://github.com/fiveages-sim/modbus-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 0d3df246a3e149efab27dc4e4438831c +#: ../../source/0-overview/3-repo_map.md 4f0032f6f79540209f54eb0d35229b75 msgid "RS485 grippers" msgstr "RS485 夹爪" -#: ../../source/0-overview/3-repo_map.md ef9b400f82844d508650721f28697df1 +#: ../../source/0-overview/3-repo_map.md e98fa0b9fbb04dc58d67d3f88c2f84bf msgid "[can-ros2-control](https://github.com/fiveages-sim/can-ros2-control)" msgstr "[can-ros2-control](https://github.com/fiveages-sim/can-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 16f4e68198e14a32a222c31026d93d87 +#: ../../source/0-overview/3-repo_map.md a472afb551ca42ea956aa08194ce48f6 msgid "CAN/CANFD hands" msgstr "CAN/CANFD 灵巧手" -#: ../../source/0-overview/3-repo_map.md 26bca24032b8439b9394c18a36d7a032 +#: ../../source/0-overview/3-repo_map.md 47d5ff8c9b1b441ebc95bce1511a1821 msgid "[juxie-ros2-control](https://github.com/fiveages-sim/juxie-ros2-control)" msgstr "[juxie-ros2-control](https://github.com/fiveages-sim/juxie-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 1000b69678d246a9969ba59127b1be86 +#: ../../source/0-overview/3-repo_map.md 4e1593f32a7a456fa29f49817a0dc954 msgid "JX CAN FD" msgstr "JX CAN FD" -#: ../../source/0-overview/3-repo_map.md:79 8419c78993324be5b491caf71f605b1a -msgid "Private" -msgstr "私有" - -#: ../../source/0-overview/3-repo_map.md 8d8b86ec60074cec8fdce3b900549064 -msgid "rokae-ros2-control" -msgstr "rokae-ros2-control" +#: ../../source/0-overview/3-repo_map.md eb3aa571e08649a9bb5cdff8defaa560 +msgid "[rokae-ros2-control](https://github.com/fiveages-sim/rokae-ros2-control)" +msgstr "[rokae-ros2-control](https://github.com/fiveages-sim/rokae-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 8e7dacbc8df447d69b6eab4a60f6a8a2 +#: ../../source/0-overview/3-repo_map.md 96962c692b62413391e569af15380b11 msgid "Rokae arms" msgstr "Rokae 机械臂" -#: ../../source/0-overview/3-repo_map.md cf6a346b6dd54e0db2840529b36913b2 -msgid "eyou-ros2-control" -msgstr "eyou-ros2-control" +#: ../../source/0-overview/3-repo_map.md:80 cc81a7e4e794401e8ac71eec46c59603 +msgid "Private" +msgstr "私有" + +#: ../../source/0-overview/3-repo_map.md 062c61dc74e94ecd97821dcdddda9927 +msgid "[eyou-ros2-control](https://github.com/fiveages-sim/eyou-ros2-control)" +msgstr "[eyou-ros2-control](https://github.com/fiveages-sim/eyou-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 20d3084f569d4e6ca7ce8c6fe196fe4e +#: ../../source/0-overview/3-repo_map.md a46b8f69038b41908d885e5f717d5a47 msgid "CANopen harmonic" msgstr "CANopen 谐波减速器" -#: ../../source/0-overview/3-repo_map.md 19cbff9649f943c1a2ac925efeca9a2c -msgid "eyou_canfd_ros2_control" -msgstr "eyou_canfd_ros2_control" +#: ../../source/0-overview/3-repo_map.md c9f577f115664cc5b3c07240f7e7ccb9 +msgid "" +"[eyou_canfd_ros2_control](https://github.com/fiveages-" +"sim/eyou_canfd_ros2_control)" +msgstr "" +"[eyou_canfd_ros2_control](https://github.com/fiveages-" +"sim/eyou_canfd_ros2_control)" -#: ../../source/0-overview/3-repo_map.md 97ed8e3560404579ac4bc2eb857981aa +#: ../../source/0-overview/3-repo_map.md d1267ece1dc640aeaf9b3ba65d8dd5f7 msgid "CAN FD PHU" msgstr "CAN FD PHU" -#: ../../source/0-overview/3-repo_map.md cfbcd329fe6e44328f58482abf5936eb -msgid "inex-ros2-control" -msgstr "inex-ros2-control" +#: ../../source/0-overview/3-repo_map.md 61d8594e956a413ba6c55bacf0f7e725 +msgid "[inex-ros2-control](https://github.com/fiveages-sim/inex-ros2-control)" +msgstr "[inex-ros2-control](https://github.com/fiveages-sim/inex-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 3363c92b1ee2469087c202b4530aa1d0 +#: ../../source/0-overview/3-repo_map.md 7a497954675d447a8e22f30bfde984e5 msgid "iNexus + LinkerHand" msgstr "iNexus + LinkerHand" -#: ../../source/0-overview/3-repo_map.md a0882b9a6b3b4e6283630856d8a05d62 -msgid "wuji-ros2-control" -msgstr "wuji-ros2-control" +#: ../../source/0-overview/3-repo_map.md 422ada422bae4453a6b5be8150c8f6c2 +msgid "[wuji-ros2-control](https://github.com/fiveages-sim/wuji-ros2-control)" +msgstr "[wuji-ros2-control](https://github.com/fiveages-sim/wuji-ros2-control)" -#: ../../source/0-overview/3-repo_map.md 87a354fe3b714ce68f6ff3c56369a546 +#: ../../source/0-overview/3-repo_map.md 7c012cd06a3543bb9231292e70512895 msgid "Wuji Hand2 Ethernet" msgstr "Wuji Hand2 Ethernet" -#: ../../source/0-overview/3-repo_map.md 0f7195d3ebd6469d83a471534fc3dbda -msgid "dexcap-ros2-control" -msgstr "dexcap-ros2-control" +#: ../../source/0-overview/3-repo_map.md d6b181b9290a4f68872f4381e19a540a +msgid "[dexcap-ros2-control](https://github.com/fiveages-sim/dexcap-ros2-control)" +msgstr "[dexcap-ros2-control](https://github.com/fiveages-sim/dexcap-ros2-control)" -#: ../../source/0-overview/3-repo_map.md d956f88274644ddd8f9b40bc1ba55a66 +#: ../../source/0-overview/3-repo_map.md 1b6b67053a144d53b092794fa4d9fa93 msgid "DexCap V4" msgstr "DexCap V4" -#: ../../source/0-overview/3-repo_map.md aed52d0509a34ffea8009b485472d25c -msgid "fairino-ros2-control" -msgstr "fairino-ros2-control" +#: ../../source/0-overview/3-repo_map.md 7d4033aa79b5489ea01d2b9c23b9e212 +msgid "" +"[fairino-ros2-control](https://github.com/fiveages-sim/fairino-" +"ros2-control)" +msgstr "" +"[fairino-ros2-control](https://github.com/fiveages-sim/fairino-" +"ros2-control)" -#: ../../source/0-overview/3-repo_map.md 9112469afc5340b3a55f4668e75d79bf +#: ../../source/0-overview/3-repo_map.md 4eb84acc8e514a359b64a1d46a962d81 msgid "Fairino SDK" msgstr "Fairino SDK" -#: ../../source/0-overview/3-repo_map.md:91 a1a5608367174a66809219aee8e50764 +#: ../../source/0-overview/3-repo_map.md:91 5237fadb4fd242be85564317ad299132 msgid "L3: Controllers" msgstr "L3:控制器" -#: ../../source/0-overview/3-repo_map.md a2e485ca2b294d3d8745db27993a623b +#: ../../source/0-overview/3-repo_map.md efe83de0a5aa480f86db5d86deb495a7 msgid "[arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control)" msgstr "[arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control)" -#: ../../source/0-overview/3-repo_map.md a6d5c5fc8ff3470681ca025ce7535393 +#: ../../source/0-overview/3-repo_map.md e1d5e3a3ba24432d8418d89e1acece80 msgid "OCS2 arm controller, teleop plugins" msgstr "OCS2 机械臂控制器、遥操作插件" -#: ../../source/0-overview/3-repo_map.md 4ec29c373f9e4b1a932693e565699b44 +#: ../../source/0-overview/3-repo_map.md cb408f79dd474e04ab32405d64c04633 msgid "[legubiao/ocs2_ros2](https://github.com/legubiao/ocs2_ros2)" msgstr "[legubiao/ocs2_ros2](https://github.com/legubiao/ocs2_ros2)" -#: ../../source/0-overview/3-repo_map.md 5e57fb9c8a37441d85569173985f9286 +#: ../../source/0-overview/3-repo_map.md 9b732155f1734e4eba86e08fbeab75a9 msgid "[X]" msgstr "[X]" -#: ../../source/0-overview/3-repo_map.md f6726637db14408eb3c21dc790e59a6a +#: ../../source/0-overview/3-repo_map.md 6cb4ac10a8ce461abcbd868a554f5500 msgid "OCS2 MPC library (branch: ros2)" msgstr "OCS2 MPC 库(分支:ros2)" -#: ../../source/0-overview/3-repo_map.md 71b904194cc840a69489258e0ebbed60 -msgid "ocs2-wbc-controller" -msgstr "ocs2-wbc-controller" +#: ../../source/0-overview/3-repo_map.md 03a2b0e540894f419f41d246e6ffc2c3 +msgid "[ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller)" +msgstr "[ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller)" -#: ../../source/0-overview/3-repo_map.md 889d74fe00124899b4677c525bbf079a +#: ../../source/0-overview/3-repo_map.md 370d965dea494f40b80bfb82e23545b6 msgid "Whole-body control" msgstr "全身控制" -#: ../../source/0-overview/3-repo_map.md 9eab71f094cc4191b12abfb19819c5d9 -msgid "ocs2-humanoid" -msgstr "ocs2-humanoid" +#: ../../source/0-overview/3-repo_map.md 3de285447157437b9a2a48bce45b7a3e +msgid "[ocs2-humanoid](https://github.com/fiveages-sim/ocs2-humanoid)" +msgstr "[ocs2-humanoid](https://github.com/fiveages-sim/ocs2-humanoid)" -#: ../../source/0-overview/3-repo_map.md 64880ab14a3e42ff97032ff763c2fb01 +#: ../../source/0-overview/3-repo_map.md 7ca36407ab4441ac8a7bc252e3f51c03 msgid "Wheeled-arm humanoid library" msgstr "轮臂人形库" -#: ../../source/0-overview/3-repo_map.md 50f7d5753aa74119adabea05036250f2 -msgid "lina_planning" -msgstr "lina_planning" +#: ../../source/0-overview/3-repo_map.md 33a262cca117484680c720c92fa60ab5 +msgid "[lina_planning](https://github.com/fiveages-sim/lina_planning)" +msgstr "[lina_planning](https://github.com/fiveages-sim/lina_planning)" -#: ../../source/0-overview/3-repo_map.md 8decdbb2411f4a429781a3de60511ef5 +#: ../../source/0-overview/3-repo_map.md b453f8fa3f594e49b53fa8c27d843739 msgid "Trajectory primitives" msgstr "轨迹原语" -#: ../../source/0-overview/3-repo_map.md:101 7a2803189bc74be38bf2912afd865bf8 +#: ../../source/0-overview/3-repo_map.md:101 8aff62beacd448088d01c28f85aab1d2 msgid "L4: Simulation" msgstr "L4: 仿真" -#: ../../source/0-overview/3-repo_map.md f839f4ac9ba546a4a71fda004f2b55c0 +#: ../../source/0-overview/3-repo_map.md 001e61c5524e46d2b949e7c96e7f85b2 msgid "[robot_usds](https://github.com/fiveages-sim/robot_usds)" msgstr "[robot_usds](https://github.com/fiveages-sim/robot_usds)" -#: ../../source/0-overview/3-repo_map.md 9e1eb91282904c52ae51e6faaf34dd9d +#: ../../source/0-overview/3-repo_map.md ce03d47afdf346ef80bd5e6e7846b069 msgid "Isaac USD superproject" msgstr "Isaac USD 总仓" -#: ../../source/0-overview/3-repo_map.md 4609d6d7298b48059756c6e6f8ea2b11 +#: ../../source/0-overview/3-repo_map.md 87bc5976248349eabdcaa6d5fa332358 msgid "[galbot-usds](https://github.com/fiveages-sim/galbot-usds)" msgstr "[galbot-usds](https://github.com/fiveages-sim/galbot-usds)" -#: ../../source/0-overview/3-repo_map.md b71e032769c44b3e9c68b00356fdbfd9 +#: ../../source/0-overview/3-repo_map.md ab84436b381e4c239c542123e00f3ec3 msgid "Galbot USD assets" msgstr "Galbot USD 资源" -#: ../../source/0-overview/3-repo_map.md 598569c602be436d80c7365bb15ef62d +#: ../../source/0-overview/3-repo_map.md 7f741c1f248c4d06beaca217c980e92d msgid "[fiveages-env-usds](https://github.com/fiveages-sim/fiveages-env-usds)" msgstr "[fiveages-env-usds](https://github.com/fiveages-sim/fiveages-env-usds)" -#: ../../source/0-overview/3-repo_map.md 547fd054a45c481a89914af9544a621e +#: ../../source/0-overview/3-repo_map.md 3d8539b32b4d40788d1dc1a1714be1ae msgid "Environment USD assets" msgstr "环境 USD 资源" -#: ../../source/0-overview/3-repo_map.md cb8b7bc9b7e54c99a9f456c801de1a61 +#: ../../source/0-overview/3-repo_map.md 274701438dd741168e286f258b3da441 msgid "" "[fiveages-gen1-robot-usds](https://github.com/fiveages-sim/fiveages-gen1" "-robot-usds)" @@ -610,11 +636,11 @@ msgstr "" "[fiveages-gen1-robot-usds](https://github.com/fiveages-sim/fiveages-gen1" "-robot-usds)" -#: ../../source/0-overview/3-repo_map.md 462e74ac92f04111b91ae26700c8904e +#: ../../source/0-overview/3-repo_map.md d46cff6a96224d52a1ad185d98e9472e msgid "Gen1 USD (W1)" msgstr "Gen1 USD(W1)" -#: ../../source/0-overview/3-repo_map.md af80c36e921e4dd6b7eae6ca4bfc4acc +#: ../../source/0-overview/3-repo_map.md a44318d9ba454062b246aa5e64c4b9bb msgid "" "[fiveages-gen2-robot-usds](https://github.com/fiveages-sim/fiveages-gen2" "-robot-usds)" @@ -622,35 +648,39 @@ msgstr "" "[fiveages-gen2-robot-usds](https://github.com/fiveages-sim/fiveages-gen2" "-robot-usds)" -#: ../../source/0-overview/3-repo_map.md a9062c1faa364a2199ab6eeb9063b0cd +#: ../../source/0-overview/3-repo_map.md 96297defe84c4263874d60256b6c4b45 msgid "Gen2 USD (W2 / S2; not W2R / S2R)" msgstr "Gen2 USD(W2 / S2;不含 W2R / S2R)" -#: ../../source/0-overview/3-repo_map.md afcf212f1a78405c909e2b0c847a1892 -msgid "fiveages-gen3-robot-usds" -msgstr "fiveages-gen3-robot-usds" +#: ../../source/0-overview/3-repo_map.md f007f150e09049c88bc7d4a5d46c186f +msgid "" +"[fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3" +"-robot-usds)" +msgstr "" +"[fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3" +"-robot-usds)" -#: ../../source/0-overview/3-repo_map.md a8c9eca6fd314579af126bfebbc6f12c +#: ../../source/0-overview/3-repo_map.md 555efbf8b1014dd8b92d9611bcc4d732 msgid "Gen3 USD (WCE3)" msgstr "Gen3 USD(WCE3)" -#: ../../source/0-overview/3-repo_map.md 1fdcac58a42a4b2dbe40e1d32f95ba8f -msgid "fa-project-usd" -msgstr "fa-project-usd" +#: ../../source/0-overview/3-repo_map.md 9e5237c035b2423ca7b529eecfcc116e +msgid "[fa-project-usd](https://github.com/fiveages-sim/fa-project-usd)" +msgstr "[fa-project-usd](https://github.com/fiveages-sim/fa-project-usd)" -#: ../../source/0-overview/3-repo_map.md 89c77bdafd6b45c2aa90d8088fd1bf32 +#: ../../source/0-overview/3-repo_map.md 5d75567374384f819ed88a059922ff2e msgid "FaSim project assets" msgstr "FaSim 项目资源" -#: ../../source/0-overview/3-repo_map.md:113 d50a3b97bab74d90b05578043aea0dd8 +#: ../../source/0-overview/3-repo_map.md:113 32e19e450fea49a1b3e10a9c525c69e7 msgid "L5: Teleop and Applications" msgstr "L5:遥操作与应用" -#: ../../source/0-overview/3-repo_map.md:115 daff5919479d4c83a2ff74f9f465c2a4 +#: ../../source/0-overview/3-repo_map.md:115 6764297313df4e19a9dd89e6633f4e84 msgid "Teleop" msgstr "遥操作" -#: ../../source/0-overview/3-repo_map.md b7ed59bdec304bd7b1d9b9e68ca56e4a +#: ../../source/0-overview/3-repo_map.md 19559fbad0e14272a03b38aba25b8330 msgid "" "[drag_teleop_controller](https://github.com/fiveages-" "sim/drag_teleop_controller)" @@ -658,55 +688,55 @@ msgstr "" "[drag_teleop_controller](https://github.com/fiveages-" "sim/drag_teleop_controller)" -#: ../../source/0-overview/3-repo_map.md a6ac2687cfe04ce69e13caf8116213f7 +#: ../../source/0-overview/3-repo_map.md 5f3df1b5019148e6a298f1ddbbca0efa msgid "Isomorphic teleop (master–slave)" msgstr "同构遥操作(主从)" -#: ../../source/0-overview/3-repo_map.md 4fd39cef128c46b5b1b8d57860594e07 -msgid "vr_pose_publisher" -msgstr "vr_pose_publisher" +#: ../../source/0-overview/3-repo_map.md f3b944615369474bbcb85ab3b82a1c8d +msgid "[vr_pose_publisher](https://github.com/fiveages-sim/vr_pose_publisher)" +msgstr "[vr_pose_publisher](https://github.com/fiveages-sim/vr_pose_publisher)" -#: ../../source/0-overview/3-repo_map.md e9d0393074034458bf337c2d19e78a08 +#: ../../source/0-overview/3-repo_map.md c604f6bd642f404f9aeb62e7e7cb6351 msgid "VR pose bridge" msgstr "VR 位姿桥接" -#: ../../source/0-overview/3-repo_map.md db001cae9b9e4aad98b4b5e411b9d54b -msgid "teleop-joint-mapper" -msgstr "teleop-joint-mapper" +#: ../../source/0-overview/3-repo_map.md e7889fd9ce4f412cac5ff2d1cd3292a5 +msgid "[teleop-joint-mapper](https://github.com/fiveages-sim/teleop-joint-mapper)" +msgstr "[teleop-joint-mapper](https://github.com/fiveages-sim/teleop-joint-mapper)" -#: ../../source/0-overview/3-repo_map.md 05bac9a2cd344581a832c267cd306324 +#: ../../source/0-overview/3-repo_map.md 2cfa8a72b4ee4b7dbe7ac594331bf4b6 msgid "DexCap→M6 mapper" msgstr "DexCap→M6 映射器" -#: ../../source/0-overview/3-repo_map.md 885f90b1d5264f88881f60da83fc5f91 -msgid "wuji_glove_teleop" -msgstr "wuji_glove_teleop" +#: ../../source/0-overview/3-repo_map.md d212030517354a2ba19fd9a3f83e2aad +msgid "[wuji_glove_teleop](https://github.com/fiveages-sim/wuji_glove_teleop)" +msgstr "[wuji_glove_teleop](https://github.com/fiveages-sim/wuji_glove_teleop)" -#: ../../source/0-overview/3-repo_map.md 72cac5f8404e402e9acd74ebadc62b0b -msgid "Glove teleoperation" -msgstr "手套遥操作" +#: ../../source/0-overview/3-repo_map.md caac5f0ee0574b24ae0bcf57de835fb1 +msgid "Glove teleoperation (default branch `master`)" +msgstr "手套遥操作(默认分支 `master`)" -#: ../../source/0-overview/3-repo_map.md d7d6b5af97e94f559f3c367b895dacfa -msgid "vive_tracker_teleop" -msgstr "vive_tracker_teleop" +#: ../../source/0-overview/3-repo_map.md 2e0afdc33d864d58be9d9d1210bbe51b +msgid "[vive_tracker_teleop](https://github.com/fiveages-sim/vive_tracker_teleop)" +msgstr "[vive_tracker_teleop](https://github.com/fiveages-sim/vive_tracker_teleop)" -#: ../../source/0-overview/3-repo_map.md 38d8af8f50e64764bd791314abf5a41c +#: ../../source/0-overview/3-repo_map.md 0fc0949d541e4da3917d77906d8df2f9 msgid "Vive tracker EE pose" msgstr "Vive tracker 末端位姿" -#: ../../source/0-overview/3-repo_map.md:125 4bb5ce056a4d4cc5b5420a6cbc63169d +#: ../../source/0-overview/3-repo_map.md:125 fee7c7ec6f3848e3955c4ab3577c4160 msgid "Python Libraries" msgstr "Python 库" -#: ../../source/0-overview/3-repo_map.md c1f0f94b776b4bdf8cccbcff8c2f3fe3 +#: ../../source/0-overview/3-repo_map.md efed925e396843179cb7f7c8a57934d1 msgid "[fa-py-libraries](https://github.com/fiveages-sim/fa-py-libraries)" msgstr "[fa-py-libraries](https://github.com/fiveages-sim/fa-py-libraries)" -#: ../../source/0-overview/3-repo_map.md a6078cfd3ebe45a6807a1ef10d0e31ec +#: ../../source/0-overview/3-repo_map.md 79ab0908b3e54c7cbc9b507f7e610b22 msgid "Python utilities umbrella" msgstr "Python 工具聚合仓库" -#: ../../source/0-overview/3-repo_map.md 9331ef3234524c52908d123577be954f +#: ../../source/0-overview/3-repo_map.md cfb188fc99c1436eb76514a12c374f27 msgid "" "[ros2_robot_interface](https://github.com/fiveages-" "sim/ros2_robot_interface)" @@ -714,27 +744,27 @@ msgstr "" "[ros2_robot_interface](https://github.com/fiveages-" "sim/ros2_robot_interface)" -#: ../../source/0-overview/3-repo_map.md d2a37da86857400eb35d44e8463b7489 +#: ../../source/0-overview/3-repo_map.md 10ed24e8569c4eb38cbe038025faed50 msgid "High-level robot API" msgstr "高层机器人 API" -#: ../../source/0-overview/3-repo_map.md b508f9d799594a0f8731af38ac8b281d +#: ../../source/0-overview/3-repo_map.md 2ddf98810f9744e68c5822f60308cf53 msgid "[ros2-viser](https://github.com/fiveages-sim/ros2-viser)" msgstr "[ros2-viser](https://github.com/fiveages-sim/ros2-viser)" -#: ../../source/0-overview/3-repo_map.md b57c8df5449140aa8858fdca7214dd8c +#: ../../source/0-overview/3-repo_map.md 041ca240f9614331944e44479c9effc9 msgid "Viser library (launch via fa-py-libraries)" msgstr "Viser 库(通过 fa-py-libraries 启动)" -#: ../../source/0-overview/3-repo_map.md 42eb2bd383fa466984607b3dab7c38f8 +#: ../../source/0-overview/3-repo_map.md b5b04a77913e489b9621719518141d82 msgid "[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2)" msgstr "[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2)" -#: ../../source/0-overview/3-repo_map.md 028407108929405498f54c7421581d7b +#: ../../source/0-overview/3-repo_map.md 1abc94ce72864bccaae4f80bb3c89fcc msgid "LeRobot ↔ ROS 2 monorepo" msgstr "LeRobot ↔ ROS 2 单体仓库" -#: ../../source/0-overview/3-repo_map.md ccdf4cd45d9845628dd9c810be133afe +#: ../../source/0-overview/3-repo_map.md 4cf301e68c7b4555b0e430a6f99d37c3 msgid "" "[robot_action_composer](https://github.com/fiveages-" "sim/robot_action_composer)" @@ -742,47 +772,47 @@ msgstr "" "[robot_action_composer](https://github.com/fiveages-" "sim/robot_action_composer)" -#: ../../source/0-overview/3-repo_map.md 20ab95ed729a47458d224dda34a21c82 +#: ../../source/0-overview/3-repo_map.md aec3dc98a15b4f30b3ede26f2471ca3c msgid "Task-queue YAML / motion generation" msgstr "任务队列 YAML / 运动生成" -#: ../../source/0-overview/3-repo_map.md bbc1d9ffc0b24cd5a2a99a58267b9317 +#: ../../source/0-overview/3-repo_map.md 4d203922629f43878390588978d9709c msgid "[wuji-retargeting](https://github.com/fiveages-sim/wuji-retargeting)" msgstr "[wuji-retargeting](https://github.com/fiveages-sim/wuji-retargeting)" -#: ../../source/0-overview/3-repo_map.md f9be78c54b7f4824abaea8dbcc939e3c +#: ../../source/0-overview/3-repo_map.md 5132308df6ce4bb2bd60dc1e1dc0cbd8 msgid "Hand retargeting" msgstr "手部重定向" -#: ../../source/0-overview/3-repo_map.md c3d21c47bdc748faa1470205fdae9c92 -msgid "HUG" -msgstr "HUG" +#: ../../source/0-overview/3-repo_map.md 3ec4ae08fd054493a080ee1b690ad3d6 +msgid "[HUG](https://github.com/fiveages-sim/HUG)" +msgstr "[HUG](https://github.com/fiveages-sim/HUG)" -#: ../../source/0-overview/3-repo_map.md f36b77c53a5f43e080aee6ca2db414bc +#: ../../source/0-overview/3-repo_map.md 004f79bb80884e5abf7779b34b586f3e msgid "Grasp inference" msgstr "抓取推理" -#: ../../source/0-overview/3-repo_map.md:137 919b5475ebd64cefa0fc6d1b142beae1 +#: ../../source/0-overview/3-repo_map.md:137 9f6c4dd2abdc4601b9c6e4fa8882ae8e msgid "Excluded from This Documentation" msgstr "本文档未收录" -#: ../../source/0-overview/3-repo_map.md:139 26236dcf9c0a4bdcae5514765803674b +#: ../../source/0-overview/3-repo_map.md:139 f2a64ebdec6341a990ec9c80e2783884 msgid "The following repositories are **not** documented here:" msgstr "以下仓库**未**在本文档中介绍:" -#: ../../source/0-overview/3-repo_map.md:141 8774fdcd066f419fb2f43eddc0bd610f +#: ../../source/0-overview/3-repo_map.md:141 5fcca71dbd474ff6b62e4c91f0996b8c msgid "`arms_moveit` — MoveIt PoC, not actively maintained" msgstr "`arms_moveit` — MoveIt 概念验证,已不再积极维护" -#: ../../source/0-overview/3-repo_map.md:142 e7f6f44f707a4156aa5667c91fbf1e2b +#: ../../source/0-overview/3-repo_map.md:142 f51bf48bd9254c4487c0cefc938b868d msgid "`maniskill_models` — ManiSkill PoC, not actively maintained" msgstr "`maniskill_models` — ManiSkill 概念验证,已不再积极维护" -#: ../../source/0-overview/3-repo_map.md:143 ef5f0a112fe64faca6115d71b9042343 +#: ../../source/0-overview/3-repo_map.md:143 2eae41a9202943319b46e3f83d202e1b msgid "`.github` — Organization configuration" msgstr "`.github` — 组织配置" -#: ../../source/0-overview/3-repo_map.md:144 ce70ccc511264751b7852de53a56c769 +#: ../../source/0-overview/3-repo_map.md:144 75122904428b473d9995d8fdab028f52 msgid "" "Navigation/data repositories: `internnav_w2`, `LightNav-0_W2`, `data-" "collector-platform`, `internnav_arx_lift2s`" @@ -790,7 +820,7 @@ msgstr "" "导航/数据仓库:`internnav_w2`、`LightNav-0_W2`、`data-collector-" "platform`、`internnav_arx_lift2s`" -#: ../../source/0-overview/3-repo_map.md:145 3e51245d392e4e75b81a480a709376d9 +#: ../../source/0-overview/3-repo_map.md:145 bfe4856a03d74788849cdaac84724761 msgid "" "Stale private repositories: `vla_http_bridge`, `Discoverse_socket`, " "`fiveages_descriptions`, `ACT_socket`, `act_Discoverse_connector`, " @@ -888,3 +918,78 @@ msgstr "" #~ msgid "Gento robots" #~ msgstr "Gento 机器人" +#~ msgid "**[I]** = Private/internal repository" +#~ msgstr "**[I]** = 私有/内部仓库" + +#~ msgid "fa-deploy-ws" +#~ msgstr "fa-deploy-ws" + +#~ msgid "dexcap_teleop_ws" +#~ msgstr "dexcap_teleop_ws" + +#~ msgid "robot-descriptions-fairino" +#~ msgstr "robot-descriptions-fairino" + +#~ msgid "robot-descriptions-ubtech" +#~ msgstr "robot-descriptions-ubtech" + +#~ msgid "agibot-g2-description" +#~ msgstr "agibot-g2-description" + +#~ msgid "fa-w2r-description" +#~ msgstr "fa-w2r-description" + +#~ msgid "rokae-ros2-control" +#~ msgstr "rokae-ros2-control" + +#~ msgid "eyou-ros2-control" +#~ msgstr "eyou-ros2-control" + +#~ msgid "eyou_canfd_ros2_control" +#~ msgstr "eyou_canfd_ros2_control" + +#~ msgid "inex-ros2-control" +#~ msgstr "inex-ros2-control" + +#~ msgid "wuji-ros2-control" +#~ msgstr "wuji-ros2-control" + +#~ msgid "dexcap-ros2-control" +#~ msgstr "dexcap-ros2-control" + +#~ msgid "fairino-ros2-control" +#~ msgstr "fairino-ros2-control" + +#~ msgid "ocs2-wbc-controller" +#~ msgstr "ocs2-wbc-controller" + +#~ msgid "ocs2-humanoid" +#~ msgstr "ocs2-humanoid" + +#~ msgid "lina_planning" +#~ msgstr "lina_planning" + +#~ msgid "fiveages-gen3-robot-usds" +#~ msgstr "fiveages-gen3-robot-usds" + +#~ msgid "fa-project-usd" +#~ msgstr "fa-project-usd" + +#~ msgid "vr_pose_publisher" +#~ msgstr "vr_pose_publisher" + +#~ msgid "teleop-joint-mapper" +#~ msgstr "teleop-joint-mapper" + +#~ msgid "wuji_glove_teleop" +#~ msgstr "wuji_glove_teleop" + +#~ msgid "Glove teleoperation" +#~ msgstr "手套遥操作" + +#~ msgid "vive_tracker_teleop" +#~ msgstr "vive_tracker_teleop" + +#~ msgid "HUG" +#~ msgstr "HUG" + diff --git a/locale/zh_CN/LC_MESSAGES/0-overview/4-public_vs_internal.po b/locale/zh_CN/LC_MESSAGES/0-overview/4-public_vs_internal.po index a0dc1a6..06217a9 100644 --- a/locale/zh_CN/LC_MESSAGES/0-overview/4-public_vs_internal.po +++ b/locale/zh_CN/LC_MESSAGES/0-overview/4-public_vs_internal.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 03:15+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,149 +21,149 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/0-overview/4-public_vs_internal.md:1 -#: 38379155543d4be5ab1505a6cd54921d +#: 338fe2e0c861478ca79689079df341cd msgid "Public vs Internal Paths" msgstr "公开版与内部版路径" #: ../../source/0-overview/4-public_vs_internal.md:3 -#: 963128ccdd884d229b02db50158446d2 +#: 581fa5297ea946c892683a2f7e9e2731 msgid "" "This page explains the differences between the public (`open-deploy-ws`) " "and internal (`fa-deploy-ws`) entry points." msgstr "本页说明公开入口(`open-deploy-ws`)与内部入口(`fa-deploy-ws`)之间的差异。" #: ../../source/0-overview/4-public_vs_internal.md:5 -#: 0f4f2efd7a9b4c81b945fcc139b246f0 +#: b0de7408345e4b439aae3a3b332d0da3 msgid "Quick Comparison" msgstr "快速对比" #: ../../source/0-overview/4-public_vs_internal.md -#: 751eadfa4a1949bd8117e5b3febff9a8 +#: 3684359400ee4aafa3d2c61ab65322e1 msgid "Aspect" msgstr "方面" #: ../../source/0-overview/4-public_vs_internal.md -#: 78b471bba1084196a81111076349f4a3 +#: f1f9e848e9d44d05aab79277021f2d7b msgid "Public Path" msgstr "公开 路径" #: ../../source/0-overview/4-public_vs_internal.md -#: 7c2fc98188d9442e837973a83f6652b8 +#: 3865d27e6b6247809d93550eb8016aa9 msgid "Internal Path" msgstr "内部路径" #: ../../source/0-overview/4-public_vs_internal.md -#: 93092cd937704f95af6cf251927c32d7 +#: 15bb176148a642bdb007d59e02afffcf msgid "**Workspace**" msgstr "**工作空间**" #: ../../source/0-overview/4-public_vs_internal.md -#: 854c3824082949018439eee2c54181db +#: a4f798bc401942eabfc22bf87f1115a0 msgid "`open-deploy-ws`" msgstr "`open-deploy-ws`" #: ../../source/0-overview/4-public_vs_internal.md -#: 17b9487188014cb693b4b355c3d6d657 +#: 34283d4ebaa441258cac326b6fb5079d msgid "`fa-deploy-ws`" msgstr "`fa-deploy-ws`" #: ../../source/0-overview/4-public_vs_internal.md -#: 844df58debd047e195f6e098193aa2dc +#: 5c2a06f61968439aa34cce28c24127da msgid "**Access**" msgstr "**访问权限**" #: ../../source/0-overview/4-public_vs_internal.md -#: b0e89d796aa74ca9b134437c3df92264 +#: 66e8e036efc14aae90b3433f30d996e6 msgid "Anyone (public GitHub)" msgstr "任何人(公开 GitHub)" #: ../../source/0-overview/4-public_vs_internal.md -#: 5dc6459fdea642dea495468719820778 +#: c2a5c8180d9a4198a19c7b2caeb71b04 msgid "FiveAges team only" msgstr "仅限 FiveAges 团队" #: ../../source/0-overview/4-public_vs_internal.md -#: 64a91caba0ad4b548a15caea05c0b9e0 +#: b334e7e0b56343feba24407940614f40 msgid "**Robots**" msgstr "**机器人**" #: ../../source/0-overview/4-public_vs_internal.md -#: 02535452510945c4a9f9ee5583e85b0f +#: bd90a12ff1cf4247b131c73695191eb7 msgid "Dobot, ARX, Galbot, HighTorque, quadruped" msgstr "越疆、方舟无限、银河通用、高擎、四足" #: ../../source/0-overview/4-public_vs_internal.md -#: 78c46fb00dd24e6aafa1b74c3fe794ae +#: ad2c5ae2f5714d1abfd086abb6301c84 msgid "FA W2/W2R/S2/S2R, dual-arm CCS" msgstr "FA W2/W2R/S2/S2R、双臂 CCS" #: ../../source/0-overview/4-public_vs_internal.md -#: dd7a04a1f8f547a39067bc469b40f3d4 +#: 69dcf6a030a54025be47c6832ea8a943 msgid "**Real Hardware**" msgstr "**真实硬件**" #: ../../source/0-overview/4-public_vs_internal.md -#: bca2597634974397b20a120ad4968b1c +#: 8f3c2f7773004f27a28accf60eb2eb76 msgid "ARX Lift 2S (full-body), Acone (dual-arm), HighTorque Panthera HT" msgstr "方舟无限 Lift 2S(全身)、Acone(双臂)、高擎 Panthera HT" #: ../../source/0-overview/4-public_vs_internal.md -#: d7182456efd04cfdadb718a18c815dfd +#: 51d1b36e92cb488c9360ff6dce7ab31a msgid "All FA robots" msgstr "全部 FA 机器人" #: ../../source/0-overview/4-public_vs_internal.md -#: db96aa3559da4b85a0fa488f4e6d59b6 +#: 2e81746d1b63476a985f9e4209616b1f msgid "**Submodules**" msgstr "**子模块**" #: ../../source/0-overview/4-public_vs_internal.md -#: 84c74c3c8b50436ba3ee35975a214345 +#: 965ac5cc79f64ceb9a53162730677fad msgid "Public only" msgstr "仅公开" #: ../../source/0-overview/4-public_vs_internal.md -#: a21adf6a55cc4d58b4e325f9baa2362e +#: 7887c6e2b4764a39ad98d85f4748c918 msgid "Public + private" msgstr "公开 + 私有" #: ../../source/0-overview/4-public_vs_internal.md -#: 3e453a4ec3c440c093fc99c88c335944 +#: 504dec929fe34e5793fcdb62d884b62a msgid "**OCS2**" msgstr "**OCS2**" #: ../../source/0-overview/4-public_vs_internal.md -#: 2f09bc712a954b8f9bd5877b06294ea1 +#: 0503664286354fbc8e2db70e088ae1a3 msgid "GitHub Release `.deb` or source" msgstr "GitHub Release `.deb` 或源码" #: ../../source/0-overview/4-public_vs_internal.md -#: 8cd8ca49fd2a43e88572dbad5b8d3e62 +#: dc1cd8a132884232b158e8e71f8a5106 msgid "Full source (default)" msgstr "完整源码(默认)" #: ../../source/0-overview/4-public_vs_internal.md -#: b1a94b5ab85343b0979c3bd49608c532 +#: 37daf919278f4ee0875348dc2e254ee2 msgid "**Purpose**" msgstr "**用途**" #: ../../source/0-overview/4-public_vs_internal.md -#: a58dda2e826248f483257fa6e681a512 +#: 871e7917f3f64b199e4d5b9c6210ce07 msgid "Learning, OSS development, real robot deployment" msgstr "学习、开源开发、真实机器人部署" #: ../../source/0-overview/4-public_vs_internal.md -#: 0d39cf01ac95494f92839292a48bdda0 +#: 56d13bee4d8843638b91803ab334cad2 msgid "Production deployment" msgstr "生产部署" #: ../../source/0-overview/4-public_vs_internal.md:17 -#: b4ab8f0a36b146f1aee047cacac3114e +#: 937f6be1239b45feb283bd6ebc9a4463 msgid "Real Hardware on Public Path" msgstr "公开路径上的真实硬件" #: ../../source/0-overview/4-public_vs_internal.md:20 -#: 0e038244cec0436d8565a6188d34c31c +#: 4b472b04d5304a2eb5d67df251469126 msgid "" "**ARX Lift 2S** (方舟无限) is the full-body mobile manipulator (arms + " "chassis). **Acone** / **AC One** is **dual-arm**. **HighTorque Panthera " @@ -179,12 +179,12 @@ msgstr "" "HT](../2-how_to/6-deployment/9-go_real_hardware/2-panthera_ht.md)。" #: ../../source/0-overview/4-public_vs_internal.md:23 -#: 94b762cf09014406af87c619ec8b8b1c +#: 21cbdefe22194b8ebe33629ae18f053a msgid "open-deploy-ws (Public)" msgstr "open-deploy-ws(公开)" #: ../../source/0-overview/4-public_vs_internal.md:25 -#: 1b0a7aa4c13d49ef8693d99496f43e43 +#: 0fb49cc34ce140459465b600887a6485 msgid "" "**Repository:** [https://github.com/fiveages-sim/open-deploy-" "ws](https://github.com/fiveages-sim/open-deploy-ws)" @@ -194,24 +194,24 @@ msgstr "" #: ../../source/0-overview/4-public_vs_internal.md:27 #: ../../source/0-overview/4-public_vs_internal.md:86 -#: 1052ee058dfa488685e68192ce35b3cc 280630962f764599b7464aebef7e3006 +#: 86d4d4460a9e400aaf1f40862ba54339 a43948066b134df4891c3449a8e8c01b msgid "Features" msgstr "功能特性" #: ../../source/0-overview/4-public_vs_internal.md:29 -#: 4ef8b7a99307470cb8a2417d8e35853b +#: 143dce8ef49640398e5700a83ca4349b msgid "All submodules are publicly accessible" msgstr "所有子模块均可公开访问" #: ../../source/0-overview/4-public_vs_internal.md:30 -#: db258ae5f208433fbc9aeda047e511ac +#: 22021f3c509247bc9d9b3ae501b6471b msgid "" "Supports multiple robots: Dobot CR5, ARX (Acone dual-arm, Lift 2S full-" "body), Galbot, HighTorque Panthera HT" msgstr "支持多款机器人:越疆 CR5、方舟无限(Acone 双臂、Lift 2S 全身)、银河通用、高擎 Panthera HT" #: ../../source/0-overview/4-public_vs_internal.md:31 -#: 5238f2f595dc4fa7a504194430594fcb +#: 1e2d182de50545f4ba4fe0d407bee354 msgid "" "**Real hardware:** [ARX Lift " "2S](../2-how_to/6-deployment/9-go_real_hardware/1-arx_lift2s.md) and " @@ -225,7 +225,7 @@ msgstr "" "HT](../2-how_to/6-deployment/9-go_real_hardware/2-panthera_ht.md)" #: ../../source/0-overview/4-public_vs_internal.md:32 -#: 400de7ce52674d83b2b25c02cd53b41f +#: 0ebdc54f1b07425ab4a2cf282c410783 msgid "" "OCS2 available as a GitHub Release `.deb` (`ros-jazzy-ocs2`; not from apt" " / packages.ros.org)" @@ -234,12 +234,12 @@ msgstr "" "packages.ros.org)" #: ../../source/0-overview/4-public_vs_internal.md:33 -#: 667ecc2219054e1ab1d6b39d244953e3 +#: 025faf67e9ec4a4fb6b42d1c1670de55 msgid "Lean branches: `dobot-cr5`, `arx-lift2s`, `panthera-ht`" msgstr "精简分支:`dobot-cr5`、`arx-lift2s`、`panthera-ht`" #: ../../source/0-overview/4-public_vs_internal.md:34 -#: c695f3014902416494032501264751b3 +#: e2dcafcef5184ff9a8b74e88be6d8443 msgid "" "Good for learning, experimentation, contributing, and real robot " "deployment" @@ -247,12 +247,12 @@ msgstr "适合学习、试验、贡献代码以及真实机器人部署" #: ../../source/0-overview/4-public_vs_internal.md:36 #: ../../source/0-overview/4-public_vs_internal.md:98 -#: a89397fb5c8142649f26753a0edd0296 cef4c25eb1274dd4b6f39bb64c82ae71 +#: 2b49ffe7f1f943e383c35547a4b6bb10 dbcc97dde3e64bfe97a2d59250790748 msgid "Initialization" msgstr "初始化" #: ../../source/0-overview/4-public_vs_internal.md:38 -#: f0e911d27c15493dae5f95b451b2b0fe +#: d72651b28c3f4a429b5c64c824bd4d0e msgid "" "git clone https://github.com/fiveages-sim/open-deploy-ws.git\n" "cd open-deploy-ws\n" @@ -263,32 +263,32 @@ msgstr "" "./init_repo.sh\n" #: ../../source/0-overview/4-public_vs_internal.md:44 -#: b771ec04ec4e45d2ba045ffafb209d7b +#: 2e1cbe96bce447d9bf1ed45904543a15 msgid "The init script will:" msgstr "初始化脚本将会:" #: ../../source/0-overview/4-public_vs_internal.md:45 -#: b004f9673e754f70bbdd71534b1906c1 +#: 21b131d0b9614534af6541978672cb58 msgid "Configure submodule visibility (only public modules)" msgstr "配置子模块可见性(仅公开模块)" #: ../../source/0-overview/4-public_vs_internal.md:46 -#: c2e053ff2cce4fc580caf2db07c63cbf +#: a1beae237c0245569c87f388c0bf76d7 msgid "Prompt per core module: GitHub Release `.deb` (`d`) or source (`s`)" msgstr "按核心模块提示:GitHub Release `.deb`(`d`)或源码(`s`)" #: ../../source/0-overview/4-public_vs_internal.md:47 -#: 0329e5874fa6471a8b693b88dffef93b +#: e94007798b5b49f1b5aadead172a1ff2 msgid "Initialize selected submodules" msgstr "初始化所选子模块" #: ../../source/0-overview/4-public_vs_internal.md:49 -#: ce01fa57fd9c4db4bc8a149435756c8d +#: 717ef7a5cfa24326aeb454d9111fa2c3 msgid "Visibility Configuration" msgstr "可见性配置" #: ../../source/0-overview/4-public_vs_internal.md:51 -#: df2397fdec03419898179f795c894691 +#: f33494f5125e4f5da9ff7343959e2f89 msgid "" "The workspace uses `submodules_visibility.conf` to control which " "**nested** submodules are public or private. The file is pipe-separated " @@ -300,7 +300,7 @@ msgstr "" "`#` 注释会被忽略。它不是带 `[public]` / `[private]` 小节的 INI 文件。" #: ../../source/0-overview/4-public_vs_internal.md:53 -#: eb994e7c19694eacb73dd6c4a5c2ea81 +#: 2b29f6efd3d84716a8f30a8cecc48fa8 msgid "" "# Format: parent_dir|relative_path|public or private\n" "src/robot-descriptions|common|public\n" @@ -315,7 +315,7 @@ msgstr "" "src/arms_ros2_control|controller/ocs2_wbc_controller|private" #: ../../source/0-overview/4-public_vs_internal.md:61 -#: 425dbb2742fa4862810ca3b738fde7ba +#: 327a74bb8a3f4268b08796a89cb4e704 msgid "" "The conf still marks `manipulator/Tianji` and `manipulator/Rokae` as " "`private` for **init selection**. Those GitHub remotes ([robot-" @@ -326,25 +326,26 @@ msgid "" "arms](../4-reference/descriptions/6-vendor_arms.md) and [Submodules " "Visibility](../3-concepts/6-submodules_visibility.md)." msgstr "" -"该配置仍把 `manipulator/Tianji` 与 `manipulator/Rokae` 标为 `private`,用于**初始化选择**。" -"那些 GitHub 远端([robot-descriptions-tianji](https://github.com/fiveages-" -"sim/robot-descriptions-tianji)、[robot-descriptions-rokae](https://github.com" -"/fiveages-sim/robot-descriptions-rokae))已公开;`./init_repo.sh` 仍**默认不会**拉取它们。" -"见 [厂商机械臂](../4-reference/descriptions/6-vendor_arms.md) 与 " +"该配置仍把 `manipulator/Tianji` 与 `manipulator/Rokae` 标为 " +"`private`,用于**初始化选择**。那些 GitHub 远端([robot-descriptions-" +"tianji](https://github.com/fiveages-sim/robot-descriptions-tianji" +")、[robot-descriptions-rokae](https://github.com/fiveages-sim/robot-" +"descriptions-rokae))已公开;`./init_repo.sh` 仍**默认不会**拉取它们。见 " +"[厂商机械臂](../4-reference/descriptions/6-vendor_arms.md) 与 " "[子模块可见性](../3-concepts/6-submodules_visibility.md)。" #: ../../source/0-overview/4-public_vs_internal.md:63 -#: 0237d032cceb4269a7c89b264111232b +#: 4a8bb7d878b44ec0a2437fb680a75b1d msgid "Lean Branches" msgstr "精简分支" #: ../../source/0-overview/4-public_vs_internal.md:65 -#: 4d4e81c91cac4475a133da1cb5f7b895 +#: 37aeb54007204579b11cc4dcd3dab7d1 msgid "For minimal builds focusing on a single robot:" msgstr "若只需针对单一机器人做精简编译:" #: ../../source/0-overview/4-public_vs_internal.md:67 -#: e454392641694c2fa758427d07907c3c +#: 1b456eab7ced47b18e054136ce645338 msgid "" "# Dobot CR5 only\n" "git checkout dobot-cr5\n" @@ -367,31 +368,31 @@ msgstr "" "git checkout panthera-ht" #: ../../source/0-overview/4-public_vs_internal.md:78 -#: de3d88523aa14efab0b4ffd35844f4fb +#: c6d24cbd3fae49d1b340c8759aec7f7e msgid "fa-deploy-ws (Internal)" msgstr "fa-deploy-ws(内部)" #: ../../source/0-overview/4-public_vs_internal.md:80 -#: 45a0d1efb6e842d0916d7afe74e8ab66 +#: 87913a1fa7684c6992131773c30e0ced msgid "Access Required" msgstr "需要访问权限" #: ../../source/0-overview/4-public_vs_internal.md:83 -#: ae44aaff380f413bac3099340680bcff +#: 9f7fa56b4632447d9c6b2a6318f79648 msgid "" "This workspace requires private repository access. Contact your team lead" " if you need access." msgstr "此工作空间需要私有仓库访问权限。如需开通,请联系你的团队负责人。" #: ../../source/0-overview/4-public_vs_internal.md:88 -#: 6965ea9e147b425f8c53d5b1984b29aa +#: 4b8591d7aca741e4aebc992e39274090 msgid "" "Internal workspace for FiveAges wheeled-arm humanoids (W2, W2R, S2, S2R) " "and dual-arm CCS" msgstr "面向 FiveAges 轮臂人形(W2、W2R、S2、S2R)和双臂 CCS 的内部工作区" #: ../../source/0-overview/4-public_vs_internal.md:89 -#: 07f141be768841f59314ba8281d6a81a +#: 83e7846a32694984afa1f6c55acad661 msgid "" "Description remotes live as gitlinks under [robot_descriptions " "`humanoid/FiveAges/`](../4-reference/descriptions/4-fiveages_umbrella.md)" @@ -408,17 +409,17 @@ msgstr "" "分支。" #: ../../source/0-overview/4-public_vs_internal.md:90 -#: f4d68a2547d045399f162a0e9aecf526 +#: 63f37e2e8b0a4a878bb437864a7c0fd5 msgid "Full OCS2 + WBC source when that workspace’s README says so" msgstr "完整的 OCS2 + WBC 源码集成" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: d1642e0b1a2648daba8373ef42b65579 +#: a91d6117871741d09b6f688013c64bd3 msgid "Source of truth" msgstr "权威来源" #: ../../source/0-overview/4-public_vs_internal.md:95 -#: 8dd5a13e58d24484850f7d5b941a09b9 +#: 05085a6b51164469a53e53ed53b83110 msgid "" "The `fa-deploy-ws` README is **not public**. Flags, robot IDs, and on-" "robot YAML are documented only in that README after you have access. " @@ -429,25 +430,35 @@ msgstr "" "里。公开侧模式见 [fa-deploy-ws 配置](../1-getting_started/4-fa_deploy_ws.md)。" #: ../../source/0-overview/4-public_vs_internal.md:100 -#: 63b99d5ff04544f4a6367700eb76837b +#: a5941f3c144143ad81c81e7e478f01ea msgid "" -"git clone /fa-deploy-ws.git\n" +"git clone git@github.com:fiveages-sim/fa-deploy-ws.git\n" "cd fa-deploy-ws\n" "./init_repo.sh\n" msgstr "" -"git clone /fa-deploy-ws.git\n" +"git clone git@github.com:fiveages-sim/fa-deploy-ws.git\n" "cd fa-deploy-ws\n" "./init_repo.sh\n" #: ../../source/0-overview/4-public_vs_internal.md:106 -#: 2da7c591f45a494d9bf7c8facbc4190d +#: 27bb2911fe0849038d77dfdd47e144d8 +msgid "" +"[fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) needs " +"repository access (default branch `fa-w2`). Without access, GitHub does " +"not open the page." +msgstr "" +"[fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) 需要仓库权限(默认分支 " +"`fa-w2`)。没有权限时,GitHub 打不开页面。" + +#: ../../source/0-overview/4-public_vs_internal.md:108 +#: 1ce05fd7fdb940c7af0515f0601abd00 msgid "" "Same script **name** as `open-deploy-ws`. Extra flags, robot IDs, and on-" "robot YAML live in the private README — copy them from there." msgstr "脚本**名**与 `open-deploy-ws` 相同。额外参数、机器人 ID 和机上 YAML 在私有 README 里 — 从那里抄。" -#: ../../source/0-overview/4-public_vs_internal.md:108 -#: f63dac6d3612458e899e662a7d775c8d +#: ../../source/0-overview/4-public_vs_internal.md:110 +#: 36efc12bf316436fa5ad93c757c78642 msgid "" "Public end-effector selection is launch `type` / `left_type` / " "`right_type` (and `robot_profile`), not a `gripper:=` argument. See " @@ -457,152 +468,152 @@ msgstr "" "`robot_profile`),不是 `gripper:=`。见 " "[robot_common_launch](../4-reference/descriptions/2-common.md)。" -#: ../../source/0-overview/4-public_vs_internal.md:110 -#: 7a57e60b81044f30bfd61f441a292953 +#: ../../source/0-overview/4-public_vs_internal.md:112 +#: c016706c5bd1449889a9c7200bfe857a msgid "Choosing Your Path" msgstr "选择路径" -#: ../../source/0-overview/4-public_vs_internal.md:112 -#: 77aa6cdfb3474dd9b076a720edce061a +#: ../../source/0-overview/4-public_vs_internal.md:114 +#: c880b350d7ad4840a6113666d0db5fc0 msgid "Use the Public Path If:" msgstr "在以下情况使用公开路径:" -#: ../../source/0-overview/4-public_vs_internal.md:114 -#: e21a533445004078b83d59c88c140e8b +#: ../../source/0-overview/4-public_vs_internal.md:116 +#: f3edd91667f046e483975168243587b4 msgid "You're new to the ecosystem" msgstr "你是本生态系统的新用户" -#: ../../source/0-overview/4-public_vs_internal.md:115 -#: 16cb4fab9e0f42b0ab59afc17a7a1b79 +#: ../../source/0-overview/4-public_vs_internal.md:117 +#: 9997df5bfd3d4ca6a392185ba25135a8 msgid "You're developing with publicly available robots" msgstr "你在使用公开可用的机器人进行开发" -#: ../../source/0-overview/4-public_vs_internal.md:116 -#: b9e8eba56a3c4ee1b51e98dea33ad4a3 +#: ../../source/0-overview/4-public_vs_internal.md:118 +#: e44ea79c79ed4fb58b09a6d9a112259c msgid "You're contributing to open source packages" msgstr "你在为开源软件包做贡献" -#: ../../source/0-overview/4-public_vs_internal.md:117 -#: fbc28d8e67924f48b84865c41d451e39 +#: ../../source/0-overview/4-public_vs_internal.md:119 +#: a49f60385dcb47f0a8602b7e53369961 msgid "You don't have FiveAges private repo access" msgstr "你没有 FiveAges 私有仓库的访问权限" -#: ../../source/0-overview/4-public_vs_internal.md:119 -#: e0c9e01d79314238b0e7a5b742d858a0 +#: ../../source/0-overview/4-public_vs_internal.md:121 +#: 88f58b740b2e4d9f8e1dd7e9e38521c8 msgid "Use the Internal Path If:" msgstr "在以下情况使用内部路径:" -#: ../../source/0-overview/4-public_vs_internal.md:121 -#: 0be4d4850f9a4b45b103c1b6120f20f0 +#: ../../source/0-overview/4-public_vs_internal.md:123 +#: 2e1c40e65b074d919ccfbf65f6fe4a93 msgid "You're deploying to FA wheeled-arm humanoids (W2/S2 series)" msgstr "你要部署到 FA 轮臂人形(W2/S2 系列)" -#: ../../source/0-overview/4-public_vs_internal.md:122 -#: 876e7b695eae4729b308f48bd9e83927 +#: ../../source/0-overview/4-public_vs_internal.md:124 +#: 4bb3174de457481190d8c7b7bb11e433 msgid "You need WBC whole-body control" msgstr "你需要 WBC 全身控制" -#: ../../source/0-overview/4-public_vs_internal.md:123 -#: 6cfd6e74d3a84a1ba647dc41a2998041 +#: ../../source/0-overview/4-public_vs_internal.md:125 +#: 3769b51a4995479a968ee242e4ee14cb msgid "You have authorized access to private repositories" msgstr "你已获得私有仓库的授权访问权限" -#: ../../source/0-overview/4-public_vs_internal.md:125 -#: 30fcf6c473d94abba93310a350c601c3 +#: ../../source/0-overview/4-public_vs_internal.md:127 +#: da2f93528fc744ee920d93ed53e5a035 msgid "Transitioning Between Paths" msgstr "在两条路径之间切换" -#: ../../source/0-overview/4-public_vs_internal.md:127 -#: 0efca924787b41be843b9717275d2ea8 +#: ../../source/0-overview/4-public_vs_internal.md:129 +#: f2ce023dfbd44627844862624c50a3b9 msgid "Public → Internal" msgstr "公开 → 内部" -#: ../../source/0-overview/4-public_vs_internal.md:129 -#: b34c983da9144a5db14c061d74ad7c43 +#: ../../source/0-overview/4-public_vs_internal.md:131 +#: 1beb9d9baf024fb097efaef962a7166b msgid "Request access to private repositories" msgstr "申请私有仓库访问权限" -#: ../../source/0-overview/4-public_vs_internal.md:130 -#: 2eb3c50db0c64e8d8cfcd909a9de9ea4 +#: ../../source/0-overview/4-public_vs_internal.md:132 +#: e224842202fa41b599e5bb2c175b20f8 msgid "Clone `fa-deploy-ws` fresh (don't try to convert open-deploy-ws)" msgstr "重新克隆 `fa-deploy-ws`(不要尝试把 open-deploy-ws 改成内部工作空间)" -#: ../../source/0-overview/4-public_vs_internal.md:131 -#: 748cee03da7b48f5b91b38335a4eb013 +#: ../../source/0-overview/4-public_vs_internal.md:133 +#: 6589078d25854154aa3b2bbea66e640c msgid "Follow that repository’s README" msgstr "按该仓库 README 操作" -#: ../../source/0-overview/4-public_vs_internal.md:133 -#: ea8fb865639b44bdb9b4b839a2d75ec1 +#: ../../source/0-overview/4-public_vs_internal.md:135 +#: 39bf630508074b959f93b3b3f4a92e4a msgid "Internal Users on Public Hardware" msgstr "内部用户使用公开硬件" -#: ../../source/0-overview/4-public_vs_internal.md:135 -#: 2c7e565cc5434756a8ce3cacdfdf05e9 +#: ../../source/0-overview/4-public_vs_internal.md:137 +#: e5192ba1319540b696bc2b19dbb341be msgid "" "If you have internal access but want to work with public robots, use " "`open-deploy-ws` for a public-only checkout." msgstr "如果已有内部权限但仍想用公开机器人,请用 `open-deploy-ws` 做仅公开检出。" -#: ../../source/0-overview/4-public_vs_internal.md:137 -#: 3628c22685ce42d4ae6196a11959fdbe +#: ../../source/0-overview/4-public_vs_internal.md:139 +#: 6fcc42d852cc4987a085a296982d09ce msgid "Network Configuration" msgstr "网络配置" -#: ../../source/0-overview/4-public_vs_internal.md:139 -#: 7711e1fe038743b1b2784acb3f520ed6 +#: ../../source/0-overview/4-public_vs_internal.md:141 +#: 4030a8b07ad3411aae813834d9ca8d56 msgid "" "Both workspaces can communicate with real robots over the network. Key " "configuration points:" msgstr "两个工作空间都可以通过网络与真实机器人通信。关键配置如下:" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: 26bc95433f304cd38a1a11847c1fd151 +#: 320b3c4b76f34328b958afbdbaf59cfe msgid "Setting" msgstr "配置项" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: dfea8dfbea7c4d3f8a52ceba159f6d54 +#: 4abbcfbdbd4e4786a36f0f1b3a2c4546 msgid "Purpose" msgstr "用途" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: 16bc6805c52d45bc9158d9757c2312c2 +#: 7c8c6d681a8e46d997011e4c5f809122 msgid "ROS Domain ID" msgstr "ROS Domain ID" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: 78ff2fb8c362461c8d42e724f2d98087 +#: df51538a439e4aa2ba61ea8a91e1a431 msgid "Isolates ROS 2 traffic between robots/users" msgstr "在机器人/用户之间隔离 ROS 2 通信" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: 8b2732e7cc864061a6cff93c56824af8 +#: 5f05d8f1e54f46fca814119e02075665 msgid "Zenoh configuration" msgstr "Zenoh 配置" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: b5bce424f4194f7f9ccd740101535d59 +#: 1325254f948f4a6ab35140091ed7af49 msgid "Required for cross-network communication" msgstr "跨网段通信所必需" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: a1198c6a70f241a79b71d9856f7f8bba +#: bac522aa69a74ab3b70ca576516ade97 msgid "Network interface" msgstr "网络接口" #: ../../source/0-overview/4-public_vs_internal.md:92 -#: 8a258e8dc1ec43029a17bf84b64382b8 +#: 5be09bd688c240d990dca80a5e32c94d msgid "Must match the robot's network segment" msgstr "必须与机器人所在网段一致" -#: ../../source/0-overview/4-public_vs_internal.md:147 -#: 2b37f037197c47dc8f3ec5d6e0848e84 +#: ../../source/0-overview/4-public_vs_internal.md:149 +#: e2af51f659d2477ca07e1945e93dd774 msgid "Domain Isolation" msgstr "域隔离" -#: ../../source/0-overview/4-public_vs_internal.md:150 -#: 1902f4d3543349099c5e8594c96cfec6 +#: ../../source/0-overview/4-public_vs_internal.md:152 +#: 1685ce8448924794b168b17d6c3b5bda msgid "" "Always verify your Domain ID matches the target robot's configuration. " "Mismatched IDs result in no communication without obvious errors." @@ -828,3 +839,12 @@ msgstr "请始终确认你的 Domain ID 与目标机器人的配置一致。ID #~ "配置](../1-getting_started/4-fa_deploy_ws.md) 和**该仓库 " #~ "README** 为准。" +#~ msgid "" +#~ "git clone /fa-deploy-ws.git\n" +#~ "cd fa-deploy-ws\n" +#~ "./init_repo.sh\n" +#~ msgstr "" +#~ "git clone /fa-deploy-ws.git\n" +#~ "cd fa-deploy-ws\n" +#~ "./init_repo.sh\n" + diff --git a/locale/zh_CN/LC_MESSAGES/1-getting_started/4-fa_deploy_ws.po b/locale/zh_CN/LC_MESSAGES/1-getting_started/4-fa_deploy_ws.po index 64d5c42..eab4522 100644 --- a/locale/zh_CN/LC_MESSAGES/1-getting_started/4-fa_deploy_ws.po +++ b/locale/zh_CN/LC_MESSAGES/1-getting_started/4-fa_deploy_ws.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-07 02:37+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,50 +21,55 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/1-getting_started/4-fa_deploy_ws.md:1 -#: 3df8dd5e72284ace81e7285756ac2a88 +#: 18264bd9c8e04b6dbbcb2beb76e95117 msgid "fa-deploy-ws Setup" msgstr "fa-deploy-ws 配置" #: ../../source/1-getting_started/4-fa_deploy_ws.md:3 -#: d348cd258c724113bf12b9d4f58b21a7 +#: e4972f7bdc5e4ffc86dc7cd9542a9e7b msgid "" -"Setup guide for the internal `fa-deploy-ws` workspace used for FiveAges " -"robot deployment." -msgstr "`fa-deploy-ws` 是用于 FiveAges 机器人部署的内部工作空间,本指南介绍其配置方法。" +"Setup guide for the internal [fa-deploy-ws](https://github.com/fiveages-" +"sim/fa-deploy-ws) workspace used for FiveAges robot deployment. The link " +"needs repository access (default branch `fa-w2`). Without access, GitHub " +"does not open the page." +msgstr "" +"内部工作空间 [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) " +"的安装说明,用于五纪机器人部署。链接需要仓库权限(默认分支 `fa-w2`)。没有权限时,GitHub 打不开页面。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:5 -#: 622401cf287144feb4b591ec8bf2f415 +#: 697dfc9e993c49fca77192425b90361e msgid "Access Required" msgstr "需要访问权限" #: ../../source/1-getting_started/4-fa_deploy_ws.md:8 -#: b734f72714534ed084209e43e0a9c4ed +#: 628f4a7e135b44fe8d301483f04cc871 msgid "" "This workspace requires access to private repositories. Contact your team" " lead for access if needed." msgstr "该工作空间需要访问私有仓库。如需权限,请联系团队负责人。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:11 -#: 1ddfef2bbc7249f6a0eff5e5f7723ee8 +#: f273825dabcd4d308b558391cfbe3a13 msgid "Source of truth" msgstr "权威来源" #: ../../source/1-getting_started/4-fa_deploy_ws.md:14 -#: 5366d98ac05c48f88f18dabe6f451502 +#: 7a0b41df62704f71b17b2ccc1568e15c msgid "" "The `fa-deploy-ws` README is **not public**. After you have access, " "follow **that repository’s README** and its init / quick-start scripts. " "Flags, robot IDs, and on-robot YAML are documented only there." msgstr "" -"`fa-deploy-ws` 的 README **不公开**。开通后以**该仓库 README** 及其 init / quick-start 脚本为准。参数、机器人 ID 和机上 YAML 只写在那里。" +"`fa-deploy-ws` 的 README **不公开**。开通后以**该仓库 README** 及其 init / quick-start " +"脚本为准。参数、机器人 ID 和机上 YAML 只写在那里。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:17 -#: 546dfa7ce2c348328692fc1ef106bb01 +#: 9e08fd2e538d474db5674e1dce287310 msgid "Overview" msgstr "概述" #: ../../source/1-getting_started/4-fa_deploy_ws.md:19 -#: 4f820837aa7d4ec38b8e48f101a66c49 +#: a03d763ff5264e36b15136412adab68e msgid "" "`fa-deploy-ws` is the internal counterpart of [open-deploy-" "ws](3-open_deploy_ws.md). Public users stay on `open-deploy-ws`." @@ -73,12 +78,12 @@ msgstr "" "`open-deploy-ws`。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:21 -#: fec2cb4357024d22ac15889b2cd0fad4 +#: 7e47d4b0f211447e97357ad659178980 msgid "What is verified on the **public** side and still applies as the pattern:" msgstr "在**公开**侧已核实、仍可作为模式的内容:" #: ../../source/1-getting_started/4-fa_deploy_ws.md:23 -#: 624ded5912534be5b83be941a6f50ed9 +#: 2f7001396c2a45f0a0dc17f41a6b9129 msgid "" "Clone the workspace, then run **`./init_repo.sh`** (same script name as " "[open-deploy-ws](https://github.com/fiveages-sim/open-deploy-" @@ -88,12 +93,12 @@ msgstr "" "/fiveages-sim/open-deploy-ws/blob/main/README.EN.md) 相同)。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:24 -#: 4647535cf638477c8e55e238099b81e9 +#: 675243c6e1114c5cbeea477cd6e9a59b msgid "Do **not** `git submodule update --init --recursive`." msgstr "**不要** `git submodule update --init --recursive`。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:25 -#: 773212ba772e4b189b74fcec7ac32e3c +#: e409342373354458b22106b1f7b1f53b msgid "" "After init, `colcon build`, then `source install/setup.bash` in the " "launch terminal (standard ROS overlay)." @@ -102,41 +107,41 @@ msgstr "" "`source /opt/ros/...` 链当作文档路径。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:27 -#: a9c44045c1fd4413a6c9975d5c70a409 +#: 4aec45c7420d4391a5233900474586c2 msgid "" "Extra flags, robot IDs, and on-robot YAML live in the private README — " "copy them from there." msgstr "额外参数、机器人 ID 和机上 YAML 在私有 README 中 — 从那里复制。" #: ../../source/1-getting_started/4-fa_deploy_ws.md:29 -#: 5c89889bfc5d491cbab0cc1460f5a8f2 +#: 84c6204e4f114c598b03095ab07545f2 msgid "Related public pages" msgstr "发布包" #: ../../source/1-getting_started/4-fa_deploy_ws.md:31 -#: 79420e8da20246ebb1935b5b8169f204 +#: a7c5d09a3ead47c0bb0911057e725504 msgid "[Install Environment](2-install_environment.md)" msgstr "[安装环境](2-install_environment.md)" #: ../../source/1-getting_started/4-fa_deploy_ws.md:32 -#: 3977e8c81cf043978209a1f107482683 +#: 5f50697797864caab8c17abaa476d5c6 msgid "[open-deploy-ws Setup](3-open_deploy_ws.md)" msgstr "[open-deploy-ws 配置](3-open_deploy_ws.md)" #: ../../source/1-getting_started/4-fa_deploy_ws.md:33 -#: 3b7a2a8d64234dc29925b656061d81d3 +#: 822d3b3d7bfa40988e37b2326dbf7336 msgid "[Workspace Layout](../3-concepts/2-workspace_layout.md)" msgstr "[工作区布局](../3-concepts/2-workspace_layout.md)" #: ../../source/1-getting_started/4-fa_deploy_ws.md:34 -#: 29900fe9f0924fe8b420468357841d8f +#: e851514b8e2f42a9aa5a92c6e585527f msgid "" "[Go to real " "hardware](../2-how_to/6-deployment/9-go_real_hardware/0-index.md)" msgstr "[部署到真实硬件](../2-how_to/6-deployment/9-go_real_hardware/0-index.md)" #: ../../source/1-getting_started/4-fa_deploy_ws.md:35 -#: 94a6841f8fa844d38472861465c7c48e +#: d9c90a99c39443308f84e39abeedc5d0 msgid "[WBC controller reference](../4-reference/controllers/3-ocs2_wbc.md)" msgstr "[WBC 控制器参考](../4-reference/controllers/3-ocs2_wbc.md)" @@ -634,3 +639,9 @@ msgstr "[WBC 控制器参考](../4-reference/controllers/3-ocs2_wbc.md)" #~ "--mock`、`fiveages_bringup` 或目录树。有权限后,以**该仓库 README** " #~ "及其 init / quick-start 脚本为准。" +#~ msgid "" +#~ "Setup guide for the internal `fa-" +#~ "deploy-ws` workspace used for FiveAges " +#~ "robot deployment." +#~ msgstr "`fa-deploy-ws` 是用于 FiveAges 机器人部署的内部工作空间,本指南介绍其配置方法。" + diff --git a/locale/zh_CN/LC_MESSAGES/2-how_to/2-simulation/4-isaac_sim.po b/locale/zh_CN/LC_MESSAGES/2-how_to/2-simulation/4-isaac_sim.po index 6fb2312..ad4e1f2 100644 --- a/locale/zh_CN/LC_MESSAGES/2-how_to/2-simulation/4-isaac_sim.po +++ b/locale/zh_CN/LC_MESSAGES/2-how_to/2-simulation/4-isaac_sim.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-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,449 +21,583 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:1 -#: 0908abe4c57749a883ab50f73b737f3e +#: e330dd2785754f51b425d9a048c9c0ad msgid "Isaac Sim" msgstr "Isaac Sim" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:3 -#: e13dfb783a1743a289ea2b3ff1005cc8 -msgid "Run robot demos with NVIDIA Isaac Sim for high-fidelity simulation." -msgstr "使用 NVIDIA Isaac Sim 运行高保真仿真机器人演示。" +#: eec398ec68b34345a1c27c79c9049a9b +msgid "" +"Run a robot in NVIDIA Isaac Sim and connect it to the same ROS 2 运控 stack" +" used on hardware." +msgstr "在 NVIDIA Isaac Sim 里运行机器人,并接到与真机相同的 ROS 2 运控栈。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:5 -#: 938a05230c694c9aa5decd9a37f10467 +#: 38e6265491964a8998963e0b0ea9261c msgid "" -"Use **FaSim-Isaac** `./init.sh` and `./run.sh`. Path and version live in " -"that repo’s config; CLI flags are those named in its README." +"FaSim-Isaac is the asset workspace: `./init.sh` then `./run.sh` (or " +"`./run_headless.sh`). Robot choice is which USD you open, not a `./run.sh" +" --robot` flag. Path and Isaac version live in `config/fa_sim.conf` / " +"`config/fa_sim.local.conf`." msgstr "" -"使用 **FaSim-Isaac** 的 `./init.sh` 和 `./run.sh`。路径和版本写在该仓库配置里 — 不要写死某一个 " -"Isaac 次版本号,也不要发明 CLI 参数。" +"FaSim-Isaac 是资产工作空间:先 `./init.sh`,再 `./run.sh`(或 " +"`./run_headless.sh`)。选哪台机器人取决于你打开哪份 USD,而不是 `./run.sh --robot`。路径和 Isaac " +"版本写在 `config/fa_sim.conf` / `config/fa_sim.local.conf`。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:7 -#: 57306486bee54cb8b5cca867c516acb1 +#: 1ca72c8d18ec4975b1dba5eb1dd78f7d +msgid "There are two ROS 2 connections. Pick one for a given stage." +msgstr "有两种 ROS 2 连接。同一舞台只选一种。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: d4aea684c761469295aa4ee82c0f8561 +msgid "Launch / graph" +msgstr "启动 / 图" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: 6b4a32b60adc47ba85764eaf3be0fde2 +msgid "Plugin" +msgstr "Plugin" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: 8f33c5db1d9e442ba6e056a46b034f62 +msgid "What moves the joints" +msgstr "谁在驱动关节" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: 5cc0b75c59b9496e8030be95dacfe47a +msgid "`hardware:=isaac`" +msgstr "`hardware:=isaac`" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: 6beef602b389441eaa80468367f75051 +msgid "`topic_based_ros2_control/TopicBasedSystem`" +msgstr "`topic_based_ros2_control/TopicBasedSystem`" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: 17ffa5a51d834cc89205693933dcfeef +msgid "OmniGraph joint topics" +msgstr "OmniGraph 关节话题" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: 7181f54367e344a4a7180b0d4b8b0e06 +msgid "In-process `ROS2ControlLaunch` (Play)" +msgstr "进程内 `ROS2ControlLaunch`(播放)" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: d767d3346fad4cdf97e26fad98fe2d82 +msgid "" +"`isaacsim_ros2_control/IsaacSimSystem` (`hardware=isaac_sim` inside the " +"node)" +msgstr "`isaacsim_ros2_control/IsaacSimSystem`(节点内部的 `hardware=isaac_sim`)" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md +#: e87ba36b4f6040dc8778d365f18bf1d2 +msgid "Controller manager in the Isaac process" +msgstr "Isaac 进程里的控制器管理器" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:14 +#: dd4bcafb7ac345edb24b38cc2101e4d9 +msgid "" +"`isaac_sim` is a ros2_control hardware interface, not a second robot " +"body. Details, clock, and TF: [FaSim-Isaac " +"reference](../../4-reference/simulation/2-fasim_isaac.md)." +msgstr "" +"`isaac_sim` 是 ros2_control 的驱动层,不是第二套机器人本体。时钟和 TF 见 [FaSim-Isaac " +"参考](../../4-reference/simulation/2-fasim_isaac.md)。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:16 +#: 7b15f783b57748b4bc1a820b27bf10ea msgid "Prerequisites" msgstr "前提条件" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:9 -#: a2556d6ef39c49c393344508991a4419 -msgid "NVIDIA Isaac Sim binary installed (GPU + matching NVIDIA drivers)" -msgstr "已安装 NVIDIA Isaac Sim 二进制(GPU 及匹配的 NVIDIA 驱动)" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:10 -#: ab7304f39ef449e29a158fa019fdff9e -msgid "ROS 2 Jazzy workspace" -msgstr "ROS 2 Jazzy 工作空间" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:18 +#: d819eb90c0a8425d8092cbac20e33137 +msgid "" +"NVIDIA Isaac Sim, GPU, and a matching driver. Default directory " +"`ISAACSIM_DIR` (`~/isaacsim` unless you override it)." +msgstr "NVIDIA Isaac Sim、GPU,以及匹配的驱动。默认目录 `ISAACSIM_DIR`(未覆盖时为 `~/isaacsim`)。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:11 -#: 3900d183e2234dacb73226cde47fed05 +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:19 +#: 6d0a1399cc7b4f919052d6bea3930496 msgid "" -"Default Isaac directory: `ISAACSIM_DIR` (`~/isaacsim` unless you override" -" it)" -msgstr "默认 Isaac 目录:`ISAACSIM_DIR`(除非覆盖,否则为 `~/isaacsim`)" +"ROS 2 Jazzy workspace that already builds the robot (`open-deploy-ws` or," +" with access, [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-" +"ws))." +msgstr "" +"已经能编过该机器人的 ROS 2 Jazzy 工作空间(`open-deploy-ws`,或有权限时的 [fa-deploy-" +"ws](https://github.com/fiveages-sim/fa-deploy-ws))。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:13 -#: 30bed6160b5e47eeb520cfc211d3bf5d -msgid "Steps" -msgstr "步骤" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:20 +#: f89d94db728c41eeab649686e97d658c +msgid "" +"For the topic bridge, the workspace includes `topic_based_ros2_control`. " +"For the in-process graph, `./init.sh` operation 5 has installed " +"`fasim.ros2.nodes` into this Isaac, and the description xacro accepts " +"`hardware` `isaac_sim`." +msgstr "" +"话题桥要求工作空间里有 `topic_based_ros2_control`。进程内图要求 `./init.sh` 的第 5 项已经把 " +"`fasim.ros2.nodes` 装进这份 Isaac,并且描述 xacro 接受 `hardware` `isaac_sim`。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:15 -#: 1b464cf2396e4fc7aac702d861a8c648 -msgid "1. Clone FaSim-Isaac" -msgstr "1. 克隆 FaSim-Isaac" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:22 +#: 103da11ebb3544a68d6b395b571f0ba0 +msgid "Start FaSim" +msgstr "启动 FaSim" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:17 -#: 94418f3e70df4f59bdb02b5b9d43bd38 +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:24 +#: 3b4dc282e9364a7eaa82c2941e2b0d01 msgid "" -"cd ~/\n" "git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" -"cd FaSim-Isaac" +"cd FaSim-Isaac\n" +"./init.sh\n" +"./run.sh" msgstr "" -"cd ~/\n" "git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" -"cd FaSim-Isaac" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:23 -#: 7cc988dffd404078aedfc1104c9f4625 -msgid "2. Initialize" -msgstr "2. 初始化" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:25 -#: d5f706269c474e6fa96ae1d285a59f3b -msgid "./init.sh" -msgstr "./init.sh" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:29 -#: e0f63e8bf57d49739a825ef6eccf8114 -msgid "What the script does (FaSim README):" -msgstr "脚本做什么(FaSim README):" +"cd FaSim-Isaac\n" +"./init.sh\n" +"./run.sh" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:31 -#: f79618d47be947ff88a5ce06c21e6064 +#: f981f214b9a74e37907d0be1c9abd32f msgid "" -"**Operation 1** — initialize submodules listed in `.gitmodules` / " -"`submodules_visibility.conf` (`public` selected by default; `private` " -"needs access). Re-runs are additive." +"`./init.sh` menu ([README](https://github.com/fiveages-sim/FaSim-" +"Isaac/blob/main/README.md)):" msgstr "" -"**操作 1** — 初始化 `.gitmodules` / `submodules_visibility.conf` 中的子模块(默认勾选 " -"`public`;`private` 需要权限)。多次运行是追加的。" +"`./init.sh` 菜单([README](https://github.com/fiveages-sim/FaSim-" +"Isaac/blob/main/README.md)):" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:32 -#: bb0efe3b29134881a2c10d08b2c38f0c +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:33 +#: 201ad5c9213e4636b1e93526b4bbf368 msgid "" -"**Operation 2** — optional **Isaac ROS 2 Jazzy workspace**: version menu " -"queries GitHub stable tags (fallback list in `config/fa_sim.conf` " -"currently `6.0.1` / `6.0.0` / `5.1.0`). Override with " -"`ISAAC_SIM_VERSION=… ./init.sh`." +"Init selected submodules (`.gitmodules` / `submodules_visibility.conf`). " +"Public entries start checked. Private entries (including [fa-project-" +"usd](https://github.com/fiveages-sim/fa-project-usd)) stay unchecked " +"until you have access. Re-runs only add what you check." msgstr "" -"**操作 2** — 可选 **Isaac ROS 2 Jazzy 工作空间**:版本菜单查询 GitHub 稳定 tag(回退列表见 " -"`config/fa_sim.conf`,目前是 `6.0.1` / `6.0.0` / `5.1.0`)。用 " -"`ISAAC_SIM_VERSION=… ./init.sh` 覆盖。" +"初始化选中的子模块(`.gitmodules` / `submodules_visibility.conf`)。公开项默认勾选。私有项(包括 " +"[fa-project-usd](https://github.com/fiveages-sim/fa-project-" +"usd))在你有权限之前保持不勾。再次运行只追加你勾选的项。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:34 -#: 2895c12f81984a5d8d401e3c6b19ba15 -msgid "3. Start Isaac Sim" -msgstr "3. 启动 Isaac Sim" +#: fdac0c8d24544704ac390b495b0e9eb2 +msgid "" +"Update submodules already checked out (`./init.sh --update`). The FaSim " +"repo itself is not pulled." +msgstr "更新已经检出的子模块(`./init.sh --update`)。FaSim 仓库本身不会被拉取。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:36 -#: d821c4a0812e41b0a7ece469d789f966 -msgid "./run.sh" -msgstr "./run.sh" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:35 +#: 771b023704c540408b68243af8551a89 +msgid "Download ArtVIP into `environment/ArtVIP/` (`tools/artvip_kitchen.py`)." +msgstr "把 ArtVIP 下载到 `environment/ArtVIP/`(`tools/artvip_kitchen.py`)。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:40 -#: 81e1012600984acf98db3949d471cffb +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:36 +#: 79f7d4e9a4c04531ba259ac55d855534 msgid "" -"What the script does: optional CPU governor, optional Zenoh router if " -"`RMW_IMPLEMENTATION=rmw_zenoh_cpp`, then an interactive menu — **PhysX** " -"/ **Newton** / **Headless Streaming**. There is no `./run.sh --robot` or " -"`./run.sh --headless`." +"Optional Isaac ROS 2 Jazzy overlay under `isaac_jazzy_ws/`. The menu asks" +" GitHub for stable tags. If that query fails, `config/fa_sim.conf` falls " +"back to `6.2.0` / `6.1.0` / `6.0.1`. Override with `ISAAC_SIM_VERSION=… " +"./init.sh`." msgstr "" -"脚本做什么:可选 CPU 调频、若 `RMW_IMPLEMENTATION=rmw_zenoh_cpp` 则可选 Zenoh " -"router,然后是交互菜单 — **PhysX** / **Newton** / **Headless Streaming**。没有 " -"`./run.sh --robot` 或 `./run.sh --headless`。" +"可选的 Isaac ROS 2 Jazzy 叠加层,放在 `isaac_jazzy_ws/`。菜单会向 GitHub " +"查询稳定标签。查询失败时,`config/fa_sim.conf` 回退到 `6.2.0` / `6.1.0` / `6.0.1`。可用 " +"`ISAAC_SIM_VERSION=… ./init.sh` 覆盖。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:42 -#: 6f41268f36d842dba099502f99d99b31 +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:37 +#: 678d48302cfd4e009843f629a092bc42 msgid "" -"Path/version overrides: copy `config/fa_sim.local.template.conf` → " -"`config/fa_sim.local.conf` and set `ISAACSIM_DIR` / " -"`ISAAC_SIM_DEFAULT_VERSION`. Env also works: `ISAACSIM_DIR=/path " -"./run.sh`." +"Install FaSim extensions into this Isaac (`exts/fasim.steering.nodes`, " +"`exts/fasim.ros2.nodes`) and silence script warnings. Re-run after you " +"reinstall Isaac. Restart Isaac so the extensions load." msgstr "" -"路径/版本覆盖:复制 `config/fa_sim.local.template.conf` → " -"`config/fa_sim.local.conf`,设置 `ISAACSIM_DIR` / " -"`ISAAC_SIM_DEFAULT_VERSION`。环境变量也可以:`ISAACSIM_DIR=/path ./run.sh`。" +"把 FaSim 扩展装进这份 " +"Isaac(`exts/fasim.steering.nodes`、`exts/fasim.ros2.nodes`),并关掉脚本警告。重装 " +"Isaac 后要再跑一次。重启 Isaac 后扩展才会加载。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:44 -#: 8da91db512644723bec19f5b41c7c3b8 -msgid "4. Launch ROS 2 Side" -msgstr "4. 启动 ROS 2 侧" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:39 +#: 4ef86350d22341f1a1ed4ecbfd14911a +msgid "" +"`./run.sh` shows the saved backend, then asks PhysX or Newton, CPU " +"governor, and which ROS 2 workspace to source. `./run_headless.sh` is the" +" same menu for Headless Streaming. Non-interactive examples from the " +"README:" +msgstr "" +"`./run.sh` 先显示已保存的后端,再询问 PhysX 或 Newton、CPU 调速,以及要 source 哪个 ROS 2 " +"工作空间。`./run_headless.sh` 是无头串流的同一套菜单。README 里的非交互例子:" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:46 -#: ee0909bf829744dc995bf36a199010e1 -msgid "In a new terminal:" -msgstr "在新终端中:" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:41 +#: 3bf6db10115c4f229b4e5d7ee3b0f3ea +msgid "" +"./run.sh -y --physics physx --cpu auto --ros-ws ~/ros2_ws\n" +"./run_headless.sh -y --physics physx --instance 0\n" +"./run.sh --asset-region china\n" +"./run.sh --kit-profile none" +msgstr "" +"./run.sh -y --physics physx --cpu auto --ros-ws ~/ros2_ws\n" +"./run_headless.sh -y --physics physx --instance 0\n" +"./run.sh --asset-region china\n" +"./run.sh --kit-profile none" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:48 -#: 7e255dbe01474e43b3656522d5c3425c +#: 790f5bcf437846629f2b1b2a58368e45 msgid "" -"source ~/open-deploy-ws/install/setup.bash\n" -"ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac" +"`config/fa_sim.conf` kit profiles (`--kit-profile` / `--list-kit-" +"profiles`): `none`, `newton-physx-min`, `newton-physx`, `physx-compat`, " +"`physx-compat-full`. `--asset-region` is `none`, `us`, or `china`. Copy " +"`config/fa_sim.local.template.conf` to `config/fa_sim.local.conf` for a " +"machine override. When `RMW_IMPLEMENTATION=rmw_zenoh_cpp`, `./run.sh` " +"starts a Zenoh router and stops it on exit." msgstr "" -"source ~/open-deploy-ws/install/setup.bash\n" -"ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:53 -#: 17b9d856baac4bde8e41ddeed810abcc +"`config/fa_sim.conf` 的 kit 预设(`--kit-profile` / `--list-kit-" +"profiles`):`none`、`newton-physx-min`、`newton-physx`、`physx-compat" +"`、`physx-compat-full`。`--asset-region` 为 `none`、`us` 或 `china`。把 " +"`config/fa_sim.local.template.conf` 复制成 `config/fa_sim.local.conf` " +"作为本机覆盖。当 `RMW_IMPLEMENTATION=rmw_zenoh_cpp` 时,`./run.sh` 会启动 Zenoh " +"路由,并在退出时停掉它。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:50 +#: 132ab8a971414d63b9aa3955fbcfd2b8 msgid "" -"Pass `robot:=…` on this ROS 2 launch as usual. Robot USD selection is " -"done by opening the asset under FaSim `robots/` (robot_usds) in Isaac — " -"not a FaSim `run.sh` flag." +"Open the robot USD under `robots/` (robot_usds) or a scene under " +"`environment/`. Operation 5 must already be done before a stage that uses" +" `ROS2ControlLaunch`." msgstr "" -"照常在这条 ROS 2 launch 上传 `robot:=…`。机器人 USD 是在 Isaac 里打开 FaSim " -"`robots/`(robot_usds)下的资产 — 不是 FaSim `run.sh` 的参数。" +"打开 `robots/`(robot_usds)下的机器人 USD,或 `environment/` 下的场景。使用 " +"`ROS2ControlLaunch` 的舞台,必须已经做过第 5 项。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:52 +#: 8fb0c603822f4ade8178ec4f8e89e5be +msgid "Topic bridge (`hardware:=isaac`)" +msgstr "Topic bridge (`hardware:=isaac`)" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:55 -#: 80c52fd12ffc406e9492b669e5a6e84e -msgid "5. Verify Connection" -msgstr "5. 验证连接" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:54 +#: 693c4016ee744196b2e442bc53bd5c92 +msgid "In another terminal, after the workspace overlay:" +msgstr "另一个终端里,先 source 工作空间:" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 2300b6ee66704540a836c910ca128433 -msgid "ros2 topic list" -msgstr "ros2 topic list" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:56 +#: d787220750c34b6ba452c602f6e266fd +msgid "" +"source ~/open-deploy-ws/install/setup.bash\n" +"ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone " +"hardware:=isaac" +msgstr "" +"source ~/open-deploy-ws/install/setup.bash\n" +"ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone " +"hardware:=isaac" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:61 -#: 3e2d0271e71049e682d8dcdde9bfead8 +#: 2371d1891a004e238b0b42290936fcc3 msgid "" -"Acone `hardware:=isaac` uses `topic_based_ros2_control/TopicBasedSystem` " -"with `/isaac/joint_command` and `/isaac/joint_states` " -"([xacro](https://github.com/fiveages-sim/robot-descriptions-" -"arx/blob/main/arx_acone_description/xacro/ros2_control/robot.xacro)). Do " -"not expect a stack-wide `/target_pose`." +"`robot:=` is the description key (`_description`). `demo.launch.py` " +"has no namespace argument. Do not append `namespace:=…` on this launch." msgstr "" -"Acone 的 `hardware:=isaac` 使用 " -"`topic_based_ros2_control/TopicBasedSystem`,话题为 `/isaac/joint_command` 和 " -"`/isaac/joint_states`([xacro](https://github.com/fiveages-sim/robot-" -"descriptions-" -"arx/blob/main/arx_acone_description/xacro/ros2_control/robot.xacro))。不要期待全栈通用的" -" `/target_pose`。" +"`robot:=` 是描述包键(`_description`)。`demo.launch.py` " +"没有命名空间参数。这条启动命令上不要再加 `namespace:=…`。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:63 -#: bb62802b1b574cf1b328f4910c11e08a -msgid "USD Assets" -msgstr "USD 资产" +#: 6151d105f627487a82302991b1402293 +msgid "" +"The shared macro [`simulation_hardware.xacro`](https://github.com" +"/fiveages-sim/robot-descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)" +" writes:" +msgstr "" +"共享宏 [`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-" +"descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)" +" 会写入:" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:65 -#: 45f0c17598a84eac98b28cea3169d16c -msgid "" -"FaSim-Isaac uses USD (Universal Scene Description) assets from " -"`robot_usds`:" -msgstr "FaSim-Isaac 使用来自 `robot_usds` 的 USD(Universal Scene Description,通用场景描述)资产:" +#: 5270f899463a40e398e39d13f0d23fb7 +msgid "`joint_commands_topic` = `/isaac/joint_command`" +msgstr "`joint_commands_topic` = `/isaac/joint_command`" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 83f20e7181fa497f9a32738df060b685 -msgid "Path" -msgstr "路径" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:66 +#: 72af61bb61214f3a911e9fb7b71acc77 +msgid "`joint_states_topic` = `/isaac/joint_states`" +msgstr "`joint_states_topic` = `/isaac/joint_states`" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 20854d8afaf0458cb3a9aa0efc0716a3 -msgid "Content" -msgstr "内容" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:68 +#: 380774563cb04f3ea8563061e44124c7 +msgid "" +"Those names have to be the OmniGraph `topicName` on **this** robot. W2’s " +"topic-bridge payload [`W2/payloads/ROS/ros2.usda`](https://github.com" +"/fiveages-sim/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/ros2.usda) publishes `/joint_command` and " +"`/joint_states` instead. If the two sides differ, retarget the xacro " +"`` (or the graph) until `ros2 topic echo` shows the same " +"`sensor_msgs/JointState` names the controller claims. Plugin parameters: " +"[topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md)." +msgstr "" +"这些名字必须是**这台**机器人 OmniGraph 上的 `topicName`。W2 的话题桥载荷 " +"[`W2/payloads/ROS/ros2.usda`](https://github.com/fiveages-sim/fiveages-" +"gen2-robot-usds/blob/main/W2/payloads/ROS/ros2.usda) 发布的是 " +"`/joint_command` 和 `/joint_states`。两边不一致时,改 xacro 的 ``(或改图),直到 " +"`ros2 topic echo` 看到控制器认领的同一组 `sensor_msgs/JointState` " +"名字。插件参数:[topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md)。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:70 +#: bd4d8ca3041446c989c9c3a4824765b3 +msgid "" +"`use_sim_time` follows `hardware` (`isaac` → true) unless you pass " +"`use_sim_time:=true` or `false`." +msgstr "" +"`use_sim_time` 跟随 `hardware`(`isaac` 时为 true),除非你显式传入 " +"`use_sim_time:=true` 或 `false`。" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 72add3fd0e0a433aae69beba518d7eb5 -msgid "`humanoid/FiveAges/Gen1`" -msgstr "`humanoid/FiveAges/Gen1`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 1de358722708464cafa52cb197eaa301 -msgid "Gen1 wheeled-arm USD" -msgstr "Gen1 轮臂 USD" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 3e439010f3c046dda3edd65f2754d020 -msgid "`humanoid/FiveAges/Gen2`" -msgstr "`humanoid/FiveAges/Gen2`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: caec74bbbdd64948af0b6a6964a0497b -msgid "Gen2 wheeled-arm USD" -msgstr "Gen2 轮臂 USD" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 2440cd8931df4038a9bd0f285fb3470e -msgid "`humanoid/FiveAges/Gen3`" -msgstr "`humanoid/FiveAges/Gen3`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: a30b0dcab5a946ae9a4a328fd691afe2 -msgid "Gen3 wheeled-arm USD" -msgstr "Gen3 轮臂 USD" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 8ecb00c294214af9b81e4bb486ee7af2 -msgid "`humanoid/Galbot`" -msgstr "`humanoid/Galbot`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 7a354ce5b06c4eb0aa64e73b5b4756fb -msgid "Galbot mobile manipulator" -msgstr "Galbot 移动操作臂" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 818609f83f4b40f19fb09e3b12557c00 -msgid "`humanoid/Ubtech`" -msgstr "`humanoid/Ubtech`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:57 -#: 692634e53cb948dabc11b7fb40addf27 -msgid "Ubtech humanoid" -msgstr "Ubtech 人形机器人" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:75 -#: bf9cd5a336944de084351d64c8a5e71c -msgid "" -"See [robot_usds reference](../../4-reference/simulation/3-robot_usds.md) " -"for details." -msgstr "详见 [robot_usds 参考](../../4-reference/simulation/3-robot_usds.md)。" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:77 -#: d88d1838dee04925be92227d82341c80 -msgid "Environment Assets" -msgstr "环境资产" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:72 +#: f8477caffdbc47beab48ae43469f1c7c +msgid "Check:" +msgstr "Check:" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:79 -#: cb70216ced4242ad892ced3a784e78a0 -msgid "Scene environments are loaded from:" -msgstr "场景环境从以下位置加载:" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:74 +#: 8bbdd22905c344ca8735adec117fdf84 +msgid "" +"ros2 topic echo /isaac/joint_states --once\n" +"# or the topicName this USD actually publishes" +msgstr "" +"ros2 topic echo /isaac/joint_states --once\n" +"# or the topicName this USD actually publishes" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:80 -#: 95ec3b2e074544108cd4aea058102744 -msgid "`fiveages-env-usds` — Public environment assets" -msgstr "`fiveages-env-usds` — 公开环境资产" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:79 +#: c304fd35f77a4994b6333e6896fecf3e +msgid "" +"A joint command on the matching command topic moves the articulation. " +"There is no stack-wide `/target_pose`." +msgstr "匹配的指令话题上的关节指令会驱动关节体。整栈没有统一的 `/target_pose`。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:81 -#: 2cd952547ce144beb17820f69642246d -msgid "`fa-project-usd` — Internal project-specific scenes (private)" -msgstr "`fa-project-usd` — 内部项目专用场景(私有)" +#: f20f7bc97ff440e09a350089d7740c63 +msgid "In-process driver (`isaac_sim`)" +msgstr "进程内驱动(`isaac_sim`)" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:83 -#: ad774069cb62421c8e4764e29c287047 -msgid "Open the scene USD in Isaac. There is no `./run.sh --env`." -msgstr "在 Isaac 中打开场景 USD。没有 `./run.sh --env`。" +#: b049d9a09e244815a1be9bbc20122fd8 +msgid "" +"Use this when the USD contains `fasim.ros2.nodes.ROS2ControlLaunch` (W2 " +"in-process payload: [`W2/payloads/ROS/fiveages.usda`](https://github.com" +"/fiveages-sim/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/fiveages.usda)). Play runs the graph. The " +"node calls `emit_control`, which sets `hardware=isaac_sim`, passes the " +"ArticulationRoot as `isaac_prim_path`, and starts the controller manager " +"inside Isaac." +msgstr "" +"USD 含有 `fasim.ros2.nodes.ROS2ControlLaunch` 时用这条(W2 " +"进程内载荷:[`W2/payloads/ROS/fiveages.usda`](https://github.com/fiveages-sim" +"/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/fiveages.usda))。播放会跑这张图。节点调用 " +"`emit_control`,把 `hardware` 设为 `isaac_sim`,把 ArticulationRoot 传成 " +"`isaac_prim_path`,并在 Isaac 内部启动控制器管理器。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:85 -#: 09eb7681b3b14691aea81d96ac76f3f6 -msgid "Hardware Interface" -msgstr "驱动层" +#: b35c19dc5ca74eeca2e63b16dc62fd1b +msgid "" +"You still need a description package whose ros2_control xacro includes " +"`simulation_hardware_plugin` for `isaac_sim` ([robot_common_launch " +"README](https://github.com/fiveages-sim/robot-descriptions-" +"common/blob/main/robot_common_launch/README.md)). The graph inputs are " +"`robot`, `mode` (`demo`, `split_body`, `full_body`), `type`, and optional" +" `namespace`, `infoFile`, `arms`. Empty `robot` reads the USD `Robot` " +"variant; that string must be the description package stem." +msgstr "" +"描述包的 ros2_control xacro 仍须为 `isaac_sim` 包含 " +"`simulation_hardware_plugin`([robot_common_launch " +"README](https://github.com/fiveages-sim/robot-descriptions-" +"common/blob/main/robot_common_launch/README.md))。图的输入是 " +"`robot`、`mode`(`demo`、`split_body`、`full_body`)、`type`,以及可选的 " +"`namespace`、`infoFile`、`arms`。`robot` 为空时读取 USD 的 `Robot` " +"变体;该字符串必须是描述包名去掉 `_description` 的词干。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:87 -#: 1ea90b0d0f6d436cb193a1441f3a1f3c +#: 1dc5843e037a43ee81473e5c64544453 +msgid "On Play, confirm:" +msgstr "播放后确认:" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: 620f72fd424a42cfa12fa8d6998adf64 msgid "" -"The `hardware:=isaac` parameter uses the topic-based hardware interface " -"that bridges Isaac Sim physics to ROS 2 control. Plugin `` names " -"(`joint_commands_topic`, `initialize_commands_from_state`, …): " -"[topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md)." +"ros2 control list_controllers\n" +"ros2 topic echo /joint_states --once\n" +"ros2 topic hz /clock" msgstr "" -"`hardware:=isaac` 使用基于话题的驱动层,把 Isaac Sim 物理接到 ROS 2 control。插件 `` " -"名(`joint_commands_topic`、`initialize_commands_from_state` " -"等):[topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md)。" +"ros2 control list_controllers\n" +"ros2 topic echo /joint_states --once\n" +"ros2 topic hz /clock" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 -#: 2897a53848b44ef69d4b85c02d591fea -msgid "Verification" -msgstr "验证" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:91 -#: 81cec6e38a164d329572bca05e40ba9a -msgid "Isaac Sim window (or Headless Streaming) is running from `./run.sh`" -msgstr "Isaac Sim 窗口(或 Headless Streaming)已由 `./run.sh` 启动" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:92 -#: 0959a796c0624c319d764bcd76459b62 -msgid "ROS 2 topics from Isaac appear in `ros2 topic list`" -msgstr "来自 Isaac 的 ROS 2 话题出现在 `ros2 topic list` 中" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:93 -#: e343aabcfa3a456ba7fea5bb71fbeddc -msgid "Robot responds to joint commands" -msgstr "机器人响应关节指令" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:94 -#: ad179c93203842f48c9776ee9feca4e1 -msgid "Sensor data (if configured) publishes to ROS 2" -msgstr "传感器数据(如已配置)发布到 ROS 2" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:96 -#: 198e3b5ea15f45df874b02f36f544381 -msgid "Troubleshooting" -msgstr "故障排除" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:98 -#: 8de5726cdbf64e5f97454891ba9a5626 -msgid "Isaac Sim fails to launch" -msgstr "Isaac Sim 启动失败" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:100 -#: 0e92aad92fc34c23b55e5b4f017abcb5 -msgid "" -"Confirm `ISAACSIM_DIR` (default `~/isaacsim`) contains the launch scripts" -" named in `config/fa_sim.conf` (`isaac-sim.sh`, `isaac-sim.newton.sh`, " -"`isaac-sim.streaming.sh`)" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:95 +#: d65473e70a124196a654760ad422c5f4 +msgid "" +"`/joint_states` here is the controller’s `joint_state_broadcaster`, not " +"the topic-bridge pair. `/clock` should tick near the physics rate. Arm " +"degrees of freedom are not also bridged on `/isaac/joint_command`." msgstr "" -"确认 `ISAACSIM_DIR`(默认 `~/isaacsim`)包含 `config/fa_sim.conf` 中的启动脚本(`isaac-" -"sim.sh`、`isaac-sim.newton.sh`、`isaac-sim.streaming.sh`)" +"这里的 `/joint_states` 是控制器的 `joint_state_broadcaster`,不是话题桥那一对。`/clock` " +"应接近物理频率。手臂自由度不会再桥到 `/isaac/joint_command`。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:97 +#: 8ac769d5dba648b49d78f1202d24c3e5 +msgid "" +"`namespace` on the graph (empty for one robot) is how a second " +"articulation gets `//controller_manager`. It is not a " +"`demo.launch.py` argument. Frame ids stay `world`, `odom`, and " +"`base_link` / `base_footprint`. See the reference for TF and for " +"`infoFile`." +msgstr "" +"图上的 `namespace`(单机器人时为空)用来给第二台关节体分配 `//controller_manager`。它不是 " +"`demo.launch.py` 的参数。帧 id 仍是 `world`、`odom`,以及 `base_link` / " +"`base_footprint`。TF 和 `infoFile` 见参考页。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:99 +#: 8a33165605924d36928ee29fead83cf8 +msgid "" +"Whole-body mode needs the private [ocs2-wbc-" +"controller](https://github.com/fiveages-sim/ocs2-wbc-controller) " +"submodule. To hold a mobile base, keep the description’s " +"`mobile_base_tcp` info and send `BASE_LOCK`. A `full_body` graph with " +"`infoFile` set to a `fixed_base` info file has no virtual chassis degree " +"of freedom for that lock, and arm enable can sit in " +"`WAITING_FOR_ENABLE_POLICY`." +msgstr "" +"全身模式需要私有子模块 [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2" +"-wbc-controller)。要按住移动底盘,保留描述包的 `mobile_base_tcp` info,并发送 " +"`BASE_LOCK`。`full_body` 图把 `infoFile` 设成 `fixed_base` info " +"时,这次锁定没有虚拟底盘自由度,手臂使能可能停在 `WAITING_FOR_ENABLE_POLICY`。" #: ../../source/2-how_to/2-simulation/4-isaac_sim.md:101 -#: 66c65d7a1e2845aeb410ee3fc9a26a00 -msgid "" -"Set `ISAACSIM_DIR` in `config/fa_sim.local.conf` if Isaac is not at " -"`~/isaacsim`" -msgstr "若 Isaac 不在 `~/isaacsim`,在 `config/fa_sim.local.conf` 中设置 `ISAACSIM_DIR`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:102 -#: 7b2af47ca2134c628815ad31bb71b3fb -msgid "Verify GPU drivers: `nvidia-smi`" -msgstr "验证 GPU 驱动:`nvidia-smi`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:103 -#: 7c4233753c694ac49bcbb9cca3340be6 -msgid "Check Isaac Sim logs in `~/.nvidia-omniverse/logs/`" -msgstr "查看 Isaac Sim 日志:`~/.nvidia-omniverse/logs/`" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:105 -#: a5912506930e45629a323f54bc021fcb -msgid "No ROS 2 topics" -msgstr "没有 ROS 2 话题" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:107 -#: 2aed3c4893724f5285d3314eb7bf31be -msgid "Verify the ROS 2 bridge extension is enabled in Isaac Sim" -msgstr "确认 Isaac Sim 中已启用 ROS 2 桥接扩展" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:108 -#: ef2a41c6794549a1acb25aaddb39d54a -msgid "Check domain ID matches between Isaac and ROS 2" -msgstr "确认 Isaac 与 ROS 2 的 Domain ID 一致" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:109 -#: 121a1e1e7724470481c4ba02911be229 -msgid "Restart `./run.sh` and the ROS 2 launch" -msgstr "重启 `./run.sh` 和 ROS 2 launch" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:111 -#: 684d3f21c7f3467586c650b4eb409d1a -msgid "USD asset not found" -msgstr "找不到 USD 资产" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:113 -#: 96151598155c4df1a8928fbd286acb80 -msgid "" -"Re-run `./init.sh` operation 1 and select the needed submodules " -"(including `robots`)." -msgstr "再跑 `./init.sh` 操作 1,勾选需要的子模块(包括 `robots`)。" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:115 -#: e737b1b5c6e24a1f8fc27ef9bd3480f3 -msgid "Simulation runs slowly" -msgstr "仿真运行缓慢" - -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:117 -#: 0a692151e78e475c96d41a762554cd09 -msgid "Reduce rendering quality in Isaac Sim settings" -msgstr "在 Isaac Sim 设置中降低渲染质量" +#: c71c8d6d190142cfb05a58ce57bb1847 +msgid "What to open" +msgstr "打开什么" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:118 -#: cf1580b731e4405e9379f092746d0ba9 -msgid "Use `./run.sh` menu **Headless Streaming** for non-visual testing" -msgstr "非可视化测试请用 `./run.sh` 菜单的 **Headless Streaming**" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: f97cd87bdee6428d8934bec924751c28 +msgid "Tree" +msgstr "Tree" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:119 -#: d826e5eda13a429fa50136e13301dea4 -msgid "Check GPU memory usage" -msgstr "检查 GPU 显存占用" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: 4c7c30b88b6448d9868b7d5344749334 +msgid "Content" +msgstr "内容" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:121 -#: 516dac2ca4124e63b8270b1f8dfc30b5 -msgid "Next Steps" -msgstr "下一步" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: f1f8487d9e504ee38261e1ea53aa2d2c +msgid "`robots/` → [robot_usds](https://github.com/fiveages-sim/robot_usds)" +msgstr "`robots/` → [robot_usds](https://github.com/fiveages-sim/robot_usds)" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:123 -#: 81290d0dedbe40e9a1db80c622b93ba8 -msgid "[robot_usds reference](../../4-reference/simulation/3-robot_usds.md)" -msgstr "[robot_usds 参考](../../4-reference/simulation/3-robot_usds.md)" +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: 3da7a164f6b642d1a8e266bed4c83b68 +msgid "Robot USD" +msgstr "机器人 USD" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:124 -#: 0d278f0305534ecaa191a9a243b36189 +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: 0f244b453992468d86533b7225c89d50 +msgid "`environment/fiveages_env/`" +msgstr "`environment/fiveages_env/`" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: 482d7522ba65470484472c8ed3cb958d +msgid "Public scenes" +msgstr "公开场景" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: 241830ef098042b6975e313ce00d948c +msgid "" +"`environment/fa-project-usd/` → [fa-project-usd](https://github.com" +"/fiveages-sim/fa-project-usd)" +msgstr "" +"`environment/fa-project-usd/` → [fa-project-usd](https://github.com" +"/fiveages-sim/fa-project-usd)" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: f2faa12706f8469ab46f26b9b75e56f7 +msgid "Project scenes (private; needs access)" +msgstr "项目场景(私有,需要权限)" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: b286e97b7db74bc69992d30e89503bc9 +msgid "`environment/artvip-usd/`" +msgstr "`environment/artvip-usd/`" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:89 +#: dad5a37648db4207b6d068c9145adf55 +msgid "ArtVIP components" +msgstr "ArtVIP 组件" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:110 +#: 3b11356336294c2c87de52e02fc9c816 +msgid "" +"Gen labels and brand folders: [robot_usds " +"reference](../../4-reference/simulation/3-robot_usds.md)." +msgstr "代际标签和品牌目录:[robot_usds 参考](../../4-reference/simulation/3-robot_usds.md)。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:112 +#: 2042d970511a477e8b539ff081ba4305 +msgid "When it fails" +msgstr "打不开时" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:114 +#: 9baa9c8fd26645ceaca0be6ef8a12a54 +msgid "" +"**Isaac does not start.** `ISAACSIM_DIR` must contain the launchers named" +" in `config/fa_sim.conf` (`isaac-sim.sh`, `isaac-sim.newton.sh`, `isaac-" +"sim.streaming.sh`, `isaac-sim.newton.streaming.sh`). `nvidia-smi` shows a" +" GPU. Logs: `~/.nvidia-omniverse/logs/`." +msgstr "" +"**Isaac 起不来。** `ISAACSIM_DIR` 里要有 `config/fa_sim.conf` 点名的启动器(`isaac-" +"sim.sh`、`isaac-sim.newton.sh`、`isaac-sim.streaming.sh`、`isaac-" +"sim.newton.streaming.sh`)。`nvidia-smi` 能看到 GPU。日志在 `~/.nvidia-" +"omniverse/logs/`。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:116 +#: d6a3afc4b83a4bfc8024e00dcc21ce27 +msgid "" +"**No ROS 2 topics after Play.** Domain id and `RMW_IMPLEMENTATION` match " +"the sourced workspace. Topic bridge: the graph’s `topicName` matches the " +"xacro. In-process: operation 5 is installed and Isaac was restarted; the " +"stage’s `ROS` variant is the fiveages payload, not the topic-bridge " +"payload." +msgstr "" +"**播放后没有 ROS 2 话题。** 域 id 和 `RMW_IMPLEMENTATION` 要与已 source 的工作空间一致。话题桥:图的" +" `topicName` 与 xacro 一致。进程内:第 5 项已安装并且 Isaac 已重启;舞台的 `ROS` 变体是 fiveages " +"载荷,而不是话题桥载荷。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:118 +#: 6bfd06c9d34d49d3a5239c07c5abbce7 +msgid "" +"**Motion finishes much too fast.** On the in-process payload, `/clock` " +"comes from the on-demand `ROS_Clock` graph (`OnPhysicsStep`), which is " +"already how W2 `fiveages.usda` is wired. The topic-bridge `ros2.usda` " +"still publishes the clock from `OnPlaybackTick`. Fix the clock source " +"before editing joint gains. Mechanism: [FaSim-Isaac " +"reference](../../4-reference/simulation/2-fasim_isaac.md)." +msgstr "" +"**运动结束得太快。** 进程内载荷上,`/clock` 来自按需的 `ROS_Clock` 图(`OnPhysicsStep`),W2 的 " +"`fiveages.usda` 已经这样接。话题桥的 `ros2.usda` 仍从 `OnPlaybackTick` " +"发时钟。先改时钟来源,再考虑关节增益。机制:[FaSim-Isaac " +"参考](../../4-reference/simulation/2-fasim_isaac.md)。" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:120 +#: 0b75e41d73054ee99f4d59d334032786 +msgid "Next" +msgstr "Next" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:122 +#: 37c84783707f4a0da910d8a815ca32f2 msgid "[FaSim-Isaac reference](../../4-reference/simulation/2-fasim_isaac.md)" msgstr "[FaSim-Isaac 参考](../../4-reference/simulation/2-fasim_isaac.md)" -#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:125 -#: 8501b1c23f834d9893c12955c7731f26 +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:123 +#: fff47197c82048008f986f52bf5f65c4 msgid "" -"[Synthetic Data](../7-synthetic_data/0-index.md) — datagen pipeline on " -"Isaac (not Gazebo)" -msgstr "[合成数据](../7-synthetic_data/0-index.md) — Isaac 上的数据采集流水线(不是 Gazebo)" +"[Add a Robot](../6-deployment/10-add_a_robot.md) and the [Day 7 " +"exam](../../0-overview/2-learning_path.md)" +msgstr "" +"[添加机器人](../6-deployment/10-add_a_robot.md) 和 [第 7 " +"天考核](../../0-overview/2-learning_path.md)" + +#: ../../source/2-how_to/2-simulation/4-isaac_sim.md:124 +#: 519d1959b74748b19073cb9bb53e7058 +msgid "[Synthetic Data](../7-synthetic_data/0-index.md)" +msgstr "[Synthetic Data](../7-synthetic_data/0-index.md)" #~ msgid "NVIDIA Omniverse Launcher installed" #~ msgstr "NVIDIA Omniverse Launcher installed" @@ -472,10 +606,10 @@ msgstr "[合成数据](../7-synthetic_data/0-index.md) — Isaac 上的数据采 #~ msgstr "Isaac Sim installed via Omniverse" #~ msgid "4. Launch ROS 2 Side" -#~ msgstr "4. Launch ROS 2 Side" +#~ msgstr "4. 启动 ROS 2 侧" #~ msgid "In a new terminal:" -#~ msgstr "In a new terminal:" +#~ msgstr "在新终端中:" #~ msgid "Check Omniverse Launcher for updates" #~ msgstr "Check Omniverse Launcher for updates" @@ -622,3 +756,256 @@ msgstr "[合成数据](../7-synthetic_data/0-index.md) — Isaac 上的数据采 #~ msgid "Driver layer" #~ msgstr "驱动层" +#~ msgid "Run robot demos with NVIDIA Isaac Sim for high-fidelity simulation." +#~ msgstr "使用 NVIDIA Isaac Sim 运行高保真仿真机器人演示。" + +#~ msgid "" +#~ "Use **FaSim-Isaac** `./init.sh` and " +#~ "`./run.sh`. Path and version live in " +#~ "that repo’s config; CLI flags are " +#~ "those named in its README." +#~ msgstr "" +#~ "使用 **FaSim-Isaac** 的 `./init.sh` 和 " +#~ "`./run.sh`。路径和版本写在该仓库配置里 — 不要写死某一个 Isaac " +#~ "次版本号,也不要发明 CLI 参数。" + +#~ msgid "NVIDIA Isaac Sim binary installed (GPU + matching NVIDIA drivers)" +#~ msgstr "已安装 NVIDIA Isaac Sim 二进制(GPU 及匹配的 NVIDIA 驱动)" + +#~ msgid "ROS 2 Jazzy workspace" +#~ msgstr "ROS 2 Jazzy 工作空间" + +#~ msgid "Steps" +#~ msgstr "步骤" + +#~ msgid "1. Clone FaSim-Isaac" +#~ msgstr "1. 克隆 FaSim-Isaac" + +#~ msgid "2. Initialize" +#~ msgstr "2. 初始化" + +#~ msgid "./init.sh" +#~ msgstr "./init.sh" + +#~ msgid "What the script does (FaSim README):" +#~ msgstr "脚本做什么(FaSim README):" + +#~ msgid "" +#~ "**Operation 1** — initialize submodules " +#~ "listed in `.gitmodules` / " +#~ "`submodules_visibility.conf` (`public` selected by" +#~ " default; `private` needs access). Re-" +#~ "runs are additive." +#~ msgstr "" +#~ "**操作 1** — 初始化 `.gitmodules` / " +#~ "`submodules_visibility.conf` 中的子模块(默认勾选 `public`;`private`" +#~ " 需要权限)。多次运行是追加的。" + +#~ msgid "./run.sh" +#~ msgstr "./run.sh" + +#~ msgid "" +#~ "What the script does: optional CPU " +#~ "governor, optional Zenoh router if " +#~ "`RMW_IMPLEMENTATION=rmw_zenoh_cpp`, then an " +#~ "interactive menu — **PhysX** / " +#~ "**Newton** / **Headless Streaming**. There " +#~ "is no `./run.sh --robot` or `./run.sh" +#~ " --headless`." +#~ msgstr "" +#~ "脚本做什么:可选 CPU 调频、若 `RMW_IMPLEMENTATION=rmw_zenoh_cpp`" +#~ " 则可选 Zenoh router,然后是交互菜单 — **PhysX** " +#~ "/ **Newton** / **Headless Streaming**。没有 " +#~ "`./run.sh --robot` 或 `./run.sh --headless`。" + +#~ msgid "" +#~ "Path/version overrides: copy " +#~ "`config/fa_sim.local.template.conf` → " +#~ "`config/fa_sim.local.conf` and set `ISAACSIM_DIR`" +#~ " / `ISAAC_SIM_DEFAULT_VERSION`. Env also " +#~ "works: `ISAACSIM_DIR=/path ./run.sh`." +#~ msgstr "" +#~ "路径/版本覆盖:复制 `config/fa_sim.local.template.conf` → " +#~ "`config/fa_sim.local.conf`,设置 `ISAACSIM_DIR` / " +#~ "`ISAAC_SIM_DEFAULT_VERSION`。环境变量也可以:`ISAACSIM_DIR=/path " +#~ "./run.sh`。" + +#~ msgid "" +#~ "Pass `robot:=…` on this ROS 2 " +#~ "launch as usual. Robot USD selection " +#~ "is done by opening the asset under" +#~ " FaSim `robots/` (robot_usds) in Isaac " +#~ "— not a FaSim `run.sh` flag." +#~ msgstr "" +#~ "照常在这条 ROS 2 launch 上传 `robot:=…`。机器人 " +#~ "USD 是在 Isaac 里打开 FaSim " +#~ "`robots/`(robot_usds)下的资产 — 不是 FaSim `run.sh`" +#~ " 的参数。" + +#~ msgid "5. Verify Connection" +#~ msgstr "5. 验证连接" + +#~ msgid "ros2 topic list" +#~ msgstr "ros2 topic list" + +#~ msgid "" +#~ "Acone `hardware:=isaac` uses " +#~ "`topic_based_ros2_control/TopicBasedSystem` with " +#~ "`/isaac/joint_command` and `/isaac/joint_states` " +#~ "([xacro](https://github.com/fiveages-sim/robot-" +#~ "descriptions-" +#~ "arx/blob/main/arx_acone_description/xacro/ros2_control/robot.xacro))." +#~ " Do not expect a stack-wide " +#~ "`/target_pose`." +#~ msgstr "" +#~ "Acone 的 `hardware:=isaac` 使用 " +#~ "`topic_based_ros2_control/TopicBasedSystem`,话题为 " +#~ "`/isaac/joint_command` 和 " +#~ "`/isaac/joint_states`([xacro](https://github.com/fiveages-sim" +#~ "/robot-descriptions-" +#~ "arx/blob/main/arx_acone_description/xacro/ros2_control/robot.xacro))。不要期待全栈通用的" +#~ " `/target_pose`。" + +#~ msgid "USD Assets" +#~ msgstr "USD 资产" + +#~ msgid "" +#~ "FaSim-Isaac uses USD (Universal Scene" +#~ " Description) assets from `robot_usds`:" +#~ msgstr "" +#~ "FaSim-Isaac 使用来自 `robot_usds` 的 " +#~ "USD(Universal Scene Description,通用场景描述)资产:" + +#~ msgid "Path" +#~ msgstr "路径" + +#~ msgid "`humanoid/FiveAges/Gen1`" +#~ msgstr "`humanoid/FiveAges/Gen1`" + +#~ msgid "Gen1 wheeled-arm USD" +#~ msgstr "Gen1 轮臂 USD" + +#~ msgid "`humanoid/FiveAges/Gen2`" +#~ msgstr "`humanoid/FiveAges/Gen2`" + +#~ msgid "Gen2 wheeled-arm USD" +#~ msgstr "Gen2 轮臂 USD" + +#~ msgid "`humanoid/FiveAges/Gen3`" +#~ msgstr "`humanoid/FiveAges/Gen3`" + +#~ msgid "Gen3 wheeled-arm USD" +#~ msgstr "Gen3 轮臂 USD" + +#~ msgid "`humanoid/Galbot`" +#~ msgstr "`humanoid/Galbot`" + +#~ msgid "Galbot mobile manipulator" +#~ msgstr "Galbot 移动操作臂" + +#~ msgid "`humanoid/Ubtech`" +#~ msgstr "`humanoid/Ubtech`" + +#~ msgid "Ubtech humanoid" +#~ msgstr "Ubtech 人形机器人" + +#~ msgid "" +#~ "See [robot_usds " +#~ "reference](../../4-reference/simulation/3-robot_usds.md) for " +#~ "details." +#~ msgstr "详见 [robot_usds 参考](../../4-reference/simulation/3-robot_usds.md)。" + +#~ msgid "Scene environments are loaded from:" +#~ msgstr "场景环境从以下位置加载:" + +#~ msgid "`fiveages-env-usds` — Public environment assets" +#~ msgstr "`fiveages-env-usds` — 公开环境资产" + +#~ msgid "`fa-project-usd` — Internal project-specific scenes (private)" +#~ msgstr "`fa-project-usd` — 内部项目专用场景(私有)" + +#~ msgid "Open the scene USD in Isaac. There is no `./run.sh --env`." +#~ msgstr "在 Isaac 中打开场景 USD。没有 `./run.sh --env`。" + +#~ msgid "" +#~ "The `hardware:=isaac` parameter uses the " +#~ "topic-based hardware interface that " +#~ "bridges Isaac Sim physics to ROS 2" +#~ " control. Plugin `` names " +#~ "(`joint_commands_topic`, `initialize_commands_from_state`, " +#~ "…): " +#~ "[topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md)." +#~ msgstr "" +#~ "`hardware:=isaac` 使用基于话题的驱动层,把 Isaac Sim 物理接到" +#~ " ROS 2 control。插件 `` " +#~ "名(`joint_commands_topic`、`initialize_commands_from_state` " +#~ "等):[topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md)。" + +#~ msgid "Verification" +#~ msgstr "验证" + +#~ msgid "Isaac Sim window (or Headless Streaming) is running from `./run.sh`" +#~ msgstr "Isaac Sim 窗口(或 Headless Streaming)已由 `./run.sh` 启动" + +#~ msgid "ROS 2 topics from Isaac appear in `ros2 topic list`" +#~ msgstr "来自 Isaac 的 ROS 2 话题出现在 `ros2 topic list` 中" + +#~ msgid "Robot responds to joint commands" +#~ msgstr "机器人响应关节指令" + +#~ msgid "Sensor data (if configured) publishes to ROS 2" +#~ msgstr "传感器数据(如已配置)发布到 ROS 2" + +#~ msgid "Troubleshooting" +#~ msgstr "故障排除" + +#~ msgid "Isaac Sim fails to launch" +#~ msgstr "Isaac Sim 启动失败" + +#~ msgid "" +#~ "Set `ISAACSIM_DIR` in `config/fa_sim.local.conf` " +#~ "if Isaac is not at `~/isaacsim`" +#~ msgstr "若 Isaac 不在 `~/isaacsim`,在 `config/fa_sim.local.conf` 中设置 `ISAACSIM_DIR`" + +#~ msgid "Verify GPU drivers: `nvidia-smi`" +#~ msgstr "验证 GPU 驱动:`nvidia-smi`" + +#~ msgid "Check Isaac Sim logs in `~/.nvidia-omniverse/logs/`" +#~ msgstr "查看 Isaac Sim 日志:`~/.nvidia-omniverse/logs/`" + +#~ msgid "No ROS 2 topics" +#~ msgstr "没有 ROS 2 话题" + +#~ msgid "Verify the ROS 2 bridge extension is enabled in Isaac Sim" +#~ msgstr "确认 Isaac Sim 中已启用 ROS 2 桥接扩展" + +#~ msgid "Check domain ID matches between Isaac and ROS 2" +#~ msgstr "确认 Isaac 与 ROS 2 的 Domain ID 一致" + +#~ msgid "Restart `./run.sh` and the ROS 2 launch" +#~ msgstr "重启 `./run.sh` 和 ROS 2 launch" + +#~ msgid "USD asset not found" +#~ msgstr "找不到 USD 资产" + +#~ msgid "" +#~ "Re-run `./init.sh` operation 1 and " +#~ "select the needed submodules (including " +#~ "`robots`)." +#~ msgstr "再跑 `./init.sh` 操作 1,勾选需要的子模块(包括 `robots`)。" + +#~ msgid "Simulation runs slowly" +#~ msgstr "仿真运行缓慢" + +#~ msgid "Reduce rendering quality in Isaac Sim settings" +#~ msgstr "在 Isaac Sim 设置中降低渲染质量" + +#~ msgid "Use `./run.sh` menu **Headless Streaming** for non-visual testing" +#~ msgstr "非可视化测试请用 `./run.sh` 菜单的 **Headless Streaming**" + +#~ msgid "Check GPU memory usage" +#~ msgstr "检查 GPU 显存占用" + +#~ msgid "Next Steps" +#~ msgstr "下一步" + diff --git a/locale/zh_CN/LC_MESSAGES/2-how_to/6-deployment/10-add_a_robot.po b/locale/zh_CN/LC_MESSAGES/2-how_to/6-deployment/10-add_a_robot.po index f02adf4..a1fd313 100644 --- a/locale/zh_CN/LC_MESSAGES/2-how_to/6-deployment/10-add_a_robot.po +++ b/locale/zh_CN/LC_MESSAGES/2-how_to/6-deployment/10-add_a_robot.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:28+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,12 +21,12 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:1 -#: 7ebd3e0d07074fa7bff2dd52822671e9 +#: 22ec11a8ad504c0d861db1e6a1a46347 msgid "Add a Robot" msgstr "添加机器人" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:3 -#: 57afd137ebdc40a8a076dfe88579f85b +#: ceb9290e2f894b12855713bfaabd1c48 msgid "" "How a new robot enters this stack. Copy an **existing** description " "package and the launch/xacro patterns already in the repo. There is " @@ -37,12 +37,12 @@ msgstr "" "`hardware:=mock`。launch 文件和配置名以该包 README 列出的为准。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:5 -#: 748a2b88375d4281b4634c01d5c88738 +#: 8462e85bd7164b6381f52676fc557521 msgid "Source of truth" msgstr "权威来源" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:8 -#: f5aa1c4bc67f4860b6e8389cedabaf3d +#: 456c16a3fb554a9fac1020b96ce827c5 #, python-brace-format msgid "" "Description layout: an existing `{robot}_description` package (example " @@ -54,7 +54,7 @@ msgstr "" "descriptions-arx/tree/main/arx_acone_description))及其包 README" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:9 -#: af304274968c48f888a9c3c374a17ede +#: 2635e172b13e4dc5bfaf6373780e54fd msgid "" "Umbrella + submodule paths: [robot_descriptions README " "(`main`)](https://github.com/fiveages-" @@ -70,7 +70,7 @@ msgstr "" "sim/robot_descriptions/blob/feature/agilex/README.md)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:10 -#: 328a44ab76fe44a1a5364a33bf995755 +#: efb76501e7014f6d859714a491e0084a msgid "" "Launch / `hardware:=` / EEF: " "[robot_common_launch](../../4-reference/descriptions/2-common.md)" @@ -79,7 +79,7 @@ msgstr "" "末端:[robot_common_launch](../../4-reference/descriptions/2-common.md)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:11 -#: 2d76ab1db82c403082dbedd2aea72b41 +#: 7a6de151a8d8455f83a1d7a906f0675d msgid "" "Workspace init: `./init_repo.sh` in [open-deploy-ws](https://github.com" "/fiveages-sim/open-deploy-ws/blob/main/README.EN.md) + " @@ -92,7 +92,7 @@ msgstr "" "deploy-ws/blob/main/submodules_visibility.conf)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:12 -#: 0e0e046a76df4d42ab4ec113f4250825 +#: 893555e4e46b44d99d9009b49606d5a0 msgid "" "Isaac USD: FaSim-Isaac skill **`isaac-urdf-usda-ocs2`** (folder `USDA-" "OCS2-PhysX-Mujoco`) — [skill](https://github.com/fiveages-sim/FaSim-" @@ -107,7 +107,7 @@ msgstr "" "sim/robot_usds/blob/main/README.md)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:13 -#: eb5942574e8c4c11a74a3bea8496e993 +#: 260e203000224409a45620a3e651a826 msgid "" "Description-side Cursor skills: **`robot_descriptions` branch " "`feature/agilex`** — [`.cursor/skills/README.md`](https://github.com" @@ -124,12 +124,12 @@ msgstr "" "`main` 上也没有。agilex 索引目前**只有** `split-chassis-glb`。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:16 -#: 84e4010aac2c400a82ce9f0ee5ed49be +#: 889cf562d3064ffc8e94485bc5495d5d msgid "1. ROS description package" msgstr "1. ROS 描述包" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:18 -#: 83eb7729351c4acdb4eedd6f68eb08d2 +#: dc718165b5d94f9c8c3d9b5fb068909a msgid "" "Public brand trees live as submodules under " "[robot_descriptions](https://github.com/fiveages-sim/robot_descriptions) " @@ -143,12 +143,12 @@ msgstr "" "descriptions/`。不要递归 init。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:20 -#: fc6e97064c614c51809ec7c376214080 +#: 4952b2e9782e44e2a4b515a60d3d7414 msgid "Copy a real package. Acone (from that repo) looks like:" msgstr "复制真实的包。Acone(该仓库)大致是:" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: d2d89a56e22b46f6a8c2afec4af651de +#: ea6e5a8fde364f6d9c6bc8a2ab6fe76c #, python-brace-format msgid "" "arx_acone_description/\n" @@ -182,7 +182,7 @@ msgstr "" "└── meshes/" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:38 -#: 4fe0c6b2d0284f9090dff8302753b510 +#: 039ef892af544e9da7788a21e575a8e5 #, python-brace-format msgid "" "Launch key is `robot:=` where the package is `{key}_description` " @@ -194,7 +194,7 @@ msgstr "" " 默认是 `cr5`。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:40 -#: b7629289f9614094b4abdb0e28cb66dc +#: 48097d6622d84124b84033b360692967 msgid "" "`hardware:=` values that exist in Acone xacro / common launch: " "`mock_components` (default), `gz`, `isaac`, `real`. There is **no** " @@ -211,7 +211,7 @@ msgstr "" "[arx-ros2-control](https://github.com/fiveages-sim/arx-ros2-control))。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:42 -#: 0c61c301f16f4c87a8190a3eea7ffc67 +#: 7a32e01bf98b48de81e7215b60c724b0 #, python-brace-format msgid "" "OCS2 files the controller actually loads: " @@ -227,17 +227,17 @@ msgstr "" " URDF 由同一套 xacro 经 `robot_common_launch` 生成,不是静态 `urdf/*.urdf`。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:44 -#: bd42695da6894a40a1f889ef0f55ade3 +#: 277d4caa996d48688418779417e8ffcc msgid "EEF / FT / TCP: `type` / `left_type` / `right_type` (not `gripper:=`)." msgstr "末端 / 力传感器 / TCP:`type` / `left_type` / `right_type`(不是 `gripper:=`)。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:46 -#: b7d3d7515300402e828494a887c5999c +#: 9a3f3115e9dc4fa4938984837e4c55aa msgid "Chassis / swerve / `collider:=simple` (`feature/agilex` skill)" msgstr "底盘 / 舵轮 / `collider:=simple`(`feature/agilex` skill)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:48 -#: d01e9aad90ed45e1b9c076abfc04bddb +#: f7c19ab707ac4ba0a2becef837712bdb msgid "" "On **`feature/agilex` only**, the skills index currently lists one skill:" " **`split-chassis-glb`** ([SKILL.md](https://github.com/fiveages-" @@ -251,33 +251,33 @@ msgstr "" "glb/SKILL.md))。该 skill 的规范示例是 `rokae_inex_description`。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:50 -#: b1d35e67c5bd4e09b12d50b157af4c57 +#: 169c4d8b941b408ba2ec5787bd97e4d4 msgid "What it does (overview; follow the skill for the full procedure):" msgstr "它做什么(概览;完整步骤以 skill 为准):" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:52 -#: 08077298fade4a1f826d81231e2bdf7b +#: ee96b9493bb8424084926d7e74da9288 msgid "" "Split one assembled chassis GLB into `chassis` / `steer` / `wheel` meshes" " with joint-ready origins" msgstr "把一个装配好的底盘 GLB 拆成 `chassis` / `steer` / `wheel` 网格,原点已对齐关节" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:53 -#: bc5f371528564ea5851cc0d3401760e7 +#: b83fe5959f07418f8bfe9966c1960777 msgid "" "Write swerve xacro (reuse one steer + one wheel at `fl` `fr` `rl` `rr`; " "right modules yaw 180°, no mesh reflect)" msgstr "写舵轮 xacro(在 `fl` `fr` `rl` `rr` 复用同一套 steer + wheel;右侧模块 yaw 180°,不镜像网格)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:54 -#: fad3a2b9b5e649f2a6e6e108d777e788 +#: 6e9075bdd7c54cbd98a3803b86c7f06c msgid "" "Add `collider:=simple` boxes from **glTF-node** AABBs (not raw accessor " "min/max)" msgstr "用 **glTF 节点** AABB 加 `collider:=simple` 盒子(不是 accessor 的原始 min/max)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:56 -#: 80f68c301a1843dba7869c0a6f69e9b1 +#: e0d132bdbaaf449089862cb9afd319ce msgid "" "How to add more skills under `.cursor/skills/`: the same [skills " "README](https://github.com/fiveages-" @@ -294,7 +294,7 @@ msgstr "" "`split-chassis-glb`。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:58 -#: d196a81787cb48ebba19a1d34b041471 +#: 33c406c1291c49dea61430dd34bae386 msgid "" "**Package layout / submodules:** [README on `main`](https://github.com" "/fiveages-sim/robot_descriptions/blob/main/README.md) for the shared " @@ -311,71 +311,71 @@ msgstr "" "sim/robot_descriptions/blob/feature/agilex/README.md)。该分支目前列出的路径(按原文):" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 6870febe088a4e85a046ff4e3452dea4 +#: 6d977672f3a4419b99f47cd9b9741f62 msgid "Kind" msgstr "类别" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: ae231a4047c843708b09287f1f399dec +#: 20c9c7708b744f70a88bd9dacda192b9 msgid "Path on `feature/agilex`" msgstr "`feature/agilex` 上的路径" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 9b57d138f4374c2c88f6b23f5db70167 d38068de264f487e8c630ce1a66550a1 -#: ee40d19f120548d083e87cebbe8941b0 +#: 233667e3fa3f4f62818d6cd285e29afd 488e1baad90f4b3f90e6649da7cd34e7 +#: 8cb476553e264e449a631a6fb243230c msgid "Mobile manipulator" msgstr "移动操作臂" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 325ae333856f4dd9b2d4128a8d039880 +#: f06b0e46ef4b4595b7a8b0a02b86fd0e msgid "`manipulator/AgileX/cobot_magic_v1_description` (Cobot Magic V1)" msgstr "`manipulator/AgileX/cobot_magic_v1_description`(Cobot Magic V1)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: bcf6946b106d4f0f80cda01e960eadda +#: caf1f25fde7b458f9f346afebe737bc9 msgid "`manipulator/AgileX/split_aloha_description` (Split Aloha)" msgstr "`manipulator/AgileX/split_aloha_description`(Split Aloha)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 6df3b294c21c4747816746d291582f1e +#: 30c0574fe3ef412ea7cad9cd3fe28032 msgid "`manipulator/AgileX/cobot_magic_v2_description` (Cobot Magic V2)" msgstr "`manipulator/AgileX/cobot_magic_v2_description`(Cobot Magic V2)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 15c960bb4c8c4dc8a0d6b2566a8b6ce2 3e5d317609fe4a89a163c6b33eb1c54d -#: b1ea9dcc76f24f74973ddb8e2240eca7 +#: 768f76deaf164fec89147c96cb292ab5 c98c6b49b0404c62b9953d72670ce8cf +#: f3ce683e5d83488981bd4db20150731b msgid "Manipulator" msgstr "操作臂" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 3938cf05b4bb4fb1a1f0c28c037a801c +#: f7b00dd58fe84b75a1880dc1d7026407 msgid "`manipulator/AgileX/piper_description` (Piper; also on `main`)" msgstr "`manipulator/AgileX/piper_description`(Piper;`main` 上也有)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 04a3ea197c534e0cae8693074f2d814b +#: ca33fc9e5a6d42f89dd4530b63daf9d3 msgid "`manipulator/AgileX/nero_description` (Nero)" msgstr "`manipulator/AgileX/nero_description`(Nero)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 678f0ba54a6f4dba9b647ae8c718bd98 +#: e8870ae4ab8c4d0bb8291f7a9d713c14 msgid "`manipulator/AgileX/open_nero_description` (Open Nero)" msgstr "`manipulator/AgileX/open_nero_description`(Open Nero)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: 89d51240f06e4d068450da54cf2fe452 +#: 02ed8669b983493db7dfdb53a70fd725 msgid "Wheel humanoid" msgstr "轮式人形" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:22 -#: d36e098e5c704516847ca3dea16d32e7 +#: 6d77be51cd51413d92ac0055dd97e265 msgid "" "`humanoid/Rokae/rokae_inex_description` (INEX; `split-chassis-glb` " "canonical)" msgstr "`humanoid/Rokae/rokae_inex_description`(INEX;`split-chassis-glb` 规范例)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:70 -#: 21258f4fdf9c4d01ad30d81ef5f43d7b +#: 434721d457514c0cba31b821277194c6 msgid "" "`main` still lists AgileX Aloha at " "`manipulator/AgileX/agilex_aloha_description` and does **not** have the " @@ -386,7 +386,7 @@ msgstr "" "`.cursor/skills` 目录。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:72 -#: bae6b8b3ac9a4218aa5ed53285e81f96 +#: 7fc92ab785aa4a3e9e65284f12cf2415 msgid "" "**Taku** (Dyna / DVT1) is also in-tree on `feature/agilex` at " "[`humanoid/Dyna/taku_description`](https://github.com/fiveages-" @@ -415,22 +415,22 @@ msgstr "" "配置](../../1-getting_started/3-open_deploy_ws.md)。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:74 -#: 47660bb3d3754618ad90111601d11760 +#: 090b1f35b9db4dc395c5a1b384a27a5c msgid "2. Wire it into a deploy workspace" msgstr "2. 接到部署工作区" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:76 -#: cdec88ab406c42448c34b8d31f983d9c +#: ca9589ca0c934e31868aacc1aafa64a3 msgid "In `open-deploy-ws`:" msgstr "在 `open-deploy-ws` 中:" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:78 -#: 0ba4736190464bb0a8b819c83b1e4f26 +#: 7232fb56c77f4be2b076929f7e0b4e00 msgid "`./init_repo.sh` so nested modules match `submodules_visibility.conf`." msgstr "`./init_repo.sh`,让嵌套模块与 `submodules_visibility.conf` 一致。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:79 -#: c50c0ffc973a4132ba4129b442b73b53 +#: 69275d2bc84249e48005f3c884fb8eac msgid "" "If you added a **new** nested submodule: add the Git submodule on the " "parent, then one pipe line `parent_dir|relative_path|public` or `private`" @@ -441,7 +441,7 @@ msgstr "" "[子模块可见性](../../3-concepts/6-submodules_visibility.md)。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:80 -#: 2c512e3982b8475583da1ebcccedc841 +#: f3605fc3ec1c4bb8a6c5016a7608606e msgid "" "`colcon build --symlink-install`. Lean branches (`arx-lift2s`, `panthera-" "ht`): prefer **`./quick_start.sh`** (it sources `install/setup.bash` " @@ -454,7 +454,7 @@ msgstr "" "上,colcon 之后在启动终端 `source install/setup.bash`(标准 ROS overlay;没有额外环境脚本)。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:82 -#: 0f02c96dafe3485cbcaa21b9f80b570f +#: 49c5f0e75be342ec920d8a3c95f06e0b msgid "" "[robot-descriptions-arx README](https://github.com/fiveages-sim/robot-" "descriptions-arx/blob/main/README.md) also shows adding the brand repo as" @@ -468,7 +468,7 @@ msgstr "" "ws` 里优先用部署工作区的 init 脚本。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:84 -#: 95ef412964e1440785b4eb823248017e +#: b3f5b2ed04e642598d00ebc218381d13 msgid "" "Controllers already in [arms_ros2_control](https://github.com/fiveages-" "sim/arms_ros2_control): `ocs2_arm_controller` `demo.launch.py` / " @@ -482,7 +482,7 @@ msgstr "" "overlay 之后):" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:86 -#: bad44aa9d1534b0aab10a5ff70b1c9d0 +#: fa2ec4aa0c164aacb352d7e01dee389c msgid "" "ros2 launch robot_common_launch manipulator.launch.py robot:=arx_acone\n" "ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone" @@ -491,19 +491,19 @@ msgstr "" "ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:91 -#: 770bf8bec9d3448498b400bc25950b1c +#: f53c3bc961db4c7e9158fe1829ce550f msgid "" "Launch files and hardware-interface class names come from the package you" " copied and its vendor HI README." msgstr "launch 文件和驱动层类名来自你复制的那个包及其厂商 HI README。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:93 -#: 05353520864244caa98323a590d168e2 +#: 7d5951c41b9543e28eb751923b4cb18b msgid "3. Isaac USD (FaSim-Isaac skill)" msgstr "3. Isaac USD(FaSim-Isaac skill)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:95 -#: 33593973b55f4cef8341408b12abef75 +#: 9ead549c5eab4194be1c224be07fd8be msgid "" "Isaac import is still the FaSim-Isaac skill **`isaac-urdf-usda-ocs2`** " "(not the description-side `split-chassis-glb` skill):" @@ -512,7 +512,7 @@ msgstr "" "chassis-glb` skill):" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:97 -#: e36967a258ba49cb9623b390b55d2533 +#: 3842dd55c9ad471394436abb78e10e3b msgid "" "Skill file: [`.cursor/skills/USDA-OCS2-PhysX-" "Mujoco/SKILL.md`](https://github.com/fiveages-sim/FaSim-" @@ -523,7 +523,7 @@ msgstr "" "Isaac/blob/main/.cursor/skills/USDA-OCS2-PhysX-Mujoco/SKILL.md)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:98 -#: 48db5d8efbea426682bc22fb46cf10a6 +#: 39f73e3776da454b8e50e8671c73939c msgid "" "Other skills in that folder: `fasim-robot-mujoco-physics`, `fasim-" "dexhand-asset`, `fasim-rg75-pad-convert`, `fasim-usd-bake-scale`" @@ -532,29 +532,29 @@ msgstr "" "rg75-pad-convert`、`fasim-usd-bake-scale`" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:100 -#: ed285328fd4f46758be6141defe112a4 +#: d7ccd06757824df2bfe25e85c00ee2f2 msgid "" "What that skill covers (overview; follow the skill for the full " "procedure):" msgstr "该 skill 覆盖的内容(概览;完整步骤以 skill 为准):" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:102 -#: 6aabe54407d24ab09c62922057dad4ab +#: 8dce08716cb54b6495b7af3ac0d18d08 msgid "Split / expand URDF or xacro; record mount poses." msgstr "拆分 / 展开 URDF 或 xacro;记录安装位姿。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:103 -#: a2b3785b9647444ea38fd75727c0e5b8 +#: 258f9f0e89bf4bc5b6e1519853990523 msgid "Isaac 5: Import URDF → USD. Isaac 6: Asset Transformer → USDA." msgstr "Isaac 5:Import URDF → USD。Isaac 6:Asset Transformer → USDA。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:104 -#: ac8be109dbdf452da5eee06853c3d2a1 +#: 667adc4e9f524afea5ab3d54d78ab1be msgid "Robot Assembler (child → parent; one articulation root)." msgstr "Robot Assembler(子 → 父;一个 articulation root)。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:105 -#: 37afd5d3d0e04efa91ab39847dfc520e +#: 936bc78bd1cd45548a0ddf289940f37d #, python-brace-format msgid "" "Root `variantSets` + **local** adapter payloads " @@ -564,16 +564,19 @@ msgstr "" "payload(`payloads/Physics/{none,physics,physx,mujoco}.usda` 等)。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:106 -#: f7eb6f1b38d44151a24d8447c9e6a739 +#: 191f46c0ffe84f919f1344fa343bfbe9 msgid "" -"PhysX vs Newton/MuJoCo layers kept separate; host side " -"`topic_based_ros2_control` + `hardware:=isaac`." +"PhysX vs Newton/MuJoCo layers kept separate. Connect ROS 2 with one path:" +" host `hardware:=isaac` (`TopicBasedSystem`) **or** a `ROS2ControlLaunch`" +" payload that sets in-process `isaac_sim`. Do not bridge the same joints " +"on both." msgstr "" -"PhysX 与 Newton/MuJoCo 层分开;主机侧 `topic_based_ros2_control` + " -"`hardware:=isaac`。" +"PhysX 与 Newton/MuJoCo 层分开保留。ROS 2 只接一条路径:宿主机 " +"`hardware:=isaac`(`TopicBasedSystem`),**或**由 `ROS2ControlLaunch` 载荷设置进程内 " +"`isaac_sim`。同一批关节不要两套一起桥。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:108 -#: 4c0098aa3a154941b281786c7cacd0ee +#: 3bb177a7376b466d9c4b956c5bb385f7 msgid "" "Asset layout: [robot_usds README](https://github.com/fiveages-" "sim/robot_usds/blob/main/README.md) (`robots/manipulators/…`, " @@ -588,35 +591,44 @@ msgstr "" "Sim](../2-simulation/4-isaac_sim.md)。" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:110 -#: 11c21e9b111340c1bd520004e8ace0ea +#: 923cda68e16a491b9b1c2d83e2ae0faa msgid "Related" msgstr "创建 PR" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:112 -#: 46f41edfa5ab4ed3a74a2422c99db8cc +#: 8a2cfd3670af463493eb35338b83d3f7 msgid "[ros2_control in This Stack](../../3-concepts/1-ros2_control_here.md)" msgstr "[ros2_control 在本项目中](../../3-concepts/1-ros2_control_here.md) — 理解控制架构" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:113 -#: bee338802d014465bc16c6d54effcec9 +#: ee4542dd1a74490dbf240135ddf8dce5 msgid "[Workspace Layout](../../3-concepts/2-workspace_layout.md)" msgstr "[工作区布局](../../3-concepts/2-workspace_layout.md)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:114 -#: 547cd2e28038492f94a0788d758a7980 +#: 6fdc46bd378f4bf3aca7a22175290166 msgid "[robot_common_launch](../../4-reference/descriptions/2-common.md)" msgstr "[robot_common_launch](../../4-reference/descriptions/2-common.md)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:115 -#: 30416e3e06f0476cba2f9c3e68fe22c1 +#: fa822df2c6404e12a84269222343ca31 msgid "[Go to Real Hardware](9-go_real_hardware/0-index.md)" msgstr "[部署到真实机器人](9-go_real_hardware/0-index.md)" #: ../../source/2-how_to/6-deployment/10-add_a_robot.md:116 -#: 5f6bf28db5f54a7e9a517992274dbd20 +#: 4398cce467ee4914a3a461dcd9e84069 msgid "[Developer guide](../../5-developer/0-index.md)" msgstr "[开发者指南](../../5-developer/0-index.md) — 贡献规范" +#: ../../source/2-how_to/6-deployment/10-add_a_robot.md:117 +#: 77b70b9d050240f0af582d656a0049d0 +msgid "" +"[Day 7 exam](../../0-overview/2-learning_path.md) — one new robot in " +"FaSim, mock then sim" +msgstr "" +"[第 7 天考核](../../0-overview/2-learning_path.md):在 FaSim 里接入一款新机器人,先 mock " +"再仿真" + #~ msgid "" #~ "robot_description_newrobot/\n" #~ "├── CMakeLists.txt\n" @@ -1173,3 +1185,11 @@ msgstr "[开发者指南](../../5-developer/0-index.md) — 贡献规范" #~ "不要编造 `robot_description_newrobot/display.launch.py` 或 " #~ "`NewRobotHardwareInterface` C++ 桩。" +#~ msgid "" +#~ "PhysX vs Newton/MuJoCo layers kept " +#~ "separate; host side `topic_based_ros2_control` " +#~ "+ `hardware:=isaac`." +#~ msgstr "" +#~ "PhysX 与 Newton/MuJoCo 层分开;主机侧 " +#~ "`topic_based_ros2_control` + `hardware:=isaac`。" + diff --git a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/0-index.po b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/0-index.po index 36269ee..5d80510 100644 --- a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/0-index.po +++ b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/0-index.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-07 01:47+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,74 +21,76 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/2-how_to/7-synthetic_data/0-index.md:1 -#: 719d1f94c144470685eb08e4980d1ac5 +#: ad9752ef3f284e1585c72b2c9aea0d3d msgid "Synthetic Data" msgstr "合成数据" #: ../../source/2-how_to/7-synthetic_data/0-index.md:3 -#: 6f796a5defa448d496fc62728f25a06e +#: d7eefde3279a407d9bac9b2ff3cf8b8e msgid "" "This chapter is the **Isaac Sim datagen pipeline**: USD scenes → ROS 2 " "interface → task-queue orchestration → LeRobot recording / export." msgstr "本章讲的是 **Isaac Sim 数据采集流水线**:USD 场景 → ROS 2 接口 → 任务队列编排 → LeRobot 录制 / 导出。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:5 -#: 6fe66dbabb914b66a7ce68d2a65a6d20 +#: 432ffd354388472fb23b134075397465 msgid "" "This How-To category is the Isaac datagen pipeline, not Gazebo or teleop." " Reference pages stay the source of APIs; this chapter only explains " "**how the pieces connect**." -msgstr "这是操作指南中的合成数据大类,讲的是 Isaac 数据采集流水线,不是 Gazebo 或遥操作。API 仍以参考页为准;本章只说明**各部分如何衔接**。" +msgstr "" +"这是操作指南中的合成数据大类,讲的是 Isaac 数据采集流水线,不是 Gazebo 或遥操作。API " +"仍以参考页为准;本章只说明**各部分如何衔接**。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:7 -#: 8d6944b619594c5f8a37b6953fe884a0 -msgid "Documented branches" -msgstr "文档对应分支" +#: c0f317f17f654157b9fb27b6af2aca28 +msgid "Documented revisions" +msgstr "文档修订" #: ../../source/2-how_to/7-synthetic_data/0-index.md:10 -#: 2f38f4f8e0144a7c812b2b917c70c6b6 +#: 562b9d8d29364a04a05338cce02c82b9 msgid "" "[robot_action_composer](https://github.com/fiveages-" -"sim/robot_action_composer/tree/feature/dex-grasp-generator) `@ feature" -"/dex-grasp-generator`" +"sim/robot_action_composer) `main`" msgstr "" "[robot_action_composer](https://github.com/fiveages-" -"sim/robot_action_composer/tree/feature/dex-grasp-generator) `@ feature" -"/dex-grasp-generator`" +"sim/robot_action_composer) 的 `main`" #: ../../source/2-how_to/7-synthetic_data/0-index.md:11 -#: a3e945da86f444809c75789a9aa31cdc +#: d10c9020628a4a418ba88b196833b134 msgid "" -"[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2/tree/feature" -"/sim-grasp-datagen) `@ feature/sim-grasp-datagen`" +"[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) `main` " +"(`feature/sim-grasp-datagen` merged in [#10](https://github.com/fiveages-" +"sim/lerobot_ros2/pull/10))" msgstr "" -"[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2/tree/feature" -"/sim-grasp-datagen) `@ feature/sim-grasp-datagen`" +"[lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) 的 " +"`main`(`feature/sim-grasp-datagen` 已在 [#10](https://github.com/fiveages-" +"sim/lerobot_ros2/pull/10) 合入)" #: ../../source/2-how_to/7-synthetic_data/0-index.md:13 -#: 8a7c9b8dec894a0fbfe1077eba39c82c -msgid "Those branches are newer than `main`. Follow them, not `main`." -msgstr "这些分支比 `main` 新。请跟它们,不要跟 `main`。" +#: f75947455c7a4bc6af85baccab11a6e5 +msgid "`feature/dex-grasp-generator` is no longer a branch." +msgstr "`feature/dex-grasp-generator` 已不再是分支。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:16 -#: d67d8b9e46fd4facb49f1f4e58dd557d +#: 2017ae15295f410b8ef0e4f3033c0c5b msgid "Terminology" msgstr "术语" #: ../../source/2-how_to/7-synthetic_data/0-index.md:19 -#: e89ed800f8de409ba104570f45599ccd +#: 239791eaab3f462694e57746f2251e11 msgid "" "**Humanoid** here means a **wheeled-arm humanoid** (mobile base + arms, " "e.g. FiveAges W2). It does **not** mean a bipedal or footed humanoid." msgstr "这里的 **humanoid** 指 **轮臂人形**(移动底盘 + 手臂,例如 FiveAges W2)。**不是**双足 / 腿足人形。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:22 -#: 852e856ea7764e1291edf4efd7dc70ef +#: 8acac0b07b7b41c3a6206794badc45db msgid "Pipeline" msgstr "流水线" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: ae78b62e8b65427ea572ee018a536fce +#: 0ea943496eaa4dc9a62a6cb789349b4e msgid "" "FaSim-Isaac + robot_usds (+ env / private USD)\n" " ↓ Isaac scene, ROS 2 bridge\n" @@ -107,143 +109,143 @@ msgstr "" "lerobot_ros2 (record_datasets.py → LeRobot dataset on disk)" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 5bd3da3d869748cb89a2f1fe48008f64 +#: e1d3b092a0f74db387731a5529f92da7 msgid "Stage" msgstr "阶段" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 2dd7bc64f5e44cebbc5284d7faabdb89 +#: 16f55888d8c84564879db15cd818a98c msgid "Role in datagen" msgstr "在数据采集中的角色" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 7295bd7372c04a49af2cfe18fceb26fa +#: b6542bac4ae640229d61fd1c8d0de74f msgid "Start here" msgstr "从这里开始" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 7396a6729a7d4a8f83de5ad559cfdfdc +#: a1de637485bb49c2b5b8c8b13c9325b3 msgid "**FaSim-Isaac**" msgstr "**FaSim-Isaac**" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 771e437d10f7400d8134563d76d35d0e +#: 7460563182a0455992734753543d3ced msgid "Isaac Sim line for synthetic scenes. Scripts pull USD and start Sim." msgstr "合成场景的 Isaac Sim 线路。用脚本拉 USD 并启动 Sim。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 14ff87bb056349ad83c5713e9480c747 +#: f3a3a118ba454310a75778dfa5fd7cd2 msgid "[Isaac scenes and USD](1-isaac_scenes.md)" msgstr "[Isaac 场景与 USD](1-isaac_scenes.md)" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: be10eb54a92347279f547f223a97d969 +#: 8f1085750864479498f8fc396984239e msgid "**robot_usds**" msgstr "**robot_usds**" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 5d21e8e393334760a8ed7787b793a582 +#: a605dc1d046a4c9f87b5eef51eb7de06 msgid "Robot USD superproject used by FaSim (`robots/`)." msgstr "FaSim 使用的机器人 USD 超级仓库(`robots/`)。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 3c3f7ba897284731a0a2894d1d23d9fb b4d878d23ed9450b8cb15dde5c39a879 +#: 0aad52e7f2a64b15b4e8f22f14f93746 2111c17a95a3466d906e90a0b5a00782 msgid "same page" msgstr "同页" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 32c80caf945d40fba15a9e1e654a1b39 +#: 9d0605dc8c244d8c97da609adceb914f msgid "**ros2_robot_interface**" msgstr "**ros2_robot_interface**" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 3b023f741b174364852e0d8716c80d79 +#: 9c84c20fd54d4bfba4b9c3c5c1f13cd9 msgid "Python interface used by motion **and** recording." msgstr "运动**和**录制都走的 Python 接口。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 9fc6130b512644b39e6a0188e2224842 +#: 9667405bacf34b22b4f0edb5712c5063 msgid "[Interface and orchestration](2-orchestration.md)" msgstr "[接口与编排](2-orchestration.md)" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 70612f456f5440c0a5cf7945691fc005 +#: 34538341d5b044c1afb95ebb7a376ab3 msgid "**robot_action_composer**" msgstr "**robot_action_composer**" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: d228a84518364d1796b5db391307dbf6 +#: 865f6d298b5e4f5cb0259dc38e4a77d6 msgid "`task_queue` YAML + skill registry; `motion-generation` / `ros2-stack`." msgstr "`task_queue` YAML + 技能注册表;`motion-generation` / `ros2-stack`。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 8f38b33f7a54444fae1f3a05d6b868d9 +#: aa15a1b26b1043859e5f582fd29b014f msgid "**lerobot_ros2**" msgstr "**lerobot_ros2**" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: f8b5181c5dbe4e19bc3d51b33f72d2a1 +#: ea72dfbae5b84931a00e6df57024f3e1 msgid "" "Monorepo that hosts the Isaac example workspace and recording plugins. " "Stop at **record / export**." msgstr "承载 Isaac 示例工作区与录制插件的 monorepo。停在**录制 / 导出**。" #: ../../source/2-how_to/7-synthetic_data/0-index.md:24 -#: 0fc05cb71572402cbb6fd2d59627e1fe +#: aaf9bc35fc804eedaf291f489de1c7e6 msgid "[LeRobot record and export](3-record_export.md)" msgstr "[LeRobot 录制与导出](3-record_export.md)" #: ../../source/2-how_to/7-synthetic_data/0-index.md:42 -#: a7a634a544854472a540efa6c0e8b0fb +#: 862bf28de7604b0883bdb3e441f6c5f8 msgid "In this section" msgstr "本节内容" #: ../../source/2-how_to/7-synthetic_data/0-index.md:52 -#: a5dcc22003a445f59a29fd6872925b7b +#: 28bc3af578de4da79fc1e1bdecb0bf5f msgid "Baseline" msgstr "基线" #: ../../source/2-how_to/7-synthetic_data/0-index.md:54 -#: e639dbdcffec4cd285cac8389e2a17af +#: cc14db5d38c445c49908d2108512c78f msgid "**ROS 2 Jazzy**" msgstr "**ROS 2 Jazzy**" #: ../../source/2-how_to/7-synthetic_data/0-index.md:55 -#: 127e673654ca476ab18f354fa65d2228 +#: a94573aee5d1424985e7fc64d90b6423 msgid "" "**Python 3.12** (same baseline as the lerobot_ros2 / composer READMEs on " -"those branches)" -msgstr "**Python 3.12**(与那些分支上 lerobot_ros2 / composer README 的基线一致)" +"`main`)" +msgstr "**Python 3.12**(与 `main` 上 lerobot_ros2 / composer 的 README 相同基线)" #: ../../source/2-how_to/7-synthetic_data/0-index.md:57 -#: 15384391434049259761f5ed0265182b +#: 7820f924a1f1432b98dceda239d58db5 msgid "Out of scope" msgstr "不在本章范围" #: ../../source/2-how_to/7-synthetic_data/0-index.md:59 -#: 0c8c632718064de8a83222ed802c4390 +#: be747e8b27dd481b9a7acfd0f974a0a8 msgid "This chapter does **not** cover:" msgstr "本章**不**覆盖:" #: ../../source/2-how_to/7-synthetic_data/0-index.md:61 -#: 49f78b8be2584310b8d3e416a7ac7b0f +#: 0ddcba8500704ed7ba99522bb0204c7b msgid "Gazebo" msgstr "Gazebo" #: ../../source/2-how_to/7-synthetic_data/0-index.md:62 -#: 01cc3863da884fd987aec2d184d82a9d +#: aa87fa8580f74b0fab7ce402eb4462ab msgid "ros2-viser or fa-py-libraries" msgstr "ros2-viser 或 fa-py-libraries" #: ../../source/2-how_to/7-synthetic_data/0-index.md:63 -#: 880f330817e24cc3b234598a95b42f63 +#: 3f1a71c2813a4c3aa20cb841e9507d9a msgid "" "Policy **training**, online **inference**, or dataset consumption " "(`examples/IsaacSim/policy_training/train.py`, `inference.py`)" msgstr "策略**训练**、在线**推理**或数据集消费(`examples/IsaacSim/policy_training/train.py`、`inference.py`)" #: ../../source/2-how_to/7-synthetic_data/0-index.md:65 -#: a5285d44fb8241e6bba7007e7c70c9ea +#: ea604b5817f443b29a82d438dfedde20 msgid "" "Package-level APIs: " "[ros2_robot_interface](../../4-reference/python_apps/1-ros2_robot_interface.md)," @@ -253,5 +255,11 @@ msgid "" "Isaac](../../4-reference/simulation/2-fasim_isaac.md), " "[robot_usds](../../4-reference/simulation/3-robot_usds.md)." msgstr "" -"包级 API:[ros2_robot_interface](../../4-reference/python_apps/1-ros2_robot_interface.md)、[robot_action_composer](../../4-reference/python_apps/5-robot_action_composer.md)、[lerobot_ros2](../../4-reference/python_apps/4-lerobot_ros2.md)、[FaSim-Isaac](../../4-reference/simulation/2-fasim_isaac.md)、[robot_usds](../../4-reference/simulation/3-robot_usds.md)。" +"包级 " +"API:[ros2_robot_interface](../../4-reference/python_apps/1-ros2_robot_interface.md)、[robot_action_composer](../../4-reference/python_apps/5-robot_action_composer.md)、[lerobot_ros2](../../4-reference/python_apps/4-lerobot_ros2.md" +")、[FaSim-" +"Isaac](../../4-reference/simulation/2-fasim_isaac.md)、[robot_usds](../../4-reference/simulation/3-robot_usds.md)。" + +#~ msgid "Those branches are newer than `main`. Follow them, not `main`." +#~ msgstr "这些分支比 `main` 新。请跟它们,不要跟 `main`。" diff --git a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/1-isaac_scenes.po b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/1-isaac_scenes.po index 46504b6..ca3fe1d 100644 --- a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/1-isaac_scenes.po +++ b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/1-isaac_scenes.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 02:56+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,19 +21,19 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:1 -#: 8fe13e770a1248319a13a64bec66218c +#: 6af88afd1158441798642bee5513199a msgid "Isaac Scenes and USD" msgstr "Isaac 场景与 USD" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:3 -#: fb33215403da411bb3d21a92f9f26db4 +#: 6528621a31a544a4a9b633857486e2a3 msgid "" "Synthetic datagen in this stack is an **Isaac Sim** line. Gazebo is not " "part of this pipeline." msgstr "本栈的合成数据采集是 **Isaac Sim** 线路。Gazebo 不在这条流水线里。" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:5 -#: e7acae7e57c249a0854fc4db77f5e268 +#: b0d8c9d0cfd94c1b8282b1c6ee8fb22e msgid "" "Scene assets live in **FaSim-Isaac**. Robot USD files are the " "**robot_usds** superproject (FaSim submodule `robots/`). Environment and " @@ -43,12 +43,12 @@ msgstr "" "`robots/`)。环境与私有项目 USD 与这棵树并列,不在它内部。" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:7 -#: 52e13124b28e44c4bbfc1eee6e7d7ee3 +#: 557abe7df66c434fb188fccf1860cce7 msgid "FaSim-Isaac (scene host)" msgstr "FaSim-Isaac(场景宿主)" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:9 -#: 90b70f7c4f884f4db1ff69867e242cb4 +#: 1e2f149064ac4dd6bee614156d194def msgid "" "**Repository:** [fiveages-sim/FaSim-Isaac](https://github.com/fiveages-" "sim/FaSim-Isaac)" @@ -57,7 +57,7 @@ msgstr "" "sim/FaSim-Isaac)" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:11 -#: 9a80491e1d554aa99fbfc62e58cd0f7b +#: 53c63b2d77354fcdaaa463d750ec5eb8 msgid "" "FaSim-Isaac is the one-click Isaac asset workspace: it clones USD " "submodules, can install the Isaac ROS 2 Jazzy overlay, and starts Sim. " @@ -67,7 +67,7 @@ msgstr "" "Sim。优先用脚本,不要手拼目录树。" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:13 -#: 1d41a0947aa14922b436f3d8f8f3d584 +#: 51a6d78387fe4ab1be12f7fbc998e640 msgid "" "git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" "cd FaSim-Isaac\n" @@ -80,72 +80,46 @@ msgstr "" "./run.sh" #: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:20 -#: 35be286cad0f4f29ba83ef9202c37947 -msgid "From the FaSim README:" -msgstr "摘自 FaSim README:" - -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:22 -#: 92f4a761dbdf41b89491cf2a2d0e0442 -msgid "" -"**`./init.sh` operation 1** — initialize submodules listed in " -"`.gitmodules` / `submodules_visibility.conf`. **public** items are " -"selected by default; **private** items are not (need repo access). Re-" -"runs are additive (`update --init` on the selection)." -msgstr "" -"**`./init.sh` 操作 1** — 初始化 `.gitmodules` / `submodules_visibility.conf` " -"里的子模块。**public** 默认勾选;**private** 默认不勾(需要仓库权限)。重复运行是追加(只对勾选项 `update " -"--init`)。" - -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:23 -#: 280c96c4dc894479bc36b369bedc9020 +#: 0b7e4100e4d24c1a8c228ed3a849f0a4 msgid "" -"**`./init.sh` operation 2** — optional **Isaac ROS 2 Jazzy workspace**: " -"download matching Isaac ROS workspaces, extract `jazzy_ws` to " -"`isaac_jazzy_ws/`, install rosdep/colcon deps, build, and append " -"`~/.bashrc`. Version menu queries GitHub stable tags; fallback list in " -"`config/fa_sim.conf` currently includes `6.0.1` / `6.0.0` / `5.1.0`. " -"Override with `ISAAC_SIM_VERSION=… ./init.sh`." +"`./init.sh` menu and `./run.sh` flags: [Isaac " +"Sim](../2-simulation/4-isaac_sim.md). Operation 1 selects submodules " +"(`public` checked, private unchecked until you have access). Operation 4 " +"is the optional Isaac ROS 2 Jazzy overlay. The version menu queries " +"GitHub stable tags; `config/fa_sim.conf` falls back to `6.2.0` / `6.1.0` " +"/ `6.0.1`. Override with `ISAAC_SIM_VERSION=… ./init.sh`. Operation 5 " +"installs `fasim.ros2.nodes` (needed before Play on an in-process " +"`ROS2ControlLaunch` graph)." msgstr "" -"**`./init.sh` 操作 2** — 可选 **Isaac ROS 2 Jazzy 工作空间**:下载匹配的 Isaac ROS " -"workspaces,把 `jazzy_ws` 解到 `isaac_jazzy_ws/`,装 rosdep/colcon 依赖、编译,并写入 " -"`~/.bashrc`。版本菜单查询 GitHub 稳定 tag;`config/fa_sim.conf` 回退列表目前含 `6.0.1` / " -"`6.0.0` / `5.1.0`。可用 `ISAAC_SIM_VERSION=… ./init.sh` 覆盖。" +"`./init.sh` 菜单和 `./run.sh` 参数见 [Isaac " +"Sim](../2-simulation/4-isaac_sim.md)。第 1 项选择子模块(`public` " +"默认勾选,私有项在有权限前不勾)。第 4 项是可选的 Isaac ROS 2 Jazzy 叠加层。版本菜单向 GitHub " +"查询稳定标签;`config/fa_sim.conf` 回退到 `6.2.0` / `6.1.0` / `6.0.1`。可用 " +"`ISAAC_SIM_VERSION=… ./init.sh` 覆盖。第 5 项安装 `fasim.ros2.nodes`(进程内 " +"`ROS2ControlLaunch` 图在播放前需要它)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:24 -#: 12501a3931df4fbfb3a8836a51052209 -msgid "" -"**`./run.sh`** — start Isaac Sim. Default install path is `ISAACSIM_DIR` " -"(`~/isaacsim` unless you copy `config/fa_sim.local.template.conf` → " -"`config/fa_sim.local.conf`). The menu is PhysX / Newton / Headless " -"Streaming." -msgstr "" -"**`./run.sh`** — 启动 Isaac Sim。默认安装路径是 `ISAACSIM_DIR`(`~/isaacsim`,除非复制 " -"`config/fa_sim.local.template.conf` → `config/fa_sim.local.conf`)。菜单为 " -"PhysX / Newton / Headless Streaming。" - -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:26 -#: f834e20bb29e430a916d15537647f5eb +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:22 +#: a4530d4a570449e7a44be06161026531 msgid "" "The datagen example README " "([`examples/IsaacSim/README.md`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/examples/IsaacSim/README.md) on `feature/sim-grasp-datagen`) " -"currently lists Ubuntu 24.04, ROS 2 Jazzy, and Isaac Sim 6.0. Keep " -"path/version in FaSim config rather than editing launch files by hand." +"sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md) on `main`) still " +"lists Ubuntu 24.04, ROS 2 Jazzy, and Isaac Sim 6.0. Keep path and version" +" in FaSim config. The FaSim fallback list above is newer than that 6.0 " +"line." msgstr "" -"数据采集示例 README(`feature/sim-grasp-datagen` 上的 " -"[`examples/IsaacSim/README.md`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/examples/IsaacSim/README.md))目前写的是 Ubuntu 24.04、ROS 2 Jazzy、Isaac" -" Sim 6.0。路径/版本放在 FaSim 配置里,不要手改 launch。" - -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:28 -#: 2c133ad01731424a8b9fe59999fbef86 +"数采示例 README(`main` 上的 [`examples/IsaacSim/README.md`](https://github.com" +"/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md))仍写 " +"Ubuntu 24.04、ROS 2 Jazzy 和 Isaac Sim 6.0。路径和版本以 FaSim 配置为准。上面的 FaSim " +"回退列表比那一行 6.0 更新。" + +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:24 +#: 9dd542c38ef040749b2c1cc5fc43b158 msgid "Layout from that README:" msgstr "该 README 中的布局:" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:30 -#: 01403d126aaa402a8e052e772006099d +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:26 +#: 9c72f3e966c64dcaa5d5664a25108b50 msgid "" "FaSim-Isaac/\n" "├── init.sh\n" @@ -155,7 +129,7 @@ msgid "" "├── environment/\n" "│ ├── fiveages_env/ # → fiveages-env-usds (public scenes)\n" "│ └── fa-project-usd/ # → fa-project-usd (private project USD)\n" -"└── isaac_jazzy_ws/ # created by init.sh operation 2" +"└── isaac_jazzy_ws/ # created by init.sh operation 4" msgstr "" "FaSim-Isaac/\n" "├── init.sh\n" @@ -165,10 +139,10 @@ msgstr "" "├── environment/\n" "│ ├── fiveages_env/ # → fiveages-env-usds (public scenes)\n" "│ └── fa-project-usd/ # → fa-project-usd (private project USD)\n" -"└── isaac_jazzy_ws/ # created by init.sh operation 2" +"└── isaac_jazzy_ws/ # created by init.sh operation 4" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:42 -#: 5125958443204a65827d7e6d972aeb09 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:38 +#: f70bc5b9a9ff4c249c91c01198bdb8d6 msgid "" "Open the target robot USD from `robots/` (robot_usds) in Isaac and run " "the simulation. Enable Isaac’s ROS 2 simulation-control and prim services" @@ -183,20 +157,20 @@ msgstr "" "#setup-ros-2-workspaces) 启用 ROS 2 simulation-control 与 prim " "服务(`/set_simulation_state`、物体位姿 prim service)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:44 -#: 0482f8c855c049f7949a1b198b35a326 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:40 +#: e7644635b9e74e7caf47f4d688ae48f5 msgid "" "Package details: [FaSim-Isaac " "reference](../../4-reference/simulation/2-fasim_isaac.md)." msgstr "包细节:[FaSim-Isaac 参考](../../4-reference/simulation/2-fasim_isaac.md)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:46 -#: fde7bf32c4a945e2b5257e60a85245ab +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:42 +#: 7e322d1f3d9446b8aa31a8b813e434d1 msgid "robot_usds (robot USD only)" msgstr "robot_usds(仅机器人 USD)" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:48 -#: d5ea7f53b3a149eb91444b1038e189cb +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:44 +#: 5625e41645374d48af8144ffb792b0ea msgid "" "**Repository:** [fiveages-sim/robot_usds](https://github.com/fiveages-" "sim/robot_usds)" @@ -204,8 +178,8 @@ msgstr "" "**Repository:** [fiveages-sim/robot_usds](https://github.com/fiveages-" "sim/robot_usds)" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:50 -#: eb2f4ebbdac94ff9bd9e7da5c7063803 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:46 +#: 39603a4e431246ba8b72e8e2ce6a8517 msgid "" "This chapter documents USD **as referenced by robot_usds** (and as the " "FaSim `robots/` submodule). **Primary path:** FaSim `./init.sh` operation" @@ -214,20 +188,20 @@ msgstr "" "本章按 **robot_usds 引用的 USD**(以及作为 FaSim `robots/` 子模块)来写。**主路径:** FaSim " "`./init.sh` 操作 1 初始化该子模块(默认 public 项)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:52 -#: c493caad42f74cebbbb635249532e7c0 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:48 +#: 4efe881b294d48739df47edc348072fa msgid "Manual fallback" msgstr "手动回退" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:55 -#: 00ef13c585fd4002a4d9750792fb1351 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:51 +#: cc47091f05bb4df6986545fa95a16a91 msgid "" "After a plain clone of robot_usds (outside FaSim), submodule directories " "are empty until:" msgstr "若在 FaSim 外单独克隆 robot_usds,子模块目录在以下步骤之前是空的:" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 3f295b461f0e4f96ba852af414dcbb08 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 72a2b3bfbeb44ab3956787663519735d msgid "" "git clone git@github.com:fiveages-sim/robot_usds.git\n" "cd robot_usds\n" @@ -237,73 +211,73 @@ msgstr "" "cd robot_usds\n" "git submodule update --init --recursive" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:64 -#: e8d3b899cff34adab14cbfd7f83c495f +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:60 +#: 4073cb7bf81a409e8a2c556be7582e40 msgid "Git submodules recorded there:" msgstr "其中记录的 Git 子模块:" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: a13efafd499146edb2bfc505b65152cc +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: e7464afeb40f46059f2ec4810ffa55b9 msgid "Path" msgstr "路径" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 565c8dc7e996466b9432600b0f579587 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 80d00a63b1b0448596e1c36fc238fe6f msgid "Upstream" msgstr "上游" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: b467457d3c104014ac80b48b12f60dd7 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 8edee48d038646f2868ecdc74e25583f msgid "`humanoid/FiveAges/Gen1`" msgstr "`humanoid/FiveAges/Gen1`" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 197b03f0161348cdbb135963a63bc4c1 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 0e597dfa11b348208488f9a2fe4cd1be msgid "fiveages-gen1-robot-usds" msgstr "fiveages-gen1-robot-usds" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: d5f79e0848c448c9a20a60cc72b82ce7 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: e52c2741105a4ac38e759ca64e42ade7 msgid "`humanoid/FiveAges/Gen2`" msgstr "`humanoid/FiveAges/Gen2`" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: b04a4b8157c948e0805c114933ba5dbb +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 51dd6d57326741dfb5becc9e3cd4f5be msgid "fiveages-gen2-robot-usds" msgstr "fiveages-gen2-robot-usds" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 12dbc64d6aa84bee8fa443d627560a32 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 87954f3b083d42c9b4482c7f9def3e93 msgid "`humanoid/FiveAges/Gen3`" msgstr "`humanoid/FiveAges/Gen3`" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: bd1b35c3a56340f2aaea448f3c441e11 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 320aa28444f74419bda0219f0e478569 msgid "fiveages-gen3-robot-usds" msgstr "fiveages-gen3-robot-usds" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 7be80d73ab1d40b78a7d55e32dd96ad1 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: d022eac72ee641ac8f5cf8d2ff2ec3ae msgid "`humanoid/Ubtech`" msgstr "`humanoid/Ubtech`" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 3e7d44c00142430986d8a8fa790502bf +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: e13ae2518271494b8811c30901ae25d3 msgid "ubtech-usds" msgstr "ubtech-usds" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 1b5059ca11f74a6eb64bde5d4fb9f2d0 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: f5649cc359d44fefbd0a2aa07bff1295 msgid "`humanoid/Galbot`" msgstr "`humanoid/Galbot`" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: e9e6a6561e2244f682420d88f2f86fb6 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 2d5581f1f8584890863096c4fbcdb6f8 msgid "galbot-usds" msgstr "galbot-usds" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:74 -#: c4eaa8bc32ab4458806cd3009131b1bb +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:70 +#: 003f8396fd404e63b4bccdbe1f6be6fa msgid "" "FaSim `submodules_visibility.conf` marks Galbot **public** and the " "FiveAges Gen\\* / Ubtech trees **private**, so `./init.sh` does not " @@ -314,26 +288,26 @@ msgid "" "manipulators, mobile bases, mobile manipulators, and sensors — browse the" " repo for the current roots." msgstr "" -"FaSim `submodules_visibility.conf`把 Galbot 标成 **public**,FiveAges Gen\\* /" -"Ubtech 树标成 **private**,因此 `./init.sh`默认不勾选" -"FiveAges。Gen1(`fiveages-gen1-robot-usds`)与" -"Gen2(`fiveages-gen2-robot-usds`)的**远端**现已公开;Gen3 仍为私有。**W2R 与 S2R 不在 Gen2" -"USD 仓库中。** robot_usds 树内(非子模块)类别包括夹爪、灵巧手、机械臂、移动底盘、移动机械臂和传感器 — 以仓库当前根目录为准。" - -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:76 -#: ffa0e4d826d84a049284d11626338679 +"FaSim `submodules_visibility.conf`把 Galbot 标成 **public**,FiveAges Gen\\* " +"/Ubtech 树标成 **private**,因此 `./init.sh`默认不勾选FiveAges。Gen1(`fiveages-gen1" +"-robot-usds`)与Gen2(`fiveages-gen2-robot-usds`)的**远端**现已公开;Gen3 仍为私有。**W2R" +" 与 S2R 不在 Gen2USD 仓库中。** robot_usds 树内(非子模块)类别包括夹爪、灵巧手、机械臂、移动底盘、移动机械臂和传感器" +" — 以仓库当前根目录为准。" + +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:72 +#: e9432363d485456182fb898ea9231f78 msgid "" "FiveAges **Gen1 / Gen2 / Gen3** are wheeled-arm USD generations under " "`humanoid/FiveAges/` (README maps Gen1→W1, Gen2→W2/S2). They are not " "bipedal humanoids. URDF status: [FiveAges robot " "descriptions](../../4-reference/descriptions/4-fiveages_umbrella.md)." msgstr "" -"FiveAges **Gen1 / Gen2 / Gen3** 是 `humanoid/FiveAges/`下的轮臂 USD" -"世代(README:Gen1→W1,Gen2→W2/S2)。它们不是双足人形。URDF 状态:[FiveAges" -"机器人描述](../../4-reference/descriptions/4-fiveages_umbrella.md)。" +"FiveAges **Gen1 / Gen2 / Gen3** 是 `humanoid/FiveAges/`下的轮臂 " +"USD世代(README:Gen1→W1,Gen2→W2/S2)。它们不是双足人形。URDF " +"状态:[FiveAges机器人描述](../../4-reference/descriptions/4-fiveages_umbrella.md)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:78 -#: d04609c365184234bb869379d915c209 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:74 +#: 42dc6b5acb5f4587b423bb60d350debe msgid "" "Full tree: [robot_usds " "reference](../../4-reference/simulation/3-robot_usds.md), [USD " @@ -342,35 +316,35 @@ msgstr "" "完整树:[robot_usds 参考](../../4-reference/simulation/3-robot_usds.md)、[USD " "子模块](../../4-reference/simulation/4-usd_submodules.md)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:80 -#: 14d09bb81ed84a2285404b0f2f4eb456 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:76 +#: ec0bf99ea1ef4c6590863308c227b8e5 msgid "Environment and private project USD" msgstr "环境与私有项目 USD" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:82 -#: 9d8db72044f7483990f7bd448eba7539 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:78 +#: 4ea36f7630e1478d9491d9f262daef48 msgid "" "Environment assets are **siblings** of `robots/`, not robot_usds " "submodules." msgstr "环境资产是 `robots/` 的**同级目录**,不是 robot_usds 子模块。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 542bae4a805c4e5bb5bc96876871cda4 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: c532cfacda7844619446cbd1c8359c2a msgid "Tree" msgstr "目录树" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 94e843ed8bbf44139c3ff59180cbbe87 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: b8c98e6d0dc74f78b88afb6886e4e5d6 msgid "Visibility" msgstr "可见性" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: a26370e5bfe4402f8c71b36a46cb1ecd +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 7a4e5f41ed7b4519b3d2515a23e35810 msgid "Role" msgstr "角色" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: fcfd4e3171af46efaf865bb5c1f41ae2 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 8a8fc973edb54c7da9b0b20958f55888 msgid "" "`environment/fiveages_env/` → [fiveages-env-usds](https://github.com" "/fiveages-sim/fiveages-env-usds)" @@ -378,13 +352,13 @@ msgstr "" "`environment/fiveages_env/` → [fiveages-env-usds](https://github.com" "/fiveages-sim/fiveages-env-usds)" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: fe275e62a74e4b36ba9397d7a2fc70f1 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 376442af72ac4144a16d2689867dfab5 msgid "Public" msgstr "公开" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: d8dfcae035dc46afbe6af4c0a86f76e2 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: fa8464e1161b40feb3c1765a817ae368 msgid "" "Shared Isaac scenes: `static/` (tables, shelves, boxes), `moveable/` " "(small objects), `articulation/` (drawers, …), `background/`, `tasks/` " @@ -393,25 +367,25 @@ msgstr "" "共享 Isaac " "场景:`static/`(桌子、货架、箱子)、`moveable/`(小物体)、`articulation/`(抽屉等)、`background/`、`tasks/`(组合任务场景)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: 82cbb83830d44a078aba9ebd86dc286c +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: aa23797267bc4ad0ae08c01755efae0d msgid "`environment/fa-project-usd/` → fa-project-usd" msgstr "`environment/fa-project-usd/` → fa-project-usd" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: a2213ba84deb4aecb8a206252d334deb +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: 7c244c3d332e4492982b8da62dc58c9a msgid "Private" msgstr "私有" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:57 -#: da6256a2069940b18b1205faf7f4af33 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:53 +#: ac147763070145d38f82fb0903ac1555 msgid "" "Project-specific USD used by internal task scenes. `./init.sh` leaves " "this unchecked unless you have access." msgstr "内部任务场景用的项目专用 USD。没有权限时 `./init.sh` 默认不勾选。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:89 -#: 1af00535451a4b7ea698fa563b1c48ea +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:85 +#: 01602fb65ef842ce9e7d51be62774e97 msgid "" "robot_usds README: if you use robot_usds **outside** FaSim, put " "`environment/fiveages_env` next to `robots/` so scene USDs can reference " @@ -420,28 +394,28 @@ msgstr "" "robot_usds README:若在 FaSim **之外**用 robot_usds,把 " "`environment/fiveages_env` 放在 `robots/` 旁边,场景 USD 才能引用。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:91 -#: 8de1fcdaeea043b4960580a08c72e8b1 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:87 +#: 518eee3bad1148a28685acb84116cf4d msgid "" "`fa-project-usd` is a private project scene tree, not a public robot " "model. Product names on this page follow the public robot_usds gallery " "text." msgstr "不要把私有项目 USD 当成公开机器人模型,也不要写本章所依据的公开 robot_usds gallery 文本里没有的产品代号。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:93 -#: 1cf9fc35894948d181a303205dfeabd9 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:89 +#: 3a0cb1e59d0c4008b6d5ede099dc0b31 msgid "" "[Environment assets " "reference](../../4-reference/simulation/5-env_assets.md)." msgstr "[环境资产参考](../../4-reference/simulation/5-env_assets.md)。" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:95 -#: b2c424bfea944ac9b8b4e79ceb2c4c93 +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:91 +#: fdda10d581d94f10a884b1f5a1036047 msgid "Next on the pipeline" msgstr "流水线下一步" -#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:97 -#: fd10dfb276f5434e85c668f9d532a64a +#: ../../source/2-how_to/7-synthetic_data/1-isaac_scenes.md:93 +#: 7640fc05543e4d6f851d341880c48201 msgid "" "With Isaac running and ROS 2 topics/services up, motion and recording " "talk to the robot through **ros2_robot_interface**, orchestrated by " @@ -458,3 +432,54 @@ msgstr "" #~ "USD references resolve." #~ msgstr "在 FaSim 里 `./init.sh` 会替你做。`.gitmodules` 路径相对 robot_usds 根,USD 引用才能解析。" +#~ msgid "From the FaSim README:" +#~ msgstr "摘自 FaSim README:" + +#~ msgid "" +#~ "**`./init.sh` operation 1** — initialize " +#~ "submodules listed in `.gitmodules` / " +#~ "`submodules_visibility.conf`. **public** items are" +#~ " selected by default; **private** items " +#~ "are not (need repo access). Re-" +#~ "runs are additive (`update --init` on" +#~ " the selection)." +#~ msgstr "" +#~ "**`./init.sh` 操作 1** — 初始化 `.gitmodules`" +#~ " / `submodules_visibility.conf` 里的子模块。**public** " +#~ "默认勾选;**private** 默认不勾(需要仓库权限)。重复运行是追加(只对勾选项 `update " +#~ "--init`)。" + +#~ msgid "" +#~ "**`./init.sh` operation 2** — optional " +#~ "**Isaac ROS 2 Jazzy workspace**: " +#~ "download matching Isaac ROS workspaces, " +#~ "extract `jazzy_ws` to `isaac_jazzy_ws/`, " +#~ "install rosdep/colcon deps, build, and " +#~ "append `~/.bashrc`. Version menu queries " +#~ "GitHub stable tags; fallback list in " +#~ "`config/fa_sim.conf` currently includes `6.0.1` " +#~ "/ `6.0.0` / `5.1.0`. Override with " +#~ "`ISAAC_SIM_VERSION=… ./init.sh`." +#~ msgstr "" +#~ "**`./init.sh` 操作 2** — 可选 **Isaac " +#~ "ROS 2 Jazzy 工作空间**:下载匹配的 Isaac ROS " +#~ "workspaces,把 `jazzy_ws` 解到 `isaac_jazzy_ws/`,装 " +#~ "rosdep/colcon 依赖、编译,并写入 `~/.bashrc`。版本菜单查询 GitHub" +#~ " 稳定 tag;`config/fa_sim.conf` 回退列表目前含 `6.0.1` " +#~ "/ `6.0.0` / `5.1.0`。可用 `ISAAC_SIM_VERSION=…" +#~ " ./init.sh` 覆盖。" + +#~ msgid "" +#~ "**`./run.sh`** — start Isaac Sim. " +#~ "Default install path is `ISAACSIM_DIR` " +#~ "(`~/isaacsim` unless you copy " +#~ "`config/fa_sim.local.template.conf` → " +#~ "`config/fa_sim.local.conf`). The menu is PhysX" +#~ " / Newton / Headless Streaming." +#~ msgstr "" +#~ "**`./run.sh`** — 启动 Isaac Sim。默认安装路径是 " +#~ "`ISAACSIM_DIR`(`~/isaacsim`,除非复制 " +#~ "`config/fa_sim.local.template.conf` → " +#~ "`config/fa_sim.local.conf`)。菜单为 PhysX / Newton " +#~ "/ Headless Streaming。" + diff --git a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/2-orchestration.po b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/2-orchestration.po index b119eb2..95ef4b7 100644 --- a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/2-orchestration.po +++ b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/2-orchestration.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-07 02:37+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,12 +21,12 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:1 -#: b41caa057a004c3ab0b2a8f5268950d4 +#: d5c661ed672e4d05befeb2b01085cf0f msgid "Interface and Orchestration" msgstr "接口与编排" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:3 -#: c4a5c975bf5e407ea25e32b0db7aa4a8 +#: 1fad560016074ab4aab236d9b17857a6 msgid "" "After the Isaac USD scene is up, datagen does **not** call OCS2 or Nav2 " "servers from Python by name. YAML `task_queue` blocks resolve to " @@ -38,26 +38,25 @@ msgstr "" "**`ROS2RobotInterface`** 发出。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:5 -#: 6b86db25c51841cba9dc6511b713a88c +#: cd34d27037b64be6a617bdae5bd1147a msgid "" -"APIs below are from [robot_action_composer `@ feature/dex-grasp-" -"generator`](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-generator/README.md) and" -" its `docs/`. YAML `skill:` values are registered names from that README " -"(not a Python `ActionSequence` / `actions.MoveJ` class)." +"APIs below are from [robot_action_composer `main`](https://github.com" +"/fiveages-sim/robot_action_composer/blob/main/README.md) and its `docs/`." +" YAML `skill:` values are registered names from that README (not a Python" +" `ActionSequence` / `actions.MoveJ` class)." msgstr "" -"下列 API 来自 [robot_action_composer `@ feature/dex-grasp-" -"generator`](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-generator/README.md) 及其 " -"`docs/`。不要发明 `ActionSequence` / `actions.MoveJ` 这类类。" +"下面的接口来自 [robot_action_composer `main`](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/README.md) 及其 `docs/`。YAML 里的 " +"`skill:` 是该 README 登记的名字(不是 Python 的 `ActionSequence` / `actions.MoveJ` " +"类)。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:7 -#: bb5b2d70fe164d72b17016e91c246bb7 +#: a37090621e314b089731849411f52ef2 msgid "ros2_robot_interface (motion and recording)" msgstr "ros2_robot_interface(运动与录制)" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:9 -#: c0a95a854bd9406c8c3629d68b9a5959 +#: 327c24e77e6b41ca809bcc42f99c2859 msgid "" "**Repository:** [fiveages-sim/ros2_robot_interface](https://github.com" "/fiveages-sim/ros2_robot_interface)" @@ -66,7 +65,7 @@ msgstr "" "/fiveages-sim/ros2_robot_interface)" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:11 -#: 4515b7624a7449fe99a450c787a927e4 +#: 230128dbf02f4e09a0cb622ec54ceb4e msgid "" "Composer’s README: the pure motion / queue path depends on " "**`ROS2RobotInterface`** (`ctx.interface`), not LeRobot’s `ROS2Robot` " @@ -79,14 +78,14 @@ msgstr "" "类。录制时机器人**运动**仍走同一接口;LeRobot 插件只负责写 episode([下一页](3-record_export.md))。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:13 -#: dcf24ef397d041019c5a3712507a011a +#: 3f01367b5832456d8098cd01286e3f40 msgid "" "Typical install is the lerobot_ros2 script, not a one-off `pip` on system" " Python:" msgstr "典型安装用 lerobot_ros2 脚本,不要在系统 Python 上随手 `pip`:" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: d6af1f53ab2d4e81b9f76a4c26563923 +#: a57903958b2a4ccc9b284f6158900b72 msgid "" "cd lerobot_ros2\n" "./init.sh all-motion # ros2_robot_interface + robot_action_composer" @@ -95,7 +94,7 @@ msgstr "" "./init.sh all-motion # ros2_robot_interface + robot_action_composer" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:20 -#: f9bcda691f93479da9aa89687b039661 +#: 644c77e729f645cfa6e14a24e878426a msgid "" "Reference: " "[ros2_robot_interface](../../4-reference/python_apps/1-ros2_robot_interface.md)," @@ -105,43 +104,41 @@ msgstr "" " 接口操作指南](../3-programming/5-python_interface.md)。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:22 -#: fabb46b13cde4530a7720f0d93523cb9 +#: f72f1a63df3346bb88027b10a0222e6d msgid "robot_action_composer (task_queue + skills)" msgstr "robot_action_composer(task_queue + 技能)" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:24 -#: ac36cfa95c8f4c929bdf58c079641648 +#: 285fab3bea0746d98a09270b6077c05d msgid "" -"**Branch:** [`feature/dex-grasp-generator`](https://github.com/fiveages-" -"sim/robot_action_composer/tree/feature/dex-grasp-generator)" -msgstr "" -"**Branch:** [`feature/dex-grasp-generator`](https://github.com/fiveages-" -"sim/robot_action_composer/tree/feature/dex-grasp-generator)" +"**Revision:** [`main`](https://github.com/fiveages-" +"sim/robot_action_composer)" +msgstr "**修订:** [`main`](https://github.com/fiveages-sim/robot_action_composer)" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:26 -#: ef8d7bc24004476f91edff016b42ee00 +#: c82bb94df1af44f09992562f04e3053e msgid "" "In the lerobot_ros2 monorepo this package is " "`submodules/robot_action_composer`. Two layers:" msgstr "在 lerobot_ros2 monorepo 里这个包是 `submodules/robot_action_composer`。两层:" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: f16af0c4e8fc43aa85fc706e063ddb87 +#: bbd4437911884e928bf86c4e43e8d75d msgid "Layer" msgstr "层" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: d84798b6e93149318876e5af3e613ef5 +#: fddd1a1b13874875b3dddaadf8ee78c5 msgid "Job" msgstr "职责" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 6082e705d6624f68a78d124fd2d550c7 +#: 2496bf4b4ee94f899acdad5592ce3ecb msgid "**`motion_generation`**" msgstr "**`motion_generation`**" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 9adb744e649940b997873c38f67cbc94 +#: 00f0b5817d064d57934804d0a483a996 msgid "" "Geometry → `StageTarget` / `ArmTarget` sequences; " "`execute_stage_sequence` calls `ROS2RobotInterface` (Cartesian, dual-arm," @@ -151,12 +148,12 @@ msgstr "" "`ROS2RobotInterface`(笛卡尔、双臂、MoveJ、夹爪节拍)。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: cb0bd32513844770a3184238a74b39fd +#: 53bc2dc2c5ce4bf4a7f650b2691d96ae msgid "**`task_runtime`**" msgstr "**`task_runtime`**" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 93a1661d9d6d4d7b8c81682ea53dbe1c +#: c0cd3c176e014683b4b4a94d7c78552c msgid "" "`runner.run_task_queue`: connect → FSM → optional Isaac reset → each YAML" " block → `get_skill` → execute. Unknown `skill:` names raise `KeyError` " @@ -166,53 +163,48 @@ msgstr "" "`get_skill` → 执行。未知 `skill:` 名会抛带已注册列表的 `KeyError`。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:33 -#: 737c934079c04707a2b8ad6022318de8 +#: a97c37e26e0d400d8e2c0e9cb4945f06 msgid "" "YAML lives under `robots//task_configs/**/*.yaml` (optional vendor" " grouping `robots///`). Discovery, merge rules, and " "`robot.yaml`: [TASK_CONFIG_YAML.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/TASK_CONFIG_YAML.md), [ROBOT_CONFIG.md](https://github.com" -"/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md)." +"sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md), " +"[ROBOT_CONFIG.md](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md)." msgstr "" -"YAML 在 `robots//task_configs/**/*.yaml`(可选厂商分组 " -"`robots///`)。发现、合并规则与 " +"YAML 在 `robots//task_configs/**/*.yaml`(也可以按厂商分组 " +"`robots///`)。发现、合并规则和 " "`robot.yaml`:[TASK_CONFIG_YAML.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/TASK_CONFIG_YAML.md)、[ROBOT_CONFIG.md](https://github.com" -"/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md)。" +"sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md)、[ROBOT_CONFIG.md](https://github.com" +"/fiveages-sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md)。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:35 -#: 5f5df5e7d46c44fca7ba74d3722f9500 +#: 3e12e1fa995149e6b6406c28f6dd1637 msgid "" "Skill names (examples from the README index; parameters in " "[SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)):" +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)):" msgstr "" "技能名(README 索引中的例子;参数见 [SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)):" +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)):" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: d6c170593ac44dffa997a61965518d24 +#: dab3dfb85b18425a9d62c6698ba366d9 msgid "Category" msgstr "类别" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 3a30275a012a4ee1872e84821ceb40d6 +#: 8f5ac6102ed5401cb20a0dd95d905785 msgid "Registered `skill:` names" msgstr "已注册的 `skill:` 名" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 4e080db42a214df2911e8c3a0a3fe3bb +#: bfe749b875574868983f70c09546235f msgid "Single arm" msgstr "单臂" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: ee1a7ea3316d4615b5cab252472dd35b +#: bf5af2b1dd3d499d9338366a65201b26 msgid "" "`single_arm.pick`, `single_arm.place`, `single_arm.move_to_pose`, " "`single_arm.move_relative`, `single_arm.move_to_object`, " @@ -225,12 +217,12 @@ msgstr "" "`single_arm.drawer.close_push`" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 3952127d32fd4db8902a135dc3656be0 +#: 4fd999d0f27a46719c6f915eee9de7f7 msgid "Dual arm" msgstr "双臂" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 10aa70b9606142dfac850f902a610bf0 +#: 7e340e0c1c64428b93f553a005675024 msgid "" "`dual_arm.carry`, `dual_arm.parallel_pick`, `dual_arm.handover`, " "`dual_arm.place`, `dual_arm.bimanual_align`, `dual_arm.goto_cache_pose`" @@ -239,12 +231,12 @@ msgstr "" "`dual_arm.place`, `dual_arm.bimanual_align`, `dual_arm.goto_cache_pose`" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: d508c054677b47419a7170a821b5614e +#: ab27d5d71ef3401eafa7106355b21d6b msgid "Navigation" msgstr "导航" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: da5f09a00fbc4b2db59144c5463db931 +#: ec2aff99a3504a47ad940169e7a46e94 msgid "" "`nav.navigate_to_pose`, `nav.navigate_to_object`, " "`nav.navigate_relative`, `nav.send_nav_goal`, `nav.wait_nav_arrived`" @@ -253,12 +245,12 @@ msgstr "" "`nav.navigate_relative`, `nav.send_nav_goal`, `nav.wait_nav_arrived`" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 0d6cc8c7f33a428d97acda966fea07c4 +#: 67435e6f4896453092ad35c1976f3a84 msgid "Joint / session / env" msgstr "关节 / 会话 / 环境" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:15 -#: 991ae843d48a466492eef967455b2e9d +#: 47db12c360e741419958cf153cd07b16 msgid "" "`joint.movej_to_config`, `joint.goto_cached_joints`, " "`robot.cache_ee_pose`, `robot.send_mode_command`, " @@ -269,28 +261,37 @@ msgstr "" "`env.randomize_object_local_xyz`, …" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:44 -#: 79aed2be57bb4109905a13e2a2773c64 +#: 18c2d73f48884bed9bf8740232970ea2 msgid "" "Datagen workspace used in the README is **`examples/IsaacSim`** inside " "lerobot_ros2 (contains `robots/`). Robot-specific notes, including " "wheeled-arm **FiveAges W2** dual-arm tasks, are next to those trees (e.g." " [`robots/FiveAges_W2/README.md`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/examples/IsaacSim/robots/FiveAges_W2/README.md))." +"sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/FiveAges_W2/README.md))." +" A [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) " +"project directory can be the workspace instead (`LEROBOT_ROOT` plus that " +"project’s `robot.yaml`). End-effector poses use one of the two frame " +"paths in " +"[robot_action_composer](../../4-reference/python_apps/5-robot_action_composer.md):" +" live TF when `robot.yaml` has no `ee_tip`, or a USD tip→parent chain " +"when `ee_tip` is set." msgstr "" -"README 使用的数据采集工作区是 lerobot_ros2 里的 **`examples/IsaacSim`**(含 " -"`robots/`)。机型说明(含轮臂 **FiveAges W2** 双臂任务)就在那些目录旁(例如 " +"README 里的数采工作区是 lerobot_ros2 内的 **`examples/IsaacSim`**(含 " +"`robots/`)。各机器人说明,包括轮臂 **五纪 W2** 的双臂任务,写在这些目录旁边(例如 " "[`robots/FiveAges_W2/README.md`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/examples/IsaacSim/robots/FiveAges_W2/README.md))。" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/FiveAges_W2/README.md" +"))。[fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) " +"的项目目录也可以当工作区(`LEROBOT_ROOT` 加上该项目的 `robot.yaml`)。末端位姿走 " +"[robot_action_composer](../../4-reference/python_apps/5-robot_action_composer.md)" +" 的两条路径之一:`robot.yaml` 没有 `ee_tip` 时用实时 TF;设置了 `ee_tip` 时用 USD 的尖端到父级链。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:46 -#: 59f066afdd6c402595c61091489057e2 +#: e9bf6b7301274401be574b0e2d8dc066 msgid "Official Nav2, not a custom nav stack" msgstr "官方 Nav2,不是自研导航栈" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:48 -#: 38c55141b1134ef5ac768600ead2e133 +#: 87289bee57214337a436c44779db8d66 msgid "" "Composer **does not implement Nav2 servers**. `nav.*` skills wrap " "**`ROS2RobotInterface`’s Nav2 client API**. Scene-level launch is " @@ -300,28 +301,26 @@ msgstr "" "客户端 API**。场景级 launch 与任务 YAML 分开。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:50 -#: b590bd62483548f2a77dfd8eb479df8b +#: 1bdc11e254dd426c934c6d3705e83d09 msgid "" "From [docs/ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md):" +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md):" msgstr "" "摘自 [docs/ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md):" +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md):" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:52 -#: 08ea0ea56b5b476aaa44611f376c34a7 +#: 4d53d1b105df4f2d8a97856932e99404 msgid "Do **not** put `ros2_stack` inside task-queue YAML." msgstr "**不要**在任务队列 YAML 里写 `ros2_stack`。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:53 -#: dd33bdc8314e476182eac50460199e3d +#: 5873678fb792430797f41471bebd4179 msgid "Merge: `robot.yaml` → `ros2_stack:` then leaf **`.meta/ros2_stack.yaml`**." msgstr "合并:`robot.yaml` → `ros2_stack:`,再叠叶子目录 **`.meta/ros2_stack.yaml`**。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:54 -#: fbfa0d1809d54306b3efecac12f2e312 +#: df3ba33d3cbf49f691316e70d7937331 msgid "" "Motion presets: `ocs2-fullbody` / `ocs2-split-body` / `ocs2-demo` " "(`ocs2_arm_controller` launches)." @@ -330,7 +329,7 @@ msgstr "" "`ocs2-demo`(`ocs2_arm_controller` 的 launch)。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:55 -#: 90871d6f246e4157aeff6942eeefc023 +#: 3d7c6708abbe47f6b990a257e0874dad msgid "" "Navigation: `navigation.profile` `default` or `map_only` expands to " "**`nav2_profile:=…`**. Default launch: `robot_common_launch` / " @@ -344,26 +343,26 @@ msgstr "" "descriptions-common](../../4-reference/descriptions/2-common.md))。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:56 -#: 53322da21138496390efa067f33b4077 +#: ef59f9168a004a8c995dfb940c9a3c67 msgid "" "`navigation.required: auto` starts Nav2 only when the `task_queue` " "contains `nav.*` skills." msgstr "`navigation.required: auto` 仅当 `task_queue` 含 `nav.*` 技能时才启动 Nav2。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:58 -#: 8e8e60bed2ee47429f71830b2050aa86 +#: bec1e514cc26411282d81d70747c4de7 msgid "" "That is the **official Nav2** install/launch already used by the robot " "workspace, not a fiveages-specific planner." msgstr "这就是机器人工作区已经在用的**官方 Nav2** 安装/启动方式,不是 FiveAges 自研规划器。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:60 -#: ddac3146c53445faa38806898f1a78a3 +#: ed50af2e01234534bc414c3c7f7ddfe8 msgid "CLIs (after `./init.sh`)" msgstr "CLI(跑完 `./init.sh` 之后)" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:62 -#: 93890e36fce04d5fbaac1404db5df0b6 +#: c5cbbb0cb2844a288c7667bb91ce4ba3 msgid "" "Console scripts from composer `pyproject.toml`: `motion-generation`, " "`ros2-stack`, `grasp-generation`, `check-isaac-pose`, `check-robot-" @@ -374,59 +373,59 @@ msgstr "" "robot-status`。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:64 -#: 229a21e230d844149dda905d9cae7beb +#: 6273e76cf3aa4c3a97366e155723a1a6 msgid "" "Run from a directory that contains `robots/` (usually " "`examples/IsaacSim`):" msgstr "在包含 `robots/` 的目录下运行(通常是 `examples/IsaacSim`):" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:66 -#: a470e04ba5484cd38fbe0d43ea777f0d +#: b6afc349e8d74b43a8da8b59ef5745c9 msgid "" "cd examples/IsaacSim\n" "\n" "# Scene-level OCS2 + Nav2 (background logs under .ros2_stack//)\n" -"ros2-stack --lang zh launch\n" -"ros2-stack status\n" -"ros2-stack stop\n" +"ros2-stack launch --robot fiveages_w2 --group dex_hand\n" +"ros2-stack status --robot fiveages_w2\n" +"ros2-stack stop --robot fiveages_w2\n" "\n" "# Task queue (dry motion; optional --ensure-ros2-stack)\n" "motion-generation\n" -"motion-generation --robot dobot_cr5 --task-key pick_place --scene default" -"\n" +"motion-generation --robot fiveages_w2 --task-key navigate_and_dex_grasp " +"--scene apple\n" "motion-generation --robot fiveages_w2 --task-key transfer_blade --ensure-" "ros2-stack" msgstr "" "cd examples/IsaacSim\n" "\n" "# Scene-level OCS2 + Nav2 (background logs under .ros2_stack//)\n" -"ros2-stack --lang zh launch\n" -"ros2-stack status\n" -"ros2-stack stop\n" +"ros2-stack launch --robot fiveages_w2 --group dex_hand\n" +"ros2-stack status --robot fiveages_w2\n" +"ros2-stack stop --robot fiveages_w2\n" "\n" "# Task queue (dry motion; optional --ensure-ros2-stack)\n" "motion-generation\n" -"motion-generation --robot dobot_cr5 --task-key pick_place --scene default" -"\n" +"motion-generation --robot fiveages_w2 --task-key navigate_and_dex_grasp " +"--scene apple\n" "motion-generation --robot fiveages_w2 --task-key transfer_blade --ensure-" "ros2-stack" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:80 -#: 2d7c274964c6450b922258fde8d7d0d0 +#: 8256debaa9df4815a7c059b38a37440d msgid "" -"`grasp-generation serve …` is an optional grasp-setup UI on this branch " +"`grasp-generation serve …` is an optional grasp-setup UI " "([GRASP_GENERATION.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/GRASP_GENERATION.md)); it is **not** the recording entry " -"and is **not** ros2-viser." +"sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md)); it is " +"**not** the recording entry and is **not** ros2-viser. The same step " +"inside a task queue is the skill `dex_hand.auto_grasp`." msgstr "" -"`grasp-generation serve …` 是该分支上可选的抓取配置 " -"UI([GRASP_GENERATION.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/GRASP_GENERATION.md));它**不是**录制入口,也**不是** ros2-viser。" +"`grasp-generation serve …` " +"是可选的抓取调试界面([GRASP_GENERATION.md](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md))。它不是录制入口,也不是" +" ros2-viser。任务队列里的同一步是技能 `dex_hand.auto_grasp`。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:82 -#: 3abe89a756364930a9cda566fa12a8a3 +#: 980fae98e71547bfbd2753677e428a92 msgid "" "Isaac entity pose / joint dump helpers (`check-isaac-pose`, `check-robot-" "status`) need the sim and `/get_entity_state` as documented in the " @@ -436,7 +435,7 @@ msgstr "" "composer README 所写的 `/get_entity_state`。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:84 -#: d110e60bc17243d7a8353c018d53c90f +#: 381d67d00ec945f989ed807087589e81 msgid "" "Full CLI flag lists: [robot_action_composer " "reference](../../4-reference/python_apps/5-robot_action_composer.md)." @@ -445,12 +444,12 @@ msgstr "" "参考](../../4-reference/python_apps/5-robot_action_composer.md)。" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:86 -#: 0155a0f0b8c9479d826d41fcb5fe8885 +#: 52f9dca38f404145ababbffed320c2bf msgid "Next on the pipeline" msgstr "流水线下一步" #: ../../source/2-how_to/7-synthetic_data/2-orchestration.md:88 -#: 00b97b961bf6440aa92fe1479df06413 +#: ed3b9fcb67af4ec5a4d5f0d4d90091a2 msgid "" "Recording is an extra on top of this queue: same YAML `task_queue`, plus " "LeRobot plugins. Continue at [LeRobot record and " diff --git a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/3-record_export.po b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/3-record_export.po index c326708..fd471b5 100644 --- a/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/3-record_export.po +++ b/locale/zh_CN/LC_MESSAGES/2-how_to/7-synthetic_data/3-record_export.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-07 01:47+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,12 +21,12 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:1 -#: 72f41bc48d114149a1c7dce8ad6e5ad8 +#: d97044a502ef40a9a6b7c2e03f4b79d6 msgid "LeRobot Record and Export" msgstr "LeRobot 录制与导出" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:3 -#: 8a82c773b38f4cb4a4554b8e2c81752e +#: d5751d5ffdb542f297459ecf4130d00d msgid "" "This page stops at **LeRobot dataset recording / export**. It does not " "document training, online inference, or how a policy consumes the " @@ -34,69 +34,65 @@ msgid "" msgstr "本页停在 **LeRobot 数据集录制 / 导出**。不写训练、在线推理,也不写策略如何消费数据集。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:5 -#: 7ea409517b4546ea88e3c8c861534dff +#: 4d430fada7cb4993901182869cab68b2 msgid "" -"**Monorepo:** [lerobot_ros2 `@ feature/sim-grasp-" -"datagen`](https://github.com/fiveages-sim/lerobot_ros2/tree/feature/sim-" -"grasp-datagen)" +"**Monorepo:** [lerobot_ros2 `main`](https://github.com/fiveages-" +"sim/lerobot_ros2)" msgstr "" -"**Monorepo:** [lerobot_ros2 `@ feature/sim-grasp-" -"datagen`](https://github.com/fiveages-sim/lerobot_ros2/tree/feature/sim-" -"grasp-datagen)" +"**单仓:** [lerobot_ros2 `main`](https://github.com/fiveages-" +"sim/lerobot_ros2)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:7 -#: f9aaaf5f42264ac9a04e523325eec855 +#: 8b123c8312b74b3799898cc664f843e3 msgid "" -"**README:** [README.md on that branch](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/README.md)" +"**README:** [README.md](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/README.md)" msgstr "" -"**README:** [README.md on that branch](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/README.md)" +"**README:** [README.md](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/README.md)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:9 -#: bfc9a2317eb94f72a2f2c967d8050e3c +#: 6c372d68279147d68791c6bfb618be9c msgid "" "Isaac-side shared steps: " "[`examples/IsaacSim/README.md`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/examples/IsaacSim/README.md)." +"sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md)." msgstr "" -"Isaac 侧共用步骤:[`examples/IsaacSim/README.md`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/examples/IsaacSim/README.md)。" +"Isaac 侧的共用步骤:[`examples/IsaacSim/README.md`](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md)。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:11 -#: 4aa24b3f0c8e43ee93270f3d0a1a7846 +#: 5cdfbd1df8a84efd8d5643e911b0dcad msgid "What recording uses" msgstr "录制用到什么" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: cf3111af5aa348c186f3b8686687242a +#: 3c383b308f9943688bf555a4063edecb msgid "Piece" msgstr "组件" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: 33e728c81e7e4d1bb2b9588dd467011e +#: 7bf3fa1c0af841479829a969152a6275 msgid "Role" msgstr "角色" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: a8bfc8c2ddb049cb942853f818dd8e0b +#: 6b407cd998e243969151e9829ded1b19 msgid "`submodules/ros2_robot_interface`" msgstr "`submodules/ros2_robot_interface`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: 8e13563172444581bb1bf397dbe21787 +#: 849a1db436e0420c809f353a912d1ff0 msgid "Motion / state while an episode runs (`robot.ros2_interface`)" msgstr "episode 运行时的运动 / 状态(`robot.ros2_interface`)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: d7078eb25d63432ab5ccf9873b482c27 +#: 6c1873192bed46128fbe5c70be2b27b2 msgid "`submodules/robot_action_composer`" msgstr "`submodules/robot_action_composer`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: 8fc0a5ec65af458ead6f13c3f02f0156 +#: aff98cadf6414d2da98a043acbdbed3d msgid "" "Same `task_queue` skills as dry `motion-generation`; package " "`dataset_recording` + `cli.record_main`" @@ -105,32 +101,32 @@ msgstr "" "`cli.record_main`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: c9dad7a1dd9545368d489d584f4defdc +#: f667b821f21d4259aaf6728d65f93e21 msgid "`lerobot_robot_ros2`" msgstr "`lerobot_robot_ros2`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: ad2ec2d684c94297a59bc8234b7e87e8 +#: edd4b69617024fb4a7f4249cc21d115a msgid "LeRobot robot plugin (`ROS2Robot`) that **writes frames**" msgstr "负责**写帧**的 LeRobot 机器人插件(`ROS2Robot`)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: e1827cc8c10442748f7c634c18cfb45b +#: 63489bff69d94f4c8287a8f077058a0f msgid "`lerobot_camera_ros2`" msgstr "`lerobot_camera_ros2`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: 46f883614bf34c08abad17c64bfd7e1b +#: 54aa7611ec174187ae07b9be4ff259d9 msgid "Camera plugin (images for the dataset)" msgstr "相机插件(数据集图像)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: d537d5aa03884b308a3bd1b5079a6765 +#: 303f4aa87f534c028d60b70638c7f4a6 msgid "PyPI `lerobot`" msgstr "PyPI `lerobot`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md -#: 3a18563128cb402dba6f812344e1cb11 +#: 901629bac797458fb646f24358a7f9e8 msgid "" "Dataset container (`LeRobotDataset.create` / `add_frame` / " "`save_episode`). Default pin `lerobot==0.5.1` in `.fa-env.toml`" @@ -139,7 +135,7 @@ msgstr "" "env.toml` 的 `lerobot==0.5.1`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:21 -#: 39b5de6735ed48a2bb7d31fd812d00de +#: 8f8395edf4f444ff8dea01f62f5f923b msgid "" "Composer `pyproject.toml` extra `[recording]` is `lerobot` + `lerobot-" "robot-ros2`. Motion/queue does **not** need it; recording does." @@ -148,7 +144,7 @@ msgstr "" "robot-ros2`。运动/队列**不需要**它;录制需要。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:23 -#: ab03be289ed147f4a65e3f519db56a92 +#: 41527a7c1f0e48a394e8af378086c5f0 msgid "" "`examples/IsaacSim/record_datasets.py` is a thin wrapper: it calls " "`robot_action_composer.cli.record_main.run_record_datasets` with " @@ -159,12 +155,12 @@ msgstr "" "设为该目录。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:25 -#: 795d1a0be84b4ed9b530fd7b809a702d +#: 47645459801a403e887816fb516a9b06 msgid "Install (scripts first)" msgstr "安装(脚本优先)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:27 -#: 990482afa9eb402597f4888a0e0421b4 +#: c6564aa74c38481aae0fc0c4aaa00a90 msgid "" "From the lerobot_ros2 README. **Python 3.12**, ROS 2 Jazzy, " "[uv](https://docs.astral.sh/uv/) recommended." @@ -173,24 +169,24 @@ msgstr "" "[uv](https://docs.astral.sh/uv/)。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:29 -#: f33b806f47cf442b8be6468915a86832 +#: 7ae9540980b74835b795d59fe1f38b28 msgid "" "git clone --recursive git@github.com:fiveages-sim/lerobot_ros2.git\n" "cd lerobot_ros2\n" -"./init.sh all\n" -"# motion / task queue only: ./init.sh all-motion\n" -"# recording plugins (if you skipped all): ./init.sh install-lerobot\n" +"./init.sh all-motion\n" +"# recording / inference (NumPy 2, separate from the grasp env):\n" +"./init.sh install-lerobot\n" "source .venv/bin/activate" msgstr "" "git clone --recursive git@github.com:fiveages-sim/lerobot_ros2.git\n" "cd lerobot_ros2\n" -"./init.sh all\n" -"# motion / task queue only: ./init.sh all-motion\n" -"# recording plugins (if you skipped all): ./init.sh install-lerobot\n" +"./init.sh all-motion\n" +"# recording / inference (NumPy 2, separate from the grasp env):\n" +"./init.sh install-lerobot\n" "source .venv/bin/activate" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:38 -#: 74defa243af648eea15dd43694444eb4 +#: 27b75e47e88e4ccab4cf5f528eedfa7a msgid "" "`./init.sh all` = submodules + env + task orchestration + LeRobot " "plugins. Bare `pip install -e .` at the repo root is not the install " @@ -200,7 +196,7 @@ msgstr "" "不是安装路径。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:40 -#: 5d9f2e0dcb884e0b8f2f70b407a77b63 +#: ee5a4865de494e79baf79794eea472b1 msgid "" "Isaac example README also lists `./init.sh install-plugins` for this " "checkout. Use the **lerobot_ros2** `./init.sh`, not a handwritten PyPI " @@ -210,17 +206,17 @@ msgstr "" "`./init.sh`,不要手写从 PyPI 装 `rclpy`。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:42 -#: f31e78b0b42e4492ad99e965f2ef4085 +#: 960951f953fa41899dd76ff7ec6f8b94 msgid "Before you record" msgstr "录制前" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:44 -#: f2236e60620547cfb092cfd5303bf45b +#: 214488a64ac44345b095384e69278fad msgid "Isaac scene running ([Isaac scenes and USD](1-isaac_scenes.md))." msgstr "Isaac 场景已在跑([Isaac 场景与 USD](1-isaac_scenes.md))。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:45 -#: 8e7f0160cc11421292ab39e5f08cae2b +#: 21a74b3f1d974a9ab406293d298632da msgid "" "ROS 2 control + (if the task has `nav.*`) official Nav2 via `ros2-stack` " "([orchestration](2-orchestration.md))." @@ -229,7 +225,7 @@ msgstr "" "Nav2([编排](2-orchestration.md))。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:46 -#: afc713c7e4cf47999f0da49c6a34136d +#: 7bc9f9729df045999549408edce2f9f9 msgid "" "Example README: Isaac ROS 2 **simulation state** and **prim** services " "enabled so reset / object pose work." @@ -238,19 +234,19 @@ msgstr "" "物体位姿才可用。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:47 -#: db4e652cf3674bd19fc862ce1c9b9f1f +#: 0807be04c44147a6bd9e2a8e186ffb92 msgid "" "Task YAML must include a non-empty **`task_queue`** (the recorder raises " "otherwise)." msgstr "任务 YAML 必须有非空 **`task_queue`**(否则录制器会报错)。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:49 -#: 633ae5a6f4ce46c8a9aba0aa3b47ba8c +#: 297a68c3179241138a5fd99c4be69a1b msgid "Record" msgstr "录制" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:51 -#: 94bd492427244173a0b7b93117014894 +#: 9e84edd4f6f442dfab12669cd4f4ff67 msgid "" "There is **no** `record-datasets` console script in composer " "`pyproject.toml`. The documented entry is the example wrapper:" @@ -259,7 +255,7 @@ msgstr "" "script。文档入口是示例包装:" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:53 -#: f8f850e714e5412cace6a44a43b4c2a9 +#: 0755a8acd5a049069a63dd700b2b2b98 msgid "" "cd examples/IsaacSim\n" "python record_datasets.py" @@ -268,118 +264,116 @@ msgstr "" "python record_datasets.py" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:58 -#: 419c9a77a6914ed686b1002f5f48310c +#: 7ae03d18cb7241b090fd035dcf92eb53 msgid "" "Interactive prompts (from `record_main` / `dataset_recording.launcher` on" -" this branch):" -msgstr "交互提示(该分支 `record_main` / `dataset_recording.launcher`):" +" `main`):" +msgstr "交互提示(来自 `main` 上的 `record_main` / `dataset_recording.launcher`):" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:60 -#: d6c1464afd0b40e082e551feeed7ff44 +#: cb4aed91b3654e43afd6130d1995eb0d msgid "" "Robot (registry under `examples/IsaacSim/robots`; default `dobot_cr5` if " "present)" msgstr "机器人(`examples/IsaacSim/robots` 注册表;若有则默认 `dobot_cr5`)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:61 -#: f8cf3a5c2ca54fd28ef96ab45c88d85f +#: 3a1d3918487e4f51841c2f98ba986081 msgid "Task folder / task (`task_key`)" msgstr "任务文件夹 / 任务(`task_key`)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:62 -#: 46b9f5c6c0a949d4a6b075d5ffdf4045 +#: c03a42b61bc44e7681eed5b94b563732 msgid "Scene preset when the YAML has `scene_presets`" msgstr "YAML 含 `scene_presets` 时的场景预设" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:63 -#: 395356a9e8644e79a1ddc81ff83cb5fd +#: 00647d26649b448b804244e4c6cf0b4b msgid "Record profile" msgstr "录制 profile" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:64 -#: 195fb367d3974b0d8156af128f71ef3d +#: e4a2ccce7d3745d48a181eb31332760d msgid "Episode count" msgstr "episode 数量" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:65 -#: 2723e7c52c5648a39b6cbd76da500458 +#: 13551976644a4ac2a530771b75adadb2 msgid "" "Optional depth+pointcloud at keypoints (only if `lerobot_config.py` has " "depth topics)" msgstr "可选:在关键点采 depth+点云(仅当 `lerobot_config.py` 配了 depth topic)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:66 -#: ef27428eb35f4b1a90b6407ffb3e13f7 +#: ca5828dd474546048e50dfab19c2fbe7 msgid "Optional manual review after return-to-home" msgstr "可选:回 home 后人工检查" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:68 -#: 31075f455a144b648cb3d9ab5c31b6ed +#: 654e869794b748669b888d7bf337ff01 msgid "" "Per-robot `lerobot_config.py` (`LEROBOT_CFG`) is the LeRobot side of the " "split documented in [ROBOT_CONFIG.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md); `robot.yaml` stays the motion/stack " -"side." +"sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md); `robot.yaml` " +"stays the motion/stack side." msgstr "" "每台机器人的 `lerobot_config.py`(`LEROBOT_CFG`)是 " "[ROBOT_CONFIG.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md) 所写拆分的 LeRobot 侧;`robot.yaml` 仍是运动/栈侧。" +"sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md) 所写分工里的 LeRobot " +"一侧;`robot.yaml` 仍是运动 / 栈一侧。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:70 -#: 02811023a010452ea57a929e2acc3bde +#: 8ea27bc4d6b34089b7b36e6974568bb1 msgid "Export (what lands on disk)" msgstr "导出(落盘内容)" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:72 -#: c4b0607d8f1b46c2935dfe7350ec64d5 +#: f2468df071004ebaafb0d5d5aa860793 msgid "On this branch the runner creates a local LeRobot dataset:" msgstr "该分支上 runner 会创建本地 LeRobot 数据集:" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:74 -#: bc793c4bf4fa4151bcbcc4a647b2930c +#: 63f5f547577145f8a59f5223abb65df0 msgid "/lerobot_dataset/grasp_record_/" msgstr "/lerobot_dataset/grasp_record_/" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:78 -#: f4027ce0581d44f69b1b3d1f359e2f21 +#: d7131874e0e943e9a4e6aca5cce633ed msgid "" "via `LeRobotDataset.create` (`repo_id` = that path, `use_videos=True`, " "fps from the record profile). Episodes are `dataset.add_frame` then " -"`dataset.save_episode`. That **is** the export this chapter covers. Do " -"not assume a Hugging Face upload CLI unless a README on this branch says " -"so." +"`dataset.save_episode`. That is the export this chapter covers. A Hugging" +" Face upload CLI is in scope only when the `main` README names one." msgstr "" -"通过 `LeRobotDataset.create`(`repo_id` 为该路径,`use_videos=True`,fps 来自录制 " -"profile)。episode 是 `dataset.add_frame` 再 " -"`dataset.save_episode`。这**就是**本章覆盖的导出。除非本分支 README 写了,否则不要假设有 Hugging " -"Face 上传 CLI。" +"通过 `LeRobotDataset.create`(`repo_id` " +"为该路径,`use_videos=True`,帧率来自录制配置)。回合是先 `dataset.add_frame` 再 " +"`dataset.save_episode`。这就是本章所说的导出。只有 `main` 的 README 写出 Hugging Face " +"上传命令时,那条命令才在范围内。" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:80 -#: 3c3556b0d0634bfe9f62d340836e7c6e +#: 40e687bfa426454f808cfbd506d1a373 msgid "Stop here" msgstr "到此为止" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:82 -#: 35ea9377705d47fb8df9c8dc7f355947 +#: b93859ddd1d4476088d5c9d06003b3f8 msgid "" "Not in this chapter (they exist on the branch; use the example README if " "you need them later):" msgstr "不在本章(分支上有这些文件;以后需要再看示例 README):" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:84 -#: 3102db5d585b47de87d241bf57aaa598 +#: f79c2c9743754b6b989b21779a52f329 msgid "`examples/IsaacSim/policy_training/train.py`" msgstr "`examples/IsaacSim/policy_training/train.py`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:85 -#: 9e52dd608a0d4b1780990219891ef445 +#: e20ffd7cb93f44498abe2b2e4f295b44 msgid "`examples/IsaacSim/inference.py` / `online_infer/`" msgstr "`examples/IsaacSim/inference.py` / `online_infer/`" #: ../../source/2-how_to/7-synthetic_data/3-record_export.md:87 -#: e2f680f9789c444b93cb7a84ecea78e4 +#: 430cda492fbc4ae4b96b56f302671632 msgid "" "Package pages: " "[lerobot_ros2](../../4-reference/python_apps/4-lerobot_ros2.md), " diff --git a/locale/zh_CN/LC_MESSAGES/3-concepts/1-ros2_control_here.po b/locale/zh_CN/LC_MESSAGES/3-concepts/1-ros2_control_here.po index 13afba6..44602bc 100644 --- a/locale/zh_CN/LC_MESSAGES/3-concepts/1-ros2_control_here.po +++ b/locale/zh_CN/LC_MESSAGES/3-concepts/1-ros2_control_here.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-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,24 +21,24 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/3-concepts/1-ros2_control_here.md:1 -#: eecd86f0f26e4d92bbc1c08ed9b0df65 +#: 96be2834c5ee46e38f11d338e99ecf7c msgid "ros2_control in This Stack" msgstr "本技术栈中的 ros2_control" #: ../../source/3-concepts/1-ros2_control_here.md:3 -#: e708c4af0f80423c921c2092bc0a7af1 +#: 8adfadb31b554442b62c2bd10e95ad47 msgid "" "How FiveAges Sim **selects a hardware plugin** and **loads controllers**." " This is not a generic ros2_control tutorial." msgstr "FiveAges Sim **如何选择硬件插件** 以及 **如何加载控制器**。这不是通用 ros2_control 教程。" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 9f91a6f3f5224ac78fac7e9ee025b20a +#: e3683b12287d49728077d38da1ea6563 msgid "Source of truth" msgstr "权威来源" #: ../../source/3-concepts/1-ros2_control_here.md:8 -#: 04c14ffae1844ecd8c3b2154c3924c2c +#: 75318e7f1b52473981953bfaf770f081 msgid "" "Launch `hardware:=` → xacro `ros2_control_hardware_type`: " "[`robot_common_launch` README](https://github.com/fiveages-sim/robot-" @@ -56,7 +56,7 @@ msgstr "" "common/blob/main/robot_common_launch/robot_common_launch/common/launch_arg_utils.py)" #: ../../source/3-concepts/1-ros2_control_here.md:9 -#: 2a4c951f1d5a47f7a1db7ba9fe3cd9e3 +#: 817efda62e9e42f59cf0c638d709b011 msgid "" "Default `hardware` on OCS2 demo: " "[`ocs2_arm_controller/launch/demo.launch.py`](https://github.com" @@ -70,7 +70,7 @@ msgstr "" "sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/launch/demo.launch.py)(`mock_components`)" #: ../../source/3-concepts/1-ros2_control_here.md:10 -#: 9898c33044ff496db14b824748d86b68 +#: 42cf26e9e2024b129871af7a5f3dc741 msgid "" "Plugin names below are from " "[`arx_acone_description/xacro/ros2_control/robot.xacro`](https://github.com" @@ -86,7 +86,7 @@ msgstr "" " `hardware` 键;**真实**插件类以该机器人自己的 xacro 为准。" #: ../../source/3-concepts/1-ros2_control_here.md:13 -#: c23362740b884b11a81059429cbbfb9c +#: 2aca5ea430664de4a93fa76ea1223708 msgid "" "Upstream lifecycle / QoS / “how Controller Manager works in general”: " "[ros2_control documentation](https://control.ros.org/). This stack’s " @@ -96,12 +96,12 @@ msgstr "" "文档](https://control.ros.org/)。不要把那些页面当作本技术栈的话题或参数列表。" #: ../../source/3-concepts/1-ros2_control_here.md:15 -#: 14b87d838f084126966ecb9a35541a7b +#: 2072f7bc0e0649ae9f1c52b8c37f0680 msgid "What the launch argument does" msgstr "该 launch 参数做什么" #: ../../source/3-concepts/1-ros2_control_here.md:17 -#: 3adcfe547dd7490b9c761bd4197ce9a2 +#: 727079a18e2047f88b23eda85e56ac6b msgid "" "`build_xacro_mappings()` always sets `ros2_control_hardware_type` to the " "launch `hardware` string. When `hardware:=gz` it also sets `gazebo` to " @@ -113,7 +113,7 @@ msgstr "" "`hardware:`(串口、`arm_ctrl_mode` 等)**仅**在 `hardware:=real` 时注入。" #: ../../source/3-concepts/1-ros2_control_here.md:19 -#: ef914669645f47ac8960e760eb92b158 +#: 3d189373f9454ab19957a5ca1afd8502 msgid "" "Documented launch values ([robot_common_launch](https://github.com" "/fiveages-sim/robot-descriptions-" @@ -125,47 +125,47 @@ msgstr "" " xacro、`demo.launch.py`):" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 3cfebc27933e4d02aa76ac57dc4eca4e +#: c39230e5052c4ad88bff70c0f7ba5aa4 msgid "`hardware:=`" msgstr "`hardware:=` 参数" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: d8672ff67a9e45e1bbdf5b340d4c0308 +#: f91d9ee20a724322beb7ae7192b7a2f4 msgid "Acone xacro plugin" msgstr "Acone xacro 插件" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 2318bd992f5d42f4835517a9d0b05449 +#: 54b05c411f4f4e038c97711ffa39d7ab msgid "Notes" msgstr "说明" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: c742f54a19eb45449c43a78f28269238 +#: 07f35e9c43e7496ab8ac109f847d14bb msgid "`mock_components` (**default**)" msgstr "`mock_components`(**默认**)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: d5f88d7abe6b4200b89c0dccaaad04e4 +#: 2bd29babb0b648fa853c71b01cd1d732 msgid "`mock_components/GenericSystem`" msgstr "`mock_components/GenericSystem`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 3456809ba9aa4128a4e789bb7a958749 +#: 11b1c5030a4049eaaf9c4a2aba4d469d msgid "No Gazebo / Isaac. There is **no** `hardware:=mock` branch in this xacro." msgstr "无 Gazebo / Isaac。此 xacro **没有** `hardware:=mock` 分支。" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 0b27d966ef7345ddac29aaf7dc2ca3d5 +#: cbce4670720d464b8279013873e886f3 msgid "`gz`" msgstr "`gz`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 9ca3de2c206d4571a2903af7bf902edf +#: 193e9cdcb3414401a8d879d1c1534091 msgid "`gz_ros2_control/GazeboSimSystem`" msgstr "`gz_ros2_control/GazeboSimSystem`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 94f7ec63ae7841fd94684c69f8c8b5fc +#: 3ac28264f01c46e28ee11848f5ef0cc5 msgid "" "[ocs2_arm README](https://github.com/fiveages-" "sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/README.md):" @@ -176,69 +176,92 @@ msgstr "" " `ros-jazzy-ros-gz` 和 `ros-jazzy-gz-ros2-control`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 85fac824d16a4cd3b23e2ad55f1ca7e1 +#: d2c39812cb0248d1a2e68bf8ca97993d msgid "`isaac`" msgstr "Isaac" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 725372b3d831410a9659478190423893 +#: 04ec9f34dc9a46b3bfffbee1b2d9e74a msgid "`topic_based_ros2_control/TopicBasedSystem`" -msgstr "`gz_ros2_control/GazeboSimSystem`" +msgstr "`topic_based_ros2_control/TopicBasedSystem`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: ea972f1f00804a0e82893a1413ae9b35 +#: 0e35bb60f5184631aa708b8db4b60f3e msgid "" -"Acone params: `/isaac/joint_command`, `/isaac/joint_states`. Build " +"Shared macro: `/isaac/joint_command`, `/isaac/joint_states`. Match the " +"graph `topicName` if this robot uses other names. Build " "`topic_based_ros2_control` ([arms_ros2_control README](https://github.com" "/fiveages-sim/arms_ros2_control/blob/main/README.md))" msgstr "" -"Acone 参数:`/isaac/joint_command`、`/isaac/joint_states`。需构建 " -"`topic_based_ros2_control`([arms_ros2_control README](https://github.com" -"/fiveages-sim/arms_ros2_control/blob/main/README.md))" +"共享宏:`/isaac/joint_command`、`/isaac/joint_states`。这台机器人若用别的名字,要与图的 " +"`topicName` 对齐。需编译 `topic_based_ros2_control`([arms_ros2_control " +"README](https://github.com/fiveages-" +"sim/arms_ros2_control/blob/main/README.md))" + +#: ../../source/3-concepts/1-ros2_control_here.md:5 +#: 74dd560606a7440ebe97c461cc98dfa3 +msgid "`isaac_sim`" +msgstr "`isaac_sim`" + +#: ../../source/3-concepts/1-ros2_control_here.md:5 +#: ad43852dacfa4a1d863e3d730711f33e +msgid "`isaacsim_ros2_control/IsaacSimSystem`" +msgstr "`isaacsim_ros2_control/IsaacSimSystem`" + +#: ../../source/3-concepts/1-ros2_control_here.md:5 +#: 97b16510721f4a5cb21101b121c71a8d +msgid "" +"In-process driver. FaSim `ROS2ControlLaunch` sets it and " +"`isaac_prim_path`. Not a `demo.launch.py` flag." +msgstr "" +"进程内驱动。FaSim 的 `ROS2ControlLaunch` 设置它和 `isaac_prim_path`。它不是 " +"`demo.launch.py` 的参数。" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: c09d0377bdf049ba9d65968edc0d2fea +#: 56a9be9687e6485aa29cf1ed832c5191 msgid "`real`" msgstr "真机" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 0c0a9d27daf14b6186628c4b76398666 +#: b0ebc0a0418a445ba701bc9367396b65 msgid "Vendor plugin (Acone: `arx_ros2_control/ArxX5Hardware`)" msgstr "厂商插件(Acone:`arx_ros2_control/ArxX5Hardware`)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: b05aa82e766643ce98a46c0b5026fefa +#: eae58dbf9d834e92bef0bdb2656c3977 msgid "" "Other brands: use the plugin class from that description’s " "`xacro/ros2_control/*.xacro`." msgstr "其他品牌:使用该描述包 `xacro/ros2_control/*.xacro` 中的插件类。" -#: ../../source/3-concepts/1-ros2_control_here.md:28 -#: ab2253023d3c4a4fa8ad526cfadc7644 +#: ../../source/3-concepts/1-ros2_control_here.md:29 +#: 088317c0e68144a5b828408c1edc865b msgid "`REAL_HARDWARE` in `launch_arg_utils.py` is only `real`." msgstr "`launch_arg_utils.py` 中的 `REAL_HARDWARE` 只有 `real`。" -#: ../../source/3-concepts/1-ros2_control_here.md:30 -#: 763f04ac330c44a69198ff1ff5aa46de +#: ../../source/3-concepts/1-ros2_control_here.md:31 +#: f6e053a3537448f0b064b2f8eea6e394 msgid "" "Optional controller overlay: if " "`_description/config/ros2_control/.yaml` exists, " -"`load_robot_config` merges it. Example from the common README: " -"`arx_lift2s` + `hardware:=isaac` merges `isaac.yaml`. No file → no " -"overlay." +"`load_robot_config` merges it **after** end-effector compose. Example " +"from the common README: `arx_lift2s` + `hardware:=isaac` merges " +"`isaac.yaml`. No file → no overlay. Order: " +"[robot_common_launch](../4-reference/descriptions/2-common.md)." msgstr "" -"可选控制器 overlay:若存在 " +"可选的控制器覆盖:若存在 " "`_description/config/ros2_control/.yaml`,`load_robot_config`" -" 会合并它。common README 示例:`arx_lift2s` + `hardware:=isaac` 合并 " -"`isaac.yaml`。没有文件则不 overlay。" +" 在末端执行器组合**之后**合并它。公共 README 的例子:`arx_lift2s` 加 `hardware:=isaac` 会合并 " +"`isaac.yaml`。没有文件就不覆盖。顺序见 " +"[robot_common_launch](../4-reference/descriptions/2-common.md)。" -#: ../../source/3-concepts/1-ros2_control_here.md:32 -#: c07465ffb5ca49c8894c367487831dfc +#: ../../source/3-concepts/1-ros2_control_here.md:33 +#: 8405285be64d4d7f819cc43073e83a63 msgid "Controllers (this repo)" msgstr "控制器" -#: ../../source/3-concepts/1-ros2_control_here.md:34 -#: 7d2f10aeb46a48b7a7a7a8577b1da186 +#: ../../source/3-concepts/1-ros2_control_here.md:35 +#: 0058139149c94bcb847322ff5751ab5a msgid "" "From [arms_ros2_control](https://github.com/fiveages-" "sim/arms_ros2_control) READMEs / launches:" @@ -247,17 +270,17 @@ msgstr "" " 的 README / launch:" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 55b4871734ff4a3e822207ed56bb5264 +#: 4f0014a37efe4240879ec7f515c1dd78 msgid "Package" msgstr "软件包" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 607a2b55f2934011b2ffe25e51cd464c +#: edee4f04ecef403c8dbb8a12314bdb25 msgid "Role" msgstr "作用" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 9aa62e0513a343d682a578900d6f4b3f +#: f43c6d0568af4932ba09a8e41af427f8 msgid "" "[Basic Joint " "Controller](../4-reference/controllers/7-basic_joint_controller.md)" @@ -266,32 +289,32 @@ msgstr "" "Controller](../4-reference/controllers/7-basic_joint_controller.md)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 01e0f3e7e3124adaa94ee66c98e560db +#: 5ba17fd25b8049faa617cd11aefd1a5a msgid "HOME / HOLD / MOVEJ; body/head/灵巧手 in 分体控制 (`basic_joint_controller`)" msgstr "HOME / HOLD / MOVEJ;分体控制中的身体/头部/灵巧手(`basic_joint_controller`)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: a56e18d2b2504871a3bf40dfd25e10e3 +#: 601e8929056e497aa1c23f9de85a3060 msgid "[OCS2 Arm Controller](../4-reference/controllers/2-ocs2_arm_controller.md)" msgstr "[OCS2 Arm Controller](../4-reference/controllers/2-ocs2_arm_controller.md)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: a8eb0b70270e4eaf95bf587466b3dde5 +#: 564fef768a924a0aaaa742529293959a msgid "Arm MPC; `demo.launch.py` / `split_body.launch.py` (`ocs2_arm_controller`)" msgstr "机械臂 MPC;`demo.launch.py` / `split_body.launch.py`(`ocs2_arm_controller`)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: c6c21119eeb6451c844f3be66e5cac11 +#: 214abb6d459f491a8a6bc7cc99c147e2 msgid "[OCS2 WBC Controller](../4-reference/controllers/3-ocs2_wbc.md)" msgstr "[OCS2 WBC Controller](../4-reference/controllers/3-ocs2_wbc.md)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 0b9bfb9d666943619427b686ec04ca9b +#: 3d3723ac0967471dba64f904b5a21277 msgid "全身控制 via `full_body.launch.py` (`ocs2_wbc_controller`)" msgstr "通过 `full_body.launch.py` 做全身控制(`ocs2_wbc_controller`)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 22f1c6aaa0fa45908bbc4b3d6034c51b +#: c5182db75d0a4314948e7818e0e79294 msgid "" "[Adaptive Gripper " "Controller](../4-reference/controllers/6-gripper_teleop_plugins.md)" @@ -300,12 +323,12 @@ msgstr "" "Controller](../4-reference/controllers/6-gripper_teleop_plugins.md)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 49dfa224e4c14d338ddb7f40fe069b61 +#: cf068583bb0d4f44a841311bdc425718 msgid "夹爪 (`adaptive_gripper_controller`)" msgstr "夹爪(`adaptive_gripper_controller`)" -#: ../../source/3-concepts/1-ros2_control_here.md:43 -#: 511c6c76b47343f680f67138b67b09bb +#: ../../source/3-concepts/1-ros2_control_here.md:44 +#: 9f5bc9c9a4c349a69ded28eaacb3261e msgid "" "分体 vs 全身: [分体控制 vs 全身控制](7-split_vs_wbc.md). How-to: [Use Basic Joint " "Controller](../2-how_to/4-controllers/11-basic_joint.md)." @@ -313,13 +336,13 @@ msgstr "" "分体 vs 全身:[分体控制 vs 全身控制](7-split_vs_wbc.md)。操作指南:[使用 Basic Joint " "Controller](../2-how_to/4-controllers/11-basic_joint.md)。" -#: ../../source/3-concepts/1-ros2_control_here.md:45 -#: 2ae81ddf313945f5b30855b6e430b96f +#: ../../source/3-concepts/1-ros2_control_here.md:46 +#: 3e1f423917394940a89c1d9472d346c4 msgid "Command / state interfaces (OCS2 arm README)" msgstr "命令接口与状态接口" -#: ../../source/3-concepts/1-ros2_control_here.md:47 -#: 44c73149eb4f4b13841cb1ccdd6db53c +#: ../../source/3-concepts/1-ros2_control_here.md:48 +#: 9e5574cc19784325a436c81bc5b6c5c8 msgid "" "[ocs2_arm_controller README — Interface Configuration](https://github.com" "/fiveages-" @@ -332,52 +355,52 @@ msgstr "" "sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/README.md):控制器根据机器人配置中存在的接口**检测**模式。" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: c158ae3843464b9e9d01c429772003f3 +#: 22b56d5396f841baba4fe990921c102c msgid "Mode" msgstr "模式" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 2b9a543a8a9940d69e3205c0ba80cfc2 +#: cee5846b6477458991a53dc75bbe51e8 msgid "Command" msgstr "命令" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 4e38a5a29e8241f18aa910a36cb0bed5 +#: 7c6d703a1bff4ed5b22642f5039ce1ff msgid "State" msgstr "状态" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 98d0e8910f98476a8901d0d24845937c +#: 27d0fc774f0f4988b98b6fd25371ac1b msgid "Position (default)" msgstr "位置(默认)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: a170b17b797e416aa314195a8991b0ea +#: 350072bc91234a2ab2a01b06a4a4e803 msgid "`position`" msgstr "`position`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 2361737d3cb543109b667452d7a8f816 +#: 4aa2eee1768f4d02819ef6479d481224 msgid "`position`, `velocity`" msgstr "`velocity`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 88bb2d89f2f24819ad62904b8d1da912 +#: cda6ffd5839340f988349012b22e8407 msgid "Force (auto)" msgstr "力控(自动)" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 3a2d1b8368364c31bb33f4e89aef2df2 +#: 4b94bd16880c4565a7e2a0f34013ef21 msgid "`position`, `velocity`, `effort`, `kp`, `kd`" msgstr "`position`, `velocity`, `effort`, `kp`, `kd`" #: ../../source/3-concepts/1-ros2_control_here.md:5 -#: 96962cbec395453c882b5b9382907fa1 +#: f64469bc316546ec91d68ad6beed682b msgid "`position`, `velocity`, `effort`" msgstr "`position`, `velocity`, `effort`" -#: ../../source/3-concepts/1-ros2_control_here.md:54 -#: c52040c0d569443d82049fd5f57ed58b +#: ../../source/3-concepts/1-ros2_control_here.md:55 +#: 26cbae4a6b90433ba82495f961bd7a9c msgid "" "That table is the **OCS2 MIX / MIT** path (Panthera HT / ARX). **Tianji**" " (天玑) / **Rokae** (珞石) keep the controller on **position** commands; " @@ -392,8 +415,8 @@ msgstr "" "ros2-control/blob/master/README.md) 的 `JOINT_IMPEDANCE`)。VR 对比:[VR " "遥操作](../2-how_to/5-teleoperation/6-vr_teleop.md)。" -#: ../../source/3-concepts/1-ros2_control_here.md:56 -#: 8c0ca4330adb44929d605bb14733a53a +#: ../../source/3-concepts/1-ros2_control_here.md:57 +#: 3655be7ca0e849c4bcb14bbcf61132df #, python-brace-format msgid "" "There is no stack-wide `/target_pose` or `/target_joint_positions` " @@ -408,13 +431,13 @@ msgstr "" "`/{controller}/target_joint_position`(`std_msgs/Float64MultiArray`)。FSM:`/fsm_command`(`std_msgs/Int32`)。Action" " / Service 类型以及 WBC 身体/头部话题:[FSM 与话题](4-fsm_and_topics.md)。" -#: ../../source/3-concepts/1-ros2_control_here.md:58 -#: 2a0124cedc8047459b1e51847c43a46d +#: ../../source/3-concepts/1-ros2_control_here.md:59 +#: d983de491c9a439ba9e2811531301215 msgid "Related" msgstr "相关" -#: ../../source/3-concepts/1-ros2_control_here.md:60 -#: 3536433481364349a4cd84b05659b481 +#: ../../source/3-concepts/1-ros2_control_here.md:61 +#: a642993fedb44a7db45570f373d4be68 msgid "" "[robot_common_launch](../4-reference/descriptions/2-common.md) — `type` /" " `left_type` / `right_type`, profile merge" @@ -422,8 +445,8 @@ msgstr "" "[robot_common_launch](../4-reference/descriptions/2-common.md) — `type` /" " `left_type` / `right_type`,profile 合并" -#: ../../source/3-concepts/1-ros2_control_here.md:61 -#: 3d66d35331a24adf8d1cdbf57cdfe3aa +#: ../../source/3-concepts/1-ros2_control_here.md:62 +#: 8299342fe5604a18ba5f81f518ccb828 msgid "" "[Configure ROS 2 controller " "parameters](../2-how_to/4-controllers/12-ros2_parameters.md) — YAML vs " @@ -432,27 +455,27 @@ msgstr "" "[配置 ROS 2 控制器参数](../2-how_to/4-controllers/12-ros2_parameters.md) — YAML " "vs xacro ``" -#: ../../source/3-concepts/1-ros2_control_here.md:62 -#: 0b4e2092976e4838b77d0273b5bea89f +#: ../../source/3-concepts/1-ros2_control_here.md:63 +#: c132ceb70061405f870a4b536b3f3b4c msgid "" "[Controller ROS 2 " "parameters](../4-reference/controllers/8-ros2_parameters.md)" msgstr "[控制器 ROS 2 参数](../4-reference/controllers/8-ros2_parameters.md)" -#: ../../source/3-concepts/1-ros2_control_here.md:63 -#: b28df236288a48e2ad057998e556ef46 +#: ../../source/3-concepts/1-ros2_control_here.md:64 +#: 8d16bad7414a4391b1704abc4402f375 msgid "[Terminology](8-terminology.md) — 驱动层 ↔ Hardware Interface" msgstr "[术语对照](8-terminology.md) — 驱动层 ↔ Hardware Interface" -#: ../../source/3-concepts/1-ros2_control_here.md:64 -#: c847456ff80849a99f77560dc8369441 +#: ../../source/3-concepts/1-ros2_control_here.md:65 +#: a9b128b36fe84049928be199ee1788a4 msgid "" "[Hardware Interfaces](../4-reference/hardware/0-index.md) — per-driver " "plugin and `` tables" msgstr "[驱动层](../4-reference/hardware/0-index.md) — 各驱动页插件与 `` 表" -#: ../../source/3-concepts/1-ros2_control_here.md:65 -#: 3e5fbb4d4ebe417aa0f9dff03279b30a +#: ../../source/3-concepts/1-ros2_control_here.md:66 +#: 913c254f64534ceeb7f00d925a0819fd msgid "[Controllers reference](../4-reference/controllers/0-index.md)" msgstr "[ocs2_wbc_controller](../4-reference/controllers/3-ocs2_wbc.md)" diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/controllers/3-ocs2_wbc.po b/locale/zh_CN/LC_MESSAGES/4-reference/controllers/3-ocs2_wbc.po index c376085..f0554a7 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/controllers/3-ocs2_wbc.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/controllers/3-ocs2_wbc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-10 00:49+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,57 +21,59 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:1 -#: a3f96b49df854176a13f3066ac8b1f6b +#: 3d179e1c9b6a491b8a1c28fc55160c1c msgid "OCS2 WBC Controller" msgstr "OCS2 WBC Controller" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:3 -#: dc29f05e50154f3cb22f9473041dd2d5 +#: 0f6b2148f01d4828ad3b57975128a8d4 msgid "" "Whole-body MPC — **全身控制** (`ocs2_wbc_controller`) — for wheeled dual-arm " "robots, using `ocs2_wheel_humanoid`." msgstr "全身 MPC — **全身控制**(`ocs2_wbc_controller`)— 面向轮式双臂,使用 `ocs2_wheel_humanoid`。" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:5 -#: a9426a1a45564672be7a480b9bd996e5 +#: a6cd5f663dd44c908d2d30ede52b1ab9 msgid "Access Required" msgstr "需要访问权限" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:8 -#: 937271c09f0a4c70a2a78fbc4123af36 +#: 6800a55a98c1472e89eecf3b313d98d1 msgid "" "`controller/ocs2_wbc_controller` in " "[arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control) is" -" a **private** submodule (`ocs2-wbc-controller`). Topics, FSM values, and" -" launch names are in that package README after access. The in-tree loader" -" on the public side is `full_body.launch.py`." +" the private submodule [ocs2-wbc-controller](https://github.com/fiveages-" +"sim/ocs2-wbc-controller). The link needs repository access. Topics, FSM " +"values, and launch names are in that package README after access. The in-" +"tree loader on the public side is `full_body.launch.py`." msgstr "" -"[arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control) 中的" -" `controller/ocs2_wbc_controller` 是**私有**子模块(`ocs2-wbc-" -"controller`)。话题、FSM 取值和 launch 名在开通后的包 README 里。公开侧的仓内加载器是 " +"[arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control) 里的" +" `controller/ocs2_wbc_controller` 是私有子模块 [ocs2-wbc-" +"controller](https://github.com/fiveages-sim/ocs2-wbc-" +"controller)。链接需要仓库权限。话题、FSM 取值和启动名在开通后见该包 README。公开侧的加载入口是 " "`full_body.launch.py`。" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:11 -#: 6781e29bd708483fbb9a5590dbdd9a9e +#: 4b20573b389145d1adb66bd16ed7f77b msgid "Role" msgstr "作用" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:13 -#: b0d46659dfac48efb42106b512a93cd8 +#: 9e8c2958af2d4e729e2f0eb0ec77c1e5 msgid "" "Unified **全身控制** stack: one `ocs2_wbc_controller` instead of arm MPC plus" " separate body/head joint controllers" msgstr "统一的**全身控制**栈:一个 `ocs2_wbc_controller`,而不是手臂 MPC 加独立的身体/头关节控制器" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:14 -#: 45b3d80bf30f4bc6be4f1ace952f7df8 +#: 17df4b53cbce4db9ba5df40f72e2a145 msgid "" "Motion library: `ocs2_wheel_humanoid` (see " "[ocs2-humanoid](4-ocs2_humanoid.md))" msgstr "[ocs2-humanoid](4-ocs2_humanoid.md)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:16 -#: e7042252a5b440f8a48e6924f51977bb +#: 27fff5016d304f25b91b84d0b34cea87 msgid "" "Contrast with **分体控制**: [OCS2 Arm Controller](2-ocs2_arm_controller.md) +" " [Basic Joint Controller](7-basic_joint_controller.md) via " @@ -81,24 +83,24 @@ msgstr "" "Joint Controller](7-basic_joint_controller.md),通过 `split_body.launch.py`。" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:18 -#: 0fdd348acee948b599e2f969d1f9d0b0 +#: 8e7693545ab4493f89c672cbb6995420 msgid "Launch (from `ocs2_arm_controller`)" msgstr "启动(来自 `ocs2_arm_controller`)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:20 -#: 5565a97206844ce3a8767f4f37408590 +#: 4c2951d352614d9aafd81c1740827243 msgid "" "There is no public README listing a `ros2 launch ocs2_wbc_controller …` " "entry point. The in-tree path that loads this controller is:" msgstr "公开 README 没有列出 `ros2 launch ocs2_wbc_controller …` 入口。仓库内加载该控制器的路径是:" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:22 -#: add39f1ceb494b6bad0b52cf24d8220d +#: e9457cb39dd2461ca13dcb16687a9d73 msgid "ros2 launch ocs2_arm_controller full_body.launch.py robot:=" msgstr "ros2 launch ocs2_arm_controller full_body.launch.py robot:=" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:26 -#: 33c2627ac57e4759a8d92640b945d20b +#: c63e3725ea714a0e9cbba8263971ac88 msgid "" "`full_body.launch.py` (`launch_mode` `full_body`) spawns " "`ocs2_wbc_controller` when the robot’s `controller_manager` type is " @@ -110,7 +112,7 @@ msgstr "" "`ocs2_wbc_controller`。" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:28 -#: 2cc52d1247e54f10a00c11850aa01fdb +#: 3129f3f1c6e84f5799028ba6bbd8c134 #, python-brace-format msgid "" "The same file declares `type` and " @@ -128,26 +130,26 @@ msgstr "" "(`planning_urdf_path`);静态 `urdf/{robot}_{robot_type}.urdf` 查找已移除。" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:30 -#: 49050a06a074453a9731c164b1d31ffd +#: 427436e00f724c8bb14daa9f3c48b934 msgid "" "`split_body.launch.py` is the split (分体) path; whole-body control uses " "`full_body.launch.py`." msgstr "`split_body.launch.py` 是分体路径;全身控制用 `full_body.launch.py`。" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:32 -#: bb9abea399a64b7381ce3570b2a7dd9d +#: 563bad34176440b7ba7f5b27fc2f1a48 msgid "Public command surface" msgstr "公开指令面" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:34 -#: 3d72755df7084845a92a999b1331f014 +#: 93837909f9b64ff3a11587da73290246 msgid "" "Extra FSM states stay in the private package README after access. From " "public sources, 全身 uses:" msgstr "额外 FSM 状态开通后见私有软件包 README。公开来源里,全身使用:" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:36 -#: 78ad6ed41db64bbe90ee18105f5da0a3 +#: 46349252e9214a4f9507fd38a1502624 msgid "" "Cartesian body / head: `/body_target*`, `/head_target*` " "([arms_target_manager](https://github.com/fiveages-" @@ -159,7 +161,7 @@ msgstr "" "sim/arms_ros2_control/blob/9a1da3ba3747b3042866422c2269c1d49bb02f48/command/arms_target_manager/README.md))" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:37 -#: 0882e4d0b1014286bbf6f645664ec5a8 +#: 7a8f78e601c347609f84322b497d21f1 msgid "" "`/mode_command` (`std_msgs/String`) and " "`/ocs2_wbc_controller/current_state` (`WbcCurrentState`)" @@ -168,7 +170,7 @@ msgstr "" "`/ocs2_wbc_controller/current_state`(`WbcCurrentState`)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:38 -#: 481930e9f3734740ac28b33995e9190e +#: 532f6575f7d04379ba984ea39d363465 msgid "" "Shared action / service types: [`arms_ros2_control_msgs` " "README](https://github.com/fiveages-" @@ -179,12 +181,12 @@ msgstr "" "sim/arms_ros2_control/blob/9a1da3ba3747b3042866422c2269c1d49bb02f48/command/arms_ros2_control_msgs/README.md)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:40 -#: d9cac78d80e343179f07536bf77ea730 +#: 54a93353d0f649c1b2e7edc0fa9e1178 msgid "Whole-body (WBC) availability" msgstr "全身控制(WBC)可用性" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:43 -#: 835f6095b8c0447f88db9421d42ded9f +#: 67fbbd8585614478a1f6471918bd919c msgid "" "These topics need **`ocs2_wbc_controller`** and that robot’s 全身 " "launch/config. Default mock demos (`demo.launch.py`) and 分体 " @@ -212,19 +214,19 @@ msgstr "" "0.25]`。完整表格:[FSM 与话题](../../3-concepts/4-fsm_and_topics.md)。" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:46 -#: ed007dfc29d74aa0ab1c268912aad2f3 +#: 72fd2893685f4c19b76c92f3096fa724 msgid "Related" msgstr "相关" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:48 -#: ea13cbea498b4ab3804a0d7da3dc9db8 +#: 3f23403c21ae4fbe9e9386f2882fabad msgid "" "[Controller ROS 2 parameters](8-ros2_parameters.md) — public overlay " "keys; full list is the private package README" msgstr "[控制器 ROS 2 参数](8-ros2_parameters.md) — 公开 overlay 键;完整列表见私有包 README" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:49 -#: 9b112c22a7a64713a8d0ed2b3a8fd4b8 +#: a3f2ff3fb08647dcb158cd141481f51b msgid "" "[OCS2 Arm Controller](2-ocs2_arm_controller.md) — 分体控制 / " "`split_body.launch.py`" @@ -233,27 +235,27 @@ msgstr "" "`split_body.launch.py`" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:50 -#: e9abe2169785497da12d4ae84c4af5c5 +#: cd4bfc8767454bb6815236ab89ab49e5 msgid "[Basic Joint Controller](7-basic_joint_controller.md)" msgstr "[Basic Joint Controller](7-basic_joint_controller.md)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:51 -#: 17771205ea864e8fbc3415bec7d54ec9 +#: 0061c6ee01cc4e0dbf8af4ad47c5530b msgid "[ocs2-humanoid](4-ocs2_humanoid.md) — `ocs2_wheel_humanoid`" msgstr "[ocs2-humanoid](4-ocs2_humanoid.md)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:52 -#: d66c57f97bc94ae791d9f30d19a2bbe7 +#: ca5277ea84b7466d8e97293b0f07568a msgid "[FSM and Topics](../../3-concepts/4-fsm_and_topics.md)" msgstr "[FSM 与话题](../../3-concepts/4-fsm_and_topics.md)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:53 -#: 5cb8f0f9fe6c43238040019d0a3d591b +#: 7e48b25b1a5244c1ab2b23f1873da474 msgid "[ros2_robot_interface](../python_apps/1-ros2_robot_interface.md)" msgstr "[ros2_robot_interface](../python_apps/1-ros2_robot_interface.md)" #: ../../source/4-reference/controllers/3-ocs2_wbc.md:54 -#: 0936d95ec78f4346bd43347f021df790 +#: a2defd081fba4dbab7dca03ca56e9240 msgid "[分体控制 vs 全身控制](../../3-concepts/7-split_vs_wbc.md)" msgstr "[分体控制 vs 全身控制](../../3-concepts/7-split_vs_wbc.md)" diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/2-common.po b/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/2-common.po index 65ae87c..07bcce8 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/2-common.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/2-common.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-10 00:49+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,12 +21,12 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/descriptions/2-common.md:1 -#: 1c0592fab56248a693e4ab229186cf2f +#: da0667a6f6bf468fb58c1d43e8171ec6 msgid "robot-descriptions-common" msgstr "robot-descriptions-common" #: ../../source/4-reference/descriptions/2-common.md:3 -#: 51e63979099d420091af413fc177ccaa +#: 65e837c4e4ef465b905c2389242436ea msgid "" "Shared grippers, dexterous hands, sensor models, and " "**`robot_common_launch`**. Under the " @@ -38,7 +38,7 @@ msgstr "" "伞形仓下,本仓是 **`common`** 子模块。" #: ../../source/4-reference/descriptions/2-common.md:5 -#: 3f14181c197e4f4187b55480a84d1b7f +#: 78ec4bb44771412e8f6ba040735ee7ae msgid "" "**Repository:** [fiveages-sim/robot-descriptions-" "common](https://github.com/fiveages-sim/robot-descriptions-common)" @@ -47,12 +47,12 @@ msgstr "" "/fiveages-sim/robot-descriptions-common)" #: ../../source/4-reference/descriptions/2-common.md:7 -#: 71867c2f57fc433aab6f95a68e29258d +#: 6a4c0b249d4f4d4ca9a467af1cea0930 msgid "Source of truth" msgstr "权威来源" #: ../../source/4-reference/descriptions/2-common.md:10 -#: b20e19ae949f47dd8aaa28aee564e58e +#: 7d3921f3b5ed450187a4e9f98d623d86 msgid "" "Repo inventory / xacro include / launch file list: " "[README.md](https://github.com/fiveages-sim/robot-descriptions-" @@ -62,7 +62,7 @@ msgstr "" "/fiveages-sim/robot-descriptions-common)" #: ../../source/4-reference/descriptions/2-common.md:11 -#: a6480074e92c4a6e84ceead6ca5420af +#: 07653f0e2e844115b44b7267a3bb72b9 msgid "" "Launch args / profile merge / `hardware:=`: " "[`robot_common_launch/README.md`](https://github.com/fiveages-sim/robot-" @@ -73,7 +73,7 @@ msgstr "" "common/blob/main/robot_common_launch/README.md)。没有 `gripper:=` launch 参数。" #: ../../source/4-reference/descriptions/2-common.md:12 -#: 7f121fffb07d47b192e99f7b1d402f12 +#: 83124ae4747e4c958efc753d60298877 msgid "" "GitHub Release `.deb`: [README.deb.md](https://github.com/fiveages-sim" "/robot-descriptions-common/blob/main/README.deb.md)" @@ -82,31 +82,31 @@ msgstr "" "/fiveages-sim/robot-descriptions-common)" #: ../../source/4-reference/descriptions/2-common.md:13 -#: f310382dd0b745a0b989d98358bedd4b +#: d1a7ebeb4e234fb59dc3c22dcc461305 msgid "" "**No** `.cursor/skills` on `main`. Package names are the folders in that " "README / repo tree." msgstr "`main` 上**没有** `.cursor/skills`。包名就是该 README / 仓库树里的目录。" #: ../../source/4-reference/descriptions/2-common.md:16 -#: 71d438bc3f964807ab6f1f514633db95 +#: 6b9987a295e9447ab4ff5ccd9904809e msgid "" "There is no `gripper:=` launch argument. Attach an end-effector with " "`type` / `left_type` / `right_type` (below)." msgstr "没有 `gripper:=` 启动参数。用 `type` / `left_type` / `right_type` 挂末端(见下)。" #: ../../source/4-reference/descriptions/2-common.md:18 -#: 3a1960f6690a4588931300cbee4095da +#: 23c117b6abe14ed3ac81289b42771b35 msgid "Layout" msgstr "布局" #: ../../source/4-reference/descriptions/2-common.md:20 -#: 108b272ae9284b66b5f08f043a270152 +#: bf985db0aab9499296295c4eba18124f msgid "Folders on `main` (browse the repo):" msgstr "`main` 上的目录(浏览仓库):" #: ../../source/4-reference/descriptions/2-common.md:22 -#: a0f4f616e2c24a75aaf0bf9f4ea009fd +#: b16eae7e27ae40cca3fe69c76868467f msgid "" "common/ # umbrella checkout path\n" "├── gripper/ # one ROS package per brand\n" @@ -133,19 +133,19 @@ msgstr "" " └── xacro/" #: ../../source/4-reference/descriptions/2-common.md:35 -#: e1f336047d5f49fcb73ba6f6a09f4065 +#: 8ff95354c5874048995582f00d8899f4 msgid "" "README package-structure tree also lists `xhand1_description` under " "`dexhands/` (not in the Dexterous Hands table)." msgstr "README 的包结构树还在 `dexhands/` 下列了 `xhand1_description`(灵巧手表里没有)。" #: ../../source/4-reference/descriptions/2-common.md:37 -#: 76270704a60240b880cb4d008b013fdb +#: 88c89b38ef904367a54fac49bda9dbc2 msgid "Grippers (`gripper/`)" msgstr "夹爪(`gripper/`)" #: ../../source/4-reference/descriptions/2-common.md:39 -#: 00f0cec5fc5c4d76b0fb99e7702d1ed1 +#: b9ae875695d94bce97fa7d3af51f83ef msgid "" "From the [repo README](https://github.com/fiveages-sim/robot-" "descriptions-common/blob/main/README.md):" @@ -154,284 +154,284 @@ msgstr "" "/fiveages-sim/robot-descriptions-common)" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 4cf84113ca5e447588de6683f8bf541d fe53b64b23ad402aa6813b1623b1c763 +#: b22f3a02a8794666afc261b87d24f841 ce43aa0012bd4017825f2bf441ffc1a7 msgid "Brand" msgstr "品牌" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 92631acc0be94dbbb68ababa030ae5d4 d8854a0568b248018b4d1ac52451be43 +#: ca9997195a8a48b1a4152e48661b9ac7 dc2c9ae1157a44d49dd3c5949844cbc0 msgid "Package" msgstr "软件包" #: ../../source/4-reference/descriptions/2-common.md:22 -#: b787929af85d45a1aa9471b8b035a755 f3e37513b4ef499a90f17ea2da152674 +#: 1b54c8b77fe6423980b685e072fc5664 978dd6c525b5498bb476a3c1f67cf511 msgid "Models" msgstr "型号" #: ../../source/4-reference/descriptions/2-common.md:22 -#: a7fb12b52c5c435ab5c19f6c34b4d6d1 +#: 1e359bb7c0bd44a391a6d21e4022ab0e msgid "ChangingTek" msgstr "ChangingTek" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 76ded2a0f8a442328a3aa8be7841dcf6 +#: 3851962baa9f4562ac7c92dec6a49173 msgid "`gripper/changingtek_description`" msgstr "`gripper/changingtek_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 7079c9237fc741baa7087e0b69cbd487 +#: 8e8a7bdd139c4f92801003cbe8b26768 msgid "AG2F90-C, AG2F120S" msgstr "AG2F90-C、AG2F120S" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 4f7661381ede476299d5457e44734601 +#: 530299db58a1412ca243a3e93e07e497 msgid "DH" msgstr "DH" #: ../../source/4-reference/descriptions/2-common.md:22 -#: c5048284aeb643e1ba8b7ded7350ae30 +#: 61e5d00645bd4b34ad5e937411208f21 msgid "`gripper/dh_description`" msgstr "`gripper/dh_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 2df11e7814a0410fb2075568483dfdde +#: 9c47b65203e24b7fa62f6ad8d2864414 msgid "PGC_140_50" msgstr "PGC_140_50" #: ../../source/4-reference/descriptions/2-common.md:22 -#: a7ea5e03c49b43df8bfb143468d2e1b1 +#: 03006798b7854876ba50335f4ada17b2 msgid "Robotiq" msgstr "Robotiq" #: ../../source/4-reference/descriptions/2-common.md:22 -#: ed72a8a347984d059cf6b2bbe94c99cb +#: 4ea13d3fbb5040309751592c97c207eb msgid "`gripper/robotiq_description`" msgstr "`gripper/robotiq_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 706f1224497e48aebd979171c060b9f8 +#: 607bd23d0338404fbaf0a9134a2811f0 msgid "2F-85" msgstr "2F-85" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 0e508cb1bcb4460c96802389d74b19be a7ecd39f3aea4e86a0c961205bb24fe8 +#: 961dee01be6747dc9836b53664a467d9 c95a94bda62a497c8ec1fe951575054e msgid "Inspire" msgstr "因时" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 637a60b58df24b94ae900f7dc3b0f21c f03b300394e840e899f5867b16fd4c96 +#: 07d3694feb0145aa8a0936c867fa3ae6 ca217ad8441e4c4998327adc51b851c9 msgid "`gripper/inspire_description`" msgstr "`gripper/inspire_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 14ee4b6b51b74b478c119e24c4eea573 +#: 311f4e9ffc6e458dbd4c8d3ae542c9de msgid "EG2-4C2 (hands RH56E2 / RH56F2 live here too)" msgstr "EG2-4C2(灵巧手 RH56E2 / RH56F2 也在这个包)" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 357ad35c0fdb47f49bcac48f9cdc6ef7 +#: 03d003bd12724d66bfbbf5e40eac28c5 msgid "Jodell" msgstr "Jodell" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 35865e02c4c943f1936701058ffd5727 +#: 52a0b1c7dac040d489b3d03ffea2188c msgid "`gripper/jodell_description`" msgstr "`gripper/jodell_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 61b39a17e44147b3a6e269cb23ce267b +#: 7674af8ef2fd4ac78550390e1155f2f0 msgid "RG75-300" msgstr "RG75-300" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 4f214f1eac0b4483a7901bce37d6b719 +#: a2a5dfbaef3047daa5e40e1f440334ba msgid "Hitbot" msgstr "Hitbot" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 343853221f92422b83f2139f0c37a8da +#: 390c7ab4b8594c0280e6378ff4d06448 msgid "`gripper/hitbot_description`" msgstr "`gripper/hitbot_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: a84bd312bee646c2bf5e9031805b738b +#: 84f5bddcb8c740548cd71a9e9a17970e msgid "Z-EFG-100" msgstr "Z-EFG-100" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 4439d34243ad48b2b7f704e9026a041a +#: 67449e39423c47f4995f63ab5a1d46ad msgid "Eincinx" msgstr "Eincinx" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 6175079768204869913f628986d39eb8 +#: eb2458c85a384f26a534fd75f62de4d3 msgid "`gripper/eincinx_description`" msgstr "`gripper/eincinx_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 94241048917b4742b6253d0ce459438e +#: a3250903952840ed9058b403d3813b1d msgid "EPGI180" msgstr "EPGI180" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 42546494aa1648229e0f2d193aab247c +#: 6022bc8aa8f14717b1b96e6559673291 msgid "Marvin" msgstr "含义" #: ../../source/4-reference/descriptions/2-common.md:22 -#: f9ee62cd9b84405e987c7ee876a19ca0 +#: 14cf32b18814450d8feae4d06f18ec67 msgid "`gripper/marvin_gripper_description`" msgstr "`gripper/marvin_gripper_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 6fa231b450f24378b343c04f78e96fcd +#: 07360e39c0e64cb0bde8fe7ddb019d3a msgid "marvin_gripper, marvin_gripper45" msgstr "marvin_gripper、marvin_gripper45" #: ../../source/4-reference/descriptions/2-common.md:52 -#: c39b8f77ab0d4ffa979efacc78ecc552 +#: dc79ee6e5b284608b592bae453c0e4f1 msgid "" "README: each gripper package includes URDF/xacro, meshes, ros2_control " "configs, and mount configs." msgstr "README:每个夹爪包含 URDF/xacro、网格、ros2_control 配置和安装位姿。" #: ../../source/4-reference/descriptions/2-common.md:54 -#: 767bf46fd7c54dcdb77cbbd2b7c363f8 +#: 056903ce93a345e78282f2b64fc7e989 msgid "Dexterous hands (`dexhands/`)" msgstr "灵巧手(`dexhands/`)" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 2c46f096fd5a473ba059b5857bea8b8a +#: 8b5c74e2bda646df87cbbf2cbc2327c3 msgid "BrainCo" msgstr "BrainCo" #: ../../source/4-reference/descriptions/2-common.md:22 -#: dfac055454ad457084701c7254d4677a +#: e94cadc2cffc40c8b5518edc61db6e22 msgid "`dexhands/brainco_description`" msgstr "`dexhands/brainco_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 316ffce1fb3e4568981fb53d237c3ea9 +#: 6f0c10234d23469cabb95796954ce089 msgid "REVO1, REVO2" msgstr "REVO1、REVO2" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 26af2213df9446e8af9f5fe0b751c7db +#: b2ae2c3fe4a14e609a270695568b37a9 msgid "LinkerHand" msgstr "LinkerHand" #: ../../source/4-reference/descriptions/2-common.md:22 -#: b3f704046b4c4955b9a46a3533ed6d55 +#: ca3f4467ff40407fbb14dcbd7512c720 msgid "`dexhands/linkerhand_description`" msgstr "`dexhands/linkerhand_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 31ac612736ff4cdb8d08cf42cbe4b744 +#: 056d88e73e854b929d269627ff2ca05d msgid "O6, O7, L6, L10" msgstr "O6、O7、L6、L10" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 6b07f778cf1449a8a3e7c6d8197af0d2 +#: 4eba24ca24264e2aaae82ad3c739d1f9 msgid "RH56E2, RH56F2" msgstr "RH56E2、RH56F2" #: ../../source/4-reference/descriptions/2-common.md:22 -#: b83c1576b77f44508b9c9c71513b777b +#: 66da1a669d514697988a2655b27357fa msgid "OyMotion" msgstr "YAML 段" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 0083934ca5a143019c0255e8a13f7480 +#: 4551c1ba7515484da97921da24fadd0f msgid "`dexhands/oymotion_description`" msgstr "`dexhands/oymotion_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 6f8505a61baa405ba70ac960863bb4ce +#: d22748f046c84740bb447aab839f82cb msgid "RoHand Gen2" msgstr "RoHand Gen2" #: ../../source/4-reference/descriptions/2-common.md:22 -#: f6085085130c497db251917b93b9d7de +#: 290a4c0a315f4ed3b3902c2110f8a433 msgid "FreeDom" msgstr "FreeDom" #: ../../source/4-reference/descriptions/2-common.md:22 -#: caf741422bad4f8a8aec8da9f1eba16c +#: 7be19ae2e683400ca9bdaec7dbffff6f msgid "`dexhands/freedom_description`" msgstr "`dexhands/freedom_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 4a0ff9cb4f3e438897e0c4e14cdb337b +#: fc42d866147c4688beacfa62162e21f6 msgid "V1, V2" msgstr "V1、V2" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 2e8752f8cea84602b3ac8a17243d4497 +#: 93d6a739c3ae4c31898b1a5b4b3462a1 msgid "TheoHand" msgstr "TheoHand" #: ../../source/4-reference/descriptions/2-common.md:22 -#: ebfb3d9c31e54e24afb55adad42d0b88 +#: 9d3b9621565f4856bd5b6e658ab24b5f msgid "`dexhands/theohand_description`" msgstr "`dexhands/theohand_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 0b07d752d0b3402a92659b38bb6344f5 +#: 88650372e8e9443f9903a6615450ea9c msgid "STD16A" msgstr "STD16A" #: ../../source/4-reference/descriptions/2-common.md:22 -#: 4b5932dc11a14cf9b17cd814c4c7e08f +#: 399e996955324cb8aa653af181fb31a7 msgid "Wuji" msgstr "舞肌" #: ../../source/4-reference/descriptions/2-common.md:22 -#: a43a2804c30d435a9393eeb5624a8dae +#: ad525586191c4b7fbe0e564ca4617ba3 msgid "`dexhands/wuji_description`" msgstr "`dexhands/wuji_description`" #: ../../source/4-reference/descriptions/2-common.md:22 -#: f8135050cb274e3287b8ca76eb463b18 +#: a783ce7a644e4d19b8a012f94d766503 msgid "Hand2, Beta2" msgstr "Hand2、Beta2" #: ../../source/4-reference/descriptions/2-common.md:66 -#: ab662b217fe94e318fe57529d9eff406 +#: 5108349c75e14168a9ecb3bb29922e37 msgid "Sensors (`sensor_models/`)" msgstr "传感器(`sensor_models/`)" #: ../../source/4-reference/descriptions/2-common.md:68 -#: c9108f4412c547e5b5c4a14e651055d9 +#: 043777fcff9c447cbfbb8776993b9195 msgid "README lists URDF + meshes for:" msgstr "README 列出的 URDF + 网格:" #: ../../source/4-reference/descriptions/2-common.md:70 -#: b511a75d09b14c54836a07342b65d9c7 +#: 60a744f13be24367b9c19c842a422931 msgid "Intel RealSense D405" msgstr "Intel RealSense D405" #: ../../source/4-reference/descriptions/2-common.md:71 -#: 745852cd73c1469198d3c32aa5294ae2 +#: 262583e83f2f446788568cff567f81c6 msgid "Intel RealSense D435" msgstr "Intel RealSense D435" #: ../../source/4-reference/descriptions/2-common.md:72 -#: dee3a525197d4630a9c117229167265f +#: 3916a77ff46543a7960a64c26f4c082e msgid "Orbbec Dabai" msgstr "Orbbec Dabai" #: ../../source/4-reference/descriptions/2-common.md:73 -#: 1839bb6f60814e7692ea1c5f8c569841 +#: 1c9c53befb554f7b8ad65724c89d28fe msgid "Livox Mid-360" msgstr "Livox Mid-360" #: ../../source/4-reference/descriptions/2-common.md:75 -#: 10638598b9614751a07444461278b5d5 +#: a353fb870c3c4c5cae5b81d3f9a37df1 msgid "Use a component from xacro" msgstr "在 xacro 里引用组件" #: ../../source/4-reference/descriptions/2-common.md:77 -#: 70da142a312044f69d2faf93a3bdbd02 +#: b200608f5830494c9a721ffdab26fd3d #, python-brace-format msgid "" "README example (Robotiq). Copy an **existing** include from a real " @@ -439,7 +439,7 @@ msgid "" msgstr "README 示例(Robotiq)。从真实 `{robot}_description` 复制**已有** include:" #: ../../source/4-reference/descriptions/2-common.md:79 -#: 9dd2687357934b7a90b26384a3a0e1bd +#: 83cdf2e0ca5641fc80a69de16b3d417d msgid "" "\n" @@ -460,12 +460,12 @@ msgstr "" "" #: ../../source/4-reference/descriptions/2-common.md:89 -#: 892fc50654a74a619abcb360396ffa27 +#: e9a1b41d085c4c51bc6837ebba47f7af msgid "`robot_common_launch`" msgstr "`spawn_robot.launch.py`" #: ../../source/4-reference/descriptions/2-common.md:91 -#: d36c78a73fbc4bf4bf449dce9404cab2 +#: c8c41b966c8e4f10aa5cf04685aa71d8 msgid "" "Cross-robot launch entry, xacro mappings, and **machine profile** YAML " "(`robot_profile:=`). Downstream visualization / `controller_manager` / " @@ -477,12 +477,12 @@ msgstr "" "`robot_description` 和规划 URDF。" #: ../../source/4-reference/descriptions/2-common.md:93 -#: b56154a7c4c94560b4dab7633426b225 +#: b372e16b432347fbae7fce40a0293df4 msgid "Mechanism" msgstr "含义" #: ../../source/4-reference/descriptions/2-common.md:96 -#: 15134eb2e25549caaead3c2288500c49 +#: bd96713642774309b96f4f14aab940be msgid "" "`robot_profile:=/path/to/profile.yaml` → `load_robot_profile` / " "`normalize_robot_profile` → `build_xacro_mappings` (or " @@ -495,7 +495,7 @@ msgstr "" "URDF。" #: ../../source/4-reference/descriptions/2-common.md:98 -#: a9d93b4d9a89496eb59ec2b97e7cd857 +#: f8202e9fdd93478caf4a754cf566a366 msgid "" "Implementation: [`launch_arg_utils.py`](https://github.com/fiveages-sim" "/robot-descriptions-" @@ -510,115 +510,115 @@ msgstr "" "`create_robot_profile_launch_arguments()`)都走同一条路径。" #: ../../source/4-reference/descriptions/2-common.md:101 -#: dc97d2f6275e483a97411e9eeb89af57 +#: d9b012e7bab242298d31a6851c777fc1 msgid "Merge priority" msgstr "合并优先级" #: ../../source/4-reference/descriptions/2-common.md:103 -#: 7838ce2413db4a0faca50e6b3c2ce2e5 +#: 5f0b147138344eddb5d7a8a77ff08328 msgid "**Launch CLI > `robot_profile` YAML > xacro defaults**" msgstr "**Launch CLI > `robot_profile` YAML > xacro 默认值**" #: ../../source/4-reference/descriptions/2-common.md:93 -#: f23bf90b366444ea9f18b7cb343d1adb +#: 8aa8738c978946efac4549faa4163683 msgid "YAML section" msgstr "YAML 段" #: ../../source/4-reference/descriptions/2-common.md:93 -#: f96a5ea111f846e28de939c61c8d86ba +#: 9ac8f5255ce74cf1b8d0d6eb061e60af msgid "When `robot_profile:=` is set" msgstr "设置 `robot_profile:=` 时" #: ../../source/4-reference/descriptions/2-common.md:93 -#: fac32824e0f54e618e51c029d50ba4af +#: 7cd49289f7fe4475a252f36235c374dc msgid "Notes" msgstr "说明" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 8ec7aa6156f74eacab67fe27f1e862ab +#: 124b52adf97f4579b0e2e2af953583aa msgid "`platform`" msgstr "`platform`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 0900b27ca1d3441cb7916368c8f64c69 7496b15bbeac4e7cadadd74801af962e -#: 7d0a92ca82534adb891753c4f1a23820 93120002832e4dbd822119ee05cf6b37 +#: 24cfa4b6261d4425ade76d2c8f63ece5 4cecce3996d74fe285ffcdf291db25d5 +#: a89867579aa44f5abbd0525fc87e6737 bc3066ade2ea4eada2620a7ae7b92422 msgid "Always" msgstr "始终" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 692e41cf51254d5b977551fbfcb5317f +#: 1ee457cb89e34ffb936400a839b61cf4 msgid "Chassis / dual-arm kit / `variant` / `chassis_joints_movable` → xacro" msgstr "底盘 / 双臂套件 / `variant` / `chassis_joints_movable` → xacro" #: ../../source/4-reference/descriptions/2-common.md:93 -#: c43603c6ce38439687ddddbc138f5dd9 +#: 043d79dd74354f6e89cbf9437bd585d4 msgid "`defaults.end_effectors`" msgstr "`defaults.end_effectors`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 26a33a95c5054a968efcaa3315947874 +#: 54a73cdb51a042f3a0caddfc5502b681 msgid "Only if `use_profile_eef:=true` (**default**)" msgstr "仅当 `use_profile_eef:=true`(**默认**)" #: ../../source/4-reference/descriptions/2-common.md:93 -#: a7ebc1dbb53a40b699662ee375d5fa39 +#: 92d858109b4a4004b1f454473467de18 msgid "" "End-effector keys; turn off to force CLI `type` / `left_type` / " "`right_type`" msgstr "末端键;关掉后改用命令行 `type` / `left_type` / `right_type`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 4acf12ffcac34386a36b0e736d9aac70 +#: defd4e0054fb44d48764a6d5fabfedf1 msgid "`defaults.ft`" msgstr "`defaults.ft`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: d5f8f462d9204473bf5fd7a1a4cbc3c9 +#: 64a886ab13764d7aa57f9a4dc608f4e9 msgid "Force-torque; **not** gated by `use_profile_eef`" msgstr "力传感器;**不受** `use_profile_eef` 门控" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 05bac40547e343098ce91707d3343840 +#: e83cd157471f40a88ae6db246e87a3f3 msgid "`defaults.tcp_offset`" msgstr "`defaults.tcp_offset`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: edcb3b1456b44017be071bb854bc8c01 +#: a4a9c5379fba4be4a28ada1264cdfc68 msgid "Virtual tip offset; expressions evaluated before mappings" msgstr "虚拟 tip 偏移;写入 mappings 前求值表达式" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 4d92721c31114086add8a1dec68681fc +#: ab6c906a621241bf9ccb7321645df2dd msgid "`hardware`" msgstr "`hardware`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 64cef3b83d054d5db5e039111fbab9a3 +#: c8f248fcf220473bb4120dc9b8713917 msgid "Only `hardware:=real`" msgstr "仅 `hardware:=real`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: faac22cdbaa94daeb8cd439bac10614a +#: f348433b4eb54352b9469982561e11dc msgid "Real-robot xacro (serial, `arm_ctrl_mode`, …)" msgstr "真机 xacro(串口、`arm_ctrl_mode` 等)" #: ../../source/4-reference/descriptions/2-common.md:93 -#: a92912fb27c443c18560cfa84c0f9629 +#: e66eba1e4e7042cd9083c3401bc54564 msgid "`control.patch`" msgstr "`control.patch`" #: ../../source/4-reference/descriptions/2-common.md:93 -#: 750e29d1221f4acea21df09a3e3dd0c7 +#: 5fbc6f9fd8ce42cd96ce65ce09adfcce msgid "Deep-merged into ros2_control config" msgstr "加入 ros2_control 配置" #: ../../source/4-reference/descriptions/2-common.md:114 -#: d0b4179e0b4a414684ffb1244b957f8e +#: 643c59535093417abdef0fcb8c24fbb9 msgid "Profile schema (README):" msgstr "Profile schema(README):" #: ../../source/4-reference/descriptions/2-common.md:116 -#: dd71f555b6104d0d8a7f8f17f6991cdb +#: ca21dd7d2967482aaa04985963600fcc #, python-brace-format msgid "" "platform:\n" @@ -644,31 +644,31 @@ msgstr "" " type: # symmetric; or write left / right" #: ../../source/4-reference/descriptions/2-common.md:128 -#: a58fcb349220446b90fcf77515ea7886 +#: 9c86891c86ba4f3ea1b92d9a910ceccc msgid "End-effectors (`type` / `left_type` / `right_type`)" msgstr "末端执行器(`type` / `left_type` / `right_type`)" #: ../../source/4-reference/descriptions/2-common.md:116 #: ../../source/4-reference/descriptions/2-common.md:142 #: ../../source/4-reference/descriptions/2-common.md:163 -#: 018c91171df94b218ed0f02207b420dd 28868e8a009a4c7f9f288cbf07719e08 -#: 8e5a432846484f5ebbfcb8cbca980927 +#: 10bfe2d85f284d31b85415a3f524c612 62e4394e5d134d8cb5a57875a1b6b8bc +#: fa0a6854899d4ec1a6ed0b8d454fcd96 msgid "Argument" msgstr "参数" #: ../../source/4-reference/descriptions/2-common.md:116 #: ../../source/4-reference/descriptions/2-common.md:142 -#: 5eb9875fc3af4d33b571fc68f8e23b56 bc713ab1ef2346249a7697abe494ecd4 +#: 7e69292cb5354167ba11dbe21ed35257 8a802fe4679445d3ace62bc1ee895cfb msgid "Meaning" msgstr "含义" #: ../../source/4-reference/descriptions/2-common.md:116 -#: 843d4dfef1af4fb59182bdc46d18a73a +#: d2ef3904c4144330ad8d64c7a1795f66 msgid "`type`" msgstr "`type`" #: ../../source/4-reference/descriptions/2-common.md:116 -#: a805eb1e12f847c69840b6e87d24ffb3 +#: ebb8d6f5ce6d4f20b9ce81789fa2ac1b msgid "" "Symmetric end-effector key, **or** arm topology `left` / `right` / " "`dual`. Topology does **not** expand into `left_type` / `right_type`." @@ -677,12 +677,12 @@ msgstr "" "`right_type`。" #: ../../source/4-reference/descriptions/2-common.md:116 -#: ae75e3831a3e45b3b534364f48a91717 +#: a17211ace9ff4e8f8bc05e71e2e0d377 msgid "`left_type` / `right_type`" msgstr "`left_type` / `right_type`" #: ../../source/4-reference/descriptions/2-common.md:116 -#: 8700f937cd3248238ae5044686180fe5 +#: 1b4f02d486f8441fa9c7198a690201e9 msgid "" "Per-side EEF keys. `create_eef_side_launch_arguments()` description " "examples: `rg75`, `ag2f90_c`, `linkerhand_o7`. Use together for " @@ -692,34 +692,34 @@ msgstr "" "`rg75`、`ag2f90_c`、`linkerhand_o7`。左右不同时一起使用;此时**不要再传 `type:=`**。" #: ../../source/4-reference/descriptions/2-common.md:116 -#: 03308cbd5c5c4f219dd6b1b10e33490e +#: 07b831ee47f747ffaa96b82ec9f9b142 msgid "`use_profile_eef`" msgstr "`use_profile_eef`" #: ../../source/4-reference/descriptions/2-common.md:116 -#: 07ab126350c4402fb65710257d2dea27 +#: 1e817db1f72044e0b593aa40f18fbe77 msgid "Apply `defaults.end_effectors` from the profile (default `true`)" msgstr "应用 profile 的 `defaults.end_effectors`(默认 `true`)" #: ../../source/4-reference/descriptions/2-common.md:116 -#: d9a406ea2ceb4cfebfb5dd1bd7614e32 +#: 69b528438c6d49bfb986496ca05f56c2 msgid "`robot_profile`" msgstr "`robot_profile`" #: ../../source/4-reference/descriptions/2-common.md:116 -#: 992c4b4ad6ba4b238e9635d405765313 +#: b44d64bc999f4d5f8863c6ec85e5dd25 msgid "Path to a machine-profile YAML" msgstr "整机 profile YAML 路径" #: ../../source/4-reference/descriptions/2-common.md:137 -#: a168969bea23492dad7757bd139dc4d5 +#: d90a20147ae0441eb80d1dcfbe823a75 msgid "" "Default: `use_profile_eef:=true` → profile `defaults.end_effectors` is " "applied." msgstr "默认:`use_profile_eef:=true` → 应用 profile 的 `defaults.end_effectors`。" #: ../../source/4-reference/descriptions/2-common.md:138 -#: a6da70f68d8d42c492cbc93777a92f87 +#: f790208c219f466bb49c28fcf3554729 msgid "" "Set **`use_profile_eef:=false`** to ignore that block and force CLI " "`type` / `left_type` / `right_type`. `platform`, `ft`, and `tcp_offset` " @@ -729,12 +729,12 @@ msgstr "" "`right_type`。profile 中的 `platform`、`ft`、`tcp_offset` 仍然生效。" #: ../../source/4-reference/descriptions/2-common.md:140 -#: 40227cc8c1a1432180c2ce9e96373dfd +#: 41e9a07cfa5642c08b56207f8322b5a6 msgid "README example (CLI EEF, profile still used for the rest):" msgstr "README 示例(命令行指定末端,其余仍可用 profile):" #: ../../source/4-reference/descriptions/2-common.md:142 -#: 8cb9a6661c0e44cea147e7b86c27b46c +#: a3aa4651ba664b9bbe25229fc12e73a8 msgid "" "ros2 launch .launch.py \\\n" " robot_profile:=/path/to/machine_profile.yaml \\\n" @@ -747,47 +747,47 @@ msgstr "" " left_type:=rg75 right_type:=linkerhand_o7" #: ../../source/4-reference/descriptions/2-common.md:149 -#: d3bcaa77b21e4221bbbc7eefd4b7d468 +#: 09fb241cbbb04ccdbb810ef6407cbb7d msgid "Force-torque and TCP offset" msgstr "力/力矩" #: ../../source/4-reference/descriptions/2-common.md:151 -#: 89c08b1e49c141a098c6ae0254cb7505 +#: ad85ea20772d4289a9dc731cd037cbf2 msgid "Not controlled by `use_profile_eef`." msgstr "不受 `use_profile_eef` 控制。" #: ../../source/4-reference/descriptions/2-common.md:142 -#: fd7937d8d5e54b63941c3ee310b38836 +#: 72fa19eac5cb4385affb3180611326c5 msgid "`ft` / `left_ft` / `right_ft`" msgstr "`ft` / `left_ft` / `right_ft`" #: ../../source/4-reference/descriptions/2-common.md:142 -#: 5e4d31f443604163a324a69ad1847873 +#: 0eca6f90b49c46009b67811e6e51be0b msgid "Force-torque keys; override profile `defaults.ft`" msgstr "力传感器键;覆盖 profile 的 `defaults.ft`" #: ../../source/4-reference/descriptions/2-common.md:142 -#: 7d2f2bf306e54558ab0327a3ee82f967 +#: 3edfac77e19a4cc9a7a6ba62e89f528f msgid "`tcp_offset_xyz` / `tcp_offset_rpy`" msgstr "`tcp_offset_xyz` / `tcp_offset_rpy`" #: ../../source/4-reference/descriptions/2-common.md:142 -#: 1412d1d2771e4a11868e23ce1c56c06e +#: b0d83fdf9af342abad8fc7828cecaf5e msgid "Symmetric TCP offset" msgstr "对称 TCP 偏移" #: ../../source/4-reference/descriptions/2-common.md:142 -#: 4b1217260074410e848e2cacd0c60e1c +#: 41a67db1f4fd42e9b402bf5075d029c8 msgid "`left_tcp_offset_*` / `right_tcp_offset_*`" msgstr "`left_tcp_offset_*` / `right_tcp_offset_*`" #: ../../source/4-reference/descriptions/2-common.md:142 -#: 6d3485ec78b34dedbc550b1249065197 +#: cb2afa2266344f8bba82980175bcdcc9 msgid "Per-side TCP offset" msgstr "分侧 TCP 偏移" #: ../../source/4-reference/descriptions/2-common.md:159 -#: 2c220093e89447a98650e8aaf2bb922b +#: 31f295c145cc4454a98daa04cc1db380 msgid "" "Profile `defaults.ft.type`: `none` \\| `kwr75_485` \\| `kwr75_usb` (or " "left / right). `end_effectors` / `ft` / `tcp_offset` all accept a " @@ -798,7 +798,7 @@ msgstr "" "right)。`end_effectors` / `ft` / `tcp_offset` 都支持对称键并展开到左右;缺侧回退对称值。" #: ../../source/4-reference/descriptions/2-common.md:161 -#: 666303fc20d54d358d1ed22b0c848451 +#: 0ebd06b4a0d9474f89bfecbe8042b617 #, python-brace-format msgid "" "TCP strings are evaluated **before** xacro (`${PI/2}`, `pi/2`, " @@ -812,7 +812,7 @@ msgstr "" "`left_tcp_offset`)。" #: ../../source/4-reference/descriptions/2-common.md:163 -#: f8af76e8fc194684b59efd50a44d864b +#: 89061a63c40c45dcbe3b592ded7a59f2 #, python-brace-format msgid "" "ros2 launch robot_common_launch humanoid.launch.py robot:= \\" @@ -828,12 +828,12 @@ msgstr "" " tcp_offset_rpy:=\"0 0 ${PI/2}\"" #: ../../source/4-reference/descriptions/2-common.md:170 -#: 188d153597094788864f6417f3ed90e0 +#: 854f652c369e4469902636b4ffcc10a2 msgid "Platform slots (`chassis` / `arms` / `variant` / `chassis_joints_movable`)" msgstr "平台槽位(`chassis` / `arms` / `variant` / `chassis_joints_movable`)" #: ../../source/4-reference/descriptions/2-common.md:172 -#: 44e659b9e6cd4629b681edea401358a6 +#: 3c0b297626814fc980212bdff01ab060 msgid "" "From the [`robot_common_launch` README](https://github.com/fiveages-sim" "/robot-descriptions-common/blob/main/robot_common_launch/README.md) " @@ -841,66 +841,64 @@ msgid "" " `xacro/robot.xacro` default**. Empty string means the arg is not passed " "to xacro." msgstr "" -"摘自 [`robot_common_launch` README](https://github.com/fiveages-sim" -"/robot-descriptions-common/blob/main/robot_common_launch/README.md)" -"(平台槽位)。解析顺序:**CLI > profile `platform.*` > 该机 `xacro/robot.xacro` " -"默认值**。空字符串表示不向 xacro 传该参数。" +"摘自 [`robot_common_launch` README](https://github.com/fiveages-sim/robot-" +"descriptions-" +"common/blob/main/robot_common_launch/README.md)(平台槽位)。解析顺序:**CLI > " +"profile `platform.*` > 该机 `xacro/robot.xacro` 默认值**。空字符串表示不向 xacro 传该参数。" #: ../../source/4-reference/descriptions/2-common.md:163 -#: 14727f85249f44e4a7776bac657bdbd0 +#: 968dc1c57987478aa275e55a91795eef msgid "Role" msgstr "作用" #: ../../source/4-reference/descriptions/2-common.md:163 -#: da3ca58f08c24065ba723860bd345e63 +#: 368ce768e75c49e2ad693ceca87cb5d3 msgid "`chassis`" msgstr "`chassis`" #: ../../source/4-reference/descriptions/2-common.md:163 -#: eda83ef2cde54288ad9a2ec350bbe5f0 +#: 51f2b45463084d7bb1721455363306ea msgid "Chassis model (robot-specific)" msgstr "底盘型号(机型相关)" #: ../../source/4-reference/descriptions/2-common.md:163 -#: 6c4f6c3d589246e5b0f7028c8ba2d109 +#: 96b433de1a7045f384f5c3ab84f53963 msgid "`arms`" msgstr "`arms`" #: ../../source/4-reference/descriptions/2-common.md:163 -#: 31482341d4634330b4847212dbeb7c7c +#: e144ca9ea93945f28f6c73ad8ad3c1b5 #, python-brace-format msgid "" "Swappable dual-arm kit. Does **not** merge " "`config/ros2_control/{arms}.yaml` (that overlay is `variant`)" -msgstr "" -"可换双臂套件。**不会**合并 `config/ros2_control/{arms}.yaml`(那是 `variant` 的 overlay)" +msgstr "可换双臂套件。**不会**合并 `config/ros2_control/{arms}.yaml`(那是 `variant` 的 overlay)" #: ../../source/4-reference/descriptions/2-common.md:163 -#: 88592e1665da442aab9fcfc4c10a24b4 +#: b91021bbad6046cd873180c4f1ee6fa4 msgid "`variant`" msgstr "`variant`" #: ../../source/4-reference/descriptions/2-common.md:163 -#: 20cb6f83ecd9474bb1822ba1105da525 +#: 4d387b9faf2e465a94b90fd3cb05bd8a #, python-brace-format msgid "" "Platform variant (appearance, column, …). May merge " "`config/ros2_control/{variant}.yaml` if the file exists" -msgstr "" -"机型变体(外观、立柱等)。若文件存在,可合并 `config/ros2_control/{variant}.yaml`" +msgstr "机型变体(外观、立柱等)。若文件存在,可合并 `config/ros2_control/{variant}.yaml`" #: ../../source/4-reference/descriptions/2-common.md:163 -#: 512cb4d7c72a4c60a7852119e2666f6c +#: f207795482b84f76bf84cf8d0b57c48a msgid "`chassis_joints_movable`" msgstr "`chassis_joints_movable`" #: ../../source/4-reference/descriptions/2-common.md:163 -#: 858620cdc23a4435b6484398d7e999ef +#: 132f4b0339824c7c9db9c4fc8a9fb29d msgid "Whether chassis joints are movable (`true` / `false`)" msgstr "底盘关节是否可动(`true` / `false`)" #: ../../source/4-reference/descriptions/2-common.md:181 -#: a9544b6fcc004bfbb1b8a3a7bc1c551a +#: 7512960ee1ea421c8fb29904888a232f msgid "" "`create_platform_launch_arguments()` declares `chassis` / `arms` / " "`chassis_joints_movable` on humanoid / `component` and OCS2 `full_body` /" @@ -913,12 +911,12 @@ msgstr "" "`create_robot_profile_launch_arguments()` 声明。" #: ../../source/4-reference/descriptions/2-common.md:183 -#: 91cbdc1a5c06498784b6670259362fbf +#: cf80cdd3824342faaf93c5a8c43b9d56 msgid "README examples:" msgstr "README 示例:" #: ../../source/4-reference/descriptions/2-common.md:185 -#: a49876258cce4bb899f574482d504f53 +#: 880bb91019444fb780a7f6782ad7970b msgid "" "ros2 launch robot_common_launch humanoid.launch.py robot:=fiveages_w1 " "arms:=ar5_ccs\n" @@ -931,12 +929,12 @@ msgstr "" "arms:=ar5_srs" #: ../../source/4-reference/descriptions/2-common.md:190 -#: df3c5254d31541498e34a89e299dc744 +#: aa7461a7aa824de995d8eb5f7c4b5841 msgid "ros2_control config merge" msgstr "加入 ros2_control 配置" #: ../../source/4-reference/descriptions/2-common.md:192 -#: 1198e5dd08414550967a6965d46849d1 +#: a726ba8b37d645e8ae97bb1b0dd0669f msgid "" "[`load_robot_config`](https://github.com/fiveages-sim/robot-descriptions-" "common/blob/main/robot_common_launch/robot_common_launch/common/robot_utils.py):" @@ -946,27 +944,40 @@ msgstr "" "common/blob/main/robot_common_launch/README.md)。没有 `gripper:=` launch 参数。" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 93411fa803154e8ab4d0a62bf957c46a +#: b8f2abcc2a944db39c9ca1f15e946758 #, python-brace-format msgid "" "common.yaml\n" " → .yaml / ros2_controllers.yaml\n" " → {variant}.yaml # opt-in: config/ros2_control/.yaml\n" +" → EEF compose (if any)\n" " → {hardware}.yaml # opt-in: config/ros2_control/.yaml" "\n" -" → EEF compose (if any)\n" " → control.patch (profile)" msgstr "" "common.yaml\n" " → .yaml / ros2_controllers.yaml\n" " → {variant}.yaml # opt-in: config/ros2_control/.yaml\n" +" → EEF compose (if any)\n" " → {hardware}.yaml # opt-in: config/ros2_control/.yaml" "\n" -" → EEF compose (if any)\n" " → control.patch (profile)" #: ../../source/4-reference/descriptions/2-common.md:203 -#: 65246b8d5d2344f2ab6d83c2b51ab191 +#: 25d01e5caed642ad9f8cc8493fc8c187 +#, python-brace-format +msgid "" +"Hardware overlay runs **after** end-effector compose ([robot-" +"descriptions-common #41](https://github.com/fiveages-sim/robot-" +"descriptions-common/pull/41)), so a later compose pass does not drop " +"gripper keys that `{hardware}.yaml` added." +msgstr "" +"硬件覆盖在末端执行器组合**之后**([robot-descriptions-common #41](https://github.com" +"/fiveages-sim/robot-descriptions-common/pull/41)),后面的组合步骤不会丢掉 " +"`{hardware}.yaml` 写入的夹爪键。" + +#: ../../source/4-reference/descriptions/2-common.md:205 +#: abc4d9f2e1b94382bf0e3cd8e05023df msgid "" "How `.yaml` is chosen (`resolve_compose_type_key` / " "`_generate_progressive_type_candidates`):" @@ -974,8 +985,8 @@ msgstr "" "`.yaml` 如何选定(`resolve_compose_type_key` / " "`_generate_progressive_type_candidates`):" -#: ../../source/4-reference/descriptions/2-common.md:205 -#: fe61d290485a41cca9606a7f4130af66 +#: ../../source/4-reference/descriptions/2-common.md:207 +#: 0bd7c3fa1d4641b9865611184f3ca956 #, python-brace-format msgid "" "**Symmetric** EEF (`type` only, or `left_type` equals `right_type`): " @@ -983,12 +994,12 @@ msgid "" "`ccs_left_rg75` → `ccs_left` → `ccs`. First existing `{candidate}.yaml` " "wins; otherwise `ros2_controllers.yaml`." msgstr "" -"**对称**末端(只设 `type`,或 `left_type` 等于 `right_type`):按去掉 `_` 后缀做渐进匹配。辅助函数" -"文档示例:`ccs_left_rg75` → `ccs_left` → `ccs`。第一个存在的 `{candidate}.yaml` " -"生效;否则用 `ros2_controllers.yaml`。" +"**对称**末端(只设 `type`,或 `left_type` 等于 `right_type`):按去掉 `_` " +"后缀做渐进匹配。辅助函数文档示例:`ccs_left_rg75` → `ccs_left` → `ccs`。第一个存在的 " +"`{candidate}.yaml` 生效;否则用 `ros2_controllers.yaml`。" -#: ../../source/4-reference/descriptions/2-common.md:206 -#: 1b9534ec82d84d15bed6df011dfe5024 +#: ../../source/4-reference/descriptions/2-common.md:208 +#: 6673004da1284d34a07bcb9013ba6499 msgid "" "**Asymmetric** (`left_type` ≠ `right_type`): skip progressive type YAML. " "Base file is `ros2_controllers.yaml`, then **EEF compose** from " @@ -998,105 +1009,122 @@ msgid "" "plus per-side templates (`control_compose.py`)." msgstr "" "**非对称**(`left_type` ≠ `right_type`):跳过渐进 type YAML。基底文件是 " -"`ros2_controllers.yaml`,再按 [`eef_control_registry.yaml`](https://github.com" -"/fiveages-sim/robot-descriptions-" +"`ros2_controllers.yaml`,再按 " +"[`eef_control_registry.yaml`](https://github.com/fiveages-sim/robot-" +"descriptions-" "common/blob/main/robot_common_launch/config/eef_control_registry.yaml) " "与分侧模板做 **EEF compose**(`control_compose.py`)。" -#: ../../source/4-reference/descriptions/2-common.md:208 -#: 6c2e8955fc9143d78c9891bd281c2840 +#: ../../source/4-reference/descriptions/2-common.md:210 +#: c0fa8e0761d84b02becf02ec77b73a70 msgid "" "`hardware:=` values in that README: `mock_components` / `gz` / `isaac` / " -"`real`. Overlay YAML is merged **only if the file exists**. Profile YAML " -"`hardware:` (serial, `arm_ctrl_mode`) is a different layer and applies " -"only when `hardware:=real`." +"`isaac_sim` / `real`. `isaac_sim` is the in-process Isaac hardware " +"interface ([`simulation_hardware.xacro`](https://github.com/fiveages-sim" +"/robot-descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro));" +" FaSim sets it from `ROS2ControlLaunch`, not from `demo.launch.py`. " +"Overlay YAML is merged **only if the file exists**. `isaac_sim` can reuse" +" `isaac.yaml` (`emit_control` passes `hardware_yaml=isaac`). Profile YAML" +" `hardware:` (serial, `arm_ctrl_mode`) is a different layer and applies " +"only when `hardware:=real`. `use_sim_time` defaults true for `gz`, " +"`isaac`, and `isaac_sim` ([#42](https://github.com/fiveages-sim/robot-" +"descriptions-common/pull/42))." msgstr "" -"该 README 里的 `hardware:=` 取值:`mock_components` / `gz` / `isaac` / " -"`real`。overlay YAML **仅当文件存在时**才合并。Profile YAML 的 " -"`hardware:`(串口、`arm_ctrl_mode`)是另一层,只在 `hardware:=real` 时生效。" +"该 README 中的 `hardware:=` 取值:`mock_components` / `gz` / `isaac` / " +"`isaac_sim` / `real`。`isaac_sim` 是进程内 Isaac " +"驱动层([`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-" +"descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro));FaSim" +" 从 `ROS2ControlLaunch` 设置它,而不是从 `demo.launch.py`。覆盖 YAML " +"**仅在文件存在时**合并。`isaac_sim` 可以复用 `isaac.yaml`(`emit_control` 传入 " +"`hardware_yaml=isaac`)。配置里的 `hardware:`(串口、`arm_ctrl_mode`)是另一层,只在 " +"`hardware:=real` 时生效。`gz`、`isaac`、`isaac_sim` 的 `use_sim_time` 默认 " +"true([#42](https://github.com/fiveages-sim/robot-descriptions-" +"common/pull/42))。" -#: ../../source/4-reference/descriptions/2-common.md:210 -#: b4e89ed853724c10921d20b4a718b9a3 +#: ../../source/4-reference/descriptions/2-common.md:212 +#: 78e078287ae94ca8889332e274d105d5 msgid "Launch entries" msgstr "Launch 入口(README)" -#: ../../source/4-reference/descriptions/2-common.md:212 -#: 4cf8368cc8ee452392298f31b9a5457d +#: ../../source/4-reference/descriptions/2-common.md:214 +#: 4ae2c069dbd347da807f52e4552b4d2f msgid "From the repo README (paths under `robot_common_launch/launch/`):" msgstr "仓库 README(路径在 `robot_common_launch/launch/` 下):" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 1782c2d4eabd4675b6f424fc992c21e8 67038967284142a5aa7ba8d859cdf530 +#: 09bcfc30f2ed4e328eea0d96534bd926 d97b64b7b60945dcb5fe0fca52c76165 msgid "Kind" msgstr "类别" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 367e53d4cf4149d590d057c188cfa76b +#: e8af4a50135f45e49e2e8877227b522e msgid "Files the README names" msgstr "Profile schema(README):" #: ../../source/4-reference/descriptions/2-common.md:194 -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 52279b94b6fd4953a5c981fd5b99bafd a1395e865ac142559d9910dcae035102 -#: f6112779a6084c6babc8d4abc50f20b6 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 9f2967d0676c4dada785b5d5f721e350 b43077a593ac4ee8a56214b01bd9245b +#: c4d1f9758aff4a03afb0d6d72692821f msgid "Visualization" msgstr "RViz 可视化" #: ../../source/4-reference/descriptions/2-common.md:194 -#: b873c957d8094b069dff610906896489 +#: 9e9fbb84cbd742aab75f5b684580bc6c msgid "" "`visualize/gripper.launch.py`, `visualize/hand.launch.py`, " "`visualize/manipulator.launch.py`, `visualize/humanoid.launch.py`" msgstr "`visualize.launch.py` / `humanoid.launch.py` / `manipulator.launch.py`" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 4ab15deb5db749c3a46b86d3ccf07989 858a534a906c402ba9537c47443c6f4f +#: 1dca3555381b44e7b669cde7d61ae4e3 97d33d6865cd4b48840c9559f26d0027 msgid "Control" msgstr "`control.patch`" #: ../../source/4-reference/descriptions/2-common.md:194 -#: c781d9082b434b84afc5ce95636c897c +#: 4d0168366bbe44f9a695c74a8f5614df msgid "" "`control/controller_manager.launch.py`, `control/diff_drive.launch.py`, " "`control/hardware_visualize.launch.py`" msgstr "`control/controller_manager.launch.py`、`control/diff_drive.launch.py`、`control/hardware_visualize.launch.py`" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 9bd2e7159edf4c679da7f8176c56232c d6d2a2e42b774349958fd8d6b8a9d74b +#: 8a72da5e9fc1413ab6fbbb689c342a93 9a9081c7e3ea40db89f42e8fdeeda55e msgid "Manipulation" msgstr "RViz 可视化" #: ../../source/4-reference/descriptions/2-common.md:194 -#: cfe3cd3a8b5241e88a1622445e894476 +#: a7132bb5e5c846dd8c98b20740e84ace msgid "`manipulation/manipulator_ocs2.launch.py`" msgstr "`manipulation/manipulator_ocs2.launch.py`" #: ../../source/4-reference/descriptions/2-common.md:194 -#: ../../source/4-reference/descriptions/2-common.md:234 -#: b2286a73c59240dfab61baa6b1fb0018 bca1027900f248358a83f5870c440592 -#: dbcf43363a64421595141a3aa43cd795 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 1e11ca0c300e4c48a91a7fa5a16a69c2 495b6ed58dc24881a0969780e4db7745 +#: e457926032c04b9f9bc1aed0f1514da2 msgid "Navigation" msgstr "导航" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 064e53a8185a4b4a85833adced6b5d3c +#: 3d54445df09345ce9c30ec07f80cb0a9 msgid "" "`navigation/navigation.launch.py`, `navigation/cartographer.launch.py`, " "`navigation/navigation_slam.launch.py`, `navigation/amr_rctk.launch.py`" msgstr "`navigation/navigation.launch.py`、`navigation/cartographer.launch.py`、`navigation/navigation_slam.launch.py`、`navigation/amr_rctk.launch.py`" -#: ../../source/4-reference/descriptions/2-common.md:221 -#: 427fadfcd4c84763ad0a1881cbcccd6e +#: ../../source/4-reference/descriptions/2-common.md:223 +#: e8ab5de2d3a84c2ea99c39759dfda738 msgid "Also on `main` under `launch/` (not named in that README table):" msgstr "`main` 的 `launch/` 下还有这些文件(README 表没点名):" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 243d0d2c16554b96be66192fb5c2302c +#: c7d4b615c2964454b5ca423298b89312 msgid "Extra files" msgstr "额外文件" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 3f08912027dd4dc984cc7f5c13dfc7b1 +#: 9692e458ccb4415a834a70ceaee361c4 msgid "" "`visualize/visualize.launch.py`, `visualize/component.launch.py` (named " "in the `robot_common_launch` README invoke table)" @@ -1105,42 +1133,40 @@ msgstr "" " README 调用表有写)" #: ../../source/4-reference/descriptions/2-common.md:194 -#: b9d1ccf1cda248e7b09fd1af19d182ad +#: 6c1b3703706944fa924b0db8d4ec4b43 msgid "`control/cartesian_controller.launch.py`" msgstr "`control/cartesian_controller.launch.py`" #: ../../source/4-reference/descriptions/2-common.md:194 -#: f97af82618034fb598ac2c53d9a5c58a +#: 9e3cee9bd35c4b46b8bd3716702a5834 msgid "`manipulation/humanoid_ocs2.launch.py`" msgstr "`manipulation/humanoid_ocs2.launch.py`" #: ../../source/4-reference/descriptions/2-common.md:194 -#: 3bc530defdca46c2bbc639fbc77c9845 +#: e840bf387413420dbfb9b9a685c548fd msgid "" "`navigation/navigation_cartographer.launch.py`, " "`navigation/navigation_isaac_gt.launch.py`" msgstr "`navigation/navigation_cartographer.launch.py`、`navigation/navigation_isaac_gt.launch.py`" -#: ../../source/4-reference/descriptions/2-common.md:230 -#: ccde7198cbe24c639183fa395e518ddc +#: ../../source/4-reference/descriptions/2-common.md:232 +#: 1b312f76b34445cbb39e8b0b14b9e583 msgid "" "`navigation_isaac_gt.launch.py` is the default Nav2 launch cited by " "[robot_action_composer ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md)." +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md)." msgstr "" "`navigation_isaac_gt.launch.py` 是 [robot_action_composer " "ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md) 写的默认 Nav2 launch。" +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md) 引用的默认 Nav2 启动。" -#: ../../source/4-reference/descriptions/2-common.md:232 -#: be666c5d63d2455594f17eaa83e54e3d +#: ../../source/4-reference/descriptions/2-common.md:234 +#: 7f0bdb12eaa245f6bd9838c2f8c15268 msgid "`robot_common_launch` README invoke table (same package; install first):" msgstr "`robot_common_launch` README 的调用表(同一包;先安装):" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 110fedcfbe6a464a8e0cea44d685a5f3 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 60125894cc814f65be9348bf693924ea msgid "" "colcon build --packages-up-to robot_common_launch --symlink-install\n" "source install/setup.bash" @@ -1148,63 +1174,63 @@ msgstr "" "colcon build --packages-up-to robot_common_launch --symlink-install\n" "source install/setup.bash" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: c3c47e4ed3e444f6ab80056874e91704 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 2cf99a5a922a42c5960525dc9f6e3b92 msgid "Scene" msgstr "场景" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 3d89ae2db5f4461fbc1fa49faf7b89b3 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: ad15825f477642348a45b77ee577c069 msgid "Launch" msgstr "启动" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 38b2db8719b64e2ea36888b12ca2aeb1 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 25ebab0090e8408aa7e08d78993d1b2d msgid "`visualize.launch.py` / `humanoid.launch.py` / `manipulator.launch.py`" msgstr "`visualize.launch.py` / `humanoid.launch.py` / `manipulator.launch.py`" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: a5950496802549a6a4f4f378fe9063e1 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 679cf942c2fa4d10950b5d883cd9ef92 msgid "Gripper / hand" msgstr "夹爪" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 19ecdf359eb94b50bf1fdf8c15e25068 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: c22f6038a5a74cac8a963fb3b79ea88f msgid "`gripper.launch.py` / `hand.launch.py`" msgstr "`gripper.launch.py` / `hand.launch.py`" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: cd422f43d08b499d957a22baa349a97a +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 79755aa9a36e4b8db645f459bb428d9b msgid "Component" msgstr "组件" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 373fad24a8384fb6ab477e8ad9ec8982 +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 0c04252b66b747baac4f99c6668949bd msgid "`component.launch.py`" msgstr "`spawn_robot.launch.py`" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 7ace24c9a2ca4f518daec2afc03e5d0f +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 0e275789502b4c34ba8b0f57d1933755 msgid "Controller manager" msgstr "控制器管理" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: 89d28de4f95c4423bc2fff38d0d05f3c +#: ../../source/4-reference/descriptions/2-common.md:236 +#: 1976fd74ef724f48b6710abc3634d110 msgid "`controller_manager.launch.py`" msgstr "`controller_manager.launch.py`" -#: ../../source/4-reference/descriptions/2-common.md:234 -#: df3414b23c724c41ada958c2874e28cf +#: ../../source/4-reference/descriptions/2-common.md:236 +#: d6f520337b6749ffb5f150d5ca047903 msgid "`navigation*.launch.py`" msgstr "`display.launch.py`" -#: ../../source/4-reference/descriptions/2-common.md:247 -#: 8c4664dd00f74582abe08aa95650a2a8 +#: ../../source/4-reference/descriptions/2-common.md:249 +#: e1a9161867764bcd885fb3d200126428 msgid "Repo README examples:" msgstr "仓库 README 示例:" -#: ../../source/4-reference/descriptions/2-common.md:249 -#: 5c098d96e79e4aa4ba0021c92720fc3f +#: ../../source/4-reference/descriptions/2-common.md:251 +#: 844df31794ab403eb8fff78f02af6290 msgid "" "ros2 launch robot_common_launch gripper.launch.py\n" "ros2 launch robot_common_launch manipulator_ocs2.launch.py\n" @@ -1214,8 +1240,8 @@ msgstr "" "ros2 launch robot_common_launch manipulator_ocs2.launch.py\n" "ros2 launch robot_common_launch navigation_slam.launch.py" -#: ../../source/4-reference/descriptions/2-common.md:255 -#: 1febe6164d7242ad8b682841184c87b2 +#: ../../source/4-reference/descriptions/2-common.md:257 +#: f2c6f8b9c22b4a6a851a6e4e2c305880 msgid "" "OCS2 `demo` / `split_body` / `full_body` also declare the first-class EEF" " / profile arguments via `create_robot_profile_launch_arguments()` / " @@ -1225,13 +1251,13 @@ msgstr "" "`create_robot_profile_launch_arguments()` / " "`create_platform_launch_arguments()` 声明这些一等参数。" -#: ../../source/4-reference/descriptions/2-common.md:257 -#: b2269fa8fdc846b0bac3a20f99f53405 +#: ../../source/4-reference/descriptions/2-common.md:259 +#: 24a47adf9ced429f98f387d2d4bae422 msgid "GitHub Release `.deb`" msgstr "GitHub Release `.deb`" -#: ../../source/4-reference/descriptions/2-common.md:259 -#: a6b3235495f44fe0b232475e44a49688 +#: ../../source/4-reference/descriptions/2-common.md:261 +#: 3c1282519a644c45b1d282a68f36944e msgid "" "`ros-jazzy-robot-descriptions-common` is **not** on Debian / ROS apt. " "Workflow: [`.github/workflows/build-common-deb.yml`](https://github.com" @@ -1245,8 +1271,8 @@ msgstr "" "/build-common-deb.yml)。规则:[README.deb.md](https://github.com/fiveages-sim" "/robot-descriptions-common/blob/main/README.deb.md)。" -#: ../../source/4-reference/descriptions/2-common.md:261 -#: 94a27780d4074d299f707dec5ca9728e +#: ../../source/4-reference/descriptions/2-common.md:263 +#: 567be590a2ab40078437e99d05d3f92b msgid "" "**Primary path:** in `open-deploy-ws` / `fa-deploy-ws`, run " "`./init_repo.sh` and choose `d` for common, or " @@ -1256,13 +1282,13 @@ msgstr "" "common 选 `d`,或 `./scripts/install_core_debs.sh --only common`。用菜单 **2) " "切换模块安装方式** 在源码 ↔ deb 之间切换。" -#: ../../source/4-reference/descriptions/2-common.md:263 -#: 37efafbd77da4728bfa73ed8149ba216 +#: ../../source/4-reference/descriptions/2-common.md:265 +#: 52bab0599cef47469cadb9c297c15a89 msgid "README.deb.md example:" msgstr "README.deb.md 示例:" -#: ../../source/4-reference/descriptions/2-common.md:265 -#: 0a391bcb18bf4182a3193b8021f01626 +#: ../../source/4-reference/descriptions/2-common.md:267 +#: 1137fbcf187b4ad4b29d9cec7fce1731 msgid "" "gh release download pre-release --repo fiveages-sim/robot-descriptions-" "common --pattern '*_amd64.deb'\n" @@ -1272,35 +1298,35 @@ msgstr "" "common --pattern '*_amd64.deb'\n" "sudo dpkg -i ros-jazzy-robot-descriptions-common_*.deb" -#: ../../source/4-reference/descriptions/2-common.md:270 -#: 30976d39750c4a4195b4c2ca20275c17 +#: ../../source/4-reference/descriptions/2-common.md:272 +#: 8686eac5ac7348be966ea95698dfc727 msgid "Related" msgstr "相关" -#: ../../source/4-reference/descriptions/2-common.md:272 -#: f2819a5123a34bf69fe829d5fb9ce1b3 +#: ../../source/4-reference/descriptions/2-common.md:274 +#: 12e482f6774241879a1b531ab7949049 msgid "[robot_descriptions](1-robot_descriptions.md) — umbrella path `common`" msgstr "[robot_descriptions](1-robot_descriptions.md) — 伞形仓路径 `common`" -#: ../../source/4-reference/descriptions/2-common.md:273 -#: 87616bbd6cd641dbb7b83670c67835e3 +#: ../../source/4-reference/descriptions/2-common.md:275 +#: c6ea505714864768b9776693cb809f75 msgid "[Switch Robot](../../2-how_to/1-basic_operations/2-switch_robot.md)" msgstr "[切换机器人](../../2-how_to/1-basic_operations/2-switch_robot.md)" -#: ../../source/4-reference/descriptions/2-common.md:274 -#: 08851b3381944335ae27ac92045e85d2 +#: ../../source/4-reference/descriptions/2-common.md:276 +#: 93eeeac2188546feb99046c757ac610e msgid "[Add a Robot](../../2-how_to/6-deployment/10-add_a_robot.md)" msgstr "[切换机器人](../../2-how_to/1-basic_operations/2-switch_robot.md)" -#: ../../source/4-reference/descriptions/2-common.md:275 -#: 9d3dee08bf3249979dbacc77400acce7 +#: ../../source/4-reference/descriptions/2-common.md:277 +#: 681841dfa6654bd3b637a4e1e26c892a msgid "[ocs2_arm_controller](../controllers/2-ocs2_arm_controller.md)" msgstr "" "[ocs2_arm_controller](../controllers/2-ocs2_arm_controller.md) — `demo` /" " `split_body` / `full_body` 声明这些参数" -#: ../../source/4-reference/descriptions/2-common.md:276 -#: 10978cc8eda9477caa0bb5bfd9847c75 +#: ../../source/4-reference/descriptions/2-common.md:278 +#: 1f502ffc15074982bea7469252fb9bff msgid "[Naming Conventions](../../3-concepts/3-naming_conventions.md)" msgstr "[命名规范](../../3-concepts/3-naming_conventions.md)" @@ -1643,3 +1669,18 @@ msgstr "[命名规范](../../3-concepts/3-naming_conventions.md)" #~ " end_effectors:\n" #~ " type: # symmetric; or write left / right" +#~ msgid "" +#~ "`hardware:=` values in that README: " +#~ "`mock_components` / `gz` / `isaac` / " +#~ "`real`. Overlay YAML is merged **only" +#~ " if the file exists**. Profile YAML" +#~ " `hardware:` (serial, `arm_ctrl_mode`) is a" +#~ " different layer and applies only " +#~ "when `hardware:=real`." +#~ msgstr "" +#~ "该 README 里的 `hardware:=` 取值:`mock_components`" +#~ " / `gz` / `isaac` / `real`。overlay" +#~ " YAML **仅当文件存在时**才合并。Profile YAML 的 " +#~ "`hardware:`(串口、`arm_ctrl_mode`)是另一层,只在 `hardware:=real` " +#~ "时生效。" + diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/4-fiveages_umbrella.po b/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/4-fiveages_umbrella.po index cb9c0e8..03eea40 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/4-fiveages_umbrella.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/descriptions/4-fiveages_umbrella.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-13 03:15+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,29 +21,29 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:1 -#: 8718e1713e2043a2ac97b0b1514a0a1b +#: d5fdeb337f564fc1bf2f58a7cb7390a1 msgid "FiveAges robot descriptions" msgstr "FiveAges 机器人描述" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:3 -#: df41c58717494809b7a15e02c0d21593 +#: 75b031eae4fe4ca18f296bb536e9d428 msgid "" "One page for FiveAges (中科第五纪) wheeled-arm humanoid **URDF** packages and " "their **USD** mapping." msgstr "中科第五纪轮臂人形 **URDF** 包及其 **USD** 对照的单页。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:5 -#: aa139031593141cc9f441544f3d90fda +#: f1c2031ee6f14d74a5c146c3cfd0dd78 msgid "Public now (Gen1 W1 + Gen2 W2 / S2 + components + USD)" msgstr "现已公开(Gen1 W1 + Gen2 W2 / S2 + 组件 + USD)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:8 -#: bdacf7ca06614ee0aeefd80e701a09e4 +#: 6743cb05b7e74fa8a2524df5d73e6777 msgid "These remotes are public (HTTPS):" msgstr "以下远端已公开(HTTPS):" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:10 -#: 9d59a60f516b4fdbab23af8290b9cf65 +#: 179b74e6aef44883baa89b07b71c987d msgid "" "URDF: [fa-w1-description](https://github.com/fiveages-" "sim/fa-w1-description) (W1 / Gen1), " @@ -61,7 +61,7 @@ msgstr "" "/fiveages-sim/fa-w2-components)(共享Gen2 组件)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:11 -#: 59034f5cb59f473f8c3095315683e201 +#: c43977254bd54d5eb11bbdddd4b74251 msgid "" "USD: [fiveages-gen1-robot-usds](https://github.com/fiveages-sim/fiveages-" "gen1-robot-usds) (W1; `robot_usds` path `humanoid/FiveAges/Gen1`) and " @@ -74,38 +74,46 @@ msgstr "" "usds)(`W2/`、`S2/`、`components/`;路径 `humanoid/FiveAges/Gen2`)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:13 -#: 106290c987774147b1f93ba1fbec3d97 +#: 4fee678af17441698f52293ed8d8e46d msgid "" "Launch names and xacro details: those **public package READMEs**. There " "is no `open-deploy-ws` Gen1 or Gen2 branch." msgstr "Launch 名和 xacro 细节见那些**公开包 README**。没有 `open-deploy-ws` 的 Gen1 或 Gen2 分支。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:16 -#: 1243e6fab80b45aaa698bbe6b6b23411 +#: f0608bbf7a8f445cbb560dcfdb9896da msgid "Still private — W2R and S2R are not open" msgstr "仍为私有 — W2R 与 S2R 尚未开放" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:19 -#: a148664ef4a14d11b32cb1a055985a5c +#: 9db3791d04bd44e985417238fbd8616d msgid "" -"These remotes are **not** public (GitHub 404 without access): **W2R** " -"(`fa-w2r-description`), **S2R** (`fa-s2r-description`), **Gen3** (`fa-" -"wce3-description`, `fiveages-gen3-robot-usds`), and `fa-deploy-ws`. There" -" is **no** public `robot-descriptions-fiveages` umbrella. Contact your " -"team lead. After access, follow **those package READMEs**." +"These remotes need repository access (without it, GitHub does not open " +"the page): **W2R** ([fa-w2r-description](https://github.com/fiveages-sim" +"/fa-w2r-description)), **S2R** ([fa-s2r-description](https://github.com" +"/fiveages-sim/fa-s2r-description)), **Gen3** ([fa-" +"wce3-description](https://github.com/fiveages-sim/fa-wce3-description), " +"[fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3" +"-robot-usds)), and [fa-deploy-ws](https://github.com/fiveages-sim/fa-" +"deploy-ws). There is **no** public `robot-descriptions-fiveages` " +"umbrella. After access, follow **those package READMEs**." msgstr "" -"这些远端**尚未公开**(无权限 GitHub404):**W2R**(`fa-w2r-description`)、**S2R**(`fa-" -"s2r-description`)、**Gen3**(`fa-wce3-description`、`fiveages-gen3-robot-" -"usds`),以及`fa-deploy-ws`。**没有**公开的 `robot-descriptions-" -"fiveages`伞形仓。请联系组长开通。开通后以**那些包README** 为准。" +"这些远程仓库需要权限(没有权限时 GitHub 打不开页面):**W2R**([fa-w2r-" +"description](https://github.com/fiveages-sim/fa-w2r-description))、**S2R" +"**([fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-" +"description))、**Gen3**([fa-wce3-description](https://github.com/fiveages-" +"sim/fa-wce3-description)、[fiveages-gen3-robot-usds](https://github.com" +"/fiveages-sim/fiveages-gen3-robot-usds)),以及 [fa-deploy-" +"ws](https://github.com/fiveages-sim/fa-deploy-ws)。没有公开的 `robot-" +"descriptions-fiveages` 伞仓。开通后按**那些包的 README** 操作。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: a543b3572fe8490598b204429c1788c0 +#: 4af44c08ae0c44b6b60d6e0c31665fd1 msgid "Source of truth" msgstr "权威来源" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:25 -#: 51382c9691404bc2966f0b4334122471 +#: 611919bee2b24dc7ab896ce37f15a265 msgid "" "URDF gitlinks: [robot_descriptions `.gitmodules` on " "`main`](https://github.com/fiveages-" @@ -120,7 +128,7 @@ msgstr "" "sim/robot_descriptions/blob/feature/agilex/.gitmodules)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:26 -#: af864460ed6947058384a0611ad898fc +#: 49ed1fe2696340df96a7ebbaf5e25777 msgid "" "On-disk path: `humanoid/FiveAges/` inside the public " "[robot_descriptions](https://github.com/fiveages-sim/robot_descriptions) " @@ -130,7 +138,7 @@ msgstr "" "sim/robot_descriptions)下的`humanoid/FiveAges/`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:27 -#: afcc9b34943b436699a0bc2f6d5a6f5c +#: b11eb89b788842f8b98d046a1eb3449a msgid "" "The public [robot_descriptions README](https://github.com/fiveages-" "sim/robot_descriptions/blob/main/README.md) **does not** table these " @@ -141,7 +149,7 @@ msgstr "" "`.gitmodules` 为准,不要用 README 品牌表" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:28 -#: 0dd580b1de6f4127aa8ca5a69cd49bd3 +#: aed4bcbcf1ea4ba09dc180fedeb232f1 msgid "" "Public USD: [robot_usds README](https://github.com/fiveages-" "sim/robot_usds/blob/main/README.md) §3.1 Humanoid → FiveAges, [fiveages-" @@ -156,7 +164,7 @@ msgstr "" "gen2-robot-usds)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:29 -#: ccdb865eba3243858d7890404cc233a8 +#: 403ad7b902b649cc876460c19d55d104 msgid "" "Workspace pattern (script name only): [fa-deploy-ws " "Setup](../../1-getting_started/4-fa_deploy_ws.md) — `./init_repo.sh`. " @@ -166,36 +174,35 @@ msgstr "" " — `./init_repo.sh`。额外参数和机器人 ID 在开通后的该私有 README 里。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:30 -#: a9ad0451358a4cd9acdf4b1a643d80f1 +#: 02bdb7a295784da88adbc98e838b3992 msgid "" "Public launch / `hardware:=`: [robot_common_launch](2-common.md) " -"(`mock_components` / `gz` / `isaac` / `real`)" +"(`mock_components` / `gz` / `isaac` / `isaac_sim` / `real`)" msgstr "" -"公开 launch / " -"`hardware:=`:[robot_common_launch](2-common.md)(`mock_components` / `gz` " -"/ `isaac` / `real`)" +"Public launch / `hardware:=`: [robot_common_launch](2-common.md) " +"(`mock_components` / `gz` / `isaac` / `isaac_sim` / `real`)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:33 -#: 4a8c6745a18f4eb0987858cb6ac1bf96 +#: c4310296372542bea618102c56aeb175 msgid "" "FiveAges **humanoid** platforms in this docs set (W1, W2, W2R, S2, S2R, " "WCE3) are **wheeled-arm humanoids** (mobile base + arms), not bipedal." msgstr "本文档里的 FiveAges **人形**平台(W1、W2、W2R、S2、S2R、WCE3)是**轮臂人形**(底盘 + 臂),不是双足。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:35 -#: 278dc5a769fe47bd89871dbf8c9a55a5 +#: c676b51091274557aec6d940b3c5f374 msgid "URDF packages (`robot_descriptions`)" msgstr "URDF 包(`robot_descriptions`)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:37 -#: 46c820ec491c4d52b4a15560478ac1ee +#: 7bc8127f6a4e495c82cdae5f38c49e78 msgid "" "FiveAges descriptions live as **git submodules** of the public umbrella. " "Checkout names and remotes below are from `.gitmodules`." msgstr "FiveAges 描述是公开伞形仓下的 **git 子模块**。下面的检出目录名和远端来自 `.gitmodules`。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:39 -#: 7d6e27f52b0c4bcab31d7a2ca0a080eb +#: 93ecf4a941f746339dce35d79ea9d6ba msgid "" "**Public remotes** (W1, W2, S2, `fa-w2-components`): browse the HTTPS " "repos, or `git submodule update --init` the matching path on " @@ -218,19 +225,19 @@ msgstr "" "sim/fa-w2-description)、[S2](https://github.com/fiveages-" "sim/fa-s2-description)、[组件](https://github.com/fiveages-" "sim/fa-w2-components))。W1 复用珞石 `ar5_*` 描述([robot-descriptions-" -"rokae](https://github.com/fiveages-sim/robot-descriptions-rokae));W2 与 " -"S2 复用天机 `m6_ccs_description`([robot-descriptions-tianji](https://github.com" +"rokae](https://github.com/fiveages-sim/robot-descriptions-rokae));W2 与 S2" +" 复用天机 `m6_ccs_description`([robot-descriptions-tianji](https://github.com" "/fiveages-sim/robot-descriptions-tianji))。这些厂商远端已**公开**。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:41 -#: 0bc08c1fa40a485ab7cffd6d2ec26124 +#: 29f1d4720de7487db9699732b4178503 msgid "" "**Still private remotes** (**W2R**, **S2R**, Gen3): 404 without access. " "**W2R and S2R are not open yet.**" msgstr "**仍为私有的远端**(**W2R**、**S2R**、Gen3):无权限 404。**W2R 与 S2R 尚未开放。**" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:43 -#: 4595924b30e24a0fa3179e1d70ec7a52 +#: c62971f06f9f45dcb1d6245662e8484d msgid "" "[`open-deploy-ws` `submodules_visibility.conf`](https://github.com" "/fiveages-sim/open-deploy-ws/blob/main/submodules_visibility.conf) still " @@ -244,123 +251,123 @@ msgstr "" "ws`递归 init。没有公开的 `open-deploy-ws`Gen1 或 Gen2 分支。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:45 -#: 9b1e93f29ac9497fa8ecb80a709bdec8 +#: d38f02566eb94023941fcaf0ac99180f msgid "`main` (flat under `humanoid/FiveAges/`)" msgstr "`main`(平铺在 `humanoid/FiveAges/` 下" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 075bd9372a0f498189ba13e6ef59d130 558e949633f7465abdb233111844409f +#: 73d2a21f425248ed85da58cfe8f6f447 8458c56572804df7bc8f9380e291c1fc msgid "Path" msgstr "路径" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 33ac07bc7b4d4c8fa9267a6a3306a83a c09187e184c64a9dbec55ab2e6fcdd1d +#: 33d735c6388b471cb52fe8ea0e6f3dfd ed2ecaccf5314ab495e32fc9589fb885 msgid "Package dir" msgstr "包目录" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 518073e24dbc48e5a7df0c2cf8a1830e b5d5d5bebc564115a9cebe7864f4824b +#: 6ff3262888aa42919a040bfaa395ea24 92ac1a6fec564f28a752036c003dbacd msgid "Remote" msgstr "远端" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 87821869afa040f9844eff41fd5eed03 89e9e8c0e9034d2f9bd6012130a913e8 -#: 9bc0b26a5a634aacbbd93c595bfb19f5 +#: 3d8c22610c564da29f29e5b6e921d414 94b1685562544ff0914230660ede9f9a +#: ad5c1eefb29e488687f5f6999f77679f msgid "Visibility" msgstr "可见性" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: ffbdab60b9e14aaa9d891344fc5c40b9 +#: 8708d6ef8b4d4a9f86a72ead7688c384 msgid "`humanoid/FiveAges/fiveages_w1_description`" msgstr "`humanoid/FiveAges/fiveages_w1_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 9c716b719c3445b494d07805212e91e2 f1c909515d8743eca18370e79c6ea1de +#: 75c4727f812f4758b8bd2e0203ec0e31 e6296c1f48d141bcabe0cf0cfbdb7a12 msgid "`fiveages_w1_description`" msgstr "`fiveages_w1_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 5734b9d7db884bc2bae7123913b9c7ff f5288d4bf6a947a982420b2eaf2d30b5 +#: 12f285ee6d304c72952bd8670b82c100 717c2bef8cb2418d9df6ebc3687e1d26 msgid "[fa-w1-description](https://github.com/fiveages-sim/fa-w1-description)" msgstr "[fa-w1-description](https://github.com/fiveages-sim/fa-w1-description)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 110d888327cd49c8b06ac1797dbc5246 1412b284e2524510ac180b8b1c4c518c -#: 598a721b7dfb476ab216f8c4c3ad26cd 7ef0eae02035454ca02774a2e1d5db70 -#: a211accff7f0415cb22125f63e755d63 ad3236da00744578afa504345c24c948 -#: df4bc542bfe2428eb49f94dc6d2149d7 df65540e3b93432d9cd58f8c70e7ce0d -#: e5c196952fd04c84b9cccab88380b658 eecead6c1bcd4ed88ed1c04fe7d0f4ea +#: 18f60621cff44f5db5c183af2d6b481f 2573e5c7dd9e44719411d7bc4d548dfe +#: 25a37a5bb18f46bcacfd14f407104ceb 261510de27484733b3d573ab09b76e7d +#: 5b144cf10329443ab97d4fb14b3fdb5a 61e499e39bb74bf2a931f600aa0d39f3 +#: 6a43c66e031c4accaa08ef73b4302a99 9ee7f799668d4741a6c1974d70f35b0c +#: ec5b6f48b505473fbb191ed597ae5aa2 f30ca3833b71402f82c440010f54ab49 msgid "Public" msgstr "公开" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 917ca62f95dd4b62ab1b2185e0dcf1c8 +#: ac587260bc7d486c9753bfa2e5da7fe9 msgid "`humanoid/FiveAges/fiveages_w2_description`" msgstr "`humanoid/FiveAges/fiveages_w2_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 182239c0bf024d54b21dc7d40e1e8801 79f18083c8484675b5e82f9c6f48e747 +#: 01b6428068f4422bacf04f93e670c81b ffcca1d3941e4df89352e1df2fffe1a1 msgid "`fiveages_w2_description`" msgstr "`fiveages_w2_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 1266e2f0a2224329a703c0c4314eb425 13a99fa5ee384fc396476af349573e7c +#: a813518881c14fcbb7fc23e5db0d9838 b218ae43a7764331b48e5914d54a6793 msgid "[fa-w2-description](https://github.com/fiveages-sim/fa-w2-description)" msgstr "[fa-w2-description](https://github.com/fiveages-sim/fa-w2-description)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 5b8a3e2881fc4930bda590c41a103149 +#: b1359b263da9437bbef5335401cd1d02 msgid "`humanoid/FiveAges/fiveages_w2r_description`" msgstr "`humanoid/FiveAges/fiveages_w2r_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 55d6b702d2a14d58a87f87aa483eb5a0 9fd07c1ef0ae4a3c9735c10186cf2ac6 +#: 0e1cec541e41406a9e0ecfc52c166037 e1f665fa82b64c369c1301ba58cd9d91 msgid "`fiveages_w2r_description`" msgstr "`fiveages_w2r_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 084c6c9cf9bf4b6b87a6a0c7eddcae3c cdb24ea6fdd941b0bfdd81c00d7990b8 -msgid "`fa-w2r-description`" -msgstr "`fa-w2r-description`" +#: 228aa5908be8460585a88f6aaf6bea6f e5ab2968c69f43dc855d49d12307eb34 +msgid "[fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description)" +msgstr "[fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 093cc082b5884fea97858a3a01667a35 2121a74641b449f4baf24deac8f84375 -#: c07003eb453a4db58243693551cc85e3 +#: 5a1d360aa38346b688238c4912f16690 67207fc4e0a34acab0899ade3982e210 +#: edb368600da047de87b5c76cd75ed414 msgid "Private — **not open**" msgstr "私有 — **尚未开放**" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 9109b42332d841cb9a61474e8173c04d +#: dfc3906bfb5048f0bbeec22a093789db msgid "`humanoid/FiveAges/fiveages_s2_description`" msgstr "`humanoid/FiveAges/fiveages_s2_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 1db2d742929a4412b69a82574e1c4039 5e54eff245cc40a2ae96c9f69a6ae095 +#: 96c2cd5adabe441ab0c22e51cc6154b2 f0ae769f78104a638444d1b166365cbc msgid "`fiveages_s2_description`" msgstr "`fiveages_s2_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 2235b0b3f643495c83eb321fc97c48c2 55d0d4da62c44d1fbcb72e1b82969cd9 +#: c18bf71583744cbc8fd2857e08ff34de e51684da7a2644f586717bfa8af0f2fb msgid "[fa-s2-description](https://github.com/fiveages-sim/fa-s2-description)" msgstr "[fa-s2-description](https://github.com/fiveages-sim/fa-s2-description)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 5e1a6f609df94b34a4eb8dc1cdfd7a87 +#: 5d3aa1194c5f484585de698f7c2c6be7 msgid "`humanoid/FiveAges/fiveages_w2_common_description`" msgstr "`humanoid/FiveAges/fiveages_w2_common_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 102a1e5c6f814406a3f5ef5efb7f44bc 6bee77b672024f5c8c58c60ea23fc00c +#: 2c98534eeb114fc597755275fd3dc6f2 b11ab8f2d07d4d36b909ed00cbdaddd5 msgid "`fiveages_w2_common_description`" msgstr "`fiveages_w2_common_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 9ee538b1a8914f898d922a2f4f0c9aee aaaa2f726eef4073839d9e19eba4e0f4 +#: 052a0f737bef4a58bf887de1551a7dcc f672dfc5edac4d17a972fa2ad61e385d msgid "[fa-w2-components](https://github.com/fiveages-sim/fa-w2-components)" msgstr "[fa-w2-components](https://github.com/fiveages-sim/fa-w2-components)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:55 -#: b908d3bb4b4d4f49b591e74ba764329e +#: 6607de652d1f4227b0aac175ad0e20e5 msgid "" "`main` has **no** `fiveages_s2r_description` and **no** " "`fiveages_wce3_description` gitlink." @@ -369,113 +376,113 @@ msgstr "" "`fiveages_wce3_description` gitlink。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:57 -#: 5bf0b9fa458041529067e06df5f08f50 +#: 488e5d5ed5fb46a0b2f6e04f7b7014ab msgid "`feature/agilex` (grouped like USD: Gen1 / Gen2 / Gen3)" msgstr "`feature/agilex`(按 USD 一样分代:Gen1 / Gen2 / Gen3)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: e35ade9b9b8c4294a6947f58930abb5c +#: b2cb839e4c2e4aa1a415aab0cc87f828 msgid "Gen" msgstr "代" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: c6919dc115d34fb39a30803d4cae98bb +#: bff756e68d6544babdb90f47896354af msgid "Gen1" msgstr "Gen1" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 7d75b300a0eb4dbfb67e88b83ff3170b +#: f3cea84bea044b1297feed6a5c038551 msgid "`humanoid/FiveAges/Gen1/fiveages_w1_description`" msgstr "`humanoid/FiveAges/Gen1/fiveages_w1_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 04ee35518e92438cb469a420aac8460f 739028395bed452189a86b36fd27503b -#: 8a0763ad58d4427f83f0ae8c5dbacf95 d4a0f956cc4f4f5aa9eb97385b6125fd -#: e9b8751beec34cde81fedc058b4e8cf9 +#: 0e808b9925094f3ebf2809ac8c557750 653668ec17574528bb870695dad2261e +#: 69c3323ef3bb45a8935578349ed6be51 832fe010e35e4ced997df756439f8085 +#: d820003211684ddf81af50b5b06fa254 msgid "Gen2" msgstr "Gen2" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 4caa1a6ab6a8498bbe788066730b0817 +#: a7fa4ca8c48f4904bdf4a3b308a5bccc msgid "`humanoid/FiveAges/Gen2/fiveages_w2_description`" msgstr "`humanoid/FiveAges/Gen2/fiveages_w2_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 7a2181e671024a139728d09e208e0af8 +#: 462210134ab14bb68a29291392ba55ff msgid "`humanoid/FiveAges/Gen2/fiveages_w2r_description`" msgstr "`humanoid/FiveAges/Gen2/fiveages_w2r_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 38ab6acae69b4edab96cf1a9dea1e69e +#: 45ff20e1b9a74d588b193ce319c5a7c1 msgid "`humanoid/FiveAges/Gen2/fiveages_s2_description`" msgstr "`humanoid/FiveAges/Gen2/fiveages_s2_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 5e747fd8cd0445a58ac82e5c6a58e380 +#: 90ae1b881fb348be9bbf4f0f37882d57 msgid "`humanoid/FiveAges/Gen2/fiveages_s2r_description`" msgstr "`humanoid/FiveAges/Gen2/fiveages_s2r_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 9a90b014ecb146fb8d274669aff0a486 +#: ce9117825b6042e385464387e971f574 msgid "`fiveages_s2r_description`" msgstr "`fiveages_s2r_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 00cad8f5a90940f0ae0e3a823787d285 -msgid "`fa-s2r-description`" -msgstr "`fa-s2r-description`" +#: b9e70dfe24fd4664a2e9fa62190f71d7 +msgid "[fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description)" +msgstr "[fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: f3931e9333e7446d98648261170f8bee +#: 26d8f7c393a346c4afbf3aa0c78611a9 msgid "`humanoid/FiveAges/Gen2/fiveages_w2_common_description`" msgstr "`humanoid/FiveAges/Gen2/fiveages_w2_common_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 33c5ba067edc4c45936487c0021855bf +#: f7d8538bd7954a00b5668c40d0ca978c msgid "Gen3" msgstr "Gen3" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: f726a312e7754da48e32153943dba954 +#: 0c6f0a7d79e3424dba8c97736d69d0c1 msgid "`humanoid/FiveAges/Gen3/fiveages_wce3_description`" msgstr "`humanoid/FiveAges/Gen3/fiveages_wce3_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: a2657caf7a8c47aeae6b00d09ff95a1c +#: 64920d84786a42f386bdb248b38b501c msgid "`fiveages_wce3_description`" msgstr "`fiveages_wce3_description`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 77e765d396924c3f8f7fdc43c7789114 -msgid "`fa-wce3-description`" -msgstr "`fa-wce3-description`" +#: 7b6a51885337471298302296c5a28bfd +msgid "[fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description)" +msgstr "[fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: aed95fd4fa6d49bda02074310bce7339 be29472742304eb7ad0ebba1f35f03df +#: 1dd1330bb41442c593ec9c9d538c3021 4ddcf852c51c4d1b8890b65274e5c86e msgid "Private" msgstr "私有" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:69 -#: 11097fa0a82b41959a5a0acb15efaf46 +#: e2ea987d2d9c4765908b4a503de614aa msgid "" "`feature/agilex` adds Gen2 **W2R** and **S2R** gitlinks; those remotes " "stay private." msgstr "`feature/agilex` 增加了 Gen2 **W2R** 与 **S2R** gitlink;这些远端仍为私有。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:71 -#: 37a1391d13ea485a9d4d3235ad4a0b5c +#: b999c7b28b4c43e59ae3cd83baacfaee msgid "" "After access to a private remote, init the path named in `.gitmodules` " "(or let `fa-deploy-ws` `./init_repo.sh` do it)." msgstr "开通私有远端后,按 `.gitmodules` 里的路径初始化(或交给 `fa-deploy-ws` 的 `./init_repo.sh`)。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:73 -#: 03a164007766468bbcbc3fa8ffb51a25 +#: 7656232fb2fe415e8fc6dc7c7c82c29a msgid "Isaac USD (`robot_usds`)" msgstr "Isaac USD(`robot_usds`)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:75 -#: 994ba3b3eee04716a1f760421183baee +#: 0ba351cb06e941d289d4453773808cc1 msgid "" "[robot_usds](https://github.com/fiveages-sim/robot_usds) maps FiveAges " "assets under `humanoid/FiveAges/` as **Git submodules**. From that README" @@ -486,27 +493,27 @@ msgstr "" "README:" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: a574da86c73047cebec347efc3cd14a4 +#: 937a5b536f1842aa88de4ea595e903ce msgid "Path (under `robot_usds` root)" msgstr "路径(相对 `robot_usds` 根)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 8d854e802ffa487792cb84e2a83ac033 +#: 10e09b33e1744c6ab4689a8d6f3f1c2d msgid "Upstream" msgstr "上游" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 79484f5ecdb241b3a613e57087d2daa2 +#: c672c595f30540bb9f12a924ab71febb msgid "README names" msgstr "README 名称" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 24294a40fbff48f882aac86085c9afb4 +#: 11b74c927c6d4badacbe069348dc0909 msgid "`humanoid/FiveAges/Gen1`" msgstr "`humanoid/FiveAges/Gen1`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 6b2a0caab2b24f079345ff991f4b11cd +#: 6f424e7f6bb7479da146bcc1452d57e8 msgid "" "[fiveages-gen1-robot-usds](https://github.com/fiveages-sim/fiveages-gen1" "-robot-usds)" @@ -515,17 +522,17 @@ msgstr "" "-robot-usds)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: d66ac748eb8b4f5494a3b58b20e947fa +#: eb2edd452dcf42a1b452ddeed921c96d msgid "W1 / Gen1" msgstr "W1 / Gen1" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: c1498bc0df914d56b86c9d676adfe8b2 +#: 5db76a11c63342a194f21c1da65d7320 msgid "`humanoid/FiveAges/Gen2`" msgstr "`humanoid/FiveAges/Gen2`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 20faf01826de47ce97ebe72b09a4695c +#: a1880c9af872485d9cc3f8389c94638a msgid "" "[fiveages-gen2-robot-usds](https://github.com/fiveages-sim/fiveages-gen2" "-robot-usds)" @@ -534,32 +541,36 @@ msgstr "" "-robot-usds)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 8a28d382c92f46069f54b680423c4c97 +#: 67a66275a48848fda87ef07a99633dfd msgid "W2 / S2 / Gen2 (`W2/`, `S2/`, `components/`)" msgstr "W2 / S2 / Gen2(`W2/`、`S2/`、`components/`)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 2d60a19006784091aa660c6bc07cd45e +#: 3e3f8fe280ad42789d98007fa8b57f82 msgid "`humanoid/FiveAges/Gen3`" msgstr "`humanoid/FiveAges/Gen3`" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: 5c8d93e7e7b74f8b838e6d06274d182d -msgid "`fiveages-gen3-robot-usds`" -msgstr "`fiveages-gen3-robot-usds`" +#: 6ae63c06c5154d2db8db6ad65f01c906 +msgid "" +"[fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3" +"-robot-usds)" +msgstr "" +"[fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3" +"-robot-usds)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:22 -#: b7b34fbfed8549f3995c83243e8b4b13 +#: e8898926c0634af6bbebec9055bc1ba9 msgid "WCE3 / Gen3" msgstr "WCE3 / Gen3" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:83 -#: ff82f5c7e44141129dee4cef45f0004f +#: 957c575f168549bb95b1c9943f8fe53f msgid "Gen2 USD is **W2 and S2** only. It does **not** publish W2R or S2R." msgstr "Gen2 USD **只含 W2 与 S2**,**不**发布 W2R 或 S2R。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:85 -#: 4d9f00c9af574e1bac30a3c152ef39f3 +#: 46dfc584ea3c4af9ad1533afd1582a8d msgid "" "Checkout: standalone `git submodule update --init humanoid/FiveAges/Gen2`" " (and `…/Gen1`) as in the [robot_usds README](https://github.com" @@ -578,12 +589,12 @@ msgstr "" "[robot_usds](../simulation/3-robot_usds.md)。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:87 -#: 1301bb9421c14b6386a8cdeab11cd361 +#: 6909cac36acb4b97aad1e92716c11210 msgid "Private: deploy" msgstr "私有:部署" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:89 -#: 388111089019433f9b3c1cd5ed78fd2a +#: 19d492aedd324079b37c8c4a997f79e5 msgid "" "`fa-deploy-ws` is internal. Extra flags and robot IDs live in **that** " "README — not here. There is no public `open-deploy-ws` Gen1 or Gen2 " @@ -593,24 +604,24 @@ msgstr "" "deploy-ws`Gen1 或 Gen2 分支。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:91 -#: 71c19476499a447fa33e9d54dbb97071 +#: 8a1a339a65d743f6849cb5ba53c011f2 msgid "After access:" msgstr "开通权限后:" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:93 -#: 55ed461f624145d794f3372df3f1eb9d +#: 16abee0dd55143b38926b56237ba945d msgid "Read the private package README for the checkout you have (not this page)." msgstr "读你已检出的那个私有包 README(不要以本页为准)。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:94 -#: 71c67ba0889541389944141771e22b9d +#: 595659ceb4b743428de3a5c5704eae49 msgid "" "In `fa-deploy-ws`, run **`./init_repo.sh`** (do not recursive-init). " "Extra flags live in that README." msgstr "在 `fa-deploy-ws` 里跑 **`./init_repo.sh`**(不要递归 init)。额外参数以那份 README 为准。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:95 -#: 2461c49024c847c19cba3e751780fd1b +#: f97d84e3fc364ff386a53d633f8328aa msgid "" "`colcon build`, then `source install/setup.bash` in the launch terminal " "(or that repo’s official quick-start script if it has one)." @@ -619,7 +630,7 @@ msgstr "" "脚本则优先用脚本)。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:96 -#: d20311f4212c448c881bf4f43e5ba528 +#: 4defc5c27da2442794b81765f94544f2 msgid "" "EEF / `hardware:=` follow [robot_common_launch](2-common.md). There is no" " `gripper:=` and no `hardware:=mock`." @@ -628,22 +639,20 @@ msgstr "" "`gripper:=`,也没有 `hardware:=mock`。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:98 -#: f3bd2b8fc346435aa0ed4b9ca2335c1c +#: d4c39f267834403480e563c361da0006 msgid "" "Composer `--robot fiveages_w2` is a real key on [robot_action_composer " "ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md). It is **not** a documented `./init_repo.sh" -" --robot` flag." +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md). It is **not** a " +"documented `./init_repo.sh --robot` flag." msgstr "" -"Composer 的 `--robot fiveages_w2` 是 [robot_action_composer " +"编排器的 `--robot fiveages_w2` 是 [robot_action_composer " "ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md) 上的真实键。它**不是**文档化的 `./init_repo.sh --robot` " -"参数。" +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md) 上的真实键。它不是文档里的 " +"`./init_repo.sh --robot` 参数。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:100 -#: 8b818825e7f24d70a518e9d7fe5083fa +#: 7f390d6828764c42b238f576afde32fa #, python-brace-format msgid "" "Copy an existing public `{robot}_description` only as a **layout hint** —" @@ -653,37 +662,37 @@ msgstr "" "[添加机器人](../../2-how_to/6-deployment/10-add_a_robot.md)。" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:102 -#: 8600a6bfe57048f79f46d6be3d8db5d7 +#: a15251d3384c40fdb35f781a3401d084 msgid "Related" msgstr "相关内容" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:104 -#: e01443fdfc4a4299a31106c1cccbcd93 +#: cb93a6d4d0b14c1ca741390ba92e9cf1 msgid "[fa-deploy-ws Setup](../../1-getting_started/4-fa_deploy_ws.md)" msgstr "[fa-deploy-ws 环境搭建](../../1-getting_started/4-fa_deploy_ws.md)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:105 -#: 2b3b6d054b164337a5e0118ed059c8ac +#: d1de07d5a8354fe982239ec5802afe74 msgid "[robot_usds](../simulation/3-robot_usds.md)" msgstr "[robot_usds](../simulation/3-robot_usds.md)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:106 -#: 4c6b01bff5074e3a80fa48530b6046c8 +#: bcaef2a5518a4283b8fd5543bf319d52 msgid "[robot_common_launch](2-common.md)" msgstr "[robot_common_launch](2-common.md)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:107 -#: 49c09a90545343f0aae940e641f58bc3 +#: ab52237a16f0475c9536d2301dd754fe msgid "[Vendor arms](6-vendor_arms.md)" msgstr "[厂商机械臂](6-vendor_arms.md)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:108 -#: f823a93d62234291bfc26c8664946699 +#: d2728737f8bd4db8aae8220e7fd3d486 msgid "[Add a Robot](../../2-how_to/6-deployment/10-add_a_robot.md)" msgstr "[添加机器人](../../2-how_to/6-deployment/10-add_a_robot.md)" #: ../../source/4-reference/descriptions/4-fiveages_umbrella.md:109 -#: 5af6b3a3faba4ac1984bbcab755aa3cd +#: b5ea54a7c329478e8224818ad4ee19e3 msgid "[WBC controller](../controllers/3-ocs2_wbc.md)" msgstr "[WBC 控制器](../controllers/3-ocs2_wbc.md)" @@ -957,3 +966,32 @@ msgstr "[WBC 控制器](../controllers/3-ocs2_wbc.md)" #~ " **`./run.sh`**。见 " #~ "[robot_usds](../simulation/3-robot_usds.md)。" +#~ msgid "" +#~ "These remotes are **not** public (GitHub" +#~ " 404 without access): **W2R** (`fa-" +#~ "w2r-description`), **S2R** (`fa-s2r-" +#~ "description`), **Gen3** (`fa-wce3-description`, " +#~ "`fiveages-gen3-robot-usds`), and `fa-" +#~ "deploy-ws`. There is **no** public " +#~ "`robot-descriptions-fiveages` umbrella. Contact" +#~ " your team lead. After access, follow" +#~ " **those package READMEs**." +#~ msgstr "" +#~ "这些远端**尚未公开**(无权限 GitHub404):**W2R**(`fa-w2r-" +#~ "description`)、**S2R**(`fa-s2r-description`)、**Gen3" +#~ "**(`fa-wce3-description`、`fiveages-gen3-robot-usds`),以及" +#~ "`fa-deploy-ws`。**没有**公开的 `robot-descriptions-" +#~ "fiveages`伞形仓。请联系组长开通。开通后以**那些包README** 为准。" + +#~ msgid "`fa-w2r-description`" +#~ msgstr "`fa-w2r-description`" + +#~ msgid "`fa-s2r-description`" +#~ msgstr "`fa-s2r-description`" + +#~ msgid "`fa-wce3-description`" +#~ msgstr "`fa-wce3-description`" + +#~ msgid "`fiveages-gen3-robot-usds`" +#~ msgstr "`fiveages-gen3-robot-usds`" + diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/hardware/0-index.po b/locale/zh_CN/LC_MESSAGES/4-reference/hardware/0-index.po index cba9872..756e0a1 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/hardware/0-index.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/hardware/0-index.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-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,12 +21,12 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/hardware/0-index.md:1 -#: 5e2f7747af6d4927ad6c7e2cac28688e +#: 09f47d05d2794565965bf8742112a19d msgid "Hardware Interfaces" msgstr "驱动层" #: ../../source/4-reference/hardware/0-index.md:3 -#: ee1618578b5a4dfeb9a4975f10c70314 +#: 40fad9da1c7c4c51882fae5062faf5e9 msgid "" "This section documents ros2_control **hardware interfaces** — plugins " "that talk to the bus, vendor SDK, or simulation. Chinese **驱动层** is this " @@ -34,7 +34,7 @@ msgid "" msgstr "本节记录 ros2_control **驱动层** — 对接总线、厂商 SDK 或仿真的插件。中文 **驱动层** 就是这一层。" #: ../../source/4-reference/hardware/0-index.md:5 -#: 95ad2cd1e35f4567aee45451e7d0e5a0 +#: 920997ffdeaf422db6fce5f17ee3a956 msgid "" "Public plugins live under [arms_ros2_control " "`hardwares/`](https://github.com/fiveages-" @@ -49,116 +49,116 @@ msgstr "" "为准。每个公开驱动页含简介(插件类、仓库)及其 `` 表。" #: ../../source/4-reference/hardware/0-index.md:7 -#: cf004ebb18b54fc58043535bb2ea951a +#: ca98dd384acc41198e4ad49647e2630d msgid "Terminology" msgstr "术语对照" #: ../../source/4-reference/hardware/0-index.md:9 -#: 4a5fd186b7284212bc3b04916f3b7efe +#: 2bda64c3bfde431499f160643a68a211 msgid "Full mapping: [Terminology](../../3-concepts/8-terminology.md)." msgstr "完整对照:[术语对照](../../3-concepts/8-terminology.md)。" #: ../../source/4-reference/hardware/0-index.md -#: d33e9045350e4589a1224294dcf88975 +#: 45d1b7f4e32d4810836e14adf7ad491f msgid "Chinese" msgstr "中文" #: ../../source/4-reference/hardware/0-index.md -#: 462a9121197a48ed9b87da12357101d5 +#: 0aabc982ac1a414eb3df08e5d30eb7e3 msgid "English" msgstr "英文" #: ../../source/4-reference/hardware/0-index.md -#: 5a94524e54a844268f0e1d32b89f98e5 +#: 89ae91c48f2e487d8e1f917df22569f1 msgid "驱动层" msgstr "驱动层" #: ../../source/4-reference/hardware/0-index.md -#: f42ff7d2c67d47938eccdffce9557d82 +#: 78ca0f3cd9434b45804d30eb54882f29 msgid "Hardware Interface (ros2_control official)" msgstr "Hardware Interface (ros2_control official)" #: ../../source/4-reference/hardware/0-index.md -#: 3cde25d3ab0142e09f3a833793b70319 +#: 06436580614540e5a5005866803f31e1 msgid "控制器" msgstr "控制器" #: ../../source/4-reference/hardware/0-index.md -#: 0239c3c723e1490ea4625c07ccd3bb7a +#: cbf9250082464d7dbc758e0b60f72b06 msgid "Controller" msgstr "Controller" #: ../../source/4-reference/hardware/0-index.md -#: 9aeee4fd19a64976b160b588c9b48314 +#: 0224c9fa24904733a2f45f86775230e0 msgid "分体控制" msgstr "分体控制" #: ../../source/4-reference/hardware/0-index.md -#: ae88442837aa4b78b523adc71b121dd2 +#: e486188d8e314da9ba0ff01888e44218 msgid "Split body" msgstr "Split body" #: ../../source/4-reference/hardware/0-index.md -#: ea61eaaf799d450cb069f6c5e2a8f2eb +#: 7569d8fc3eb04927b2784cda0d65bed0 msgid "全身控制" msgstr "全身控制" #: ../../source/4-reference/hardware/0-index.md -#: d381cf5e8b694d22a58a5c9802a153f8 +#: ab63089f9a9e41ee8015b0b5b35506f2 msgid "Full body / WBC" msgstr "Full body / WBC" #: ../../source/4-reference/hardware/0-index.md -#: 3064643f677442918021fa023efb600b +#: bd35f46492b34b6ca0cde4d190b42d81 msgid "夹爪" msgstr "夹爪" #: ../../source/4-reference/hardware/0-index.md -#: 85287e2b61794b7f83eeee16981af07a +#: 82397ab8686e430e977146ff1732b89e msgid "gripper" msgstr "gripper" #: ../../source/4-reference/hardware/0-index.md -#: 8593ad300c304b87a90fd0d764f5c2e2 +#: 4068c170805f4b7193fce31388db29bf msgid "灵巧手" msgstr "灵巧手" #: ../../source/4-reference/hardware/0-index.md -#: 148fa77c0f5a4154884daa9f9a10f3a8 +#: 373cb98565724b3dbdc9ffb3cb6ca674 msgid "dexterous hand" msgstr "dexterous hand" #: ../../source/4-reference/hardware/0-index.md -#: b06aa036c2c64cd8a2fabc8e5701cc49 +#: e7e8498b5d0146c6aad156313a3323d9 msgid "仿真路径" msgstr "仿真路径" #: ../../source/4-reference/hardware/0-index.md -#: 5b76f7c1cf174e719d6ba760b631f27b +#: 2eb223c5fb084c268e674026d893c220 msgid "" "`mock_components` / `isaac` / `gz` (launch keys, not `hardwares/` " "packages)" msgstr "`mock_components` / `isaac` / `gz`(launch 键,不是 `hardwares/` 软件包)" #: ../../source/4-reference/hardware/0-index.md:21 -#: bed1736236294738a4af97330075314e +#: da8a1ac63b7e49eb8040331880500a49 msgid "" "Plugin class names, `type` / `left_type` / `right_type`, and `hardware:=`" " stay as code." msgstr "插件类名、`type` / `left_type` / `right_type` 和 `hardware:=` 保持代码写法。" #: ../../source/4-reference/hardware/0-index.md:23 -#: f3fc0386778a44beb134586cfe19deea +#: 6397cfcd29a34500aafc733506220703 msgid "Overview" msgstr "概述" #: ../../source/4-reference/hardware/0-index.md:25 -#: 76e4d3b90a764c20ade5ffd55dd47a15 +#: cf1d9f6d68f742ea9f6acb1a08a27a62 msgid "Hardware interfaces bridge ROS 2 controllers to the bus or vendor SDK:" msgstr "驱动层把 ROS 2 控制器接到总线或厂商 SDK:" #: ../../source/4-reference/hardware/0-index.md:27 -#: d14213fa2f5148da9d6d143d3c7c8287 +#: 39810973dbe94bcf909ebc003517cbc3 msgid "" "Controller Manager\n" " ↓\n" @@ -173,7 +173,7 @@ msgstr "" "CAN / TCP / Serial / Vendor SDK" #: ../../source/4-reference/hardware/0-index.md:35 -#: 997cb60c604d4eb69d0e623b84917d47 +#: e6d1d36e3e7343fba8056e6256152938 msgid "" "Launch `hardware:=` chooses which plugin the robot xacro instantiates: " "[ros2_control in This Stack](../../3-concepts/1-ros2_control_here.md)." @@ -182,12 +182,12 @@ msgstr "" "ros2_control](../../3-concepts/1-ros2_control_here.md)。" #: ../../source/4-reference/hardware/0-index.md:37 -#: 5e2f7747af6d4927ad6c7e2cac28688e +#: 68a0bc1c7579405c9b4fd65b9c1f67dd msgid "Real hardware ready" msgstr "真实硬件可用" #: ../../source/4-reference/hardware/0-index.md:40 -#: 3cf5e0caa4444cb097422417891857ad +#: 069d6f6048374671a51ae83f184b2548 msgid "" "**ARX Lift 2S** (full-body) and **Acone** / **AC One** (dual-arm) use " "[arx-ros2-control](4-arx.md) (CAN). **HighTorque Panthera HT** uses [ht-" @@ -204,12 +204,12 @@ msgstr "" "HT](../../2-how_to/6-deployment/9-go_real_hardware/2-panthera_ht.md)。" #: ../../source/4-reference/hardware/0-index.md:44 -#: b57841e5352c47a0b713d4ac4a2c7429 +#: 97528a899d8b4e3e9a3ec21ceebae9da msgid "How to read the tables" msgstr "如何读这些表" #: ../../source/4-reference/hardware/0-index.md:46 -#: 868b3bd30c3f4a178c1de813d52fd627 +#: 90772606f8ca43928295312fa2fcc9fa msgid "" "These are URDF / xacro `` entries under " "``, loaded in the plugin `on_init`. They are " @@ -222,7 +222,7 @@ msgstr "" "了同名项(ARX、HighTorque、Marvin、部分灵巧手)。" #: ../../source/4-reference/hardware/0-index.md:48 -#: 6b0dd6723fcc4ab097be95452eecaf95 +#: 55679ab7e2c24f57ae1cb8c2a8e1c388 msgid "" "**Startup only** vs **Runtime** appears **once** per table: a **When** " "column on mixed tables, a section heading (`Startup` / `Runtime`), or a " @@ -233,22 +233,22 @@ msgstr "" "`Runtime`),或在整表均为同一类时写在表前一行。**含义**只写参数本身的意思,不再重复该标记。" #: ../../source/4-reference/hardware/0-index.md:37 -#: 89240387448e4994ab4e1afea5d99399 +#: 3c20c6603e1446b09479b5031de26e02 msgid "Tag" msgstr "标记" #: ../../source/4-reference/hardware/0-index.md:37 -#: 5cc402a7e74a43b8a72b10b141f743ce +#: 8f76213583144fb5a44087c99c06fa3e msgid "Evidence" msgstr "依据" #: ../../source/4-reference/hardware/0-index.md:37 -#: 726891c884ec403a8236f7a2adc71b26 +#: 8cd05ed36bc448d38f57fc284fb1b201 msgid "**Startup only**" msgstr "**仅启动**" #: ../../source/4-reference/hardware/0-index.md:37 -#: cb3428733d60484f824bb6a64409a587 +#: 961df324448e4df19aa9c183d917e34c msgid "" "Read in `on_init` from `info_.hardware_parameters`. No " "`add_on_set_parameters_callback` (or README does not claim a hot update)." @@ -259,12 +259,12 @@ msgstr "" "`controller_manager`。" #: ../../source/4-reference/hardware/0-index.md:37 -#: 6b702670f22b42d7b03d1789b4019760 +#: de4111561b514df2aedd3d860632b00d msgid "**Runtime**" msgstr "**运行时**" #: ../../source/4-reference/hardware/0-index.md:37 -#: 73fcce58e7f541f4afba570b5666baa1 +#: 3b053e848f4a400d9e1b132797c180ff msgid "" "`add_on_set_parameters_callback`, or a README + source path that re-reads" " `ros2 param set` without reload (HighTorque kp/kd poll)." @@ -273,7 +273,7 @@ msgstr "" "无需重载即可生效(HighTorque 的 kp/kd 轮询)。" #: ../../source/4-reference/hardware/0-index.md:55 -#: 3371f842f70f49a68b8dde8d3a55e840 +#: da37e0949eb041f6a650823bde1c1431 msgid "" "The in-tree [`hardwares/README.md`](https://github.com/fiveages-" "sim/arms_ros2_control/blob/d50933d6862ad35ec7633ef522a134924827b115/hardwares/README.md)" @@ -287,19 +287,19 @@ msgstr "" " `on_init` / 插件 XML。" #: ../../source/4-reference/hardware/0-index.md:57 -#: 0479179c57f24f96a9597a15c57e8045 +#: d7592916ef9b41c391a516a6caae4d42 msgid "" "How to inspect: [Configure ROS 2 controller " "parameters](../../2-how_to/4-controllers/12-ros2_parameters.md)." msgstr "如何查看:[配置 ROS 2 控制器参数](../../2-how_to/4-controllers/12-ros2_parameters.md)。" #: ../../source/4-reference/hardware/0-index.md:59 -#: 7cb7321094064c24b6aee683f670f161 +#: e1164f72488242f0ba4de365f3ecb34f msgid "Simulation keys" msgstr "仿真键" #: ../../source/4-reference/hardware/0-index.md:61 -#: a5be1dc339004642b060705a78e0468a +#: 8b210e7024414003b29a7e94bc659de6 msgid "" "`mock_components`, `gz`, and `isaac` are launch / xacro keys. They are " "**not** gitmodules under `arms_ros2_control/hardwares/`." @@ -308,69 +308,69 @@ msgstr "" "`arms_ros2_control/hardwares/` 下的 gitmodule。" #: ../../source/4-reference/hardware/0-index.md:37 -#: 94d91059bbd44daeb688134bb83df224 +#: 244ff5e45cc64a8fb3f5071e062a8547 msgid "`hardware:=`" msgstr "`hardware:=`" #: ../../source/4-reference/hardware/0-index.md:37 -#: 8d6c3fb1bc9a4a16a4a31bc2df43ec8e +#: 75d9e0f74f2a4d20ba66e18947838384 msgid "Plugin" msgstr "插件" #: ../../source/4-reference/hardware/0-index.md:37 -#: c7b3f484419d46f3a1c492a673cf50d3 +#: d6be877b22c8438ead121d30cd73f147 msgid "Where it lives" msgstr "所在位置" #: ../../source/4-reference/hardware/0-index.md:37 -#: bab500c2fc2e4d1ea496efa7f170f212 +#: 59f4c787329945388f6b7d41753dffc4 msgid "`mock_components`" msgstr "`mock_components`" #: ../../source/4-reference/hardware/0-index.md:37 -#: 399e8f9f93904b259f6ae26bfd49b300 +#: 33d9abf915e948dd886259b0d5339352 msgid "`mock_components/GenericSystem`" msgstr "`mock_components/GenericSystem`" #: ../../source/4-reference/hardware/0-index.md:37 -#: 27a723c1e2cf4eb1bfa55ea6efb43b88 +#: 0d4c2521b26d46459f4a475faede0d50 msgid "ros2_control; Acone xacro" msgstr "ros2_control;Acone xacro" #: ../../source/4-reference/hardware/0-index.md:37 -#: ca2a43c2d3754e669e42ac656484a488 +#: 8a01ecf4c51f443c91dd7af5baaaf2d5 msgid "`gz`" msgstr "`gz`" #: ../../source/4-reference/hardware/0-index.md:37 -#: 3794e2d6e4914175a81c642fd3902175 +#: e632b128569140fa93d58321ef1bbb76 msgid "`gz_ros2_control/GazeboSimSystem`" msgstr "`gz_ros2_control/GazeboSimSystem`" #: ../../source/4-reference/hardware/0-index.md:37 -#: bfc663febc7b41749f992f078539b466 +#: bd67cba8d8374416894d28b33d576780 msgid "`ros-jazzy-gz-ros2-control`" msgstr "`ros-jazzy-gz-ros2-control`" #: ../../source/4-reference/hardware/0-index.md:37 -#: cf3a450d152d4d9bb8c4473a67ffa9b5 +#: 7535017bd5d34283993ecec0b531f02e msgid "`isaac`" msgstr "`isaac`" #: ../../source/4-reference/hardware/0-index.md:37 -#: d16d6b57f29d402a99bc9cfa47f38e95 +#: af1194e594144ad88f58061415813fc7 msgid "`topic_based_ros2_control/TopicBasedSystem`" msgstr "`topic_based_ros2_control/TopicBasedSystem`" #: ../../source/4-reference/hardware/0-index.md:37 -#: 0790035cd662438ea3734a13c3aa59dc +#: 11b6721a18784005bc1b27873402f6dc msgid "" "in-tree under `hardwares/topic_based_ros2_control` (not a nested vendor " "repo)" msgstr "树内 `hardwares/topic_based_ros2_control`(不是嵌套的厂商仓库)" #: ../../source/4-reference/hardware/0-index.md:69 -#: 15cbe335f2d14b1a8ae315d2ade66f02 +#: a355cbfa216f4384a09fdb340bd6b097 msgid "" "How-to: [Gazebo Simulation](../../2-how_to/2-simulation/3-gazebo_sim.md)," " [Isaac Sim](../../2-how_to/2-simulation/4-isaac_sim.md). Joint layout " @@ -384,302 +384,306 @@ msgstr "" "表:[topic_based_ros2_control](1-topic_based.md)。" #: ../../source/4-reference/hardware/0-index.md:71 -#: 2bc0e9308f634428a68aa88fcf56a205 +#: 93633bcce8a14b9a9057ef8e0ca8527f msgid "In This Section" msgstr "本节内容" #: ../../source/4-reference/hardware/0-index.md:87 -#: 5e2f7747af6d4927ad6c7e2cac28688e +#: 9c9b22d784dc4a599e1dabb4d4119819 msgid "Public Hardware Interfaces" msgstr "公开驱动层" #: ../../source/4-reference/hardware/0-index.md:73 #: ../../source/4-reference/hardware/0-index.md:105 -#: 85731009682a467aa0cdb77f5a50764c +#: 64aa898ff30444379dcaa6adf3fce6e0 cfc2f57d55324ec5996ac6a8b32a6713 msgid "Package" msgstr "软件包" #: ../../source/4-reference/hardware/0-index.md:73 #: ../../source/4-reference/hardware/0-index.md:105 -#: 2eb42e4c8bf94dcdb4467a64227eb35f +#: 1728dfa695c6464182a738b7a04245e2 964913a2f9704590a55b2bc9843c3a13 msgid "Bus" msgstr "总线" #: ../../source/4-reference/hardware/0-index.md:73 -#: eaf8d854a24b412fa3d8650063678aaf +#: d48a64fd965c464fb255f0cbc5d5465a msgid "Plugins / robots" msgstr "插件 / 机型" #: ../../source/4-reference/hardware/0-index.md:73 -#: d051ca7b80da4a93b7c24d61f0297dce +#: 826a4f267142492a9f03c44e5322bbde msgid "[topic_based_ros2_control](1-topic_based.md)" msgstr "[topic_based_ros2_control](1-topic_based.md)" #: ../../source/4-reference/hardware/0-index.md:73 -#: 02264397fc0d47b8a185a08c06a39196 +#: 2fd484fe215b4c0697c08ca158ef388a msgid "ROS 2 topics" msgstr "ROS 2 话题" #: ../../source/4-reference/hardware/0-index.md:73 -#: 1c3ea9ed88274c62ac16a6ddcf7241a3 -msgid "Isaac (`hardware:=isaac`)" -msgstr "Isaac(`hardware:=isaac`)" +#: 2f0a53bdf7614aa8bcf8018866f44fb7 +msgid "" +"Isaac topic bridge (`hardware:=isaac`). In-process `isaac_sim` is a " +"different plugin" +msgstr "" +"Isaac topic bridge (`hardware:=isaac`). In-process `isaac_sim` is a " +"different plugin" #: ../../source/4-reference/hardware/0-index.md:73 -#: 7ce34854abec4ef689f2785d33419669 +#: 53626d8a9f17460d884b9b412f5a5005 msgid "[unitree-ros2-control](2-unitree.md)" msgstr "[unitree-ros2-control](2-unitree.md)" #: ../../source/4-reference/hardware/0-index.md:73 -#: 8ccbf061efb94c2194b2ca8731f43a90 +#: a11fa071e0114d18bc6c5914b223c5ce msgid "unitree_sdk2" msgstr "unitree_sdk2" #: ../../source/4-reference/hardware/0-index.md:73 -#: 4f77802192c44fdb93aa7d3f596a558c +#: cff4424909284a9eb9c534a7316f6ec2 msgid "Unitree G1 / quadruped" msgstr "Unitree G1 / 四足" #: ../../source/4-reference/hardware/0-index.md:73 -#: b10c77abaad04aa1bb7128eddc2b45c1 +#: 9916b5dab96b4a9aa9e5e0e3ac44380e msgid "[dobot-cr-ros2-control](3-dobot.md)" msgstr "[dobot-cr-ros2-control](3-dobot.md)" #: ../../source/4-reference/hardware/0-index.md:73 #: ../../source/4-reference/hardware/0-index.md:105 -#: af1cb17b140841d898be04aedb67ab1e +#: 9985167c9364417eb8e68230e7d9b81e de79e4a4dc77410987fef09f209c8523 msgid "TCP" msgstr "TCP" #: ../../source/4-reference/hardware/0-index.md:73 -#: 3b5f87d5eb6042b1ac605eb9f30ac5eb +#: a675971718fd4b838be5e673b0ebe08c msgid "Dobot CR" msgstr "Dobot CR" #: ../../source/4-reference/hardware/0-index.md:73 -#: dd3b17b22f5a47a59085fd98bb5a22b8 +#: f998779701044d428551e0202035e501 msgid "[arx-ros2-control](4-arx.md)" msgstr "[arx-ros2-control](4-arx.md)" #: ../../source/4-reference/hardware/0-index.md:73 -#: ef16bb18d90a4ab9badc4b86f2b5bacb +#: 143cab72f1924ba3b620b762f85a5486 msgid "CAN" msgstr "CAN" #: ../../source/4-reference/hardware/0-index.md:73 -#: 6adf3b7395a64cbbb069a0f73bcbdb33 +#: 606c3dbe7c7c4f80a8427a57080fae44 msgid "ARX X5, Acone (dual-arm), Lift 2S" msgstr "方舟无限 X5、Acone(双臂)、Lift 2S" #: ../../source/4-reference/hardware/0-index.md:73 -#: 51b4fda5831b4702988f8ae7172a6f18 +#: 308b1c564c9c4ad5abd392623f1dcdfe msgid "[ht-ros2-control](5-ht.md)" msgstr "[ht-ros2-control](5-ht.md)" #: ../../source/4-reference/hardware/0-index.md:73 -#: 6e82663636e4498b9ae990825f47e693 +#: 93e5621229b5455b8026eba1868fa57c msgid "Serial (`ttyACM`)" msgstr "串口(`ttyACM`)" #: ../../source/4-reference/hardware/0-index.md:73 -#: 5dddc850f3c84faab10fd8d694ce3ccb +#: 87350cc28b004be785e805b294e74507 msgid "HighTorque Panthera HT" msgstr "高擎 Panthera HT" #: ../../source/4-reference/hardware/0-index.md:73 -#: 3b802aa3446440c9a636205a7c576ede +#: a678772cc15c432fa97c245640b533ac msgid "[marvin-ros2-control](6-marvin.md)" msgstr "[marvin-ros2-control](6-marvin.md)" #: ../../source/4-reference/hardware/0-index.md:73 -#: 9877f50953c143c4a458a2efe5fc976d +#: e9da4234fc8b43f6b93935e0a6cce4cd msgid "Marvin SDK + RS485/CAN tools" msgstr "Marvin SDK + RS485/CAN 工具" #: ../../source/4-reference/hardware/0-index.md:73 -#: 79577cf6d75549d58879ed7ba97ad748 +#: 6099b4c10775438d9a514dc4db37d2a2 msgid "Tianji Marvin" msgstr "Tianji Marvin" #: ../../source/4-reference/hardware/0-index.md:73 -#: 51479d66d534482f9f0126c5485dd4bf +#: 86d38d004f59424ba86d57b73d24b023 msgid "[modbus-ros2-control](7-modbus.md)" msgstr "[modbus-ros2-control](7-modbus.md)" #: ../../source/4-reference/hardware/0-index.md:73 -#: aae490f77ba942a9b0f23687880c91f0 +#: 5c1ef02c5fd3428aad0a42791ef83f7e msgid "RS485 / Modbus RTU" msgstr "RS485 / Modbus RTU" #: ../../source/4-reference/hardware/0-index.md:73 -#: 8403eae56f094a3c966f598e017bfd10 +#: 8e21a562f2dd4ff09c408fa8dc986a08 msgid "Grippers, 灵巧手, KWR75" msgstr "夹爪、灵巧手、KWR75" #: ../../source/4-reference/hardware/0-index.md:73 -#: 96a031a76430428780551c44afbaa9eb +#: d3f9189439d149f6af4447453994de32 msgid "[can-ros2-control](8-can.md)" msgstr "[can-ros2-control](8-can.md)" #: ../../source/4-reference/hardware/0-index.md:73 -#: 0e1b8a82a7024500bf10d11ffca80004 +#: 22e030d60f7745849137e4a8e9c6713e msgid "SocketCAN / CAN FD" msgstr "SocketCAN / CAN FD" #: ../../source/4-reference/hardware/0-index.md:73 -#: 92c627086371467885d6dc4d909dc7e7 +#: e08612a09d0442e5877c57fb2b8a3a96 msgid "LinkerHand, Freedom V1, Inspire RH56" msgstr "LinkerHand、Freedom V1、Inspire RH56" #: ../../source/4-reference/hardware/0-index.md:73 -#: e1008779de83434ca34f9349433230de +#: cb824fa6b7184750aff250a7824c65da msgid "[juxie-ros2-control](9-juxie.md)" msgstr "[juxie-ros2-control](9-juxie.md)" #: ../../source/4-reference/hardware/0-index.md:73 #: ../../source/4-reference/hardware/0-index.md:105 -#: ac41d97feb0d4abbbc2e42a2752e9197 +#: a74aa314ad1d40769ad73ea95d0371b0 b19794d4ecc0443fab4868b4aeb4a778 msgid "CAN FD" msgstr "CAN FD" #: ../../source/4-reference/hardware/0-index.md:73 -#: e07c5a6140114b1c8b7477d707dbf12c +#: f70584db1bd8459aaaa40e4d464aa7e6 msgid "JX CSP" msgstr "JX CSP" #: ../../source/4-reference/hardware/0-index.md:101 -#: 49332636a5af4928944941a31eea8565 +#: 8383fa4452d047b29ab3d7fa64ea8aae msgid "Private Hardware Interfaces" msgstr "私有驱动层" #: ../../source/4-reference/hardware/0-index.md:103 -#: 1dde28d06d6e4cd5a4073459b0677576 +#: 606d08088e83495ea12142e0660f0b82 msgid "" "Names only — configuration keys, API details, and SDK env vars stay in " "**that repository’s README after access**." msgstr "仅列名称 — 配置键、API 细节与 SDK 环境变量见开通后**该仓库 README**。" #: ../../source/4-reference/hardware/0-index.md:105 -#: 736e160ae2d0413ab3ba6fda69fa9d16 +#: c5f37fd7ae144d75a57dadaffcded5c0 msgid "Access Required" msgstr "需要访问权限" #: ../../source/4-reference/hardware/0-index.md:108 -#: b4e98e9292404d09a9210b48d3589ed4 +#: 92da257dfefc4e9b936d05a5de4b5123 msgid "" "These packages require private repository access. Contact your team lead " "for access." msgstr "这些软件包需要私有仓库访问权限。请联系团队负责人申请访问。" #: ../../source/4-reference/hardware/0-index.md:105 -#: 63ba680cb7cd40dfa491b0b9d9772950 +#: 21493e29a5454f3fa5d639675c1dca97 msgid "Robots" msgstr "机器人" #: ../../source/4-reference/hardware/0-index.md:105 -#: 0c019daed12c48889eb7ddf01445bebb +#: 0b1055fec50c434f871881ad061528fe msgid "rokae-ros2-control" msgstr "rokae-ros2-control" #: ../../source/4-reference/hardware/0-index.md:105 -#: 96512f56035845979f839571adf61108 +#: 82c63ff6db5d4d16bf1eb8e82cce4a1a msgid "Rokae collaborative arms" msgstr "珞石协作臂" #: ../../source/4-reference/hardware/0-index.md:105 -#: beffb3805c634f439d77c79fc48e6dec +#: 4efff65d69d54bf0ab9ad39e72538b61 msgid "eyou-ros2-control" msgstr "eyou-ros2-control" #: ../../source/4-reference/hardware/0-index.md:105 -#: 833623e8a9aa47b2b3543ee3f0652cb1 +#: 7f2efad5640c4b309b373846e914e8c2 msgid "CANopen" msgstr "CANopen" #: ../../source/4-reference/hardware/0-index.md:105 -#: ec1a12d1f022465b9d0caff6963ffb99 +#: abde4ab7bc9143c7b7b227e9a99de66c msgid "Eyou harmonic drives" msgstr "Eyou 谐波减速器" #: ../../source/4-reference/hardware/0-index.md:105 -#: dae07849d91749a4967fdf6fd5d3e667 +#: d307726fef174a61bb0608bf4c3613e2 msgid "eyou_canfd_ros2_control" msgstr "eyou_canfd_ros2_control" #: ../../source/4-reference/hardware/0-index.md:105 -#: 7e18f2cd10bd4ae592109956c4d62861 +#: 4ccd964ef6a849dcafc05be0a5c93b5c msgid "PHU CSP" msgstr "PHU CSP" #: ../../source/4-reference/hardware/0-index.md:105 -#: 6b1e13b5e0b043ef9082c7d8402919e2 +#: 1233b6375ffd4acc8ec7daca0140f983 msgid "inex-ros2-control" msgstr "inex-ros2-control" #: ../../source/4-reference/hardware/0-index.md:105 -#: d96ec3119eb948fa9dd997c0f4b458c4 +#: 0db7d1db0ec740ea8b7f4fd684029f8b 5e245314a46c4c5188d37ecd414da2ca msgid "Custom" msgstr "自定义" #: ../../source/4-reference/hardware/0-index.md:105 -#: 9a2f61cb563449cc9503b78d2933d34b +#: d2556725a92448aa8dd65362e6db5cf2 msgid "iNexus + LinkerHand" msgstr "iNexus + LinkerHand" #: ../../source/4-reference/hardware/0-index.md:105 -#: e1008779de83434ca34f9349433230de +#: cc5e2e2734ec475e83106041c5bac542 msgid "[wuji-ros2-control](../teleop/7-wuji_hand_hi.md)" msgstr "[wuji-ros2-control](../teleop/7-wuji_hand_hi.md)" #: ../../source/4-reference/hardware/0-index.md:105 -#: 14aef467d28c4d969e8d62d4ec8d69c5 +#: d8130ae6b0f3417d91b229d6261624f4 msgid "Ethernet" msgstr "以太网" #: ../../source/4-reference/hardware/0-index.md:105 -#: 418a3c4c17f34ea698412bb0aa750b8a +#: 70eb24446f2d4de6b1f85c1d125d2644 msgid "Wuji Hand2" msgstr "Wuji Hand2" #: ../../source/4-reference/hardware/0-index.md:105 -#: ff206696d7a341e4a205033b66fe6dd1 +#: 1a8fb61e56ab40d7b85c81c1fc11b397 msgid "[dexcap-ros2-control](../../2-how_to/5-teleoperation/8-dexcap_teleop.md)" msgstr "[dexcap-ros2-control](../../2-how_to/5-teleoperation/8-dexcap_teleop.md)" #: ../../source/4-reference/hardware/0-index.md:105 -#: c171f6b10cf049ff85cdf1807d521e73 +#: c44cc86e9cfb4bc2a6c8088bb53acc4e msgid "DexCap V4" msgstr "DexCap V4" #: ../../source/4-reference/hardware/0-index.md:105 -#: 1838eb399548447f9ea6d81f56b527b5 +#: f15a1ce29a0e4b738212f6264599a3e6 msgid "fairino-ros2-control" msgstr "fairino-ros2-control" #: ../../source/4-reference/hardware/0-index.md:105 -#: 351c2eb247f64236ae4a9e5a236e4a50 +#: 57cfbac5a8a34d91925cea69307049f8 msgid "ART SDK" msgstr "ART SDK" #: ../../source/4-reference/hardware/0-index.md:105 -#: 9f37a576d49d4f24bc95c4167bba0980 +#: 00115dc4ed7148c486939a27189e3864 msgid "Fairino arms" msgstr "Fairino 机械臂" #: ../../source/4-reference/hardware/0-index.md:121 -#: 07a586060189401b925f5131a1768b64 +#: 529a6183b33c4ee4bba4646cbc12878d msgid "" "`fairino-ros2-control` wraps the Fairino ART SDK (install and network " "setup are in that README after access)." msgstr "`fairino-ros2-control` 封装 Fairino ART SDK(安装与组网见开通后该 README)。" #: ../../source/4-reference/hardware/0-index.md:123 -#: 2f9ac78fcb68414eb99088680fd4a2f4 +#: b314df3bbbd949c29a327ec56cf07ad8 msgid "Common operations" msgstr "常用操作" #: ../../source/4-reference/hardware/0-index.md:125 -#: 4c61aafc98724b3ea941dfd4bbb9979f +#: 3f522887ae89450a9189813abddf091b msgid "" "ros2 control list_hardware_interfaces\n" "ros2 control list_controllers\n" @@ -690,7 +694,7 @@ msgstr "" "ros2 topic echo /joint_states\n" #: ../../source/4-reference/hardware/0-index.md:131 -#: 88dc74b06ffd445b852029a73729a09a +#: fc64948cecc24810aa6306daf41bb0f8 msgid "" "Hardware `` values do **not** appear on `ros2 param list` unless " "that plugin also `declare_parameter`s them. Confirm the plugin and xacro " @@ -702,7 +706,7 @@ msgstr "" "控制器参数](../../2-how_to/4-controllers/12-ros2_parameters.md) 核对插件和 xacro。" #: ../../source/4-reference/hardware/0-index.md:133 -#: 05e25183d3ec49069f3de0d01efe5e85 +#: 7c44c16922dc4f5e84c301a4ca7b8390 #, python-brace-format msgid "" "`{robot}_description/config/ocs2/*.info` are **OCS2 task / model files**," @@ -715,12 +719,12 @@ msgstr "" "参数](../controllers/8-ros2_parameters.md)。" #: ../../source/4-reference/hardware/0-index.md:135 -#: 5c2dc025f95a4aca9931241141dc5963 +#: d577ca87e2b74d0684be2f225cbd219c msgid "Related" msgstr "相关内容" #: ../../source/4-reference/hardware/0-index.md:137 -#: 5322f120b85e4bf2a5d3a4be85406dc1 +#: 6267651f182647d49eb6f92d84731cf1 msgid "" "[Configure ROS 2 controller " "parameters](../../2-how_to/4-controllers/12-ros2_parameters.md)" @@ -729,17 +733,17 @@ msgstr "" "parameters](../../2-how_to/4-controllers/12-ros2_parameters.md)" #: ../../source/4-reference/hardware/0-index.md:138 -#: 8425f2be0dbc426dba8b8c37958bafce +#: 27f7468a1c704d199c2197a7c72829ef msgid "[Controller ROS 2 parameters](../controllers/8-ros2_parameters.md)" msgstr "[控制器 ROS 2 参数](../controllers/8-ros2_parameters.md)" #: ../../source/4-reference/hardware/0-index.md:139 -#: 57dc793702e54374ab1c2892be8168cf +#: 00b1fa4ad96c4193aefb69076659fee3 msgid "[ros2_control in This Stack](../../3-concepts/1-ros2_control_here.md)" msgstr "[ros2_control 在本项目中](../../3-concepts/1-ros2_control_here.md) — 理解控制架构" #: ../../source/4-reference/hardware/0-index.md:140 -#: 4a5fd186b7284212bc3b04916f3b7efe +#: 60f6008f92044265ad7cf183f5b34013 msgid "[Terminology](../../3-concepts/8-terminology.md)" msgstr "[术语对照](../../3-concepts/8-terminology.md)" @@ -822,3 +826,6 @@ msgstr "[术语对照](../../3-concepts/8-terminology.md)" #~ msgid "dexcap-ros2-control" #~ msgstr "dexcap-ros2-control" +#~ msgid "Isaac (`hardware:=isaac`)" +#~ msgstr "Isaac(`hardware:=isaac`)" + diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/hardware/1-topic_based.po b/locale/zh_CN/LC_MESSAGES/4-reference/hardware/1-topic_based.po index 257097a..9c95ba4 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/hardware/1-topic_based.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/hardware/1-topic_based.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-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,23 +21,43 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/hardware/1-topic_based.md:1 -#: 61eac9cc781c4bbbbbc7dd048f9694a1 +#: 0d753071c85b440881388c7348a87594 msgid "topic_based_ros2_control" msgstr "topic_based_ros2_control" #: ../../source/4-reference/hardware/1-topic_based.md:3 -#: 1dc5ffc8c6c64b55be85fdc1e0ef8139 +#: 80e3418c33f14850a71e223ed8dae577 msgid "" "In-tree under `arms_ros2_control/hardwares/` (not a nested gitmodule). " -"ROS 2 topic hardware interface used when `hardware:=isaac` (Acone xacro: " -"`/isaac/joint_command`, `/isaac/joint_states`)." +"ROS 2 topic hardware interface used when `hardware:=isaac`." msgstr "" -"树内位于 `arms_ros2_control/hardwares/`(不是嵌套 gitmodule)。`hardware:=isaac` " -"时使用的 ROS 2 话题驱动层(Acone " -"xacro:`/isaac/joint_command`、`/isaac/joint_states`)。" +"位于 `arms_ros2_control/hardwares/` 树内(不是嵌套 git 子模块)。`hardware:=isaac` 时使用的" +" ROS 2 话题驱动层。" #: ../../source/4-reference/hardware/1-topic_based.md:5 -#: 56684952dfa94a28ac4b23229de00b81 +#: 17abfcb1ca8944c18fef878cdc4424a4 +msgid "" +"The plugin defaults below (`/robot_joint_commands`, " +"`/robot_joint_states`) are the class defaults in the README. The shared " +"description macro [`simulation_hardware.xacro`](https://github.com" +"/fiveages-sim/robot-descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)" +" overrides them to `/isaac/joint_command` and `/isaac/joint_states` " +"(Acone uses that macro). W2’s topic-bridge USD uses `/joint_command` and " +"`/joint_states` instead. The xacro `` and the OmniGraph " +"`topicName` are the same strings. In-process Isaac (`hardware=isaac_sim`)" +" does not use this plugin." +msgstr "" +"下面的插件默认值(`/robot_joint_commands`、`/robot_joint_states`)是 README " +"里的类默认值。共享描述宏 [`simulation_hardware.xacro`](https://github.com/fiveages-" +"sim/robot-descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)" +" 把它们改成 `/isaac/joint_command` 和 `/isaac/joint_states`(Acone 用这个宏)。W2 的话题桥" +" USD 用的是 `/joint_command` 和 `/joint_states`。xacro 的 `` 与 OmniGraph" +" 的 `topicName` 是同一组字符串。进程内 Isaac(`hardware=isaac_sim`)不用这个插件。" + +#: ../../source/4-reference/hardware/1-topic_based.md:7 +#: 154875e98962412db18fe2aea616f15f msgid "" "**Plugin:** `topic_based_ros2_control/TopicBasedSystem`. No " "`declare_parameter` and no `on_set_parameters`." @@ -45,8 +65,8 @@ msgstr "" "**插件:** `topic_based_ros2_control/TopicBasedSystem`。无 " "`declare_parameter`,也无 `on_set_parameters`。" -#: ../../source/4-reference/hardware/1-topic_based.md:7 -#: 194238ede4e3409697b3c760920fcc11 +#: ../../source/4-reference/hardware/1-topic_based.md:9 +#: bf6ab8d07cd94c3ca741c76f5913adb1 msgid "" "**README:** [topic_based_ros2_control](https://github.com/fiveages-" "sim/arms_ros2_control/blob/d50933d6862ad35ec7633ef522a134924827b115/hardwares/topic_based_ros2_control/README.md)." @@ -62,18 +82,18 @@ msgstr "" " [`d50933d`](https://github.com/fiveages-" "sim/arms_ros2_control/tree/d50933d6862ad35ec7633ef522a134924827b115)。" -#: ../../source/4-reference/hardware/1-topic_based.md:9 -#: ef0de5f40a36462e81b87e9b5795f697 +#: ../../source/4-reference/hardware/1-topic_based.md:11 +#: 2f6ebd835cbf492f852dbcbaec885aaa msgid "" "How to read **Startup only** / **Runtime**: [Hardware " "Interfaces](0-index.md). Isaac Sim: [Isaac " "Sim](../../2-how_to/2-simulation/4-isaac_sim.md)." msgstr "" -"如何读 **仅启动** / **运行时**:[驱动层](0-index.md)。Isaac " -"Sim:[Isaac Sim](../../2-how_to/2-simulation/4-isaac_sim.md)。" +"如何读 **仅启动** / **运行时**:[驱动层](0-index.md)。Isaac Sim:[Isaac " +"Sim](../../2-how_to/2-simulation/4-isaac_sim.md)。" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: cf004df19bb34469b5012b3f3d592517 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: a2d4bbe6471147919a1c8bc13262bcd9 msgid "" "\n" " \n" @@ -93,165 +113,165 @@ msgstr "" " \n" "" -#: ../../source/4-reference/hardware/1-topic_based.md:22 -#: 0b859bcb0b704e228d3574a2a36ce4fb +#: ../../source/4-reference/hardware/1-topic_based.md:24 +#: f2d86d7dab844591be06eab3a9bd6691 msgid "Parameters" msgstr "参数" -#: ../../source/4-reference/hardware/1-topic_based.md:24 -#: 67ac866bce674e4c872db7743459b436 +#: ../../source/4-reference/hardware/1-topic_based.md:26 +#: 1bcf486f8a894c3c8e5deab37b13bfe5 msgid "All rows in this table are **Startup only**." msgstr "本表各行均为 **仅启动**。" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: b1887d34f0b54233a745a49464d69c99 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: d506cef0ac2146749571063506261144 msgid "Parameter" msgstr "参数" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 5269b64bc068438db4493e57341a63f7 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 9301463c38204b67af44386e7587ffd2 msgid "Type / default" msgstr "类型 / 默认值" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 9e072d1ae8c84e23beb2c027047efc0e +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 4f5ac52f60944d9b9646d4e3b3f3f1e6 msgid "Meaning" msgstr "含义" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: eaec7ed6fc594712b9e329b11ab62097 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: b1630810fd4148f5ab393f3c9efed0ed msgid "`joint_commands_topic`" msgstr "`joint_commands_topic`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 446b5108b98c40d6a0961993acdd69bf +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: aada805e31ff4d648443a5cc917abaeb msgid "`\"/robot_joint_commands\"`" msgstr "`\"/robot_joint_commands\"`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 2eec0792ffa244c3bbd69a4d1db32794 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 44c042c5b4aa485f98a1d5e144f15ba9 msgid "Command `sensor_msgs/JointState` topic" msgstr "命令 `sensor_msgs/JointState` 话题" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 412a63b35e374f499d00326f6abdfda6 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 4ae31c35369c47d0b20a65bb7d87955c msgid "`joint_states_topic`" msgstr "`joint_states_topic`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 4d263ee96aca4c79ae2942d30d38c929 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 3b6d2bc8c56e46d2a374e93be7c0ecd0 msgid "`\"/robot_joint_states\"`" msgstr "`\"/robot_joint_states\"`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: da3ddb95f88b4fa8b582f802861371f9 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 51dada7ad2844de7873cbbb1722c0b12 msgid "State `sensor_msgs/JointState` topic" msgstr "状态 `sensor_msgs/JointState` 话题" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: ed076b8fa23847ae9ffff8a3f2031d01 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 915c33b500634368945a9ca9ee4815d9 msgid "`initialize_commands_from_state`" msgstr "`initialize_commands_from_state`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: caf13b6c2a194a5a82e0103acdb72787 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 729a7e88fc094533bd1c7948227d50c6 msgid "`true` (README: recommended for real hardware)" msgstr "`true`(README:真机建议)" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 57c55e52d5c64ea385a6206e6fc16fe7 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 92f14a26dd1940e7827db00cac1a0509 msgid "" "`true`: first received state becomes the command. `false`: use " "state_interface `initial_value`" msgstr "`true`:首次收到的状态作为命令。`false`:使用 state_interface `initial_value`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 2eb77224cd39467c96c57b9ffe4d19d5 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 5a73d233e48b44e7be16e80c0ee5afc1 msgid "`trigger_joint_command_threshold`" msgstr "`trigger_joint_command_threshold`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 05be3995351b4d8e8b1b59e11965fd9a +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: f97b6012ec404fd18343ef1e2a6700a2 msgid "`1e-5`" msgstr "`1e-5`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 448ab46d6e6d42f0b91f3b87615ccb9d +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 71529b4c30864f0c9c500164e1fe44ca msgid "Skip publish when command vs state is below this delta; `-1` always send" msgstr "命令与状态差低于此阈值则跳过发布;`-1` 始终发送" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 49faedf628ae47bb9fcc5ff35f857fef +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: bd73e56655f94f319747170cb34d452a msgid "`sum_wrapped_joint_states`" msgstr "`sum_wrapped_joint_states`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: dd026b6d5d464f37b72bf05ceb88d94e +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: ab4ede02b33a46eba38712cbdf4c7b92 msgid "`false`" msgstr "`false`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 35a497b3bfc14566b7a723c59889a3bb +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: a5458ca234584a57a934f4a790fc6810 msgid "`true`: unwrap ±2π (Isaac-style wrapping)" msgstr "`true`:展开 ±2π(Isaac 风格折返)" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 40321d5ba0e1452aba90aa3ee4a090d0 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 6648c101d4ab4ab192dad25d769168b6 msgid "`joint_name_prefix`" msgstr "`joint_name_prefix`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: b916e299b8c94d29a61bb28f7464800d +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 58668e435f114b73bd555323c3ad4ada msgid "`\"\"`" msgstr "`\"\"`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 22048aa7754244dcaca20401fb899338 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: d1b71278e3dd4f808a662f67b2c84b79 msgid "Strip this prefix from hardware joint names when matching topic names" msgstr "匹配话题名时从硬件关节名去掉此前缀" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 1153b40b72584e7c9836c29d83a113b8 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: a5da3d7af65a428ebcb065841c8534e8 msgid "`initial_value`" msgstr "`initial_value`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: f06e28906ca8499c99b09daa2cbd162a +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 3051b39b61324a5498b9b9bdccfbb014 msgid "per `state_interface`" msgstr "每个 `state_interface`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: cca5f178539747cdb10e17e74c82735f +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 2fc3d6edf52242f7ab1cd3d8b5f7a202 msgid "Used when `initialize_commands_from_state` is `false`" msgstr "`initialize_commands_from_state` 为 `false` 时使用" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: e1627feb3bc94fe1b66837cf87d64074 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 7ea38dc07dbb4905a1d318d11e58ce15 msgid "`mimic`" msgstr "`mimic`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: d786d23126024200a18402014b553f91 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: a39221888fa0479dad3b6199f336a815 msgid "per joint" msgstr "每个关节" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: e401d63463e6476e9e88af22bf066094 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: f36c8b57b6a34c009828f8f6014fd1a5 msgid "Name of the joint to mimic" msgstr "要跟随的关节名" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: a216a0b63cc6489f9771105214494faa +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 0fb8dfc024e0472d8570d9f1fa33404d msgid "`multiplier`" msgstr "`multiplier`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: 8b093eebd64141a5b0315f6f87660f02 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: fd4695af0dde4396aead1b3c159d77cb msgid "`1`" msgstr "`1`" -#: ../../source/4-reference/hardware/1-topic_based.md:11 -#: aad36bed67da42ae9f0a51f921b39b13 +#: ../../source/4-reference/hardware/1-topic_based.md:13 +#: 36915314f3fd4a5ab8f7654b7d1d4918 msgid "Mimic scale" msgstr "跟随比例" diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/4-lerobot_ros2.po b/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/4-lerobot_ros2.po index e7f0b21..4bfbe55 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/4-lerobot_ros2.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/4-lerobot_ros2.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-07 01:47+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: 2026-10-06 16:20+0000\n" "Last-Translator: Cursor Agent\n" "Language: zh_CN\n" @@ -15,70 +15,58 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/python_apps/4-lerobot_ros2.md:1 -#: 7dbac7d01bcf42c28028563a39f85605 +#: d02100c285ad44e5a4fed3368ad954cc msgid "lerobot_ros2" msgstr "lerobot_ros2" #: ../../source/4-reference/python_apps/4-lerobot_ros2.md:3 -#: 53ba1d1512b24a03a98c9e74469d4ff0 +#: cd5c110c1dbd4c05aaf552126eb298cf msgid "" "LeRobot ↔ ROS 2 integration monorepo. LeRobot talks to the robot over ROS" " 2 topics." msgstr "LeRobot 与 ROS 2 的集成单体仓库。LeRobot 通过 ROS 2 话题与机器人通信。" #: ../../source/4-reference/python_apps/4-lerobot_ros2.md:5 -#: 81da9ce2ef024403ab91b0866fec8400 -msgid "Documented branch" -msgstr "文档所依据的分支" - -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:8 -#: d80a5c9e72b6435aa0caece9440ba748 +#: 9c9ba4de6e9048e58a58dd95b0776bb6 msgid "" -"Documented against branch `feature/sim-grasp-datagen` (tip 2026-09-20). " -"That branch is newer than `main`; follow it, not `main`." +"**Repository:** [fiveages-sim/lerobot_ros2](https://github.com/fiveages-" +"sim/lerobot_ros2) `main` (`f750af76`). `feature/sim-grasp-datagen` was " +"merged in [#10](https://github.com/fiveages-sim/lerobot_ros2/pull/10) " +"(`147ea78d`, 2026-10-23) and is no longer a branch." msgstr "" -"本文档对照分支 `feature/sim-grasp-datagen`(尖端提交 2026-09-20)。该分支新于 " -"`main`;请以它为准,不要跟 `main`。" +"**仓库:** [fiveages-sim/lerobot_ros2](https://github.com/fiveages-" +"sim/lerobot_ros2) 的 `main`(`f750af76`)。`feature/sim-grasp-datagen` 已在 " +"[#10](https://github.com/fiveages-" +"sim/lerobot_ros2/pull/10)(`147ea78d`,2026-10-23)合入,该分支已不存在。" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:11 -#: d59f40eb5e2c42f9be68bd8ea0927719 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:7 +#: 2fe7b9ef4b354471bbc422c7b6cfd8f0 msgid "" -"**Repository:** [fiveages-sim/lerobot_ros2 @ `feature/sim-grasp-" -"datagen`](https://github.com/fiveages-sim/lerobot_ros2/tree/feature/sim-" -"grasp-datagen)" +"**README:** [README.md](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/README.md)" msgstr "" -"**仓库:** [fiveages-sim/lerobot_ros2 @ `feature/sim-grasp-" -"datagen`](https://github.com/fiveages-sim/lerobot_ros2/tree/feature/sim-" -"grasp-datagen)" +"**README:** [README.md](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/README.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:13 -#: 5683f73fba2349fda58a6c5241ebceda -msgid "" -"**README:** [README.md on this branch](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/README.md)" -msgstr "" -"**README:** [README.md on this branch](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/README.md)" - -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:15 -#: f8c45e6da0e543c59811316046f798af +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:9 +#: dbdd2ca813b24a14814466074f128f94 msgid "Purpose" msgstr "用途" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:17 -#: 47a1b274457d4a8fb4a1d1c8f8fa597f +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:11 +#: e038d95709b54475bd1c5bc933370db6 msgid "" "This checkout is a monorepo, not a single `pip install -e .` package. It " "wires:" msgstr "本仓库是单体工程,不是在仓库根目录执行一次 `pip install -e .` 就能装好的包。它包含:" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:19 -#: dbefbdf786a448bcaf99ed294ad5e778 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:13 +#: aa3b73aebbd8460b980f90c108c43d6c msgid "`submodules/ros2_robot_interface` — ROS 2 robot interface" msgstr "`submodules/ros2_robot_interface`:独立 ROS 2 机器人接口包" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:20 -#: 2ec13b1439d94df487c0ffbd1b539cc7 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:14 +#: cba99f374a4e4ffc932453454b2e6038 msgid "" "`submodules/robot_action_composer` — task-queue YAML and motion " "generation (see [robot_action_composer](5-robot_action_composer.md))" @@ -86,8 +74,8 @@ msgstr "" "`submodules/robot_action_composer`:任务队列 YAML 与运动生成(见 " "[robot_action_composer](5-robot_action_composer.md))" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:21 -#: 5bc3d44bebc3460e8dc92369158e3d4e +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:15 +#: 60f58ce76cc54c318e58a0751fc9e919 msgid "" "`lerobot_robot_ros2` — LeRobot ROS 2 robot plugin (`ROS2Robot` / " "`ROS2RobotConfig` / `ROS2RobotInterfaceConfig`)" @@ -95,58 +83,57 @@ msgstr "" "`lerobot_robot_ros2`:LeRobot 的 ROS 2 机器人插件(`ROS2Robot` / " "`ROS2RobotConfig` / `ROS2RobotInterfaceConfig`)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:22 -#: 54250852cec147fba92081ba672ff721 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:16 +#: 4f7cfdb57b874c2fa50911db1c3f7c5e msgid "`lerobot_camera_ros2` — LeRobot ROS 2 camera plugin" msgstr "`lerobot_camera_ros2`:LeRobot 的 ROS 2 相机插件" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:24 -#: aa878a04d0bc4cee93d751d725427a9d +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:18 +#: 51e57fc6195f4fbd919369c11815debb msgid "" "The LeRobot core library is installed from PyPI. The default pin is " "`lerobot==0.5.1` in `.fa-env.toml` (first created from [`.fa-" -"env.toml.example`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/.fa-env.toml.example))." +"env.toml.example`](https://github.com/fiveages-sim/lerobot_ros2/blob/main" +"/.fa-env.toml.example))." msgstr "" -"LeRobot 核心库从 PyPI 安装。默认版本钉在 `.fa-env.toml` 中的 `lerobot==0.5.1`(首次由 [`.fa-" -"env.toml.example`](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/.fa-env.toml.example) " -"生成)。" +"LeRobot 核心库从 PyPI 安装。默认版本钉在 `.fa-env.toml` 的 `lerobot==0.5.1`(首次由 [`.fa-" +"env.toml.example`](https://github.com/fiveages-sim/lerobot_ros2/blob/main" +"/.fa-env.toml.example) 生成)。" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:26 -#: 530fb47886034b859357994e7202daff +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:20 +#: b5c030e26323484fb2d05e1244c5b17f msgid "Requirements" msgstr "前置要求" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:28 -#: 666ba9c08adc48918b299eaaa357da8e +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:22 +#: ec7d07be9d3344edaa34065abc808966 msgid "ROS 2 (tested: **Jazzy**)" msgstr "ROS 2(测试版本:**Jazzy**)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:29 -#: 950ac6b5b98c415d8bce789f5355f375 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:23 +#: a875c4de65ad4214961abab5efd5052d msgid "**Python 3.12**" msgstr "**Python 3.12**" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 -#: 150a6844ba634d8ba826a4e6a2718465 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:24 +#: 6a154e5c97dc430facc41e35e4f87bfb msgid "[uv](https://docs.astral.sh/uv/) (recommended) or Conda" msgstr "[uv](https://docs.astral.sh/uv/)(推荐)或 Conda" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:32 -#: b5224755028e465bb4392ff64d2010da +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:26 +#: 161e442ab0764fc18b98442e361cdc74 msgid "Installation" msgstr "安装" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:34 -#: 72f8e4c0e10a41d1bbfa6083c030d4ea +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:28 +#: 50577bce0b614b1d8f33cd624d1444b6 msgid "" "Clone with submodules, then use `init.sh`. Do **not** treat `pip install " "-e .` at the repo root as the install path." msgstr "先带 submodule 克隆,再用 `init.sh`。**不要**把仓库根目录的 `pip install -e .` 当作安装路径。" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 4713cdad446b44459999942854496d40 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 9b68e694b3934390a3ccd24c4c55a94e msgid "" "git clone --recursive git@github.com:fiveages-sim/lerobot_ros2.git\n" "cd lerobot_ros2\n" @@ -168,155 +155,216 @@ msgstr "" "# recording / inference plugins: ./init.sh install-lerobot\n" "source .venv/bin/activate # default backend=uv" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:48 -#: a6536639dcda4dfaab4ca2ba7aebf477 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:42 +#: d969778ecbb44e439cfe929498e0385a msgid "" "`./init.sh` with no arguments opens an interactive menu (submodules, env," " install, backend, ROS 2 workspace). Useful non-interactive commands from" " the README:" msgstr "`./init.sh` 不带参数会进入交互菜单(子模块、环境、安装、backend、ROS 2 工作空间)。README 中常用的非交互命令:" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 7416cc1948fd4f7c935784b50b717fb0 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: e0f08f7ce9cc4b52848392c9e9545afc msgid "Command" msgstr "命令" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: ae6ddab8afe94bc0a077d797fddac086 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 590f894056d6418c84580af799e14b1b msgid "What it does" msgstr "作用" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 72c59f4d91c844a48de242a58798718a -msgid "`./init.sh all`" -msgstr "`./init.sh all`" - -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 984eb0ee08a140dc90b18e72a7cdf6c5 -msgid "Submodules + env + task orchestration + LeRobot plugins" -msgstr "子模块 + 环境 + 任务编排 + LeRobot 插件" - -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: be6f86c69e80445c827a928a42089776 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 77819cc096704376a60bff35f316f355 msgid "`./init.sh all-motion`" msgstr "`./init.sh all-motion`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 7336d05c5fdd4b1fb3d9d71aaf64080c -msgid "Submodules + env + `ros2_robot_interface` + `robot_action_composer` only" -msgstr "仅子模块 + 环境 + `ros2_robot_interface` + `robot_action_composer`" +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 109483cd520d4ef6b0a7723c076dbb97 +msgid "" +"Submodules + env + `ros2_robot_interface` + `robot_action_composer`. " +"NumPy stays 1.x" +msgstr "子模块 + 环境 + `ros2_robot_interface` + `robot_action_composer`。NumPy 保持 1.x" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 342c4c4e20d5420983bf6d58ab1df677 +msgid "`./init.sh all-grasp`" +msgstr "`./init.sh all-grasp`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 0f383c4260404983a06988c756c80ac3 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: f0af2b851d1d426bb6144e5a51fd8900 +msgid "" +"`all-motion` plus dex submodules, `install-grasp` (`viser`, `wuji-sdk`), " +"and the HUG env. NumPy stays 1.x" +msgstr "" +"在 `all-motion` 之上加上灵巧手子模块、`install-grasp`(`viser`、`wuji-sdk`)和 HUG " +"环境。NumPy 保持 1.x" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: e8f96b61013b46fd83d7aeac85bcc3bb msgid "`./init.sh install-lerobot`" msgstr "`./init.sh install-lerobot`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: eac59a55a631440eb81eda1ab2785765 -msgid "PyTorch + PyPI `lerobot` + `lerobot_robot_ros2` / `lerobot_camera_ros2`" -msgstr "PyTorch + PyPI `lerobot` + `lerobot_robot_ros2` / `lerobot_camera_ros2`" +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: cd4ed70779bf441786566828618b94c0 +msgid "" +"PyTorch + PyPI `lerobot` + `lerobot_robot_ros2` / `lerobot_camera_ros2`. " +"Upgrades NumPy to 2" +msgstr "" +"PyTorch + PyPI 的 `lerobot` + `lerobot_robot_ros2` / " +"`lerobot_camera_ros2`。会把 NumPy 升到 2" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: f1e11c8096d44cc085be9e77c641282d +msgid "`./init.sh all`" +msgstr "`./init.sh all`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 839a03b98e9147e4810d0c9c85cdf126 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 43c26df7ea2c4384a61c9d08afc14988 +msgid "Submodules + env + orchestration + LeRobot plugins (NumPy 2)" +msgstr "子模块 + 环境 + 编排 + LeRobot 插件(NumPy 2)" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 50753889f1c94df187e3f785d09b60a8 msgid "`./init.sh set-backend uv`" msgstr "`./init.sh set-backend uv`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 68fb1bf23d2641a99f160f23dda3ba9e +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 93b855859ed8477a9f11ce02a02c93be msgid "Write `backend` in `.fa-env.toml` (`uv` or `conda`)" msgstr "写入 `.fa-env.toml` 中的 `backend`(`uv` 或 `conda`)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:57 -#: bfc207debb9d4c05a374c0b1a17fadd7 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:52 +#: 875fa5ce89294201967eb05d28339e2f +msgid "" +"Orchestration and dexterous grasp share one environment on NumPy 1.x so " +"they match ROS 2’s system OpenCV / `cv_bridge`. Recording and policy " +"inference install NumPy 2 for `lerobot` 0.5. Use a separate environment " +"for that step. `./init.sh install-lerobot` in the grasp environment " +"upgrades NumPy and then head-camera capture through `cv_bridge` no longer" +" matches the system build. Dexterous grasp is optional (the reference " +"robot is FiveAges W2 with Wuji Hand2). A robot without that grasp config " +"still runs `all-motion`." +msgstr "" +"编排和灵巧手抓取共用一个 NumPy 1.x 环境,以便和 ROS 2 的系统 OpenCV / `cv_bridge` 一致。录制和策略推理为 " +"`lerobot` 0.5 安装 NumPy 2。这一步用另一个环境。在抓取环境里执行 `./init.sh install-lerobot` " +"会把 NumPy 升上去,之后经 `cv_bridge` 采头相机就和系统编译版本对不上。灵巧手抓取是可选项(参考机型是五纪 W2 加 Wuji " +"Hand2)。没有这份抓取配置的机器人仍然跑 `all-motion`。" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:54 +#: 14b642f1c08e43f8bcb7608c33e693a0 +msgid "" +"Optional submodules in [`.gitmodules`](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/.gitmodules): [HUG](https://github.com" +"/fiveages-sim/HUG) (private; Python 3.10 env under " +"`submodules/hug/.venv`), [wuji-retargeting](https://github.com/fiveages-" +"sim/wuji-retargeting), [internnav_w2](https://github.com/fiveages-" +"sim/internnav_w2), [internnav_arx_lift2s](https://github.com/fiveages-" +"sim/internnav_arx_lift2s), [LightNav-0_W2](https://github.com/fiveages-" +"sim/LightNav-0_W2). `internnav_w2` and `LightNav-0_W2` need access. " +"Runtime retargeting installs PyPI `wuji-sdk` (`./init.sh install-grasp`);" +" do not recurse into the nested MuJoCo repos inside `wuji-retargeting`." +msgstr "" +"[`.gitmodules`](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/.gitmodules) 里的可选子模块:[HUG](https://github.com" +"/fiveages-sim/HUG)(私有;Python 3.10 环境在 `submodules/hug/.venv`)、[wuji-" +"retargeting](https://github.com/fiveages-sim/wuji-" +"retargeting)、[internnav_w2](https://github.com/fiveages-" +"sim/internnav_w2)、[internnav_arx_lift2s](https://github.com/fiveages-" +"sim/internnav_arx_lift2s)、[LightNav-0_W2](https://github.com/fiveages-sim" +"/LightNav-0_W2)。`internnav_w2` 和 `LightNav-0_W2` 需要权限。运行时重定向安装的是 PyPI 的 " +"`wuji-sdk`(`./init.sh install-grasp`);不要递归进 `wuji-retargeting` 里嵌套的 " +"MuJoCo 仓库。" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:56 +#: 038ff555b6cb46939bcb7cc6cb928632 msgid "" "Runtime config lives in local `.fa-env.toml` (gitignored; copied from the" " example). Keys documented in the README:" msgstr "运行时配置在本地 `.fa-env.toml`(已 gitignore;从示例复制)。README 中记录的键:" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: c69b7030c02f409cbc9b9eae5d9c4e61 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 0c2bd8175e8f44249ec309819545526f msgid "Key" msgstr "配置项" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 046db30c6940432f88a6820f5634cde2 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 04bebbe25c354aff8943c00ff4bd3653 msgid "Meaning" msgstr "说明" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 7a2a4a7e145b48b6a175b039c91c0c08 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: e4ac1ae927e549408851ae8852e04088 msgid "`backend`" msgstr "`backend`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: ce87d7ac39b94aa7b5dd0d3d7decc5c3 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: c23d0a636f40484f97271d066f284bf4 msgid "`uv` or `conda`" msgstr "`uv` 或 `conda`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 8837f2f8c965430b9f53d2145b61f3e1 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: c2142636a95049bb8213d9b493b174e9 msgid "`[conda].name`" msgstr "`[conda].name`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 603d597cdd8648c8950e3cebf5c67526 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 1d13014aa2324634aabe9ff886b9ae65 msgid "Conda env name (default `lerobot-ros2`)" msgstr "conda 环境名(默认 `lerobot-ros2`)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: d56116bc1e234622b4e8b3afd782db90 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 804b2fa403b947aaaf2f96a3504b6ac5 msgid "`[uv].venv`" msgstr "`[uv].venv`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 4db652ec3cf94a47b2fc1b44c0715337 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: c4f704f570684dcfb5bf7d3ecdaad782 msgid "uv venv path (default `.venv`)" msgstr "uv 虚拟环境路径(默认 `.venv`)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: b3dfa1c4718249fd83892f3ac4512c91 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 83e292e5c7c3443ab938aa738d7691c5 msgid "`[lerobot].version`" msgstr "`[lerobot].version`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 66bda2d0a52d4f669666faa7baad7f42 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 497e5dcc0d0448c0b5574177fe748f73 msgid "PyPI LeRobot version (default `0.5.1`)" msgstr "PyPI lerobot 版本(默认 `0.5.1`)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: c3adcb18f81e472da77ec6c31c34c883 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: 9892e4399da341cba0404dfc6a96cbf8 msgid "`[ros2].workspace`" msgstr "`[ros2].workspace`" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:36 -#: 028cb2b8279440ed8b5e2c7ede853b77 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:30 +#: b16d7be1548142ed96cae7ee43d1cb7c msgid "ROS 2 workspace; sourced when the env is activated" msgstr "ROS 2 工作空间;激活环境时自动 source" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:67 -#: 4ab529dcbe104be1b2a1ce3db5510f75 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:66 +#: 878b3cb57e974277ba7650d64b1dd109 msgid "" "Personal overrides: `.fa-env.local.toml`. Env notes: " "[docs/ENV_THIS_CHECKOUT.md](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/docs/ENV_THIS_CHECKOUT.md). Use `uv pip` inside this checkout's " -"`.venv`, not system `pip` (PEP 668). Do not install `ros2-stack` / " -"`grasp-generation` into `submodules/hug/.venv` (HUG's Python 3.10 env)." +"sim/lerobot_ros2/blob/main/docs/ENV_THIS_CHECKOUT.md). Use `uv pip` " +"inside this checkout's `.venv`, not system `pip` (PEP 668). Do not " +"install `ros2-stack` / `grasp-generation` into `submodules/hug/.venv` " +"(HUG's Python 3.10 env)." msgstr "" "个人覆盖:`.fa-" "env.local.toml`。环境说明:[docs/ENV_THIS_CHECKOUT.md](https://github.com" -"/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/docs/ENV_THIS_CHECKOUT.md)。在本检出的 `.venv` 里用 `uv pip`,不要用系统 " -"`pip`(PEP 668)。不要把 `ros2-stack` / `grasp-generation` 装进 " -"`submodules/hug/.venv`(HUG 的 Python 3.10 环境)。" +"/fiveages-sim/lerobot_ros2/blob/main/docs/ENV_THIS_CHECKOUT.md)。在本检出的 " +"`.venv` 里用 `uv pip`,不用系统 `pip`(PEP 668)。不要把 `ros2-stack` / `grasp-" +"generation` 装进 `submodules/hug/.venv`(HUG 的 Python 3.10 环境)。" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:69 -#: e84f9feb7b20475c80040675ae17b5f2 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:68 +#: d23895bde2c74c7bb287715333e48c01 msgid "Manual fallback" msgstr "手动回退" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:72 -#: 575bfb2fbb4f4fbcad62cc1d59908451 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:71 +#: 10da605b62e54bfeb5c1f04ae108e332 msgid "" "Skip `init.sh` only if you must. The README uv path: create `.venv` with " "`--system-site-packages`, then install local packages with **`--no-" @@ -327,8 +375,8 @@ msgstr "" "`.venv`,本地包加 **`--no-deps`**,避免 pip 从 PyPI 拉 `rclpy`。ROS Python 包来自已 " "source 的 Jazzy overlay。" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:74 -#: 790c0d27bd7f4ee5960c1cacbfeaa928 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:73 +#: 9d8320c3c4644d6e9de034f781786520 msgid "" "git clone --recursive git@github.com:fiveages-sim/lerobot_ros2.git\n" "cd lerobot_ros2\n" @@ -368,20 +416,20 @@ msgstr "" "uv pip install -e lerobot_robot_ros2 --no-deps\n" "uv pip install -e lerobot_camera_ros2 --no-deps" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:95 -#: 6d890e7607a643628caa40c31ed39273 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:94 +#: 6ea4e3d2db694b348e3d82688943f9d3 msgid "Usage: ROS2Robot" msgstr "使用:ROS2Robot" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:97 -#: e46103479a474a27802a347ab99c992e +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:96 +#: a7d0dcebd31044e8aeebd498f8d0e8db msgid "" "The public robot plugin is `lerobot_robot_ros2`, not a root package named" " `lerobot_ros2`. Example from the README:" msgstr "对外的机器人插件是 `lerobot_robot_ros2`,不是名为 `lerobot_ros2` 的根包。示例来自 README:" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:99 -#: 38f5c6920fc2423c9b652edff15f78e5 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:98 +#: 1cbd7316163144169fddfb8927716055 msgid "" "from lerobot_robot_ros2 import ROS2Robot, ROS2RobotConfig, " "ROS2RobotInterfaceConfig\n" @@ -417,23 +465,105 @@ msgstr "" "# ...\n" "robot.disconnect()\n" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:117 -#: 1747541206f3493a82b4acd34bd7a136 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:116 +#: c33e3b885a7048cb936bb4483dac59b2 msgid "" -"More examples are under `examples/` on this branch. `lerobot_robot_ros2` " -"depends on the local `ros2-robot-interface` install " -"(`submodules/ros2_robot_interface` first)." +"More examples are under `examples/`. `lerobot_robot_ros2` depends on the " +"local `ros2-robot-interface` install (`submodules/ros2_robot_interface` " +"first)." msgstr "" -"更多示例见本分支的 `examples/`。`lerobot_robot_ros2` 依赖本地已安装的 `ros2-robot-" -"interface`(先装 `submodules/ros2_robot_interface`)。" +"更多例子在 `examples/`。`lerobot_robot_ros2` 依赖本地的 `ros2-robot-interface`(先装 " +"`submodules/ros2_robot_interface`)。" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:118 +#: 9f696642380646609aa3d91bdec9b8bf +msgid "Isaac workspace" +msgstr "Isaac 工作区" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:119 -#: 2ea421cda04848c6b4d5adf92a59ac82 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:120 +#: 0f612be40154408e972e703c1a6d0f5c +msgid "" +"Shared steps: [`examples/IsaacSim/README.md`](https://github.com" +"/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md). That " +"README still lists Isaac Sim 6.0. FaSim `config/fa_sim.conf` is the " +"version menu for this stack (fallback `6.2.0` / `6.1.0` / `6.0.1`)." +msgstr "" +"共用步骤:[`examples/IsaacSim/README.md`](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md)。那份 README 仍写 " +"Isaac Sim 6.0。本栈的版本菜单是 FaSim 的 `config/fa_sim.conf`(回退 `6.2.0` / `6.1.0` " +"/ `6.0.1`)。" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:122 +#: 293b0fc5819d4db78f0baaa5651cb631 +msgid "" +"`motion-generation` runs in any directory that contains `robots/` or a " +"project `robot.yaml`. A [fa-project-usd](https://github.com/fiveages-sim" +"/fa-project-usd) project directory (private; needs access) can be that " +"workspace when `LEROBOT_ROOT` points at this checkout and `robot.yaml` " +"`extends` a profile under `examples/IsaacSim/robots/`. The public example" +" in that README is:" +msgstr "" +"`motion-generation` 可以在任何含 `robots/` 或项目 `robot.yaml` 的目录里运行。[fa-project-" +"usd](https://github.com/fiveages-sim/fa-project-usd) " +"的项目目录(私有,需要权限)可以当这个工作区:`LEROBOT_ROOT` 指向本检出,且 `robot.yaml` 的 `extends` 指向" +" `examples/IsaacSim/robots/` 下的一份配置。该 README 里的公开例子是:" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:124 +#: 6384c661c7a844a1aaaef642cf2a7833 +msgid "" +"export LEROBOT_ROOT=/path/to/lerobot_ros2\n" +"cd \"/path/to/fa-project-usd/Aimbo/2026-04 Bosch German&Poland POC\"\n" +"motion-generation --robot fiveages_w2 --task-key poc_port4_bimanual_carry" +msgstr "" +"export LEROBOT_ROOT=/path/to/lerobot_ros2\n" +"cd \"/path/to/fa-project-usd/Aimbo/2026-04 Bosch German&Poland POC\"\n" +"motion-generation --robot fiveages_w2 --task-key poc_port4_bimanual_carry" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:130 +#: c500910ff10c4e628570914d743980d6 +msgid "" +"`ros2-stack`, `check-robot-status`, and `record_datasets.py --workspace " +"` take the same directory. Orchestration files beside those " +"scenes (`robot.yaml`, `task_configs/`, `maps/` or `map/`) are on `fa-" +"project-usd` branch `feature/sinopec-test-tube-picking`, which is ahead " +"of that repo’s `main`." +msgstr "" +"`ros2-stack`、`check-robot-status` 和 `record_datasets.py --workspace " +"` 使用同一目录。场景旁边的编排文件(`robot.yaml`、`task_configs/`、`maps/` 或 " +"`map/`)在 `fa-project-usd` 分支 `feature/sinopec-test-tube-picking` " +"上,该分支领先于该仓库的 `main`。" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:132 +#: d739495a7d204c599c4f6dad7875cddd +#, python-brace-format +msgid "" +"Public G1D profile " +"[`examples/IsaacSim/robots/Unitree/G1D/robot.yaml`](https://github.com" +"/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/Unitree/G1D/robot.yaml):" +" `ee_target_frame` is `{arm}_eef`, `ee_command_frame` is `{arm}_tcp`, and" +" there is no `ee_tip`. `ros2_stack.motion.required` is `false` with " +"`args.hardware: isaac`, because the scene USD already starts in-process " +"control on Play. That YAML `hardware: isaac` is the composer stack " +"preset. It is not the in-process plugin name `isaac_sim`. Leaving " +"`required: true` would start a second controller manager." +msgstr "" +"公开的 G1D 配置 " +"[`examples/IsaacSim/robots/Unitree/G1D/robot.yaml`](https://github.com" +"/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/Unitree/G1D/robot.yaml):`ee_target_frame`" +" 是 `{arm}_eef`,`ee_command_frame` 是 `{arm}_tcp`,没有 " +"`ee_tip`。`ros2_stack.motion.required` 为 `false`,`args.hardware` 为 " +"`isaac`,因为场景 USD 在播放时已经拉起进程内运控。这份 YAML 里的 `hardware: isaac` " +"是编排器的栈预设,不是进程内插件名 `isaac_sim`。若把 `required` 留成 true,会再启动一套控制器管理器。" + +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:134 +#: ec94463b33aa4ea9ab8e0fb125335408 msgid "Camera plugin" msgstr "相机插件" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:121 -#: b7fbb01bc6c34c37b5e590981ea931d0 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:136 +#: 80a43681c56740a79ad3ac4649a301cd msgid "" "`lerobot_camera_ros2` defaults to **manual image conversion** (no " "`cv_bridge`) so it can run with `lerobot==0.5.1` and numpy 2.x. If " @@ -443,13 +573,13 @@ msgstr "" "`lerobot_camera_ros2` 默认使用 **manual 图像转换**(不依赖 `cv_bridge`),以便配合 " "`lerobot==0.5.1` 与 numpy 2.x。若环境支持 `cv_bridge`,会自动尝试使用。强制走 manual 路径:" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: 0d72ba89416b47cc968d43b1ee43149d +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: d022d95e490f47739863cd22dab49d3b msgid "export LEROBOT_ROS2_DISABLE_CV_BRIDGE=1" msgstr "export LEROBOT_ROS2_DISABLE_CV_BRIDGE=1" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:127 -#: 4ee50dcf3b254c16af360765e43a88d5 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:142 +#: 3db3cb6047f845478153d1584298f29e msgid "" "The uv path also expects system `ffmpeg` (for example `sudo apt install " "ffmpeg`). `install-plugins` additionally installs `scipy>=1.14` so " @@ -460,117 +590,116 @@ msgstr "" "会额外安装 `scipy>=1.14`,避免 `--system-site-packages` 下系统 SciPy 与 numpy 2.x " "不兼容。" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:129 -#: a055dc812274447ab1da95acdc4454ec -msgid "In-repo docs (this branch)" -msgstr "仓库内文档(本分支)" +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:144 +#: 4b91bdae3e464569bd2b59d9650adb05 +msgid "In-repo docs (`main`)" +msgstr "仓内文档(`main`)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: f761b803f8bf4cdd90389687a72171c5 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: b32f6f89f5f14e09af159d874ee1c6aa msgid "Doc" msgstr "文档" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: b58a39214e1642b5974a8c3c1f03b0ac +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: 34b76d60d7e0438689cb72c8cdee490c msgid "Role" msgstr "内容" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: a87786a161f54bf78fd429886ff8d9dd +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: 675672d88d6249e4943e48f00781ea26 msgid "" "[docs/ENV_THIS_CHECKOUT.md](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/docs/ENV_THIS_CHECKOUT.md)" +"sim/lerobot_ros2/blob/main/docs/ENV_THIS_CHECKOUT.md)" msgstr "" "[docs/ENV_THIS_CHECKOUT.md](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-" -"datagen/docs/ENV_THIS_CHECKOUT.md)" +"sim/lerobot_ros2/blob/main/docs/ENV_THIS_CHECKOUT.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: 75131d8fd16a4e0d93bf2e794affdd02 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: 5fcd96179b284f77a99f1cd62d10fb3e msgid "Develop and install only in this checkout's env" msgstr "只在本仓库检出环境中开发与安装" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: 3e2d9288cda74da1944640e75c133e1d +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: b6620d4ac58d4f319fa59282fe89f9a9 msgid "" "[docs/HUG_SUBMODULE.md](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/HUG_SUBMODULE.md)" +"sim/lerobot_ros2/blob/main/docs/HUG_SUBMODULE.md)" msgstr "" "[docs/HUG_SUBMODULE.md](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/HUG_SUBMODULE.md)" +"sim/lerobot_ros2/blob/main/docs/HUG_SUBMODULE.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: befd8a265ebd4d6ea1616811a4952cc2 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: 285acc8e4e3d422298541506b27f2aff msgid "HUG submodule notes" msgstr "HUG 子模块说明" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: b2ed71a4f57f41c6bfbfbc7549d99861 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: d86bece6a0684fc5a816406e47b97852 msgid "" "[docs/WUJI_RETARGETING.md](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/WUJI_RETARGETING.md)" +"sim/lerobot_ros2/blob/main/docs/WUJI_RETARGETING.md)" msgstr "" "[docs/WUJI_RETARGETING.md](https://github.com/fiveages-" -"sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/WUJI_RETARGETING.md)" +"sim/lerobot_ros2/blob/main/docs/WUJI_RETARGETING.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: cfcd6145b3cd486aa416328c9a84e304 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: 095e6af818f34b4eb72cb5a066cecbc1 msgid "Wuji retargeting" msgstr "Wuji 重定向" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: c7e4e1e3113d4b8da74e81fed743a558 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: ea9b50e47433493286a0cc646f077259 msgid "" "Composer [GRASP_GENERATION.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/GRASP_GENERATION.md)" +"sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md)" msgstr "" -"Composer [GRASP_GENERATION.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/GRASP_GENERATION.md)" +"编排器 [GRASP_GENERATION.md](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:123 -#: ffaa9739b1a14436a70889a7185e1d97 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 +#: cb402653b76a49a69c46049176252858 msgid "Motion + grasp smoke (linked from the lerobot README)" msgstr "运控 + 抓取冒烟(lerobot README 中的链接)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:138 -#: d46dec25bdb84e46ab3240f1a9896ddb +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:153 +#: 9d00161643d94d149893ecaedb96c546 msgid "" -"Sim-grasp handoff / EE-align notes also live under `docs/SIM_GRASP_*.md` " -"on this branch." -msgstr "仿真抓取交接 / 末端对齐说明也在本分支的 `docs/SIM_GRASP_*.md`。" +"Sim-grasp handoff / EE-align notes also live under `docs/SIM_GRASP_*.md`." +" Nav deploy notes: `docs/INTERNAV_W2_SUBMODULE.md`, " +"`docs/INTERNAV_ARX_LIFT2S_SUBMODULE.md`, `docs/LIGHTNAV_W2_SUBMODULE.md`." +msgstr "" +"仿真抓取交接 / 末端对齐笔记也在 " +"`docs/SIM_GRASP_*.md`。导航部署笔记:`docs/INTERNAV_W2_SUBMODULE.md`、`docs/INTERNAV_ARX_LIFT2S_SUBMODULE.md`、`docs/LIGHTNAV_W2_SUBMODULE.md`。" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:140 -#: 09a0060dcf284a9db042e68f10d1ce19 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:155 +#: 81cb9d0291d3479f956ae10671896f6a msgid "Related" msgstr "相关内容" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:142 -#: 2eb9d1e099bb4cefbd7b1dde92599c24 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:157 +#: 59b6902e89be4c419ecaacea0da98d7f msgid "[ros2_robot_interface](1-ros2_robot_interface.md)" msgstr "[ros2_robot_interface](1-ros2_robot_interface.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:143 -#: 775a280a6112403f93932a5d61bbf348 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:158 +#: 9b3f9afc041d429f97cb5695997597cd msgid "[robot_action_composer](5-robot_action_composer.md)" msgstr "[robot_action_composer](5-robot_action_composer.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:144 -#: 0336b250dabd4f089cca0ef7bd13f55e +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:159 +#: 13bf71575b8b43c7bcf6cf4a261f1236 msgid "" "[Synthetic Data](../../2-how_to/7-synthetic_data/0-index.md) — " "record/export only (no training)" msgstr "[合成数据](../../2-how_to/7-synthetic_data/0-index.md) — 仅录制/导出(不含训练)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:145 -#: 4ca406f86b044e75b7133c34222868a3 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:160 +#: c31c057e9a2d4302b338ff2ac5906091 msgid "[HUG](6-hug.md)" msgstr "[HUG](6-hug.md)" -#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:146 -#: 4fc114e6251b454a8fbfe71cc5890df3 +#: ../../source/4-reference/python_apps/4-lerobot_ros2.md:161 +#: 46de59986540480dbae66aa06d92f4f5 msgid "[wuji-retargeting](7-wuji_retargeting.md)" msgstr "[wuji-retargeting](7-wuji_retargeting.md)" @@ -592,3 +721,21 @@ msgstr "[wuji-retargeting](7-wuji_retargeting.md)" #~ "generation` 装进 `submodules/hug/.venv`(那是 HUG 的" #~ " Python 3.10 环境)。见 README 中该常见坑。" +#~ msgid "Documented branch" +#~ msgstr "文档所依据的分支" + +#~ msgid "" +#~ "Documented against branch `feature/sim-" +#~ "grasp-datagen` (tip 2026-09-20). That " +#~ "branch is newer than `main`; follow " +#~ "it, not `main`." +#~ msgstr "" +#~ "本文档对照分支 `feature/sim-grasp-datagen`(尖端提交 " +#~ "2026-09-20)。该分支新于 `main`;请以它为准,不要跟 `main`。" + +#~ msgid "" +#~ "Sim-grasp handoff / EE-align notes" +#~ " also live under `docs/SIM_GRASP_*.md` on" +#~ " this branch." +#~ msgstr "仿真抓取交接 / 末端对齐说明也在本分支的 `docs/SIM_GRASP_*.md`。" + diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/5-robot_action_composer.po b/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/5-robot_action_composer.po index 9daa5ca..974f3a3 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/5-robot_action_composer.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/python_apps/5-robot_action_composer.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-07 02:37+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: 2026-10-06 16:20+0000\n" "Last-Translator: Cursor Agent\n" "Language: zh_CN\n" @@ -15,12 +15,12 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/python_apps/5-robot_action_composer.md:1 -#: 9ca36c4591074331a8b09cd3b5700a6b +#: 0046cfc299e24987bb9df34b1bb3f69b msgid "robot_action_composer" msgstr "robot_action_composer" #: ../../source/4-reference/python_apps/5-robot_action_composer.md:3 -#: 57e40d36aa5b4b2cafa09524a26053f5 +#: 455a79227486478a9cf9c2a7de7b78ad msgid "" "Motion generation and **task_queue** YAML orchestration: a skill registry" " turns YAML blocks into **`StageTarget`** sequences and runs them through" @@ -31,66 +31,50 @@ msgstr "" "**`ROS2RobotInterface`** 执行。可选的 LeRobot 数据集录制是 extra,不是核心路径。" #: ../../source/4-reference/python_apps/5-robot_action_composer.md:5 -#: 0fcc81e6b5f94b7bb9ced0d6f488c4db -msgid "Documented branch" -msgstr "文档所依据的分支" - -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:8 -#: e109ce0614274f66a82125b0c84855cf -msgid "" -"Documented against branch `feature/dex-grasp-generator` (tip 2026-09-20)." -" That branch is newer than `main`; follow it, not `main`." -msgstr "" -"本文档对照分支 `feature/dex-grasp-generator`(尖端提交 2026-09-20)。该分支新于 " -"`main`;请以它为准,不要跟 `main`。" - -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:11 -#: 34a783ef57c24dd79b392a2d86751cf0 +#: 9d1e16d1aed34eec913778d4b8cb05f9 msgid "" -"**Repository:** [fiveages-sim/robot_action_composer @ `feature/dex-grasp-" -"generator`](https://github.com/fiveages-" -"sim/robot_action_composer/tree/feature/dex-grasp-generator)" +"**Repository:** [fiveages-sim/robot_action_composer](https://github.com" +"/fiveages-sim/robot_action_composer) `main` (`5c94cc08`). `feature/dex-" +"grasp-generator` is no longer a branch; follow `main`." msgstr "" -"**仓库:** [fiveages-sim/robot_action_composer @ `feature/dex-grasp-" -"generator`](https://github.com/fiveages-" -"sim/robot_action_composer/tree/feature/dex-grasp-generator)" +"**仓库:** [fiveages-sim/robot_action_composer](https://github.com/fiveages-" +"sim/robot_action_composer) 的 `main`(`5c94cc08`)。`feature/dex-grasp-" +"generator` 已不再是分支,以 `main` 为准。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:13 -#: 302dfc1a122b4f4bbea7021e83bd3689 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:7 +#: b154926ffb184c56a7ba9196cbc3af56 msgid "" -"**README:** [README.md on this branch](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-generator/README.md)" +"**README:** [README.md](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/README.md)" msgstr "" -"**README:** [README.md on this branch](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-generator/README.md)" +"**README:** [README.md](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/README.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:15 -#: fa0594c5e2c941c5a57e96d1b8eca2dd +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:9 +#: 3eb753b1e69c4bd78a5f69d1e0374837 msgid "" "There is no `ActionSequence` / `actions.MoveJ` / `CustomAction` API. " "Skills are **registered names** in YAML (`task_queue` → `skill`). Full " "parameter docs: [docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)." +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)." msgstr "" -"没有 `ActionSequence` / `actions.MoveJ` / `CustomAction` 这类 API。技能是 YAML " -"里的**注册名**(`task_queue` → `skill`)。完整参数说明见 " -"[docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)。" +"没有 `ActionSequence` / `actions.MoveJ` / `CustomAction` 这套接口。技能是 YAML " +"里的**登记名**(`task_queue` → " +"`skill`)。完整参数:[docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:17 -#: e00c952235e94bd9939802e68690b4ba +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:11 +#: 85f5de60283d4e43bb14c47e2016f486 msgid "Purpose" msgstr "用途" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:19 -#: 72b852d468844271b580fe38b9224eba +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:13 +#: f1a8980ff8d745ee914d4aba724755bf msgid "In the [lerobot_ros2](4-lerobot_ros2.md) monorepo this package:" msgstr "在 [lerobot_ros2](4-lerobot_ros2.md) 单体仓库中,本包承担:" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:21 -#: adc4cc7f0356411eb7341c4de2d33a22 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:15 +#: 47e0f15bfba643a892399e75c43ec13d msgid "" "**Motion layer (`motion_generation`)** — turns task geometry and robot " "constraints into `StageTarget` sequences and executes them via " @@ -99,8 +83,8 @@ msgstr "" "**运动层(`motion_generation`)**:把任务几何与机器人约束变成 `StageTarget` 序列,并通过 " "`ROS2RobotInterface` 执行(笛卡尔 / 双臂同步 / MoveJ 等)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:22 -#: a2843da4869e46afb763903dd1052ed2 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:16 +#: a37d4741266348e49828ecc9136bb7c0 msgid "" "**Orchestration layer (`task_runtime`)** — runs a `task_queue` (YAML " "block list) through the skill registry and runtime context; merges " @@ -109,15 +93,15 @@ msgstr "" "**编排层(`task_runtime`)**:用技能注册表与运行时上下文执行 `task_queue`(YAML 块列表);合并 " "`skill_defaults` / `skill_params`。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:23 -#: c57d4141c5b740dfa9cb2c1c1f579e46 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:17 +#: 8b81e71f7e0c4f51a5f6d525fc23e524 msgid "" "**Around the edges** — Isaac Sim entity poses, sim reset, optional " "LeRobot recording." msgstr "**周边**:Isaac Sim 实体位姿、仿真 reset、可选的 LeRobot 录制。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:25 -#: 385744020c294628b7fb8606bf5c6fab +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:19 +#: 4323363253c34bd88a32f741390b42d5 msgid "" "It does **not** implement OCS2 / MPC or the Nav2 servers themselves; " "those stay behind existing ROS 2 interfaces. Pure motion/queue paths " @@ -127,23 +111,23 @@ msgstr "" "本包**不**实现 OCS2 / MPC 或 Nav2 服务器本体;它们仍走已有 ROS 2 接口。纯运动/队列路径只依赖 " "`ROS2RobotInterface`(`ctx.interface`),不依赖 LeRobot 的 `ROS2Robot` 类。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:27 -#: 14e248e38d0c44bdbecc87f58b39c874 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:21 +#: 7517879a6ff641d18b3e8b6e5196466b msgid "Requirements" msgstr "前置要求" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:29 -#: 2e5621d588c34ad2ac1fff9098e69442 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:23 +#: 29a3076c997048ab803f3d06decb80d9 msgid "Same baseline as the lerobot_ros2 monorepo README:" msgstr "与 lerobot_ros2 单体仓库 README 的基线一致:" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:31 -#: 0d8d6baebcb844eaaa4b4c32209bd0bd +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:25 +#: b80a4c80a6724f9a867bdcc131fb8c32 msgid "**Python 3.12**" msgstr "**Python 3.12**" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:32 -#: 5efa5df914e1443ba69820c8d707958a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:26 +#: bec5107077f94364b2d63a159e628d37 msgid "" "**ROS 2 Jazzy**, with the matching `install/setup.bash` (or overlay) " "sourced so `rclpy` comes from that distro" @@ -151,13 +135,13 @@ msgstr "" "**ROS 2 Jazzy**,并已 source 对应的 `install/setup.bash`(或 overlay),使 `rclpy` " "来自该发行版" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:34 -#: 2548ad9d18af442f85dc20a484595e19 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:28 +#: b2aa582cb7634d3abc16456e721bc285 msgid "Installation" msgstr "安装" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:36 -#: c41a2eb9bf014c438a56b782ad19ad33 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:30 +#: 4ed999cb40554802b352533bbc64a060 msgid "" "Typical path is from a **lerobot_ros2** checkout (composer is " "`submodules/robot_action_composer`):" @@ -165,21 +149,23 @@ msgstr "" "典型路径是在 **lerobot_ros2** 检出中安装(composer 位于 " "`submodules/robot_action_composer`):" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:38 -#: 06d6b6f3d4f74dd19dda225e23c93d2a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:32 +#: d46ae8ef025d41c4946263d2d0c88ef8 msgid "" -"./init.sh all-motion # interface + robot_action_composer\n" -"./init.sh install-lerobot # extra: PyTorch + lerobot + plugins " -"(record / infer)\n" -"# or once: ./init.sh all" +"./init.sh all-motion # interface + robot_action_composer (NumPy " +"1.x)\n" +"./init.sh all-grasp # optional dexterous hand (still NumPy 1.x)" +"\n" +"# recording / inference, separate env: ./init.sh install-lerobot" msgstr "" -"./init.sh all-motion # interface + robot_action_composer\n" -"./init.sh install-lerobot # extra: PyTorch + lerobot + plugins " -"(record / infer)\n" -"# or once: ./init.sh all" +"./init.sh all-motion # interface + robot_action_composer (NumPy " +"1.x)\n" +"./init.sh all-grasp # optional dexterous hand (still NumPy 1.x)" +"\n" +"# recording / inference, separate env: ./init.sh install-lerobot" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:44 -#: 250c837936394a90b16472cb257c3c96 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:38 +#: 2e4d9f0112964e238de3fca52476c661 msgid "" "`./init.sh all-motion` creates the env and installs the two local " "packages. Optional extras named in composer `pyproject.toml`: " @@ -192,8 +178,8 @@ msgstr "" "`lerobot_robot_ros2`)、`[grasp]`(`viser>=0.2`,抓取生成 UI)。该 extra **不是** fa-" "py-libraries 的 `./run.sh viser` 启动器。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:46 -#: 8920e6a879924d8e9a851fbdcb338fa8 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:40 +#: db2f8f38a1c5419c98a5af8538ccff77 msgid "" "Console scripts after install: `motion-generation`, `ros2-stack`, `grasp-" "generation`, `check-isaac-pose`, `check-robot-status`." @@ -201,13 +187,13 @@ msgstr "" "安装后可用的控制台脚本:`motion-generation`、`ros2-stack`、`grasp-generation`、`check-" "isaac-pose`、`check-robot-status`。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:48 -#: 37c1d22cd4ee49f88453960808c318b9 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:42 +#: f170b1d68c294daa86beddf46217e879 msgid "Manual fallback" msgstr "手动回退" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:51 -#: 51dcd679d2024035ab57166fb1159775 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:45 +#: f2261d9c4c084b5990347c490207df45 msgid "" "From the monorepo root, after the env is active. Prefer **uv** and " "**`--no-deps`** so install does not pull `rclpy` from PyPI. The composer " @@ -219,8 +205,8 @@ msgstr "" "README 也写了只在项目虚拟环境内 `pip install -e submodules/ros2_robot_interface` 再 " "`pip install -e submodules/robot_action_composer`(系统 `pip` 会碰到 PEP 668)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: 080ef08071124c55b502e13023c526f2 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: f007f99e3c8f4e84bc027de6373d60f8 msgid "" "uv pip install -e submodules/ros2_robot_interface --no-deps\n" "uv pip install -e submodules/robot_action_composer --no-deps\n" @@ -230,20 +216,20 @@ msgstr "" "uv pip install -e submodules/robot_action_composer --no-deps\n" "uv pip install \"viser>=0.2\" # optional; grasp-generation UI" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:60 -#: 9294a485dfe14d97b68a33a0ae21deb6 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:54 +#: 3a3dc8138f4b44d992ca82e57059a792 msgid "Layers" msgstr "分层" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:62 -#: c77c41d754de4298a9fecd770a264938 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:56 +#: 4e8fb3a6a0264f43bf0b1289d83555b5 msgid "" "**`motion_generation`** — what each motion segment looks like and how it " "is sent." msgstr "**`motion_generation`**:每一段运动长什么样、怎么发到机器人。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:64 -#: c6ee980a99d4419aaee7e592506e59c3 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:58 +#: 18b1f56305a8438983e66327beb2aa2f msgid "" "`sequence/` — `StageTarget` / `ArmTarget` / `ArmStage`, builders such as " "`build_single_arm_pick_sequence`, and `execute_stage_sequence` (calls " @@ -253,23 +239,23 @@ msgstr "" "`build_single_arm_pick_sequence` 等 builder,还有 `execute_stage_sequence`(调用" " `ROS2RobotInterface`、到位等待、夹爪节拍)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:65 -#: bcf8d14a06974364b9749e53ea1f3682 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:59 +#: ac496a1e56ef4a8d99de0a569d1bf850 msgid "" "`tasks/` — geometry wrappers on top of that (handover, bimanual carry, " "parallel pick, drawer, pick/place, MoveJ return used by dataset " "recording)." msgstr "`tasks/`:在 sequence 之上的几何封装(交接、双臂搬运、并行抓取、抽屉、抓放、数据集录制用的 MoveJ 返回)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:67 -#: 5b7b20f211b24a98aa70b8f1547f373a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:61 +#: 81dd11d6c9484f5dbf5331c3f52fa4ed msgid "" "**`task_runtime`** — which skills run, in what order, with which merged " "params." msgstr "**`task_runtime`**:按队列调用哪些技能、顺序如何、合并后的参数是什么。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:69 -#: 98e7354128b34dd9927f004cf9b1d865 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:63 +#: 2882fb61eb2f43f6b8e267a75aea523c msgid "" "`runner.run_task_queue` — connect → FSM → optional env reset → " "`QueueRuntimeContext` → each `task_queue` block (`ParallelSpec` allowed) " @@ -279,8 +265,8 @@ msgstr "" "`QueueRuntimeContext` → 顺序执行 `task_queue` 各块(支持 `ParallelSpec`)→ " "`get_skill` → `execute_stage_sequence`。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:70 -#: e66d04c356f940d8852837c70afce20a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:64 +#: 55fe595f2aab4356aaded498222f3ce1 msgid "" "`registry.py` — `register_skill(name, fn)` / `get_skill(name)`; unknown " "names raise `KeyError` listing registered skills." @@ -288,8 +274,8 @@ msgstr "" "`registry.py`:`register_skill(name, fn)` / `get_skill(name)`;未知技能名会抛出 " "`KeyError`(错误信息含已注册名列表)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:71 -#: 02161c4177f743378e64513c0908d129 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:65 +#: fb28b357c4664671bdb5c315ab548117 msgid "" "Each skill: `(ctx, params) -> (list[StageTarget], ExecutionMeta)`. Blocks" " with no Cartesian stages return an empty list (pure nav, pure MoveJ, " @@ -298,34 +284,30 @@ msgstr "" "每个技能签名:`(ctx, params) -> (list[StageTarget], " "ExecutionMeta)`。无笛卡尔阶段的块返回空列表(纯导航、纯 MoveJ、仅副作用)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:73 -#: 723673da6588449eb98e035302ff7793 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:67 +#: b73aaff179bc4a2aa1ec3963f244efd3 msgid "" "YAML discovery scans `task_configs/**/*.yaml` and `robots/*/` (optional " "vendor grouping `robots///`). See " "[docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/TASK_CONFIG_YAML.md) and " +"sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md) and " "[docs/ROBOT_CONFIG.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md)." +"sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md)." msgstr "" -"YAML 发现会扫描 `task_configs/**/*.yaml` 与 `robots/*/`(可选一层厂商分组 " +"YAML 发现会扫描 `task_configs/**/*.yaml` 和 `robots/*/`(也可按厂商分组 " "`robots///`)。见 " "[docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/TASK_CONFIG_YAML.md) 与 " +"sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md) 和 " "[docs/ROBOT_CONFIG.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md)。" +"sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:75 -#: 70e2728394b9468b8a163ae8422e5ccb +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:69 +#: ac9a012731d7426b97952ab7d4809d85 msgid "Skills (registered names)" msgstr "技能(注册名)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:77 -#: f867d881247241e68b43b8ef1b1a0eee +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:71 +#: ec0f94875da944ef86f5b279118f72da msgid "" "YAML blocks set `skill:` to a **registered name** (not a Python `MoveJ` /" " `GripperOpen` action class). Categories (examples from the README index;" @@ -334,23 +316,23 @@ msgstr "" "不要发明 Python 版 `MoveJ` / `GripperOpen` Action 类。YAML 块把 `skill:` " "写成**注册名**。分类(示例来自 README 索引;参数见 SKILLS_REFERENCE):" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: 9d7ca43cd55c4f3e914bbbe51279fa41 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: ecf9e64c30804d6ab184fdc9fa0a18c3 msgid "Category" msgstr "分类" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: d885af1fe7c94930b44b1da6ccf5c93a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 0d2e0fd1b3fa4cf494552751d5d55397 msgid "Example skills" msgstr "示例技能" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: 89557ee82e39406da0ba1e8cb73382bc +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 77648899347d492ba65c6f7462122e5b msgid "Single arm" msgstr "单臂" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: 4addb970a846400ebb4f0a02356cab03 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: cefad56d86984ba095814d14309f31bf msgid "" "`single_arm.pick`, `single_arm.place`, `single_arm.move_to_pose`, " "`single_arm.move_relative`, `single_arm.move_to_object`, " @@ -362,13 +344,13 @@ msgstr "" "`single_arm.goto_cache_pose`, `single_arm.drawer.pull_open`, " "`single_arm.drawer.close_push`" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: 357bd00aaf904138b2de3820a7a85092 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 0ec2b2e514dc429e92f66fd0dc0bbdd0 msgid "Dual arm" msgstr "双臂" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: f14715c939044329bc8b9ead83ea553b +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 5bcc4c15880d4c0397461a03a059870c msgid "" "`dual_arm.carry`, `dual_arm.parallel_pick`, `dual_arm.handover`, " "`dual_arm.place`, `dual_arm.bimanual_align`, `dual_arm.goto_cache_pose`" @@ -376,13 +358,23 @@ msgstr "" "`dual_arm.carry`, `dual_arm.parallel_pick`, `dual_arm.handover`, " "`dual_arm.place`, `dual_arm.bimanual_align`, `dual_arm.goto_cache_pose`" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: c10b503a1391483b8459e15ad1738ba7 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 3236bade1ad049fa9e5bd222cbf44b57 +msgid "Dexterous hand" +msgstr "灵巧手" + +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 135300155fbd4f66b09b4ed9187dc35c +msgid "`dex_hand.auto_grasp` (optional; needs the grasp extra)" +msgstr "`dex_hand.auto_grasp`(可选,需要 grasp 附加依赖)" + +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 0338c6e4480d420394b8f6b41f41ae05 msgid "Navigation" msgstr "导航" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: c69f61ed337e46c181fe1999b4ea864c +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 260e74379b3c4d569dd67149b577fcb4 msgid "" "`nav.navigate_to_pose`, `nav.navigate_to_object`, " "`nav.navigate_relative`, `nav.send_nav_goal`, `nav.wait_nav_arrived`" @@ -390,23 +382,23 @@ msgstr "" "`nav.navigate_to_pose`, `nav.navigate_to_object`, " "`nav.navigate_relative`, `nav.send_nav_goal`, `nav.wait_nav_arrived`" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: aae05347f940478b869b217087b07e50 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 7000298854d048368d7706844a52934a msgid "Joint" msgstr "关节" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: d0dfee1487a2474f9dcf6619368f2ebc +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 3ed02862d4f640b7b8102a395feadaab msgid "`joint.movej_to_config`, `joint.goto_cached_joints`" msgstr "`joint.movej_to_config`, `joint.goto_cached_joints`" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: aa4b667f36614c4ca4bd9576db0a2f48 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: 6293115be3b3427fbdf265de04dcdec9 msgid "Session / robot / env" msgstr "会话 / 机器人 / 环境" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:53 -#: 493fb1abf43245a4b8ed88921a65ffb2 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:47 +#: aaffcdfcb9a345e6ab283bfb23066905 msgid "" "`session.scratch_put`, `robot.cache_ee_pose`, `robot.cache_joint_state`, " "`robot.send_mode_command`, `env.randomize_object_local_xyz`" @@ -414,25 +406,23 @@ msgstr "" "`session.scratch_put`, `robot.cache_ee_pose`, `robot.cache_joint_state`, " "`robot.send_mode_command`, `env.randomize_object_local_xyz`" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:87 -#: 0fccb6d1377546ccb92786d4089398a2 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:82 +#: 5baaf89d39c5403bb765333ceaaecec0 msgid "" "Full list, defaults, and YAML examples: " "[docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)." +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)." msgstr "" -"完整列表、默认值与 YAML 示例:[docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)。" +"完整列表、默认值和 YAML 例子:[docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:89 -#: c35693012626429491a10c165281548a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:84 +#: 3ca15a9c2bf746d1bb3863987beabfc3 msgid "CLI pointers" msgstr "CLI 要点" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:91 -#: 3267f4637a6940bb9629437d8042ec32 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:86 +#: 98720675017d4e758799d0998aba8274 msgid "" "Run from a workspace that contains `robots/` (the README uses " "`examples/IsaacSim` in the lerobot_ros2 tree). Flags below are from the " @@ -441,75 +431,53 @@ msgstr "" "在含 `robots/` 的工作区目录下运行(README 使用 lerobot_ros2 树中的 " "`examples/IsaacSim`)。下列参数来自 composer README;完整集合以该文件为准。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 705459a4937b47e0b9327b4453fc619d +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: f9d18d0ddb824ee495c4c9eb13b7adb7 msgid "" "# Task queue\n" "motion-generation\n" -"motion-generation --robot dobot_cr5 --task-key pick_place --scene default" -"\n" -"motion-generation --workspace /path/to/workspace --robot dobot_cr5 " -"--task-key pick_place\n" +"motion-generation --robot fiveages_w2 --task-key navigate_and_dex_grasp " +"--scene apple\n" "motion-generation --lang zh\n" -"motion-generation --robot fiveages_w2 --task-key transfer_blade --ensure-" -"ros2-stack\n" "\n" "# ROS 2 stack (see docs/ROS2_STACK.md)\n" -"ros2-stack --lang zh launch\n" +"ros2-stack launch --robot fiveages_w2 --group dex_hand\n" +"ros2-stack status --robot fiveages_w2\n" "ros2-stack logs --robot fiveages_w2 -f\n" "ros2-stack stop --robot fiveages_w2\n" -"ros2-stack status --robot fiveages_w2 --group \"projets/siemens/Wind " -"turbo blade\"\n" "\n" "# Grasp generation UI (does not replace the two CLIs above)\n" -"grasp-generation serve --robot fiveages_w2 --workspace examples/IsaacSim\n" +"grasp-generation serve --robot fiveages_w2 --workspace .\n" "\n" "# Isaac Sim entity pose (needs /get_entity_state)\n" -"check-isaac-pose " -"/World/robot/FiveAges_W2/LinkHou_S2/base_footprint/base_link\n" -"check-isaac-pose /World/scene/boxes/white_box_05 \\\n" -" --relative-to " -"/World/robot/FiveAges_W2/LinkHou_S2/base_footprint/base_link\n" +"check-isaac-pose /World/FiveAges_W2/base_link\n" "\n" "# Current joints / EE pose (pasteable into YAML)\n" -"check-robot-status\n" -"check-robot-status --robot fiveages_w2 --workspace examples/IsaacSim\n" -"check-robot-status --wait 3.0 --show-joint-names\n" +"check-robot-status --robot fiveages_w2 --workspace .\n" msgstr "" "# Task queue\n" "motion-generation\n" -"motion-generation --robot dobot_cr5 --task-key pick_place --scene default" -"\n" -"motion-generation --workspace /path/to/workspace --robot dobot_cr5 " -"--task-key pick_place\n" +"motion-generation --robot fiveages_w2 --task-key navigate_and_dex_grasp " +"--scene apple\n" "motion-generation --lang zh\n" -"motion-generation --robot fiveages_w2 --task-key transfer_blade --ensure-" -"ros2-stack\n" "\n" "# ROS 2 stack (see docs/ROS2_STACK.md)\n" -"ros2-stack --lang zh launch\n" +"ros2-stack launch --robot fiveages_w2 --group dex_hand\n" +"ros2-stack status --robot fiveages_w2\n" "ros2-stack logs --robot fiveages_w2 -f\n" "ros2-stack stop --robot fiveages_w2\n" -"ros2-stack status --robot fiveages_w2 --group \"projets/siemens/Wind " -"turbo blade\"\n" "\n" "# Grasp generation UI (does not replace the two CLIs above)\n" -"grasp-generation serve --robot fiveages_w2 --workspace examples/IsaacSim\n" +"grasp-generation serve --robot fiveages_w2 --workspace .\n" "\n" "# Isaac Sim entity pose (needs /get_entity_state)\n" -"check-isaac-pose " -"/World/robot/FiveAges_W2/LinkHou_S2/base_footprint/base_link\n" -"check-isaac-pose /World/scene/boxes/white_box_05 \\\n" -" --relative-to " -"/World/robot/FiveAges_W2/LinkHou_S2/base_footprint/base_link\n" +"check-isaac-pose /World/FiveAges_W2/base_link\n" "\n" "# Current joints / EE pose (pasteable into YAML)\n" -"check-robot-status\n" -"check-robot-status --robot fiveages_w2 --workspace examples/IsaacSim\n" -"check-robot-status --wait 3.0 --show-joint-names\n" +"check-robot-status --robot fiveages_w2 --workspace .\n" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:121 -#: 8b3c014fcf354e8f86edf47f67a9ce80 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:110 +#: a802cec5db0840f980474e2fd2d2cc0a msgid "" "`motion-generation` default `workspace_dir` is the current working " "directory. Language: `--lang` > `MOTION_GENERATION_LANG` > " @@ -522,130 +490,175 @@ msgstr "" "`LANG`。`ensure_ros2_stack` 等偏好缓存在工作区根目录的 `.motion_last.json`(已 " "gitignore)。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:123 -#: c096138169fc4079a4840c9b48d79213 -msgid "In-repo docs (this branch)" -msgstr "仓库内文档(本分支)" +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:112 +#: 7e095926fc4d4bd49b2a60b49bcdbc84 +msgid "End-effector frames" +msgstr "末端坐标系" + +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:114 +#: a973ad30ea9348cdb3c94a1d14953474 +msgid "" +"[`stages_in_command_ee_frame`](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/robot_action_composer/task_runtime/placement/frames.py)" +" rewrites a stage pose into the link OCS2 tracks. The two paths are not " +"the same source:" +msgstr "" +"[`stages_in_command_ee_frame`](https://github.com/fiveages-" +"sim/robot_action_composer/blob/main/robot_action_composer/task_runtime/placement/frames.py)" +" 把阶段位姿改写成 OCS2 跟踪的连杆。两条路径不是同一个来源:" + +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:116 +#: 32361dd521d540d4885f860475fac91a +#, python-brace-format +msgid "" +"**No `ee_tip` in `robot.yaml`.** Live TF from `ee_target_frame` to " +"`ee_command_frame`. Public G1D ([`robot.yaml`](https://github.com" +"/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/Unitree/G1D/robot.yaml))" +" sets `{arm}_eef` → `{arm}_tcp`." +msgstr "" +"**`robot.yaml` 没有 `ee_tip`。** 用实时 TF,从 `ee_target_frame` 到 " +"`ee_command_frame`。公开的 G1D([`robot.yaml`](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/Unitree/G1D/robot.yaml))是" +" `{arm}_eef` → `{arm}_tcp`。" + +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:117 +#: 897b39210b5d41e88b87976fa2574e38 +#, python-brace-format +msgid "" +"**`ee_tip` set.** First the USD local chain tip → parent (`parent_prim` /" +" `tip_prim`), then an optional live TF from that parent frame to " +"`ee_command_frame`. On W2, OCS2 often tracks `{arm}_eef`, not " +"`{arm}_tcp`. A project `robot.yaml` on [fa-project-" +"usd](https://github.com/fiveages-sim/fa-project-usd) `feature/sinopec-" +"test-tube-picking` uses this path (needs access). The prim paths stay in " +"that file." +msgstr "" +"**设置了 `ee_tip`。** 先走 USD 局部链,尖端到父级(`parent_prim` / `tip_prim`),再可选地用实时 TF" +" 从该父级帧到 `ee_command_frame`。W2 上 OCS2 常常跟踪 `{arm}_eef`,而不是 `{arm}_tcp" +"`。[fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) 分支 " +"`feature/sinopec-test-tube-picking` 上的项目 `robot.yaml` " +"走这条路径(需要权限)。图元路径留在那个文件里。" + +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:119 +#: a69a7cf08d87463198a4565c1fb11efb +msgid "Empty frame names send the pose unchanged." +msgstr "坐标系名字都空着时,位姿原样下发。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:125 -#: aee6b816b5964f80bc746ed0b5586cc0 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:121 +#: 7eabab56cdd440c7be46b14f4fa6efa3 +msgid "In-repo docs (`main`)" +msgstr "仓内文档(`main`)" + +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:123 +#: 7f72dfa1fb364c3ba83716410f9f3f67 msgid "Package docs for parameters and CLI (follow these for the full list):" msgstr "参数和 CLI 的包内文档(完整列表以这些为准):" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: b208f7e7be664e0690853b84d3825142 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: e069d64d97bc4ce2af3540a2c00da8d4 msgid "Doc" msgstr "文档" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 8e38bfa10c39454f85352651450fc71f +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: 02339b5c69ec4616bb7f78f1318a96c1 msgid "Content" msgstr "内容" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 881c75e431494c7398bd4d72fbf0a150 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: 9c8b2bbdcb5a4b5bb49ae4a5f3334041 msgid "" "[docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)" +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)" msgstr "" "[docs/SKILLS_REFERENCE.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/SKILLS_REFERENCE.md)" +"sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: a648eb8624ba4764b309c7ab7c16c29a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: c56066af40494bd6a066873e7c061956 msgid "Per-skill parameters, defaults, YAML examples" msgstr "各技能参数、默认值与 YAML 示例" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: e8ffb2362deb4e0785041508c663257a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: bfc08f803b714467af582bcdefa79a69 msgid "" "[docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/TASK_CONFIG_YAML.md)" +"sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md)" msgstr "" "[docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/TASK_CONFIG_YAML.md)" +"sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 00cd46f244ae4e3db36955a7fd4032c4 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: 7fde01952d334a10838edfc7c9ed4b80 msgid "Task YAML shape, `skill_defaults` / `skill_params`, load/merge" msgstr "任务 YAML 格式、`skill_defaults` / `skill_params`、加载与合并" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 26b97d825d56427cb4d28d68337208d2 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: d8acad319c164fff9039824caadc1fa0 msgid "" "[docs/ROBOT_CONFIG.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md)" +"sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md)" msgstr "" "[docs/ROBOT_CONFIG.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROBOT_CONFIG.md)" +"sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 7482f15e2b864599a594fb27ca60cca6 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: dc85ec5ff430455d9065a0e24e8fc121 msgid "`robot.yaml` / `lerobot_config.py` and `robots/` layout" msgstr "`robot.yaml` / `lerobot_config.py` 与 `robots/` 目录约定" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 5e188e5e14484b6fa561a09e998fca5b +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: 6d4edb30f28940b3bf33ba35a996c1e8 msgid "" "[docs/ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md)" +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md)" msgstr "" "[docs/ROS2_STACK.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/ROS2_STACK.md)" +"sim/robot_action_composer/blob/main/docs/ROS2_STACK.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 146053c7058343c1bd4c023be5f1b49a +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: 42254fdbc8eb4ce5b68c170dc9ba7ae9 msgid "Scene-level control/nav launch (`.meta/ros2_stack.yaml`, `ros2-stack`)" msgstr "场景级运控/导航启动(`.meta/ros2_stack.yaml`、`ros2-stack`)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 02f33a5fded14c37a89ec807da35fa6c +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: a17d6eec73124c8785cda6d4e1258322 msgid "" "[docs/GRASP_GENERATION.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/GRASP_GENERATION.md)" +"sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md)" msgstr "" "[docs/GRASP_GENERATION.md](https://github.com/fiveages-" -"sim/robot_action_composer/blob/feature/dex-grasp-" -"generator/docs/GRASP_GENERATION.md)" +"sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:93 -#: 677fce6a56534e8785f6791515ee0c7e +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:88 +#: 8e871f2ef48e4dc29d47d73a0e86439c msgid "Grasp-generation UI and smoke" msgstr "抓取生成 UI 与冒烟" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:135 -#: dcb13f1b81b8407e8e9aa03294edb345 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:133 +#: b37b7e9246f14345ac780decfa5a95e0 msgid "" "Isaac Sim env / USD / workspace steps, when present, are in the monorepo " "`examples/IsaacSim/README.md`." msgstr "Isaac Sim 环境、USD、工作空间步骤(若存在)见单体仓库 `examples/IsaacSim/README.md`。" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:137 -#: 42581fc4ac964964a2546470e57826d6 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:135 +#: 7bddc53a34e24d7891a55fab52e7829f msgid "Related" msgstr "相关内容" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:139 -#: 3bc9ce76f4834ae785d6e1f9cea548e3 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:137 +#: 3f862b52765c4bdabf77237a61624baa msgid "[lerobot_ros2](4-lerobot_ros2.md)" msgstr "[lerobot_ros2](4-lerobot_ros2.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:140 -#: 465bc2ff0aa041e9ab3b77c5efbcf03b +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:138 +#: ff33d14d2ce6478f8b2655e7fe7b09e3 msgid "[ros2_robot_interface](1-ros2_robot_interface.md)" msgstr "[ros2_robot_interface](1-ros2_robot_interface.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:141 -#: e0ab5e0c3bd1448797968f7811d24a76 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:139 +#: bc5243dee27b4583816380731a3a8390 msgid "" "[Python Interface How-" "To](../../2-how_to/3-programming/5-python_interface.md)" @@ -653,8 +666,8 @@ msgstr "" "[Python Interface How-" "To](../../2-how_to/3-programming/5-python_interface.md)" -#: ../../source/4-reference/python_apps/5-robot_action_composer.md:142 -#: 5f3e5b119b654ae2be7e5689db4bdc23 +#: ../../source/4-reference/python_apps/5-robot_action_composer.md:140 +#: 1f552b97d36542469f7c159d08627f90 msgid "" "[Synthetic Data](../../2-how_to/7-synthetic_data/0-index.md) — pipeline " "story for Isaac datagen" @@ -674,3 +687,28 @@ msgstr "[合成数据](../../2-how_to/7-synthetic_data/0-index.md) — Isaac 数 #~ msgid "Do not treat this Sphinx page as a substitute for the package docs:" #~ msgstr "不要把本 Sphinx 页当成软件包文档的替代:" +#~ msgid "Documented branch" +#~ msgstr "文档所依据的分支" + +#~ msgid "" +#~ "Documented against branch `feature/dex-" +#~ "grasp-generator` (tip 2026-09-20). That " +#~ "branch is newer than `main`; follow " +#~ "it, not `main`." +#~ msgstr "" +#~ "本文档对照分支 `feature/dex-grasp-generator`(尖端提交 " +#~ "2026-09-20)。该分支新于 `main`;请以它为准,不要跟 `main`。" + +#~ msgid "" +#~ "./init.sh all-motion # interface + robot_action_composer\n" +#~ "./init.sh install-lerobot # extra: " +#~ "PyTorch + lerobot + plugins (record " +#~ "/ infer)\n" +#~ "# or once: ./init.sh all" +#~ msgstr "" +#~ "./init.sh all-motion # interface + robot_action_composer\n" +#~ "./init.sh install-lerobot # extra: " +#~ "PyTorch + lerobot + plugins (record " +#~ "/ infer)\n" +#~ "# or once: ./init.sh all" + diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/simulation/2-fasim_isaac.po b/locale/zh_CN/LC_MESSAGES/4-reference/simulation/2-fasim_isaac.po index 515e52e..afc62bf 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/simulation/2-fasim_isaac.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/simulation/2-fasim_isaac.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-09 11:09+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,26 +21,38 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/simulation/2-fasim_isaac.md:1 -#: a4bd6f4b692d414da74d0ad788c12076 +#: 1b8c15a30373477ea795023b2bb5e3c4 msgid "FaSim-Isaac" msgstr "FaSim-Isaac" #: ../../source/4-reference/simulation/2-fasim_isaac.md:3 -#: e855c1c3971748b180f1d4acdee3ed14 -msgid "NVIDIA Isaac Sim integration for FiveAges Sim." -msgstr "FiveAges Sim 的 NVIDIA Isaac Sim 集成。" +#: 959b1549a92e41d1ae1c4d7d41648a57 +msgid "" +"NVIDIA Isaac Sim workspace for FiveAges Sim: robot and scene USD, an " +"optional Isaac ROS 2 Jazzy overlay, and the extensions that start 运控 " +"inside Sim." +msgstr "" +"面向五纪仿真的 NVIDIA Isaac Sim 工作空间:机器人和场景 USD、可选的 Isaac ROS 2 Jazzy " +"叠加层,以及在仿真里启动运控的扩展。" #: ../../source/4-reference/simulation/2-fasim_isaac.md:5 -#: a5167929e22947488c2a6a5d5ef7dbee +#: 225346d5571c44ddb9705578cd780d6d msgid "" "**Repository:** [fiveages-sim/FaSim-Isaac](https://github.com/fiveages-" -"sim/FaSim-Isaac)" +"sim/FaSim-Isaac) `main` (`3606dc89`, 2026-11-13). In-process ros2_control" +" landed on `main` in [#7](https://github.com/fiveages-sim/FaSim-" +"Isaac/pull/7) (`1a4193a3`). `feature/ros2-control-node` has since " +"diverged (Replicator capture under `exts/fasim.replicator.sdg` is on that" +" branch, not on `main`)." msgstr "" "**仓库:** [fiveages-sim/FaSim-Isaac](https://github.com/fiveages-sim/FaSim-" -"Isaac)" +"Isaac) 的 `main`(`3606dc89`,2026-11-13)。进程内 ros2_control 已随 " +"[#7](https://github.com/fiveages-sim/FaSim-Isaac/pull/7)(`1a4193a3`)进入 " +"`main`。`feature/ros2-control-node` 此后继续分叉(`exts/fasim.replicator.sdg` 下的 " +"Replicator 采集在该分支,不在 `main`)。" #: ../../source/4-reference/simulation/2-fasim_isaac.md:7 -#: a4aed03425274c29b2df23783b7d8bc7 +#: b474fb23f02b4df5a3c1a92b809c1007 msgid "" "**README:** [README.md](https://github.com/fiveages-sim/FaSim-" "Isaac/blob/main/README.md)" @@ -49,357 +61,717 @@ msgstr "" "Isaac/blob/main/README.md)" #: ../../source/4-reference/simulation/2-fasim_isaac.md:9 -#: 1e74d29ff71449c28b9d8697f005c4e5 -msgid "Purpose" -msgstr "用途" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:11 -#: cade0dbadb064fbd886d4916acb2d583 +#: 1c05a0553e8a4688992c8da21e2285d5 msgid "" -"**FaSim** is NVIDIA Isaac Sim high-fidelity simulation plus the same ROS " -"2 运控 stack as the real robot: matching motion capability, plus simulation" -" ground truth. [FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac)" -" is the one-click asset workspace: it pulls robot USD and scene " -"submodules, can install the Isaac ROS 2 Jazzy overlay, and starts Sim." -msgstr "" -"**FaSim** 是 NVIDIA Isaac Sim 高保真仿真加上与真机同一套 ROS 2 运控:运动能力对齐,并带仿真真值。[FaSim-" -"Isaac](https://github.com/fiveages-sim/FaSim-Isaac) 是一键资产工作空间:拉取机器人 USD " -"与场景子模块,可安装 Isaac ROS 2 Jazzy overlay,并启动 Sim。" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:13 -#: b9ebe761761c4db38a62bdd76ccb8fd5 -msgid "Prerequisites" -msgstr "前提条件" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:15 -#: 91dcba906e8d40e898be08a9d4b50f3c -msgid "NVIDIA Isaac Sim binary (GPU + matching drivers)" -msgstr "NVIDIA Isaac Sim 二进制(GPU 及匹配驱动)" +"How to start Sim and which launch to use: [Isaac " +"Sim](../../2-how_to/2-simulation/4-isaac_sim.md)." +msgstr "如何启动仿真、用哪条启动:见 [Isaac Sim](../../2-how_to/2-simulation/4-isaac_sim.md)。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:16 -#: f3e16e4b27c04b1e89e7db2044722164 -msgid "" -"Default path `ISAACSIM_DIR` (`~/isaacsim`); override in " -"`config/fa_sim.local.conf` or the environment" -msgstr "默认路径 `ISAACSIM_DIR`(`~/isaacsim`);在 `config/fa_sim.local.conf` 或环境变量中覆盖" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:11 +#: 8d699bec8c44401cb0b0f93ee0ff2848 +msgid "Two hardware interfaces" +msgstr "两种驱动层" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 1d77c77e359b4d1aae6732e0441e6dbb +msgid "Key" +msgstr "Key" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 77885d05f1c24db38ea553d420dd55f7 +msgid "Where it is set" +msgstr "在哪里设置" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 0af94d818f4e4308a2c50d126ff260da +msgid "Plugin" +msgstr "Plugin" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 93cc7d8594eb4fdd884cb1792fa43799 +msgid "Joint I/O" +msgstr "关节输入输出" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 34598c5539984420a1f5c5bb0f769f15 +msgid "`isaac`" +msgstr "`isaac`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: e40713e04e2d45c7a9fc86472ca0672a +msgid "`ros2 launch … hardware:=isaac`" +msgstr "`ros2 launch … hardware:=isaac`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 0ba719aaa1254f588c1120cea8b58912 +msgid "`topic_based_ros2_control/TopicBasedSystem`" +msgstr "`topic_based_ros2_control/TopicBasedSystem`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 5ef9e83268d647a1949859c058098d87 +msgid "`sensor_msgs/JointState` topics" +msgstr "`sensor_msgs/JointState` 话题" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 181c59ba65204edd98ca66a5d46984a9 +msgid "`isaac_sim`" +msgstr "`isaac_sim`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 694275c5e7e54159a1fef5785ae7a0b1 +msgid "`emit_control` inside `ROS2ControlLaunch` (not a `demo.launch.py` flag)" +msgstr "`ROS2ControlLaunch` 内部的 `emit_control`(不是 `demo.launch.py` 的参数)" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 3f44cad103ed402f9101fcd67813bda2 +msgid "`isaacsim_ros2_control/IsaacSimSystem`" +msgstr "`isaacsim_ros2_control/IsaacSimSystem`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 73f84d4f33a9416b95efdc65efe13bc3 +msgid "In-process articulation" +msgstr "进程内关节体" #: ../../source/4-reference/simulation/2-fasim_isaac.md:18 -#: 2646a5bae3a5448ca1d25ee1d00d5d3b +#: 396773ca851249658fca9165bd0b6fe0 msgid "" -"Do not hardcode a single Isaac minor version. `./init.sh` operation 2 " -"queries GitHub stable tags; fallback list in `config/fa_sim.conf` " -"currently `6.0.1` / `6.0.0` / `5.1.0`." +"Shared xacro: [`simulation_hardware.xacro`](https://github.com/fiveages-" +"sim/robot-descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)." +" `hardware:=isaac` writes `/isaac/joint_command` and " +"`/isaac/joint_states`. `hardware:=isaac_sim` writes `` from launch `isaac_prim_path` (ArticulationRoot). " +"[`robot_common_launch` README](https://github.com/fiveages-sim/robot-" +"descriptions-common/blob/main/robot_common_launch/README.md) lists both " +"keys. `use_sim_time` is true for `gz`, `isaac`, and `isaac_sim` unless " +"the launch argument is explicitly `true` or `false` " +"([`launch_arg_utils.py`](https://github.com/fiveages-sim/robot-" +"descriptions-" +"common/blob/main/robot_common_launch/robot_common_launch/common/launch_arg_utils.py))." msgstr "" -"不要写死某一个 Isaac 次版本号。`./init.sh` 操作 2 会查询 GitHub 稳定 tag;回退列表见 " -"`config/fa_sim.conf`,目前是 `6.0.1` / `6.0.0` / `5.1.0`。" +"共享 xacro:[`simulation_hardware.xacro`](https://github.com/fiveages-sim" +"/robot-descriptions-" +"common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)。`hardware:=isaac`" +" 写入 `/isaac/joint_command` 和 `/isaac/joint_states`。`hardware:=isaac_sim` " +"从启动参数 `isaac_prim_path`(ArticulationRoot)写入 ``。[`robot_common_launch` README](https://github.com" +"/fiveages-sim/robot-descriptions-" +"common/blob/main/robot_common_launch/README.md) " +"列出了这两个键。`gz`、`isaac`、`isaac_sim` 的 `use_sim_time` 为 true,除非启动参数显式写成 " +"`true` 或 `false`([`launch_arg_utils.py`](https://github.com/fiveages-sim" +"/robot-descriptions-" +"common/blob/main/robot_common_launch/robot_common_launch/common/launch_arg_utils.py))。" #: ../../source/4-reference/simulation/2-fasim_isaac.md:20 -#: 7b22b88185784f3b9a1404defe3adb75 -msgid "Installation" -msgstr "安装" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:22 -#: a5ae3377976345b6b317dff47cc321fa +#: 3c95ae98d36f423c9a20be39dbaff416 msgid "" -"git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" -"cd FaSim-Isaac\n" -"./init.sh\n" -"./run.sh" +"A robot xacro that whitelists `validated_hardware_type` must include " +"`isaac_sim` or that xacro fails on purpose." msgstr "" -"git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" -"cd FaSim-Isaac\n" -"./init.sh\n" -"./run.sh" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:29 -#: 0a546d8d1b93487987cafb964dac4a88 -msgid "What `./init.sh` does:" -msgstr "`./init.sh` 做什么:" +"若机器人 xacro 白名单了 `validated_hardware_type`,必须包含 `isaac_sim`,否则该 xacro " +"会故意失败。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:31 -#: 8989b66e26ea408ea6c1305f491b093d +#: ../../source/4-reference/simulation/2-fasim_isaac.md:22 +#: dba4d4055b86440c92b48f426dc599fa +#, python-brace-format msgid "" -"Initialize selected submodules (`.gitmodules` / " -"`submodules_visibility.conf`; public default)" -msgstr "初始化勾选的子模块(`.gitmodules` / `submodules_visibility.conf`;默认 public)" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:32 -#: aad7da0679b147628be219c1f6e80958 +"`{hardware}.yaml` overlays merge only when the file exists. " +"`load_robot_config` order is common → type yaml → `{variant}.yaml` → end-" +"effector compose → `{hardware}.yaml` → `control.patch` " +"([`robot_utils.py`](https://github.com/fiveages-sim/robot-descriptions-" +"common/blob/main/robot_common_launch/robot_common_launch/common/robot_utils.py))." +" Hardware overlay runs after compose so a later compose pass does not " +"drop gripper keys from `isaac.yaml` ([robot-descriptions-common " +"#41](https://github.com/fiveages-sim/robot-descriptions-common/pull/41))." +" `isaac_sim` can reuse `isaac.yaml`; emit passes `hardware_yaml=isaac`. A" +" file named `isaac_sim.yaml` is loaded when the launch hardware string is" +" `isaac_sim`." +msgstr "" +"`{hardware}.yaml` 仅在文件存在时合并。`load_robot_config` 的顺序是 common → 类型 yaml → " +"`{variant}.yaml` → 末端执行器组合 → `{hardware}.yaml` → " +"`control.patch`([`robot_utils.py`](https://github.com/fiveages-sim/robot-" +"descriptions-" +"common/blob/main/robot_common_launch/robot_common_launch/common/robot_utils.py))。硬件覆盖在组合之后,后面的组合步骤不会丢掉" +" `isaac.yaml` 里的夹爪键([robot-descriptions-common #41](https://github.com" +"/fiveages-sim/robot-descriptions-common/pull/41))。`isaac_sim` 可以复用 " +"`isaac.yaml`;emit 传入 `hardware_yaml=isaac`。当启动的硬件字符串是 `isaac_sim` 时,会加载名为" +" `isaac_sim.yaml` 的文件。" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:24 +#: 45749d7f47384eea927215344f5a92ad +msgid "Topic names are per robot" +msgstr "话题名按机器人区分" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:26 +#: b20d1bdacb4d4be3ad01ab23b080488e msgid "" -"Optional Isaac ROS 2 Jazzy workspace (`isaac_jazzy_ws/`). Override " -"version with `ISAAC_SIM_VERSION=… ./init.sh`" +"The shared macro’s `/isaac/joint_*` pair is the topic-bridge default " +"(Acone uses that macro). W2’s topic-bridge graph publishes " +"`/joint_command` and `/joint_states` ([`ros2.usda`](https://github.com" +"/fiveages-sim/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/ros2.usda)). The xacro `` and the " +"graph `topicName` are the same strings. `demo.launch.py` does not take a " +"namespace that rewrites them." msgstr "" -"可选 Isaac ROS 2 Jazzy 工作空间(`isaac_jazzy_ws/`)。用 `ISAAC_SIM_VERSION=… " -"./init.sh` 覆盖版本" +"共享宏的 `/isaac/joint_*` 一对是话题桥默认值(Acone 用这个宏)。W2 的话题桥图发布 `/joint_command` 和" +" `/joint_states`([`ros2.usda`](https://github.com/fiveages-sim/fiveages-" +"gen2-robot-usds/blob/main/W2/payloads/ROS/ros2.usda))。xacro 的 `` " +"和图的 `topicName` 是同一组字符串。`demo.launch.py` 没有能改写它们的命名空间参数。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:34 -#: 826023f27a79427fbe4062ddeb438434 +#: ../../source/4-reference/simulation/2-fasim_isaac.md:28 +#: e5f9ad7abdc84480a60c8a2de91b701d msgid "" -"What `./run.sh` does: optional CPU governor, optional Zenoh router, then " -"a menu — **PhysX** / **Newton** / **Headless Streaming**. There is no " -"`./run.sh --robot`, `--headless`, or `--env`." +"In-process W2 ([`fiveages.usda`](https://github.com/fiveages-sim" +"/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/fiveages.usda)) does " +"not bridge body or arm `JointState` topics. The controller manager owns " +"those degrees of freedom. Chassis `cmd_vel` / `odom` stay on the child " +"ROS graph." msgstr "" -"`./run.sh` 做什么:可选 CPU 调频、可选 Zenoh router,然后是菜单 — **PhysX** / **Newton** /" -" **Headless Streaming**。没有 `./run.sh --robot`、`--headless` 或 `--env`。" +"进程内 W2([`fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2" +"-robot-usds/blob/main/W2/payloads/ROS/fiveages.usda))不桥接身体或手臂的 " +"`JointState` 话题。这些自由度归控制器管理器。底盘的 `cmd_vel` / `odom` 留在子 ROS 图上。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:36 -#: d692c11e195d48bdae8b5f0a92b1499b -msgid "Local config:" -msgstr "本机配置:" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:30 +#: 1d63cc7f177c4f2ba721c98bf969edcb +msgid "In-process launch" +msgstr "进程内启动" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:38 -#: 0c949f49e5ff457fb29cc9bfa46259ff +#: ../../source/4-reference/simulation/2-fasim_isaac.md:32 +#: f96198b7829b4884982bffd860418eaa msgid "" -"cp config/fa_sim.local.template.conf config/fa_sim.local.conf\n" -"# edit ISAACSIM_DIR / ISAAC_SIM_DEFAULT_VERSION" +"`OgnROS2ControlLaunch` ([`OgnROS2ControlLaunch.ogn`](https://github.com" +"/fiveages-sim/FaSim-" +"Isaac/blob/main/exts/fasim.ros2.nodes/fasim/ros2/nodes/ogn/python/nodes/OgnROS2ControlLaunch.ogn))" +" runs once after Play:" msgstr "" -"cp config/fa_sim.local.template.conf config/fa_sim.local.conf\n" -"# edit ISAACSIM_DIR / ISAAC_SIM_DEFAULT_VERSION" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:43 -#: 8b6c2b74c08d475d9882d33603047209 -msgid "ROS 2 Connection" -msgstr "ROS 2 连接" +"`OgnROS2ControlLaunch`([`OgnROS2ControlLaunch.ogn`](https://github.com" +"/fiveages-sim/FaSim-" +"Isaac/blob/main/exts/fasim.ros2.nodes/fasim/ros2/nodes/ogn/python/nodes/OgnROS2ControlLaunch.ogn))在播放后运行一次:" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 43c23fc9ac664f8185bacd06a392a893 +msgid "Input" +msgstr "Input" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 5ddb04895cbd4c6dba9ca62e0ef52a55 +msgid "Role" +msgstr "Role" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: f542dd2702a34460a346642d59190363 +msgid "`targetPrim`" +msgstr "`targetPrim`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 66109e32640741ab8fd4d76e48769350 +msgid "One ArticulationRoot" +msgstr "一个 ArticulationRoot" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: c9e9c68bb49440f4adbdb3b882f90492 +msgid "`robot`" +msgstr "`robot`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 041f4826fd1f46129a275299ad3bfb90 +msgid "" +"Description stem (`unitree_g1d`, `fiveages_w2`). Empty reads the USD " +"`Robot` variant" +msgstr "描述包词干(`unitree_g1d`、`fiveages_w2`)。为空时读取 USD 的 `Robot` 变体" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 5cb874b7b8964e20933629b37c8b3907 +msgid "`mode`" +msgstr "`mode`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: bb1433c72352465086697549f725eb2b +msgid "`demo`, `split_body`, or `full_body`" +msgstr "`demo`、`split_body` 或 `full_body`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: f08ee7865b5d4f109e922b3760c56fed +msgid "`type`" +msgstr "`type`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 26ba73619cc7440592f129e6ef0adda2 +msgid "" +"`robot_common_launch` end-effector key. Empty reads EE variants on the " +"stage" +msgstr "`robot_common_launch` 的末端键。为空时读取舞台上的末端变体" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 2fbaf623c57e4648ad43257c561588b0 +msgid "`namespace`" +msgstr "`namespace`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 0b5e1cfce84c417a93e7c3efc452424d +msgid "Controller manager namespace. Empty is the global `/controller_manager`" +msgstr "控制器管理器命名空间。为空则是全局 `/controller_manager`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 8ef60cde06694978bd0b8ea900d77a29 +msgid "`infoFile`" +msgstr "`infoFile`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 4db9f93758e844da8acdc7bf6ff3661d +msgid "OCS2 `.info` basename. Empty keeps the description default" +msgstr "OCS2 `.info` 的文件名。为空则保留描述包默认值" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: aeb0a78359494bc9b77b8726b04916a7 +msgid "`useSimTime`" +msgstr "`useSimTime`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: c15e8184d7d940e0be49ae73a6fdf73a +msgid "Forced true for `isaac_sim` (needs `/clock`)" +msgstr "对 `isaac_sim` 强制为 true(需要 `/clock`)" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: f4a77cdc9175454bb0059af1ff913e3a +msgid "`publishRobotDescription`" +msgstr "`publishRobotDescription`" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md +#: 37096dc40e7d4bf2a5fddb83f22463d3 +msgid "Latch the same xacro on `/robot_description` (default true)" +msgstr "把同一份 xacro 锁存到 `/robot_description`(默认 true)" #: ../../source/4-reference/simulation/2-fasim_isaac.md:45 -#: 84b0653739af4af3bff348e5850a4e74 +#: 63205b39d102436192a2b13b7ebe71fd msgid "" -"In a separate terminal (robot name is a ROS 2 launch argument, not a " -"FaSim flag):" -msgstr "在另一个终端(机器人名称是 ROS 2 launch 参数,不是 FaSim 标志):" +"`emit_control` builds one xacro URDF and pins both the controller manager" +" and `/robot_description` to it. `Ros2ControlManager.setup` is called " +"with `publish_robot_description=False`, so the manager does not publish " +"that topic again. `robot_state_publisher` (host process) publishes " +"`/robot_description` and the URDF TF tree. If that process does not " +"start, a latched `fasim_robot_description` publisher is the fallback. " +"Resource Manager therefore loads the description once." +msgstr "" +"`emit_control` 生成一份 xacro URDF,并把控制器管理器和 `/robot_description` " +"都钉在它上面。`Ros2ControlManager.setup` 以 `publish_robot_description=False` " +"调用,因此管理器不会再发这个话题。`robot_state_publisher`(宿主机进程)发布 `/robot_description` 和 " +"URDF 的 TF 树。若该进程没起来,回退是锁存的 `fasim_robot_description` 发布者。资源管理器因此只加载一次描述。" #: ../../source/4-reference/simulation/2-fasim_isaac.md:47 -#: 7ec15b76913c4b95811a5038c9d9ee74 -msgid "ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac" -msgstr "ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac" +#: c48d65450e85491b803ddc039a8f4bb0 +msgid "" +"That xacro path is also why Play does not synthesize a fresh URDF from " +"the stage on every start: the node reuses the description xacro and only " +"falls back to USD synthesis for an unexpected prim." +msgstr "也正因为走这条 xacro,播放时不会每次从舞台重新合成一份 URDF:节点复用描述 xacro,只在遇到意外图元时才回退到 USD 合成。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:51 -#: 21b496f398c54d8c9e6fe3a1da524139 -msgid "Structure" -msgstr "结构" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:49 +#: 9655b69ace2d45f48d8fb4c970b7221d +msgid "CppAD cache" +msgstr "CppAD 缓存" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: db4702848f08484980d404bb2a13cbfe +#: ../../source/4-reference/simulation/2-fasim_isaac.md:51 +#: e6e3c839b32e431c89d92472ba9f3956 +#, python-brace-format msgid "" -"FaSim-Isaac/\n" -"├── init.sh\n" -"├── run.sh\n" -"├── config/ # fa_sim.conf + optional fa_sim.local.conf" -"\n" -"├── robots/ # → robot_usds\n" -"├── environment/\n" -"│ ├── fiveages_env/ # → fiveages-env-usds\n" -"│ └── fa-project-usd/ # → fa-project-usd (private)\n" -"└── isaac_jazzy_ws/ # created by init.sh operation 2" +"`ocs2_arm_controller` declares `recompile_libraries` with default " +"**true** when `task.info` does not set `recompileLibraries` " +"([`CtrlComponent.h`](https://github.com/fiveages-" +"sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/include/ocs2_arm_controller/control/CtrlComponent.h))." +" The library folder is " +"`${OCS2_PLANNING_URDF_DIR:-/tmp}/ocs2_ros2//ocs2/`." msgstr "" -"FaSim-Isaac/\n" -"├── init.sh\n" -"├── run.sh\n" -"├── config/ # fa_sim.conf + optional fa_sim.local.conf" -"\n" -"├── robots/ # → robot_usds\n" -"├── environment/\n" -"│ ├── fiveages_env/ # → fiveages-env-usds\n" -"│ └── fa-project-usd/ # → fa-project-usd (private)\n" -"└── isaac_jazzy_ws/ # created by init.sh operation 2" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:65 -#: 5de98eef630643208e384d47996fd89d -msgid "Submodules" -msgstr "子模块" +"`ocs2_arm_controller` 声明 `recompile_libraries`,当 `task.info` 没有设置 " +"`recompileLibraries` 时默认 **true**([`CtrlComponent.h`](https://github.com" +"/fiveages-" +"sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/include/ocs2_arm_controller/control/CtrlComponent.h))。库目录是" +" `${OCS2_PLANNING_URDF_DIR:-/tmp}/ocs2_ros2//ocs2/`。" #: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 18292e21fea9464e82c1ff38ab49e583 -msgid "Path" -msgstr "路径" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 14399d16b2b4436782dfe078adbf3edc -msgid "Repository" -msgstr "仓库" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: ea1b729fcf614eba8a6029ed5cc30fde -msgid "Visibility" -msgstr "可见性" +#: 2f4e210903654dbe8d3270d78105c0ef +msgid "" +"`emit_control` then sets `recompile_libraries: false` on the **main** " +"controller only: `ocs2_arm_controller` for `demo` / `split_body`, " +"`ocs2_wbc_controller` for `full_body`. That force applies to the in-" +"process `isaac_sim` path. A topic-bridge `hardware:=isaac` launch does " +"not run `emit_control`, so it keeps the controller default (true unless " +"that robot’s info or YAML already says false)." +msgstr "" +"`emit_control` 接着只把**主**控制器的 `recompile_libraries` 设为 false:`demo` / " +"`split_body` 是 `ocs2_arm_controller`,`full_body` 是 " +"`ocs2_wbc_controller`。这次强制只作用于进程内 `isaac_sim`。话题桥的 `hardware:=isaac` 启动不跑" +" `emit_control`,因此保留控制器默认值(true,除非该机器人的 info 或 YAML 已经写成 false)。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: d332f18977834c46b08e5366df3cc60c -msgid "`robots/`" -msgstr "`robots/`" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:55 +#: f9e51420a28347619f16678ebdf1f3c4 +msgid "" +"Reusing the xacro URDF and reusing the CppAD cache are the two startup " +"shortcuts for a simulated robot that runs 运控 inside Isaac." +msgstr "复用 xacro URDF 和复用 CppAD 缓存,是仿真机器人在 Isaac 里跑运控时的两项启动加速。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: d0a4ef5f0f504dc1a739fa7a1b1d3c60 -msgid "robot_usds" -msgstr "robot_usds" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:57 +#: 1b3121de271140bb938b3b0d786c7599 +msgid "`infoFile` and `BASE_LOCK`" +msgstr "`infoFile` 与 `BASE_LOCK`" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 06854b29ded64199b79ed9ef50f7bfdd 31f6fb6118df4b91a0f4d3571333640a -msgid "Public" -msgstr "公开" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:59 +#: 4e70afe87b62425cb579e3fcfcdfdfe4 +msgid "" +"`infoFile` overrides `info_file_name` on the main controller. " +"`fixed_base_tcp` drops the virtual chassis degrees of freedom " +"(`manipulatorModelType` 0) so whole-body planning is body and arms." +msgstr "" +"`infoFile` 覆盖主控制器的 `info_file_name`。`fixed_base_tcp` " +"去掉虚拟底盘自由度(`manipulatorModelType` 0),全身规划只含身体和手臂。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 7d08e16312be4cf8afb16656a9684dab -msgid "`environment/fiveages_env/`" -msgstr "`environment/fiveages_env/`" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:61 +#: f5256f78d9994b0bae343d1cca7ab63f +msgid "" +"`emit_control` warns when `mode` is `full_body` and the override name " +"contains `fixed_base`: the planner has `basePlan=0`, so a runtime " +"`BASE_LOCK` has nothing to constrain, and the arm enable policy can stay " +"in `WAITING_FOR_ENABLE_POLICY`. Locking the base uses `mobile_base_tcp` " +"plus `BASE_LOCK`." +msgstr "" +"当 `mode` 为 `full_body` 且覆盖名含 `fixed_base` 时,`emit_control` 会警告:规划器 " +"`basePlan=0`,运行时的 `BASE_LOCK` 没有可约束的量,手臂使能策略可能停在 " +"`WAITING_FOR_ENABLE_POLICY`。锁底盘用 `mobile_base_tcp` 加 `BASE_LOCK`。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 7253398e1c1a48b2a5f5298864d353dd -msgid "fiveages-env-usds" -msgstr "fiveages-env-usds" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:63 +#: 03630ed81d1d4030ae8f2dacc3e24ecc +msgid "" +"Whole-body control needs [ocs2-wbc-controller](https://github.com" +"/fiveages-sim/ocs2-wbc-controller) (private; open it after access)." +msgstr "" +"全身控制需要 [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-" +"controller)(私有;开通后打开)。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: b485e3ca89f448d083f55aecfbea7953 -msgid "`environment/fa-project-usd/`" -msgstr "`environment/fa-project-usd/`" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:65 +#: 063e6171adf4462d8c2a8fb2f8d66a14 +msgid "Clock" +msgstr "Clock" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 49caf0d562874b3784789391389649cf -msgid "fa-project-usd" -msgstr "fa-project-usd" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:67 +#: 4526e9455929483cbb7d749ecac6bdec +msgid "" +"In-process W2 publishes `/clock` from a separate on-demand graph " +"`ROS_Clock`: `evaluationMode=OnDemand`, " +"`pipelineStage=pipelineStageOnDemand`, `OnPhysicsStep` → `PublishClock`, " +"`IsaacReadSimulationTime` with `resetOnStop=1` " +"([`fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/fiveages.usda)). `OnPhysicsStep` does not " +"run in the automatic `ROS_Control` graph, so the clock graph stays beside" +" it. `ROS_Control` still uses `OnPlaybackTick` to start " +"`ROS2ControlLaunch` once." +msgstr "" +"进程内 W2 用单独的按需图 `ROS_Clock` 发布 " +"`/clock`:`evaluationMode=OnDemand`,`pipelineStage=pipelineStageOnDemand`,`OnPhysicsStep`" +" → `PublishClock`,`IsaacReadSimulationTime` 的 " +"`resetOnStop=1`([`fiveages.usda`](https://github.com/fiveages-sim" +"/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/fiveages.usda))。`OnPhysicsStep` 不会在自动的 " +"`ROS_Control` 图里跑,所以时钟图放在旁边。`ROS_Control` 仍用 `OnPlaybackTick` 把 " +"`ROS2ControlLaunch` 启动一次。" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:69 +#: 26c46ee9a5b14eecbe36a9437efa7c9b +msgid "" +"The topic-bridge payload on the same robot " +"([`ros2.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-" +"usds/blob/main/W2/payloads/ROS/ros2.usda)) still drives `PublishClock` " +"from `OnPlaybackTick` and sets `resetOnStop=0`." +msgstr "" +"同一台机器人的话题桥载荷([`ros2.usda`](https://github.com/fiveages-sim/fiveages-gen2" +"-robot-usds/blob/main/W2/payloads/ROS/ros2.usda))仍从 `OnPlaybackTick` 驱动 " +"`PublishClock`,并把 `resetOnStop` 设为 0。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: d08289c2e66f4946bcc70781a3021139 -msgid "Private" -msgstr "私有" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:71 +#: b36c6a79eaac495cb19a3d0332fd8ee6 +msgid "" +"`/clock` is the controller’s time base when `use_sim_time` is true. A " +"render-frame clock advances several physics steps in one tick, so a timed" +" move finishes early. The repair is the physics-step clock, not a joint-" +"parameter change. The same `ROS_Clock` pattern is what new fiveages in-" +"process payloads follow; this page verifies it on W2. Odometry graphs " +"keep their own `ReadSimTime` (`resetOnStop=1`) so `odom` stamps stay " +"valid. Camera prims belong on the scene payload, not on this clock graph." +msgstr "" +"`use_sim_time` 为 true 时,`/clock` " +"是控制器的时间基准。渲染帧时钟会在一个节拍里推进好几个物理步,于是限时运动提前结束。修的是物理步时钟,而不是关节参数。新的 fiveages " +"进程内载荷也跟这套 `ROS_Clock`;本页在 W2 上核对过。里程计图保留自己的 " +"`ReadSimTime`(`resetOnStop=1`),这样 `odom` 时间戳仍然有效。相机图元放在场景载荷上,不放在这张时钟图上。" #: ../../source/4-reference/simulation/2-fasim_isaac.md:73 -#: 2ff285a262b3406dbc9b09865dc962bf -msgid "Topic Bridge" -msgstr "话题桥接" +#: aae16aa6d37c41da96b19915fe94f62c +msgid "" +"`arms_target_manager`, when the node spawns it, is a host process with " +"`use_sim_time:=false` so markers are not tied to the physics step." +msgstr "节点若拉起 `arms_target_manager`,它是宿主机进程,`use_sim_time:=false`,标记不跟物理步绑定。" #: ../../source/4-reference/simulation/2-fasim_isaac.md:75 -#: 7ff6c30a531f4a0b848fa010c0f538a5 -msgid "FaSim-Isaac bridges Isaac Sim to ROS 2:" -msgstr "FaSim-Isaac 将 Isaac Sim 桥接到 ROS 2:" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: fdcb419f41f24f6090596a89412a9eaf -msgid "Isaac Topic" -msgstr "Isaac 话题" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 5707c489dc084cbc88feb498ccede879 -msgid "ROS 2 Topic" -msgstr "ROS 2 话题" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 4721c388b2534fd6a84f00617769246f -msgid "Direction" -msgstr "方向" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: e768f3c7a24b407786102ce491619128 -msgid "Joint positions" -msgstr "关节位置" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: b1d619d527764c8f9ed81dc398b7e292 -msgid "`/joint_states`" -msgstr "`/joint_states`" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 0084f8ab6ba347d88c4a96cff9d74a38 -msgid "Isaac → ROS" -msgstr "Isaac → ROS" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: a9a3b864d4094b03979ef00a95da19eb -msgid "Joint commands" -msgstr "关节指令" +#: 8a62d92fd7cb434db4d12b6e4c1e6aa4 +msgid "TF" +msgstr "TF" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 7b212e6ac574445da9d2ebcbe9a5eba0 -msgid "`/joint_commands`" -msgstr "`/joint_commands`" - -#: ../../source/4-reference/simulation/2-fasim_isaac.md:53 -#: 937474f7d73f499ba1b801408a9a783c -msgid "ROS → Isaac" -msgstr "ROS → Isaac" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:77 +#: 533ddb7744d947f199c52ba1570bb180 +msgid "" +"Isaac’s odometry graph publishes `world → odom → base_*` and `/odom`. It " +"does not publish the whole URDF tree. `robot_state_publisher` publishes " +"`base_footprint → base_link` (when both links exist) and the arm tree, " +"including fixed frames such as `right_eef`." +msgstr "" +"Isaac 的里程计图发布 `world → odom → base_*` 和 `/odom`。它不发布整棵 URDF " +"树。`robot_state_publisher` 发布 `base_footprint → " +"base_link`(两个连杆都存在时)以及手臂树,包括 `right_eef` 这类固定帧。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:82 -#: fd94e93e10854e098f5eaf715475177b +#: ../../source/4-reference/simulation/2-fasim_isaac.md:79 +#: 39ac1bc5fafe40ee8def356db84a68f3 +msgid "" +"W2’s in-process ArticulationRoot is `base_link` " +"(`/FiveAges_W2/base_link`). The odometry chain on that payload is `world " +"→ odom → base_footprint`; `robot_state_publisher` publishes " +"`base_footprint → base_link`. OCS2 `baseFrame` is the same link the " +"planner’s `task.info` names. `base_footprint` is the ground link; " +"`base_link` may sit above it. Two publishers on one edge fight. A " +"standing model with no `base_footprint` uses `base_link` for that chain. " +"Confirm the link in that robot’s USD and `task.info` before copying the " +"W2 names." +msgstr "" +"W2 进程内的 ArticulationRoot 是 " +"`base_link`(`/FiveAges_W2/base_link`)。该载荷上的里程计链是 `world → odom → " +"base_footprint`;`robot_state_publisher` 发布 `base_footprint → " +"base_link`。OCS2 的 `baseFrame` 就是规划器 `task.info` 点名的那个连杆。`base_footprint` " +"是贴地连杆;`base_link` 可以高出地面。一条边两个发布者会抢。没有 `base_footprint` 的站立模型用 " +"`base_link` 接这条链。抄 W2 的名字之前,先在该机器人的 USD 和 `task.info` 里核对连杆。" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:81 +#: 2bb160eb89c84d6b929a1e0475b165bf +msgid "Several robots" +msgstr "多台机器人" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:83 +#: b8c60e01ed564a5ea38ddd2a57efad24 msgid "" -"Open robot USD from `robots/` and scene USD from `environment/` in Isaac." -" Selection is not a `run.sh` CLI flag." +"One ArticulationRoot, one `ROS2ControlLaunch`, and one controller manager" +" per robot. Isolation is the graph `namespace` plus relative topic names " +"(`cmd_vel`, `fsm_command`, `robot_description`). `/clock` stays global." msgstr "" -"在 Isaac 中从 `robots/` 打开机器人 USD、从 `environment/` 打开场景 USD。选择不是 `run.sh` 的 " -"CLI 参数。" +"每台机器人一个 ArticulationRoot、一个 `ROS2ControlLaunch`、一个控制器管理器。隔离靠图的 " +"`namespace` 加上相对话题名(`cmd_vel`、`fsm_command`、`robot_description`)。`/clock`" +" 保持全局。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:84 -#: b781cab9adc042dcae87db919f094742 -msgid "Troubleshooting" -msgstr "故障排除" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:85 +#: 53907df20ae048f297f6b7175308625d +msgid "" +"A ROS namespace remaps topics (`//tf`, `//tf_static`). It does " +"not prefix `frame_id`. Each tree still has frames named `world`, `odom`, " +"and `base_link`. `world → odom` is that robot’s latched spawn pose on " +"**its** `//tf`, not a rewritten frame called `g1d/world`. RViz " +"listens to `/tf` unless you remap it, for example:" +msgstr "" +"ROS 命名空间会重映射话题(`//tf`、`//tf_static`)。它不会给 `frame_id` " +"加前缀。每棵树里的帧名仍是 `world`、`odom` 和 `base_link`。`world → odom` 是这台机器人在**自己的** " +"`//tf` 上锁存的出生位姿,不是改名为 `g1d/world` 的帧。RViz 默认听 `/tf`,需要时再重映射,例如:" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:86 -#: 2ea219cce3f249b28429446f4b2ea8e6 -msgid "Isaac Sim Won't Start" -msgstr "Isaac Sim 无法启动" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:87 +#: 84e77eda599f4430905ff8d19a331225 +msgid "" +"ros2 run tf2_ros tf2_echo world base_link --ros-args \\\n" +" -r /tf:=//tf -r /tf_static:=//tf_static" +msgstr "" +"ros2 run tf2_ros tf2_echo world base_link --ros-args \\\n" +" -r /tf:=//tf -r /tf_static:=//tf_static" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:88 -#: 47572ac3ca5f48afa25fac646845a9d3 +#: ../../source/4-reference/simulation/2-fasim_isaac.md:92 +#: dac62aef54504ab493c799b5af25a41e msgid "" -"Confirm `ISAACSIM_DIR` contains `isaac-sim.sh` (and the Newton / " -"streaming launchers named in `fa_sim.conf`)" +"`` is the string on that graph’s `namespace` input, not a " +"`demo.launch.py` argument. A stage with one graph and one controller " +"manager per robot has been run." msgstr "" -"确认 `ISAACSIM_DIR` 包含 `isaac-sim.sh`(以及 `fa_sim.conf` 中的 Newton / " -"streaming 启动脚本)" +"`` 是该图 `namespace` 输入上的字符串,不是 `demo.launch.py` " +"的参数。一个舞台、每台机器人一张图和一个控制器管理器,已经跑通过。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:89 -#: e66cbda31e5c4b9da57311f61fe0729d -msgid "Override the path in `config/fa_sim.local.conf`" -msgstr "在 `config/fa_sim.local.conf` 中覆盖路径" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:94 +#: 6807b08c51f541f49911861f82c3b9f6 +msgid "Navigation" +msgstr "Navigation" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:90 -#: 47048a1a9caf4f00b0db556c82472587 -msgid "Check GPU drivers: `nvidia-smi`" -msgstr "检查 GPU 驱动:`nvidia-smi`" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:96 +#: 9c82e9c7d7e440bea3494c5ed8f87695 +msgid "" +"`NavigationLaunch` ([`OgnNavigationLaunch.ogn`](https://github.com" +"/fiveages-sim/FaSim-" +"Isaac/blob/main/exts/fasim.ros2.nodes/fasim/ros2/nodes/ogn/python/nodes/OgnNavigationLaunch.ogn))" +" starts `ros2 launch robot_common_launch navigation_isaac_gt.launch.py` " +"on Play when `enabled` is true. W2’s fiveages graph leaves `enabled` " +"false." +msgstr "" +"`NavigationLaunch`([`OgnNavigationLaunch.ogn`](https://github.com" +"/fiveages-sim/FaSim-" +"Isaac/blob/main/exts/fasim.ros2.nodes/fasim/ros2/nodes/ogn/python/nodes/OgnNavigationLaunch.ogn))在" +" `enabled` 为 true 时,于播放后启动 `ros2 launch robot_common_launch " +"navigation_isaac_gt.launch.py`。W2 的 fiveages 图把 `enabled` 留为 false。" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:98 +#: b763c8cbe549495aa49268d9b0f2b6df +msgid "" +"`map` and `paramsFile` are paths relative to the opened stage root, so an" +" `env/` layer can point at `../../maps//map.yaml` stored in the " +"same [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) " +"project. The node does not call composer `ros2-stack`. Default " +"`nav2Profile` is `map_only`. `publishMapWorldTf` defaults true (map drawn" +" in USD world). `publishMapOdomTf` defaults false because odometry comes " +"from Isaac." +msgstr "" +"`map` 和 `paramsFile` 相对已打开的舞台根解析,因此 `env/` 层可以指向同一 [fa-project-" +"usd](https://github.com/fiveages-sim/fa-project-usd) 项目里的 " +"`../../maps//map.yaml`。该节点不调用编排器的 `ros2-stack`。默认 `nav2Profile` 是 " +"`map_only`。`publishMapWorldTf` 默认 true(地图画在 USD 世界里)。`publishMapOdomTf` " +"默认 false,因为里程计来自 Isaac。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:91 -#: 1c622cd7be504a08b6edc46651bf0622 -msgid "Check logs: `~/.nvidia-omniverse/logs/`" -msgstr "检查日志:`~/.nvidia-omniverse/logs/`" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:100 +#: b4fa312c38d142b7a3bc918d6306482b +msgid "Project scenes" +msgstr "项目场景" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:93 -#: f199138813d447978792fe68d2dc3e2f -msgid "No ROS 2 Connection" -msgstr "无法连接 ROS 2" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:102 +#: 630086b536694d4ab497fe286b8d14fb +msgid "" +"[fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) is " +"private. On `main`, a project is `scene.usd(a)`, `objects/`, and runnable" +" `env/` ([README](https://github.com/fiveages-sim/fa-project-" +"usd/blob/main/README.md))." +msgstr "" +"[fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) 是私有仓库。在 " +"`main` 上,一个项目是 `scene.usd(a)`、`objects/` 和可运行的 " +"`env/`([README](https://github.com/fiveages-sim/fa-project-" +"usd/blob/main/README.md))。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:95 -#: 2b3a1bc210944945bbcf17375451a9c6 -msgid "Check domain ID matches" -msgstr "检查 Domain ID 是否一致" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:104 +#: e88786b0fbcb4cd198461943d13ac3d0 +msgid "" +"Orchestration files next to those scenes (`robot.yaml`, `task_configs/`, " +"`maps/` or `map/`) are on branch `feature/sinopec-test-tube-picking`, " +"which is ahead of `main` and not merged (compared 2026-11-13). Three " +"projects on that branch have this layout: `Fiveages/2026-11 Standard " +"Moving Boxes`, `Siemens/2026-06 Wind Turbine Blade Detection`, and " +"`Aimbo/2026-04 Bosch German&Poland POC`. Open the branch after you have " +"access. The public entry for running a project directory is [lerobot_ros2" +" `examples/IsaacSim/README.md`](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md) (`motion-" +"generation` with `LEROBOT_ROOT` set). Camera rigs stay in the scene USD." +msgstr "" +"这些场景旁边的编排文件(`robot.yaml`、`task_configs/`、`maps/` 或 `map/`)在分支 `feature" +"/sinopec-test-tube-picking` 上,该分支领先 `main` 且尚未合入(2026-11-13 " +"对比)。该分支上有这份布局的三个项目:`Fiveages/2026-11 Standard Moving " +"Boxes`、`Siemens/2026-06 Wind Turbine Blade Detection`、`Aimbo/2026-04 " +"Bosch German&Poland POC`。有权限后再打开该分支。从项目目录运行的公开入口是 [lerobot_ros2 " +"`examples/IsaacSim/README.md`](https://github.com/fiveages-" +"sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md)(设置 `LEROBOT_ROOT`" +" 后执行 `motion-generation`)。相机机位留在场景 USD 里。" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:106 +#: 77cf179e888945fea11685a88ccb0db4 +msgid "Layout" +msgstr "Layout" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:108 +#: d1c4aafe82e44df08b4fae8ac39e827a +msgid "" +"FaSim-Isaac/\n" +"├── init.sh\n" +"├── run.sh\n" +"├── run_headless.sh\n" +"├── config/ # fa_sim.conf + optional " +"fa_sim.local.conf\n" +"├── exts/fasim.ros2.nodes/ # ROS2ControlLaunch, NavigationLaunch" +"\n" +"├── exts/fasim.steering.nodes/ # swerve graph node\n" +"├── tools/audit_mimic_joint_drives.py\n" +"├── robots/ # → robot_usds\n" +"└── environment/\n" +" ├── fiveages_env/\n" +" ├── fa-project-usd/ # private\n" +" ├── artvip-usd/\n" +" └── labutopia-usd/" +msgstr "" +"FaSim-Isaac/\n" +"├── init.sh\n" +"├── run.sh\n" +"├── run_headless.sh\n" +"├── config/ # fa_sim.conf + optional " +"fa_sim.local.conf\n" +"├── exts/fasim.ros2.nodes/ # ROS2ControlLaunch, NavigationLaunch" +"\n" +"├── exts/fasim.steering.nodes/ # swerve graph node\n" +"├── tools/audit_mimic_joint_drives.py\n" +"├── robots/ # → robot_usds\n" +"└── environment/\n" +" ├── fiveages_env/\n" +" ├── fa-project-usd/ # private\n" +" ├── artvip-usd/\n" +" └── labutopia-usd/" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:125 +#: 97eb48423c954e11b6e41bd34339c742 +msgid "" +"Submodule URLs: [`.gitmodules`](https://github.com/fiveages-sim/FaSim-" +"Isaac/blob/main/.gitmodules). Visibility: `submodules_visibility.conf`." +msgstr "" +"子模块地址:[`.gitmodules`](https://github.com/fiveages-sim/FaSim-" +"Isaac/blob/main/.gitmodules)。可见性:`submodules_visibility.conf`。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:96 -#: a6711471b57f44469eac9d05172200c0 -msgid "Verify ROS 2 bridge extension enabled" -msgstr "确认已启用 ROS 2 桥接扩展" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:127 +#: 35b26ed0cd4a4ae4b21d9744b0e71a4b +msgid "Mimic joints" +msgstr "mimic 关节" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:97 -#: ca9cc025761749cd9823989abb873944 -msgid "Restart `./run.sh` and the ROS 2 nodes" -msgstr "重启 `./run.sh` 和 ROS 2 节点" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:129 +#: 531ab7c8c7ce4aa79e33ee93c46facee +msgid "" +"`tools/audit_mimic_joint_drives.py` reports mimic joints that have no " +"drive. Assets that already use `PhysxMimicJointAPI` or `NewtonMimicAPI` " +"should not gain a second drive: the solver already enforces the mimic, " +"and a drive at `targetPosition=0` fights it. `--apply` is for a mimic " +"that has neither PhysX nor Newton mimic API." +msgstr "" +"`tools/audit_mimic_joint_drives.py` 报告没有驱动的 mimic 关节。已经使用 " +"`PhysxMimicJointAPI` 或 `NewtonMimicAPI` 的资产不要再加第二套驱动:求解器已经在执行 " +"mimic,`targetPosition=0` 的驱动会和它对着干。`--apply` 用于既没有 PhysX 也没有 Newton mimic" +" API 的关节。" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:99 -#: d224cb740a9a40f78a39c359b9cdc2ed +#: ../../source/4-reference/simulation/2-fasim_isaac.md:131 +#: 1c4b38ba1e3b4d9cbc5e44fdf73df4da msgid "Related" msgstr "相关内容" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:101 -#: 56331f63d13c4a87a3a2d2dfb0751c95 -msgid "[robot_usds](3-robot_usds.md)" -msgstr "[robot_usds](3-robot_usds.md)" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:133 +#: a037e134ea7f4c1f9d5547bde37f3e88 +msgid "[Isaac Sim how-to](../../2-how_to/2-simulation/4-isaac_sim.md)" +msgstr "[Isaac Sim how-to](../../2-how_to/2-simulation/4-isaac_sim.md)" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:102 -#: c761425370a441288acaa467ab718547 -msgid "[Isaac Sim How-To](../../2-how_to/2-simulation/4-isaac_sim.md)" -msgstr "[Isaac Sim 操作指南](../../2-how_to/2-simulation/4-isaac_sim.md)" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:134 +#: 47ddc2fd746a4c2c8833c6809531bbfa +msgid "[topic_based_ros2_control](../hardware/1-topic_based.md)" +msgstr "[topic_based_ros2_control](../hardware/1-topic_based.md)" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:135 +#: 06eec2443aec44ae8c20576f7dc1956a +msgid "[robot_common_launch](../descriptions/2-common.md)" +msgstr "[robot_common_launch](../descriptions/2-common.md)" -#: ../../source/4-reference/simulation/2-fasim_isaac.md:103 -#: cb08fd9f75dd4accb852ca2ae21430dc -msgid "[Synthetic Data](../../2-how_to/7-synthetic_data/0-index.md)" -msgstr "[合成数据](../../2-how_to/7-synthetic_data/0-index.md)" +#: ../../source/4-reference/simulation/2-fasim_isaac.md:136 +#: 8633157b6f804e90872fa1b0c679e653 +msgid "[lerobot_ros2](../python_apps/4-lerobot_ros2.md)" +msgstr "[lerobot_ros2](../python_apps/4-lerobot_ros2.md)" + +#: ../../source/4-reference/simulation/2-fasim_isaac.md:137 +#: baa33fbbe8494b09ab7e449757fd39dc +msgid "[Environment assets](5-env_assets.md)" +msgstr "[Environment assets](5-env_assets.md)" #~ msgid "" #~ "FaSim-Isaac/\n" @@ -568,3 +940,260 @@ msgstr "[合成数据](../../2-how_to/7-synthetic_data/0-index.md)" #~ " 和场景子模块,可安装 Isaac ROS 2 Jazzy " #~ "overlay,并启动 Sim。" +#~ msgid "NVIDIA Isaac Sim integration for FiveAges Sim." +#~ msgstr "FiveAges Sim 的 NVIDIA Isaac Sim 集成。" + +#~ msgid "" +#~ "**Repository:** [fiveages-sim/FaSim-" +#~ "Isaac](https://github.com/fiveages-sim/FaSim-Isaac)" +#~ msgstr "" +#~ "**仓库:** [fiveages-sim/FaSim-" +#~ "Isaac](https://github.com/fiveages-sim/FaSim-Isaac)" + +#~ msgid "Purpose" +#~ msgstr "用途" + +#~ msgid "" +#~ "**FaSim** is NVIDIA Isaac Sim high-" +#~ "fidelity simulation plus the same ROS" +#~ " 2 运控 stack as the real robot:" +#~ " matching motion capability, plus " +#~ "simulation ground truth. [FaSim-" +#~ "Isaac](https://github.com/fiveages-sim/FaSim-Isaac) " +#~ "is the one-click asset workspace: " +#~ "it pulls robot USD and scene " +#~ "submodules, can install the Isaac ROS" +#~ " 2 Jazzy overlay, and starts Sim." +#~ msgstr "" +#~ "**FaSim** 是 NVIDIA Isaac Sim " +#~ "高保真仿真加上与真机同一套 ROS 2 运控:运动能力对齐,并带仿真真值。[FaSim-" +#~ "Isaac](https://github.com/fiveages-sim/FaSim-Isaac) " +#~ "是一键资产工作空间:拉取机器人 USD 与场景子模块,可安装 Isaac ROS " +#~ "2 Jazzy overlay,并启动 Sim。" + +#~ msgid "Prerequisites" +#~ msgstr "前提条件" + +#~ msgid "NVIDIA Isaac Sim binary (GPU + matching drivers)" +#~ msgstr "NVIDIA Isaac Sim 二进制(GPU 及匹配驱动)" + +#~ msgid "" +#~ "Default path `ISAACSIM_DIR` (`~/isaacsim`); " +#~ "override in `config/fa_sim.local.conf` or the" +#~ " environment" +#~ msgstr "默认路径 `ISAACSIM_DIR`(`~/isaacsim`);在 `config/fa_sim.local.conf` 或环境变量中覆盖" + +#~ msgid "" +#~ "Do not hardcode a single Isaac " +#~ "minor version. `./init.sh` operation 2 " +#~ "queries GitHub stable tags; fallback " +#~ "list in `config/fa_sim.conf` currently `6.0.1`" +#~ " / `6.0.0` / `5.1.0`." +#~ msgstr "" +#~ "不要写死某一个 Isaac 次版本号。`./init.sh` 操作 2 会查询" +#~ " GitHub 稳定 tag;回退列表见 `config/fa_sim.conf`,目前是 " +#~ "`6.0.1` / `6.0.0` / `5.1.0`。" + +#~ msgid "Installation" +#~ msgstr "安装" + +#~ msgid "" +#~ "git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" +#~ "cd FaSim-Isaac\n" +#~ "./init.sh\n" +#~ "./run.sh" +#~ msgstr "" +#~ "git clone git@github.com:fiveages-sim/FaSim-Isaac.git\n" +#~ "cd FaSim-Isaac\n" +#~ "./init.sh\n" +#~ "./run.sh" + +#~ msgid "What `./init.sh` does:" +#~ msgstr "`./init.sh` 做什么:" + +#~ msgid "" +#~ "Initialize selected submodules (`.gitmodules` " +#~ "/ `submodules_visibility.conf`; public default)" +#~ msgstr "初始化勾选的子模块(`.gitmodules` / `submodules_visibility.conf`;默认 public)" + +#~ msgid "" +#~ "Optional Isaac ROS 2 Jazzy workspace " +#~ "(`isaac_jazzy_ws/`). Override version with " +#~ "`ISAAC_SIM_VERSION=… ./init.sh`" +#~ msgstr "" +#~ "可选 Isaac ROS 2 Jazzy " +#~ "工作空间(`isaac_jazzy_ws/`)。用 `ISAAC_SIM_VERSION=… ./init.sh`" +#~ " 覆盖版本" + +#~ msgid "" +#~ "What `./run.sh` does: optional CPU " +#~ "governor, optional Zenoh router, then a" +#~ " menu — **PhysX** / **Newton** / " +#~ "**Headless Streaming**. There is no " +#~ "`./run.sh --robot`, `--headless`, or `--env`." +#~ msgstr "" +#~ "`./run.sh` 做什么:可选 CPU 调频、可选 Zenoh " +#~ "router,然后是菜单 — **PhysX** / **Newton** /" +#~ " **Headless Streaming**。没有 `./run.sh " +#~ "--robot`、`--headless` 或 `--env`。" + +#~ msgid "Local config:" +#~ msgstr "本机配置:" + +#~ msgid "" +#~ "cp config/fa_sim.local.template.conf config/fa_sim.local.conf\n" +#~ "# edit ISAACSIM_DIR / ISAAC_SIM_DEFAULT_VERSION" +#~ msgstr "" +#~ "cp config/fa_sim.local.template.conf config/fa_sim.local.conf\n" +#~ "# edit ISAACSIM_DIR / ISAAC_SIM_DEFAULT_VERSION" + +#~ msgid "ROS 2 Connection" +#~ msgstr "ROS 2 连接" + +#~ msgid "" +#~ "In a separate terminal (robot name " +#~ "is a ROS 2 launch argument, not" +#~ " a FaSim flag):" +#~ msgstr "在另一个终端(机器人名称是 ROS 2 launch 参数,不是 FaSim 标志):" + +#~ msgid "Structure" +#~ msgstr "结构" + +#~ msgid "" +#~ "FaSim-Isaac/\n" +#~ "├── init.sh\n" +#~ "├── run.sh\n" +#~ "├── config/ # fa_sim.conf +" +#~ " optional fa_sim.local.conf\n" +#~ "├── robots/ # → robot_usds\n" +#~ "├── environment/\n" +#~ "│ ├── fiveages_env/ # → fiveages-env-usds\n" +#~ "│ └── fa-project-usd/ # → fa-project-usd (private)\n" +#~ "└── isaac_jazzy_ws/ # created by init.sh operation 2" +#~ msgstr "" +#~ "FaSim-Isaac/\n" +#~ "├── init.sh\n" +#~ "├── run.sh\n" +#~ "├── config/ # fa_sim.conf +" +#~ " optional fa_sim.local.conf\n" +#~ "├── robots/ # → robot_usds\n" +#~ "├── environment/\n" +#~ "│ ├── fiveages_env/ # → fiveages-env-usds\n" +#~ "│ └── fa-project-usd/ # → fa-project-usd (private)\n" +#~ "└── isaac_jazzy_ws/ # created by init.sh operation 2" + +#~ msgid "Submodules" +#~ msgstr "子模块" + +#~ msgid "Path" +#~ msgstr "路径" + +#~ msgid "Repository" +#~ msgstr "仓库" + +#~ msgid "Visibility" +#~ msgstr "可见性" + +#~ msgid "robot_usds" +#~ msgstr "robot_usds" + +#~ msgid "Public" +#~ msgstr "公开" + +#~ msgid "`environment/fiveages_env/`" +#~ msgstr "`environment/fiveages_env/`" + +#~ msgid "fiveages-env-usds" +#~ msgstr "fiveages-env-usds" + +#~ msgid "`environment/fa-project-usd/`" +#~ msgstr "`environment/fa-project-usd/`" + +#~ msgid "fa-project-usd" +#~ msgstr "fa-project-usd" + +#~ msgid "Private" +#~ msgstr "私有" + +#~ msgid "Topic Bridge" +#~ msgstr "话题桥接" + +#~ msgid "FaSim-Isaac bridges Isaac Sim to ROS 2:" +#~ msgstr "FaSim-Isaac 将 Isaac Sim 桥接到 ROS 2:" + +#~ msgid "Isaac Topic" +#~ msgstr "Isaac 话题" + +#~ msgid "ROS 2 Topic" +#~ msgstr "ROS 2 话题" + +#~ msgid "Direction" +#~ msgstr "方向" + +#~ msgid "Joint positions" +#~ msgstr "关节位置" + +#~ msgid "`/joint_states`" +#~ msgstr "`/joint_states`" + +#~ msgid "Isaac → ROS" +#~ msgstr "Isaac → ROS" + +#~ msgid "`/joint_commands`" +#~ msgstr "`/joint_commands`" + +#~ msgid "ROS → Isaac" +#~ msgstr "ROS → Isaac" + +#~ msgid "" +#~ "Open robot USD from `robots/` and " +#~ "scene USD from `environment/` in Isaac." +#~ " Selection is not a `run.sh` CLI " +#~ "flag." +#~ msgstr "" +#~ "在 Isaac 中从 `robots/` 打开机器人 USD、从 " +#~ "`environment/` 打开场景 USD。选择不是 `run.sh` 的 " +#~ "CLI 参数。" + +#~ msgid "Troubleshooting" +#~ msgstr "故障排除" + +#~ msgid "Isaac Sim Won't Start" +#~ msgstr "Isaac Sim 无法启动" + +#~ msgid "" +#~ "Confirm `ISAACSIM_DIR` contains `isaac-sim.sh`" +#~ " (and the Newton / streaming " +#~ "launchers named in `fa_sim.conf`)" +#~ msgstr "" +#~ "确认 `ISAACSIM_DIR` 包含 `isaac-sim.sh`(以及 " +#~ "`fa_sim.conf` 中的 Newton / streaming " +#~ "启动脚本)" + +#~ msgid "Override the path in `config/fa_sim.local.conf`" +#~ msgstr "在 `config/fa_sim.local.conf` 中覆盖路径" + +#~ msgid "Check GPU drivers: `nvidia-smi`" +#~ msgstr "检查 GPU 驱动:`nvidia-smi`" + +#~ msgid "Check logs: `~/.nvidia-omniverse/logs/`" +#~ msgstr "检查日志:`~/.nvidia-omniverse/logs/`" + +#~ msgid "No ROS 2 Connection" +#~ msgstr "无法连接 ROS 2" + +#~ msgid "Check domain ID matches" +#~ msgstr "检查 Domain ID 是否一致" + +#~ msgid "Verify ROS 2 bridge extension enabled" +#~ msgstr "确认已启用 ROS 2 桥接扩展" + +#~ msgid "Restart `./run.sh` and the ROS 2 nodes" +#~ msgstr "重启 `./run.sh` 和 ROS 2 节点" + +#~ msgid "[robot_usds](3-robot_usds.md)" +#~ msgstr "[robot_usds](3-robot_usds.md)" + +#~ msgid "[Synthetic Data](../../2-how_to/7-synthetic_data/0-index.md)" +#~ msgstr "[合成数据](../../2-how_to/7-synthetic_data/0-index.md)" + diff --git a/locale/zh_CN/LC_MESSAGES/4-reference/simulation/5-env_assets.po b/locale/zh_CN/LC_MESSAGES/4-reference/simulation/5-env_assets.po index 868edc5..bf9ef60 100644 --- a/locale/zh_CN/LC_MESSAGES/4-reference/simulation/5-env_assets.po +++ b/locale/zh_CN/LC_MESSAGES/4-reference/simulation/5-env_assets.po @@ -9,100 +9,100 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-06 16:52+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" -"Language-Team: zh_CN \n" "Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 2.18.0\n" #: ../../source/4-reference/simulation/5-env_assets.md:1 -#: 1f73ff5c585c429b91a8bb33ce739177 +#: c340b61731534cc8858ba84b18a4ee71 msgid "Environment Assets" msgstr "环境资产" #: ../../source/4-reference/simulation/5-env_assets.md:3 -#: acea276acd9948bb80ce06110d52d671 +#: a4c2b3493f3b4bf685ecbfddaf834607 msgid "USD environment and scene assets for simulation." msgstr "用于仿真的 USD 环境与场景资产。" #: ../../source/4-reference/simulation/5-env_assets.md:5 -#: 5816ccc0b2bf4ba2b8398288e9d20e5f +#: 8fb11de8a2cc4a949435df3985e2ec54 msgid "Overview" msgstr "概述" #: ../../source/4-reference/simulation/5-env_assets.md:7 -#: fd9a0d70159e400b8a7414c954da8491 +#: f03d22a6eef84f59be9fdee6521d8d81 msgid "Environment assets are separate from robot assets:" msgstr "环境资产与机器人资产相互独立:" #: ../../source/4-reference/simulation/5-env_assets.md:8 -#: 9c3da8ee646c4418a16f258ee0dc4c79 +#: 5e3739e20cf74f0b878ea6bd5e4b3132 msgid "**robot_usds** — Robot models" msgstr "**robot_usds** — 机器人模型" #: ../../source/4-reference/simulation/5-env_assets.md:9 -#: cf77724767604a9db8e233eec42b80a6 +#: 4b73304d2b9e47fbb097930eb6c35039 msgid "**Environment assets** — Scenes, objects, terrain" msgstr "**环境资产** — 场景、物体、地形" #: ../../source/4-reference/simulation/5-env_assets.md:11 -#: e3fbdca0941d4a9a8a57c05ad0a1d46d +#: 5abe9d0582284fc2b33399334e88b7a0 msgid "fiveages-env-usds" msgstr "fiveages-env-usds" #: ../../source/4-reference/simulation/5-env_assets.md:13 -#: 077db051e0114600b3b3e92c6d478e9a +#: acb8f2b4fe584e5ebb21f23c77fa0fa1 msgid "" -"**Repository:** [fiveages-sim/fiveages-env-" -"usds](https://github.com/fiveages-sim/fiveages-env-usds)" +"**Repository:** [fiveages-sim/fiveages-env-usds](https://github.com" +"/fiveages-sim/fiveages-env-usds)" msgstr "" -"**仓库:** [fiveages-sim/fiveages-env-usds](https://github.com/fiveages-" -"sim/fiveages-env-usds)" +"**仓库:** [fiveages-sim/fiveages-env-usds](https://github.com/fiveages-sim" +"/fiveages-env-usds)" #: ../../source/4-reference/simulation/5-env_assets.md:15 -#: ../../source/4-reference/simulation/5-env_assets.md:53 -#: d4c69ed3663f4d2280cf7d00fd4094ce e2ac62780ed64695bc4b1ac516a58920 +#: ../../source/4-reference/simulation/5-env_assets.md:45 +#: 24e3d30f03ad40e1a102320408eb5a84 f0033160313e474b919d951d81033e65 msgid "Purpose" msgstr "用途" #: ../../source/4-reference/simulation/5-env_assets.md:17 -#: 66e67dd9249148319de41dfcf0589cdc +#: 64fd13bfb6c845bdabff931ffe8cba33 msgid "Public environment USD assets:" msgstr "公开的环境 USD 资产:" #: ../../source/4-reference/simulation/5-env_assets.md:18 -#: fa3c58cfa9cf4f2c9793dce9f8c807cb +#: 5e13eac82d0942cfb3824ef6f1de95ca msgid "Indoor scenes (office, lab)" msgstr "室内场景(办公室、实验室)" #: ../../source/4-reference/simulation/5-env_assets.md:19 -#: 42312e6c087d4227888a989e567478ad +#: 456d57dd41d5448bba3e441e4a487717 msgid "Objects for manipulation" msgstr "操作物体" #: ../../source/4-reference/simulation/5-env_assets.md:20 -#: 7852e4f0eaac46fc997d6def872e38e3 +#: 70f294dd31664aad88b9d71b1dc25fef msgid "Terrain" msgstr "地形" #: ../../source/4-reference/simulation/5-env_assets.md:22 -#: ../../source/4-reference/simulation/5-env_assets.md:57 -#: 7eebf3da79604320aeeee1ce2c65ee07 9124ce85eb2a4459b9320dbd35507575 +#: ../../source/4-reference/simulation/5-env_assets.md:49 +#: 8b12a331a2d24052bb7eece1106b0c3b d3df7f1faa4441e2ab2a172173d9da55 msgid "Location" msgstr "位置" #: ../../source/4-reference/simulation/5-env_assets.md:24 -#: 31f13680c191411aa034522bd403350c +#: 876ccea5726747b898713123fb9d72de msgid "In FaSim-Isaac:" msgstr "在 FaSim-Isaac 中:" #: ../../source/4-reference/simulation/5-env_assets.md:25 -#: 28f6d48854bb471492e909e0282d8331 +#: 86a8894ae4e74f77b0dbdf61e1fee2f3 msgid "" "FaSim-Isaac/\n" "└── environment/\n" @@ -113,56 +113,48 @@ msgstr "" " └── fiveages_env/ # → fiveages-env-usds" #: ../../source/4-reference/simulation/5-env_assets.md:31 -#: ba0e2c4f47a24f8994e3adcb13ae474c +#: c4d045eab484453c990872ceebdd8799 msgid "Usage" msgstr "使用方法" #: ../../source/4-reference/simulation/5-env_assets.md:33 -#: a50076f203ff4da5bfcfa80294b46d85 +#: 85460f0378ef4190a5149a27244aa9c1 msgid "" -"# Load environment in Isaac Sim\n" -"from omni.isaac.core.utils.stage import add_reference_to_stage\n" -"\n" -"add_reference_to_stage(\n" -" usd_path=\"environment/fiveages_env/office.usd\",\n" -" prim_path=\"/World/Environment\"\n" -")\n" -msgstr "" -"# Load environment in Isaac Sim\n" -"from omni.isaac.core.utils.stage import add_reference_to_stage\n" -"\n" -"add_reference_to_stage(\n" -" usd_path=\"environment/fiveages_env/office.usd\",\n" -" prim_path=\"/World/Environment\"\n" -")\n" - -#: ../../source/4-reference/simulation/5-env_assets.md:43 -#: b7b970ca043d4f0088371f3077ce0a3e +"Start Isaac with FaSim `./run.sh` and open the scene USD under " +"`environment/fiveages_env/`." +msgstr "用 FaSim 的 `./run.sh` 启动 Isaac,并打开 `environment/fiveages_env/` 下的场景 USD。" + +#: ../../source/4-reference/simulation/5-env_assets.md:35 +#: af6785ab6b60477098021d9d001740af msgid "fa-project-usd" msgstr "fa-project-usd" -#: ../../source/4-reference/simulation/5-env_assets.md:45 -#: 3a96bcf208dd4ebda9fbdd60ca76c60f -msgid "**Repository:** fa-project-usd (private)" -msgstr "**仓库:** fa-project-usd(私有)" +#: ../../source/4-reference/simulation/5-env_assets.md:37 +#: ec106c16665041b6b880cf8f50de6776 +msgid "" +"**Repository:** [fa-project-usd](https://github.com/fiveages-sim/fa-" +"project-usd) (private; the link needs access)" +msgstr "" +"**仓库:** [fa-project-usd](https://github.com/fiveages-sim/fa-project-" +"usd)(私有;链接需要权限)" -#: ../../source/4-reference/simulation/5-env_assets.md:47 -#: 92b3e58e24c34752bb3970c4a8bc3eef +#: ../../source/4-reference/simulation/5-env_assets.md:39 +#: 641fb2827f8b4085adf583428d086b9d msgid "Access Required" msgstr "需要访问权限" -#: ../../source/4-reference/simulation/5-env_assets.md:50 -#: e492d6891dc544069a882e638027706e +#: ../../source/4-reference/simulation/5-env_assets.md:42 +#: 34b2e17e16d346258121ef2b10514673 msgid "This repository is private." msgstr "该仓库为私有仓库。" -#: ../../source/4-reference/simulation/5-env_assets.md:55 -#: 55d26600330d423097e1960a3f968877 +#: ../../source/4-reference/simulation/5-env_assets.md:47 +#: aac3bbf2c9d3418e8ee100a039118ebe msgid "Internal project-specific USD scenes and assets." msgstr "内部项目专用的 USD 场景与资产。" -#: ../../source/4-reference/simulation/5-env_assets.md:59 -#: 0b1e3df211c54cffa48bd1c926c76194 +#: ../../source/4-reference/simulation/5-env_assets.md:51 +#: e6343b19cd824c95afd432b398b09e84 msgid "" "FaSim-Isaac/\n" "└── environment/\n" @@ -172,88 +164,92 @@ msgstr "" "└── environment/\n" " └── fa-project-usd/" -#: ../../source/4-reference/simulation/5-env_assets.md:65 -#: 14d67c23c75641709b27acadf4e12c99 +#: ../../source/4-reference/simulation/5-env_assets.md:57 +#: 2b497a455b0b4437817f6cec0397927a msgid "Not robot_usds Submodules" msgstr "不是 robot_usds 的子模块" -#: ../../source/4-reference/simulation/5-env_assets.md:67 -#: c7c732cf9f2643c38428a272767a6809 +#: ../../source/4-reference/simulation/5-env_assets.md:59 +#: b4c8e8e28bc049aa8ef7d1af128788f9 msgid "Important" msgstr "重要" -#: ../../source/4-reference/simulation/5-env_assets.md:70 -#: 94a4c83e33374d07ae4aac04d8151bc4 +#: ../../source/4-reference/simulation/5-env_assets.md:62 +#: 78fe321f6ad64377a2831fa7f382bf04 msgid "Environment assets are **not** submodules of `robot_usds`. They are:" msgstr "环境资产**不是** `robot_usds` 的子模块。它们是:" -#: ../../source/4-reference/simulation/5-env_assets.md:71 -#: ef268a7eb3f6478f960f9580d03d10b5 +#: ../../source/4-reference/simulation/5-env_assets.md:63 +#: cfa384529b8f48c7b8ffbf5f50bc59fe msgid "Sibling directories in FaSim-Isaac" msgstr "FaSim-Isaac 中的同级目录" -#: ../../source/4-reference/simulation/5-env_assets.md:72 -#: cc158d76c9574d5a9996afe0860fce2d +#: ../../source/4-reference/simulation/5-env_assets.md:64 +#: b4e25c9f8d5c4ca59bf73af9104bc7de msgid "Separate submodules of FaSim-Isaac itself" msgstr "FaSim-Isaac 自身的独立子模块" -#: ../../source/4-reference/simulation/5-env_assets.md:75 -#: d20b3817412b41e9bfa8367ffbf9c04d +#: ../../source/4-reference/simulation/5-env_assets.md:67 +#: 9dc3f7e9bd6844c1a1138c3f74539022 msgid "Usage in FaSim" msgstr "在 FaSim 中的用法" -#: ../../source/4-reference/simulation/5-env_assets.md:77 -#: 2385b94833484768b71b6a4145828baf +#: ../../source/4-reference/simulation/5-env_assets.md:69 +#: aa37f20aa306473a92c3686e6faed112 msgid "" "Start Isaac with FaSim `./run.sh` (PhysX / Newton / Headless Streaming " -"menu). Open the scene USD under `environment/fiveages_env/` (or `fa-project-" -"usd/`) in Isaac. There is no `./run.sh --env` flag." +"menu). Open the scene USD under `environment/fiveages_env/` (or `fa-" +"project-usd/`) in Isaac. There is no `./run.sh --env` flag." msgstr "" -"用 FaSim `./run.sh` 启动 Isaac(PhysX / Newton / Headless Streaming 菜单)。在 Isaac " -"中打开 `environment/fiveages_env/`(或 `fa-project-usd/`)下的场景 USD。没有 `./run.sh " -"--env` 参数。" +"用 FaSim `./run.sh` 启动 Isaac(PhysX / Newton / Headless Streaming 菜单)。在 " +"Isaac 中打开 `environment/fiveages_env/`(或 `fa-project-usd/`)下的场景 USD。没有 " +"`./run.sh --env` 参数。" -#: ../../source/4-reference/simulation/5-env_assets.md:79 -#: 03c8d2530e464042ae6b2110ca40a7d9 +#: ../../source/4-reference/simulation/5-env_assets.md:71 +#: f23104095df54a988191b10f45ba4256 msgid "Creating Custom Environments" msgstr "创建自定义环境" -#: ../../source/4-reference/simulation/5-env_assets.md:81 -#: cd26662c40ab4e6c949ae8871271c970 -msgid "Create USD scene in Isaac Sim" -msgstr "在 Isaac Sim 中创建 USD 场景" +#: ../../source/4-reference/simulation/5-env_assets.md:73 +#: 85fdecf665e44ce188fdc63693bfde46 +msgid "Create the USD scene in Isaac Sim." +msgstr "在 Isaac Sim 里创建 USD 场景。" -#: ../../source/4-reference/simulation/5-env_assets.md:82 -#: 87f47b5f5ea54e598e3529a9e03bc433 -msgid "Export to `environment/` directory" -msgstr "导出到 `environment/` 目录" - -#: ../../source/4-reference/simulation/5-env_assets.md:83 -#: 62b3cfebb5e243d4b607e608bbf5ce6e -msgid "Reference in configuration" -msgstr "在配置中引用" +#: ../../source/4-reference/simulation/5-env_assets.md:74 +#: 04a5991f850048268079666458604b4e +msgid "" +"Put it under `environment/fiveages_env/` or, with access, under [fa-" +"project-usd](https://github.com/fiveages-sim/fa-project-usd)." +msgstr "" +"放到 `environment/fiveages_env/`,或有权限时放到 [fa-project-" +"usd](https://github.com/fiveages-sim/fa-project-usd)。" -#: ../../source/4-reference/simulation/5-env_assets.md:85 -#: 4a415ab88839400098f1f0333965411b +#: ../../source/4-reference/simulation/5-env_assets.md:75 +#: 6bce1b50b4934a479240ca6900b732ff msgid "" -"# Custom scene setup\n" -"scene_path = \"environment/custom_scene.usd\"\n" +"Open that file from `./run.sh`. On `main`, a project is `scene.usd(a)`, " +"`objects/`, and `env/` ([README](https://github.com/fiveages-sim/fa-" +"project-usd/blob/main/README.md)). `robot.yaml`, `task_configs/`, and " +"`maps/` or `map/` sit on branch `feature/sinopec-test-tube-picking` " +"(ahead of `main`, not merged)." msgstr "" -"# Custom scene setup\n" -"scene_path = \"environment/custom_scene.usd\"\n" +"用 `./run.sh` 打开该文件。在 `main` 上,一个项目是 `scene.usd(a)`、`objects/` 和 " +"`env/`([README](https://github.com/fiveages-sim/fa-project-" +"usd/blob/main/README.md))。`robot.yaml`、`task_configs/` 以及 `maps/` 或 " +"`map/` 在分支 `feature/sinopec-test-tube-picking` 上(领先 `main`,尚未合入)。" -#: ../../source/4-reference/simulation/5-env_assets.md:90 -#: fb821cc08dfd4fc8aaeaeddf6319b779 +#: ../../source/4-reference/simulation/5-env_assets.md:77 +#: 6e8a35c96f894237a9aaf6e9b65eb56e msgid "Related" msgstr "相关内容" -#: ../../source/4-reference/simulation/5-env_assets.md:92 -#: 263d9cfe4e4240ad84e294e6d57d2924 +#: ../../source/4-reference/simulation/5-env_assets.md:79 +#: 9118f77b0e074ac78ed4b7bcb3a98208 msgid "[robot_usds](3-robot_usds.md)" msgstr "[robot_usds](3-robot_usds.md)" -#: ../../source/4-reference/simulation/5-env_assets.md:93 -#: 1b33dbbbf05946f98ad2eb35bb679bdf +#: ../../source/4-reference/simulation/5-env_assets.md:80 +#: 683649b091dd42dfae0cec74343eb9cd msgid "[FaSim-Isaac](2-fasim_isaac.md)" msgstr "[FaSim-Isaac](2-fasim_isaac.md)" @@ -294,3 +290,37 @@ msgstr "[FaSim-Isaac](2-fasim_isaac.md)" #~ msgid "./run.sh --env office\n" #~ msgstr "./run.sh --env office\n" + +#~ msgid "" +#~ "# Load environment in Isaac Sim\n" +#~ "from omni.isaac.core.utils.stage import add_reference_to_stage\n" +#~ "\n" +#~ "add_reference_to_stage(\n" +#~ " usd_path=\"environment/fiveages_env/office.usd\",\n" +#~ " prim_path=\"/World/Environment\"\n" +#~ ")\n" +#~ msgstr "" +#~ "# Load environment in Isaac Sim\n" +#~ "from omni.isaac.core.utils.stage import add_reference_to_stage\n" +#~ "\n" +#~ "add_reference_to_stage(\n" +#~ " usd_path=\"environment/fiveages_env/office.usd\",\n" +#~ " prim_path=\"/World/Environment\"\n" +#~ ")\n" + +#~ msgid "**Repository:** fa-project-usd (private)" +#~ msgstr "**仓库:** fa-project-usd(私有)" + +#~ msgid "Export to `environment/` directory" +#~ msgstr "导出到 `environment/` 目录" + +#~ msgid "Reference in configuration" +#~ msgstr "在配置中引用" + +#~ msgid "" +#~ "# Custom scene setup\n" +#~ "scene_path = \"environment/custom_scene.usd\"\n" +#~ msgstr "" +#~ "# Custom scene setup\n" +#~ "scene_path = \"environment/custom_scene.usd\"\n" + diff --git a/locale/zh_CN/LC_MESSAGES/6-more_applications/4-simulation_engineer.po b/locale/zh_CN/LC_MESSAGES/6-more_applications/4-simulation_engineer.po index cbf3d40..8e58b77 100644 --- a/locale/zh_CN/LC_MESSAGES/6-more_applications/4-simulation_engineer.po +++ b/locale/zh_CN/LC_MESSAGES/6-more_applications/4-simulation_engineer.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FiveAges Sim \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-10-07 04:34+0000\n" +"POT-Creation-Date: 2026-11-13 09:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: zh_CN\n" @@ -21,42 +21,44 @@ msgstr "" "Generated-By: Babel 2.18.0\n" #: ../../source/6-more_applications/4-simulation_engineer.md:1 -#: 7f2aae7d76d44869a96b3615b2b97463 +#: 7706a19c08a542a7914f9c42478dfa29 msgid "Simulation engineer" msgstr "仿真工程师" #: ../../source/6-more_applications/4-simulation_engineer.md:3 -#: fccf6cafb96f42aaa3032ef9aca968f2 +#: 3bc877aafb074de0986dd006bb21d488 msgid "" "For engineers who import sim assets, configure a robot in this stack, and" " compose motions in Isaac (not Gazebo-only beginners)." msgstr "面向导入仿真资产、在本栈配置机器人、并在 Isaac 里编排动作的工程师(不是只做 Gazebo 的新手路径)。" #: ../../source/6-more_applications/4-simulation_engineer.md:5 -#: d83a845150d249369d103e7cc29d0ed5 +#: 11deec552a63426dbc3ff1a694b9ac1f msgid "1. Isaac line and USD assets" msgstr "1. Isaac 线与 USD 资产" #: ../../source/6-more_applications/4-simulation_engineer.md:7 -#: 11cde33a75cb44258ea51613484c5764 +#: 9946e2f9e7044a0f81de4cbf331d5c34 msgid "" "[Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md) — FaSim-Isaac " -"`./init.sh` then `./run.sh`; ROS 2 side `hardware:=isaac`." +"`./init.sh` then `./run.sh`. ROS 2 is either `hardware:=isaac` (topic " +"bridge) or in-process `isaac_sim` on Play." msgstr "" -"[Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md) — FaSim-Isaac `./init.sh` 然后 " -"`./run.sh`;ROS 2 侧 `hardware:=isaac`。" +"[Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md):FaSim-Isaac 先 " +"`./init.sh` 再 `./run.sh`。ROS 2 要么是 `hardware:=isaac`(话题桥),要么是播放时的进程内 " +"`isaac_sim`。" #: ../../source/6-more_applications/4-simulation_engineer.md:8 -#: 4faa6e44602a435f857b80b8904c34ec +#: 707f60aeab7e4f67bec296c76b958a98 msgid "" "[Isaac Scenes and USD](../2-how_to/7-synthetic_data/1-isaac_scenes.md) — " "how FaSim pulls [robot_usds](../4-reference/simulation/3-robot_usds.md)." msgstr "" -"[Isaac 场景与 USD](../2-how_to/7-synthetic_data/1-isaac_scenes.md) — FaSim 如何拉取 " -"[robot_usds](../4-reference/simulation/3-robot_usds.md)。" +"[Isaac 场景与 USD](../2-how_to/7-synthetic_data/1-isaac_scenes.md) — FaSim " +"如何拉取 [robot_usds](../4-reference/simulation/3-robot_usds.md)。" #: ../../source/6-more_applications/4-simulation_engineer.md:9 -#: 1d0f28d704704a85b1fe4e26fe21878b +#: 8aaaf63b2ed44380a64b158ce7491d50 msgid "" "[robot_usds](../4-reference/simulation/3-robot_usds.md) and [USD " "submodules](../4-reference/simulation/4-usd_submodules.md) — brand " @@ -66,7 +68,7 @@ msgstr "" "子模块](../4-reference/simulation/4-usd_submodules.md) — 品牌目录、公开与私有树。" #: ../../source/6-more_applications/4-simulation_engineer.md:10 -#: 7fac9e4b295340039e268539f775597f +#: e71199b9281d48eca0163f306b4fda67 msgid "" "Environment assets: [env " "assets](../4-reference/simulation/5-env_assets.md) when the scene needs " @@ -74,45 +76,50 @@ msgid "" msgstr "环境资产:场景不只是机器人时见[环境资产](../4-reference/simulation/5-env_assets.md)。" #: ../../source/6-more_applications/4-simulation_engineer.md:12 -#: bcc7fbeed30c4d3aa2ce42e011179c2c +#: b8324689d0a641f084d9c690751d33e6 msgid "" "Gazebo (different backend): [Gazebo " "Simulation](../2-how_to/2-simulation/3-gazebo_sim.md), [Gazebo " "reference](../4-reference/simulation/1-gazebo.md). There is **no** " -"`hardware:=mock`; keys are `mock_components` / `gz` / `isaac` / `real`." +"`hardware:=mock`; keys are `mock_components` / `gz` / `isaac` / " +"`isaac_sim` / `real`." msgstr "" -"Gazebo(另一套后端):[Gazebo 仿真](../2-how_to/2-simulation/3-gazebo_sim.md)、[Gazebo " -"参考](../4-reference/simulation/1-gazebo.md)。**没有** `hardware:=mock`;键是 " -"`mock_components` / `gz` / `isaac` / `real`。" +"Gazebo (different backend): [Gazebo " +"Simulation](../2-how_to/2-simulation/3-gazebo_sim.md), [Gazebo " +"reference](../4-reference/simulation/1-gazebo.md). There is **no** " +"`hardware:=mock`; keys are `mock_components` / `gz` / `isaac` / " +"`isaac_sim` / `real`." #: ../../source/6-more_applications/4-simulation_engineer.md:14 -#: 0d93db0a7b034cdd9bb8b7882c870adc +#: 946b6070cb9c467ebb6d005749f5c05b msgid "2. Robot configuration" msgstr "2. 机器人配置" #: ../../source/6-more_applications/4-simulation_engineer.md:16 -#: c07d72fec21c4185a7e294edd708f3e9 +#: 2ac72a47e6ed460dafdbc16cca42371d msgid "" "[Switch Robot](../2-how_to/1-basic_operations/2-switch_robot.md) — " "`robot:=` and EEF `type` / `left_type` / `right_type`." msgstr "" -"[切换机器人](../2-how_to/1-basic_operations/2-switch_robot.md) — `robot:=` 和末端 " -"`type` / `left_type` / `right_type`。" +"[切换机器人](../2-how_to/1-basic_operations/2-switch_robot.md) — `robot:=` 和末端" +" `type` / `left_type` / `right_type`。" #: ../../source/6-more_applications/4-simulation_engineer.md:17 -#: 7800329c23d74a20b865faa5c67e544f +#: 3c8a270290574965bc295dcb0dfe1fac msgid "" "[robot_common_launch](../4-reference/descriptions/2-common.md) — launch " "args, machine profile, merge order." -msgstr "[robot_common_launch](../4-reference/descriptions/2-common.md) — launch 参数、机台配置、合并顺序。" +msgstr "" +"[robot_common_launch](../4-reference/descriptions/2-common.md) — launch " +"参数、机台配置、合并顺序。" #: ../../source/6-more_applications/4-simulation_engineer.md:18 -#: c47c432ecc224197a7f71a3903bb0596 +#: 4ac4d263532b4ce68a956530057cd8f7 msgid "[Naming Conventions](../3-concepts/3-naming_conventions.md)." msgstr "[命名约定](../3-concepts/3-naming_conventions.md)。" #: ../../source/6-more_applications/4-simulation_engineer.md:19 -#: d23286cf3b2947d78d9743af30ba1775 +#: 52882b93655f40728c97bb9c3f5f1965 msgid "" "[Add a Robot](../2-how_to/6-deployment/10-add_a_robot.md) — copy a real " "description package; use the plugin class from that robot’s " @@ -122,7 +129,7 @@ msgstr "" "`xacro/ros2_control/*.xacro` 里的。" #: ../../source/6-more_applications/4-simulation_engineer.md:20 -#: b09ce7c1aee941eabdc984c18a1675df +#: 1d6f61efc1aa4d03bd48d9f945123956 msgid "" "Brand packages: [Brand Packages " "(Public)](../4-reference/descriptions/3-brand_public.md). FiveAges " @@ -130,47 +137,47 @@ msgid "" "descriptions](../4-reference/descriptions/4-fiveages_umbrella.md)." msgstr "" "品牌包:[品牌包(公开)](../4-reference/descriptions/3-brand_public.md)。FiveAges 轮臂 " -"gitlink:[FiveAges 描述](../4-reference/descriptions/4-fiveages_umbrella.md)。" +"gitlink:[FiveAges " +"描述](../4-reference/descriptions/4-fiveages_umbrella.md)。" #: ../../source/6-more_applications/4-simulation_engineer.md:22 -#: 381e7239140842edb8c9135eb06ceca4 +#: 139da41f278548ca9397e1d3133afc4f msgid "3. Action composition / orchestration" msgstr "3. 动作编排" #: ../../source/6-more_applications/4-simulation_engineer.md:24 -#: 35e006eac28d49099fa58f8d59d8684f +#: 7768862e901c4e9e85da31c09105af9b msgid "" "Isaac datagen motions are **task_queue YAML skills**, not a Python " "`ActionSequence` API." msgstr "Isaac 数据生成动作是 **task_queue YAML skill**,不是 Python `ActionSequence` API。" #: ../../source/6-more_applications/4-simulation_engineer.md:26 -#: ddbf290f944243bd8376d880f845aa8a +#: e4460d79b9824134ba7493f367789531 msgid "[Synthetic Data](../2-how_to/7-synthetic_data/0-index.md) — pipeline map." msgstr "[合成数据](../2-how_to/7-synthetic_data/0-index.md) — 流水线总览。" #: ../../source/6-more_applications/4-simulation_engineer.md:27 -#: 86fe537cfdfd4adf987213dbfda661c9 +#: dce2a757c0934a46a57ad9f80e789728 msgid "" "[Interface and " "Orchestration](../2-how_to/7-synthetic_data/2-orchestration.md) — " "`./init.sh all-motion`, `motion-generation`, `ros2-stack`." msgstr "" -"[接口与编排](../2-how_to/7-synthetic_data/2-orchestration.md) — `./init.sh all-motion`、" -"`motion-generation`、`ros2-stack`。" +"[接口与编排](../2-how_to/7-synthetic_data/2-orchestration.md) — `./init.sh " +"all-motion`、`motion-generation`、`ros2-stack`。" #: ../../source/6-more_applications/4-simulation_engineer.md:28 -#: 9b0640688e104d7db3357b9b14353eea +#: 47d10bb321f543f3ba38fa03e4a67a9e msgid "" "[robot_action_composer](../4-reference/python_apps/5-robot_action_composer.md)" -" — documented branch `feature/dex-grasp-generator`; skill names and flags" -" on that README / `docs/`." +" — `main`; skill names and flags on that README / `docs/`." msgstr "" -"[robot_action_composer](../4-reference/python_apps/5-robot_action_composer.md)" -" — 文档分支 `feature/dex-grasp-generator`;skill 名和参数见该 README / `docs/`。" +"[robot_action_composer](../4-reference/python_apps/5-robot_action_composer.md):`main`;技能名和参数见该" +" README / `docs/`。" #: ../../source/6-more_applications/4-simulation_engineer.md:30 -#: 77ccb29c35374bb2a70480e6f418ba17 +#: f10dda23f58f4dea8bf0ebb7bb0f3c32 msgid "" "Composer `--robot fiveages_w2` is a real key on composer `ROS2_STACK.md`." " It is **not** an `./init_repo.sh --robot` flag." @@ -179,24 +186,25 @@ msgstr "" "`./init_repo.sh --robot` 参数。" #: ../../source/6-more_applications/4-simulation_engineer.md:32 -#: e1e78185c70e4060a145fe4378422a9f +#: 7930dfc32c154082a7c073df383e7de8 msgid "Related" msgstr "相关" #: ../../source/6-more_applications/4-simulation_engineer.md:34 -#: d54dec41009f44fc98f9d03ef53714e0 +#: 011f649d4f334c06bb2b3521fb27f6ca msgid "[FaSim-Isaac](../4-reference/simulation/2-fasim_isaac.md)" msgstr "[FaSim-Isaac](../4-reference/simulation/2-fasim_isaac.md)" #: ../../source/6-more_applications/4-simulation_engineer.md:35 -#: 2750583cf0eb43dcbcb57e9432c3d6fd +#: f32e08987abf4ef7ae182ac956b4de6e msgid "[ros2_control here](../3-concepts/1-ros2_control_here.md)" msgstr "[本栈中的 ros2_control](../3-concepts/1-ros2_control_here.md)" #: ../../source/6-more_applications/4-simulation_engineer.md:36 -#: 49ad3c658dc44191bf8c0b66d24a8b34 +#: 4aecc9d8a2674075b341e0a333c3474b msgid "" "[LeRobot Record and " "Export](../2-how_to/7-synthetic_data/3-record_export.md) — stop at the " "dataset" msgstr "[LeRobot 录制与导出](../2-how_to/7-synthetic_data/3-record_export.md) — 停在数据集" + diff --git a/source/0-overview/2-learning_path.md b/source/0-overview/2-learning_path.md index c58f25b..c441f08 100644 --- a/source/0-overview/2-learning_path.md +++ b/source/0-overview/2-learning_path.md @@ -13,7 +13,7 @@ This guide provides a structured day-by-day approach to learning the FiveAges Si | Day 4 | Python interface | 2-3 hours | | Day 5 | Teleoperation | 2-4 hours | | Day 6 | Real hardware | Varies | -| Day 7+ | Add a robot | Project-dependent | +| Day 7 | Bring one new robot into FaSim | One robot, mock then sim | ```{admonition} Real Hardware for External Users :class: tip @@ -111,10 +111,9 @@ Use **FaSim-Isaac** `./init.sh` then `./run.sh`. Default Isaac path is `ISAACSIM ```bash ./run.sh ``` -4. In another terminal, launch the ROS 2 side with Isaac hardware: - ```bash - ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac - ``` +4. Connect ROS 2 using **one** of the two Isaac paths in [Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md): + - Topic bridge, from the workspace terminal: `ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac` + - In-process: open a USD whose ROS payload contains `ROS2ControlLaunch` and press Play. That path sets `hardware=isaac_sim` inside Isaac. It is not a second `hardware:=` on `demo.launch.py`. **Primary sources:** [FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac), [robot_usds](https://github.com/fiveages-sim/robot_usds) @@ -197,32 +196,88 @@ Use the matching **branch README** and `./quick_start.sh`. **Acone** / **AC One* ```{admonition} Internal Access Required :class: warning -FA **deploy** (W1, W2, W2R, S2, S2R, dual-arm CCS) still requires access to `fa-deploy-ws`. W1/W2/S2 URDF and Gen1/Gen2 USD remotes are public; **W2R and S2R are not open**. See [FiveAges robot descriptions](../4-reference/descriptions/4-fiveages_umbrella.md). Contact your team lead for workspace access and hardware allocation. +These links need repository access. Without it, GitHub does not open the page. That is expected. + +FA **deploy** (W1, W2, W2R, S2, S2R, dual-arm CCS) uses [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) (default branch `fa-w2`). W1/W2/S2 URDF and Gen1/Gen2 USD remotes are public; **W2R and S2R are not open**. See [FiveAges robot descriptions](../4-reference/descriptions/4-fiveages_umbrella.md). ``` +Open the private checkout you were given, then follow **that repository’s README**. The shared script name is `./init_repo.sh`. Flags and robot IDs stay in that README. + +| Repository | What it is | Access | +|------------|------------|--------| +| [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) | Internal workspace (`fa-w2`) | Required | +| [fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description) | W2R URDF | Required | +| [fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description) | S2R URDF | Required | +| [fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description) | Gen3 URDF | Required | +| [fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3-robot-usds) | Gen3 USD | Required | +| [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller) | Whole-body controller | Required | +| [ocs2-humanoid](https://github.com/fiveages-sim/ocs2-humanoid) | Wheeled-arm motion library | Required | + +More private descriptions, hardware interfaces, and teleop checkouts are linked on the [Repository Map](3-repo_map.md). Public W1 / W2 / S2 URDF stays on [FiveAges robot descriptions](../4-reference/descriptions/4-fiveages_umbrella.md). + **Tasks:** -1. Clone `fa-deploy-ws` and run the init / quick-start scripts named in **that repository’s README** (not public). Flags and robot IDs are documented only there. +1. Open [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) and run the init / quick-start scripts named in that README. 2. Follow [fa-deploy-ws Setup](../1-getting_started/4-fa_deploy_ws.md). **Safety:** Verify in `mock_components` (or that workspace’s documented sim path) before `hardware:=real`. -## Day 7+: Add a Robot +## Day 7: FaSim integration exam -**Goal:** Integrate a new robot into the ecosystem. +**Goal:** Bring **one new robot** into FaSim so Isaac and the ROS 2 运控 stack move it. Pass by taking that robot through mock, then sim, until you can see the joints move. Replaying the existing CR5 or W2 demo is only a warm-up. -**Tasks:** -1. Create a description package with URDF/xacro -2. Add ros2_control hardware-interface YAML -3. Configure OCS2 controller parameters -4. Test progression: mock → simulation → real hardware +**You already need** Days 0–3: `./init_repo.sh`, a launch that reaches HOLD with `hardware:=mock_components`, and FaSim `./init.sh` / `./run.sh`. Isaac Sim is installed and `ISAACSIM_DIR` is set. + +Pick one robot. Add odometry, Nav2, or a dexterous hand only when this robot has them. Work through the steps below. + +Procedure and file layout: [Add a Robot](../2-how_to/6-deployment/10-add_a_robot.md). Isaac start and the two connections: [Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md). Mechanism: [FaSim-Isaac](../4-reference/simulation/2-fasim_isaac.md). + +### Required for every robot + +1. **Description.** A `{robot}_description` package whose xacro has a `ros2_control` block. Simulation plugins come from [`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro). `ros2 launch ocs2_arm_controller demo.launch.py robot:=` (omit `hardware:=`) reaches HOLD before you open Isaac. +2. **USD.** A stage `./run.sh` can open, with one ArticulationRoot for this robot, under [robot_usds](https://github.com/fiveages-sim/robot_usds) or a project scene you can access. There is no `./run.sh --robot`. +3. **One sim connection** for those joints. + - **Topic bridge:** `hardware:=isaac` → `TopicBasedSystem`. The xacro `joint_commands_topic` / `joint_states_topic` equal that graph’s `topicName`. The shared macro writes `/isaac/joint_command` and `/isaac/joint_states`. A robot graph may use other names (W2 topic-bridge payload: `/joint_command` and `/joint_states`). `demo.launch.py` has no namespace argument. + - **In-process:** Play a payload that contains `ROS2ControlLaunch` (W2: [`fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/fiveages.usda)). The node sets `hardware=isaac_sim` and `isaac_prim_path`. The description xacro must accept `isaac_sim`. +4. **Controllers.** Arm or split body: `ocs2_arm_controller` (`demo` or `split_body`). Whole body only when this robot’s planner model includes the mobile base: `full_body.launch.py` and, with access, [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller). Leave `infoFile` empty to keep the description default. To lock a mobile base, use `mobile_base_tcp` and `BASE_LOCK`. `full_body` together with a `fixed_base` info file has no virtual chassis joint for that lock, and arm enable can stay waiting. +5. **Motion you can see.** A small FSM home or joint target changes the same joints in Isaac. + +### Only if this robot has it + +| Piece | When | What to wire | +|-------|------|----------------| +| Chassis / odom | It has a mobile base | Isaac publishes `world → odom → base_*`. `robot_state_publisher` publishes the URDF tree (`base_footprint → base_link` when both exist). OCS2 `baseFrame` is that same link. One publisher per TF edge. A ROS namespace does not rename `frame_id`. | +| Gripper or hand | It has one | Launch `type` / `left_type` / `right_type`. There is no `gripper:=`. | +| Navigation | The scene drives the base on a map | `NavigationLaunch` on the USD. `map` is a path relative to the opened `env/` layer. It starts `navigation_isaac_gt.launch.py`. Composer `ros2-stack` is a separate host process. | +| Second robot | Two articulations in one stage | Each root has its own graph and `ROS2ControlLaunch` `namespace`. Topics live under `//`. Frame names stay `world`, `odom`, `base_link`. | + +### Phases + +1. Mock: the demo launch above, FSM HOLD, joint names from the xacro. +2. `./run.sh`, open your USD, Play runs physics. +3. Topic bridge **or** in-process graph. `ros2 topic echo` the joint-state topic, or `ros2 control list_controllers`. +4. Command a small motion. The sim joints move. On the in-process graph, `ros2 topic hz /clock` tracks the physics step. + +### What you hand in + +- The description package (or branch) and the USD path you opened. +- The launch line **or** the `ROS2ControlLaunch` prim you played. +- The joint-state topic or controller list you saw, and the motion you commanded. + +### Pass when you can show + +- Mock HOLD, then sim Play, on **this** robot. +- Joint state or the controller state interfaces match the xacro joint names. +- A command moves those joints in Isaac. +- If the payload publishes odometry: `world → odom → base_*` from Isaac, URDF tree from `robot_state_publisher`, and no second node on the same edge. +- In-process: `/robot_description` comes from `robot_state_publisher`. The controller manager is started with robot-description publishing off. -See the [Developer Guide](../5-developer/0-index.md) for detailed instructions. +A motion that finishes too fast is a `/clock` problem (physics-step clock versus playback tick). The FaSim reference describes that clock. It is not fixed by editing joint gains. ## Optional: Synthetic data (Isaac) **Goal:** Understand the Isaac datagen path (not Gazebo): USD scene → `ROS2RobotInterface` → composer `task_queue` → LeRobot dataset on disk. -Follow [Synthetic Data](../2-how_to/7-synthetic_data/0-index.md). Documented composer/lerobot branches are `feature/dex-grasp-generator` and `feature/sim-grasp-datagen`. Stop at recording/export; skip training. +Follow [Synthetic Data](../2-how_to/7-synthetic_data/0-index.md) on [lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) `main` and [robot_action_composer](https://github.com/fiveages-sim/robot_action_composer) `main`. Stop at recording/export; skip training. ## After the beginner path diff --git a/source/0-overview/3-repo_map.md b/source/0-overview/3-repo_map.md index 680f2ff..352ef67 100644 --- a/source/0-overview/3-repo_map.md +++ b/source/0-overview/3-repo_map.md @@ -5,7 +5,7 @@ This page lists all repositories in the FiveAges Sim ecosystem, organized by arc ## Legend - **[P]** = Public repository -- **[I]** = Private/internal repository +- **[I]** = Private/internal repository. The link needs repository access. Without it, GitHub does not open the page. - **[X]** = External repository (not in fiveages-sim org) ## Entry Workspaces @@ -13,8 +13,8 @@ This page lists all repositories in the FiveAges Sim ecosystem, organized by arc | Repository | Visibility | Purpose | |------------|------------|---------| | [open-deploy-ws](https://github.com/fiveages-sim/open-deploy-ws) | [P] | Public quick-start workspace | -| fa-deploy-ws | [I] | Internal deployment for FA robots | -| dexcap_teleop_ws | [I] | DexCap teleoperation workspace | +| [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) | [I] | Internal deployment for FA robots (default branch `fa-w2`) | +| [dexcap_teleop_ws](https://github.com/fiveages-sim/dexcap_teleop_ws) | [I] | DexCap teleoperation workspace | | [FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac) | [P] | Isaac Sim assets and jazzy_ws | ## L1: Descriptions @@ -43,9 +43,9 @@ This page lists all repositories in the FiveAges Sim ecosystem, organized by arc | Repository | Visibility | Robots | |------------|------------|--------| -| robot-descriptions-fairino | [I] | Fairino ART7 | -| robot-descriptions-ubtech | [I] | Ubtech humanoids | -| agibot-g2-description | [I] | Agibot G2 | +| [robot-descriptions-fairino](https://github.com/fiveages-sim/robot-descriptions-fairino) | [I] | Fairino ART7 | +| [robot-descriptions-ubtech](https://github.com/fiveages-sim/robot-descriptions-ubtech) | [I] | Ubtech humanoids | +| [agibot-g2-description](https://github.com/fiveages-sim/agibot-g2-description) | [I] | Agibot G2 | ### FiveAges (gitlinks under `robot_descriptions`) @@ -55,11 +55,11 @@ There is **no** separate `robot-descriptions-fiveages` umbrella (404). Remotes b |------------|------------|------------------------| | [fa-w1-description](https://github.com/fiveages-sim/fa-w1-description) | [P] | `humanoid/FiveAges/fiveages_w1_description` | | [fa-w2-description](https://github.com/fiveages-sim/fa-w2-description) | [P] | `humanoid/FiveAges/fiveages_w2_description` | -| fa-w2r-description | [I] — **not open** | `humanoid/FiveAges/fiveages_w2r_description` | +| [fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description) | [I] — **not open** | `humanoid/FiveAges/fiveages_w2r_description` | | [fa-s2-description](https://github.com/fiveages-sim/fa-s2-description) | [P] | `humanoid/FiveAges/fiveages_s2_description` | | [fa-w2-components](https://github.com/fiveages-sim/fa-w2-components) | [P] | `humanoid/FiveAges/fiveages_w2_common_description` | -`fa-s2r-description` (`fiveages_s2r_description`, **still private — not open**) and `fa-wce3-description` (`fiveages_wce3_description`, still private) appear only on `robot_descriptions` **`feature/agilex`** (`Gen2` / `Gen3`). +[fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description) (`fiveages_s2r_description`, **still private — not open**) and [fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description) (`fiveages_wce3_description`, still private) appear only on `robot_descriptions` **`feature/agilex`** (`Gen2` / `Gen3`). Both links need access. ## L2: Hardware Interfaces @@ -75,18 +75,18 @@ There is **no** separate `robot-descriptions-fiveages` umbrella (404). Remotes b | [modbus-ros2-control](https://github.com/fiveages-sim/modbus-ros2-control) | [P] | RS485 grippers | | [can-ros2-control](https://github.com/fiveages-sim/can-ros2-control) | [P] | CAN/CANFD hands | | [juxie-ros2-control](https://github.com/fiveages-sim/juxie-ros2-control) | [P] | JX CAN FD | +| [rokae-ros2-control](https://github.com/fiveages-sim/rokae-ros2-control) | [P] | Rokae arms | ### Private | Repository | Visibility | Hardware | |------------|------------|----------| -| rokae-ros2-control | [I] | Rokae arms | -| eyou-ros2-control | [I] | CANopen harmonic | -| eyou_canfd_ros2_control | [I] | CAN FD PHU | -| inex-ros2-control | [I] | iNexus + LinkerHand | -| wuji-ros2-control | [I] | Wuji Hand2 Ethernet | -| dexcap-ros2-control | [I] | DexCap V4 | -| fairino-ros2-control | [I] | Fairino SDK | +| [eyou-ros2-control](https://github.com/fiveages-sim/eyou-ros2-control) | [I] | CANopen harmonic | +| [eyou_canfd_ros2_control](https://github.com/fiveages-sim/eyou_canfd_ros2_control) | [I] | CAN FD PHU | +| [inex-ros2-control](https://github.com/fiveages-sim/inex-ros2-control) | [I] | iNexus + LinkerHand | +| [wuji-ros2-control](https://github.com/fiveages-sim/wuji-ros2-control) | [I] | Wuji Hand2 Ethernet | +| [dexcap-ros2-control](https://github.com/fiveages-sim/dexcap-ros2-control) | [I] | DexCap V4 | +| [fairino-ros2-control](https://github.com/fiveages-sim/fairino-ros2-control) | [I] | Fairino SDK | ## L3: Controllers @@ -94,9 +94,9 @@ There is **no** separate `robot-descriptions-fiveages` umbrella (404). Remotes b |------------|------------|---------| | [arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control) | [P] | OCS2 arm controller, teleop plugins | | [legubiao/ocs2_ros2](https://github.com/legubiao/ocs2_ros2) | [X] | OCS2 MPC library (branch: ros2) | -| ocs2-wbc-controller | [I] | Whole-body control | -| ocs2-humanoid | [I] | Wheeled-arm humanoid library | -| lina_planning | [I] | Trajectory primitives | +| [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller) | [I] | Whole-body control | +| [ocs2-humanoid](https://github.com/fiveages-sim/ocs2-humanoid) | [I] | Wheeled-arm humanoid library | +| [lina_planning](https://github.com/fiveages-sim/lina_planning) | [I] | Trajectory primitives | ## L4: Simulation @@ -107,8 +107,8 @@ There is **no** separate `robot-descriptions-fiveages` umbrella (404). Remotes b | [fiveages-env-usds](https://github.com/fiveages-sim/fiveages-env-usds) | [P] | Environment USD assets | | [fiveages-gen1-robot-usds](https://github.com/fiveages-sim/fiveages-gen1-robot-usds) | [P] | Gen1 USD (W1) | | [fiveages-gen2-robot-usds](https://github.com/fiveages-sim/fiveages-gen2-robot-usds) | [P] | Gen2 USD (W2 / S2; not W2R / S2R) | -| fiveages-gen3-robot-usds | [I] | Gen3 USD (WCE3) | -| fa-project-usd | [I] | FaSim project assets | +| [fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3-robot-usds) | [I] | Gen3 USD (WCE3) | +| [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) | [I] | FaSim project assets | ## L5: Teleop and Applications @@ -117,10 +117,10 @@ There is **no** separate `robot-descriptions-fiveages` umbrella (404). Remotes b | Repository | Visibility | Purpose | |------------|------------|---------| | [drag_teleop_controller](https://github.com/fiveages-sim/drag_teleop_controller) | [P] | Isomorphic teleop (master–slave) | -| vr_pose_publisher | [I] | VR pose bridge | -| teleop-joint-mapper | [I] | DexCap→M6 mapper | -| wuji_glove_teleop | [I] | Glove teleoperation | -| vive_tracker_teleop | [I] | Vive tracker EE pose | +| [vr_pose_publisher](https://github.com/fiveages-sim/vr_pose_publisher) | [I] | VR pose bridge | +| [teleop-joint-mapper](https://github.com/fiveages-sim/teleop-joint-mapper) | [I] | DexCap→M6 mapper | +| [wuji_glove_teleop](https://github.com/fiveages-sim/wuji_glove_teleop) | [I] | Glove teleoperation (default branch `master`) | +| [vive_tracker_teleop](https://github.com/fiveages-sim/vive_tracker_teleop) | [I] | Vive tracker EE pose | ### Python Libraries @@ -132,7 +132,7 @@ There is **no** separate `robot-descriptions-fiveages` umbrella (404). Remotes b | [lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) | [P] | LeRobot ↔ ROS 2 monorepo | | [robot_action_composer](https://github.com/fiveages-sim/robot_action_composer) | [P] | Task-queue YAML / motion generation | | [wuji-retargeting](https://github.com/fiveages-sim/wuji-retargeting) | [P] | Hand retargeting | -| HUG | [I] | Grasp inference | +| [HUG](https://github.com/fiveages-sim/HUG) | [I] | Grasp inference | ## Excluded from This Documentation diff --git a/source/0-overview/4-public_vs_internal.md b/source/0-overview/4-public_vs_internal.md index 092737f..00cc31e 100644 --- a/source/0-overview/4-public_vs_internal.md +++ b/source/0-overview/4-public_vs_internal.md @@ -98,11 +98,13 @@ The `fa-deploy-ws` README is **not public**. Flags, robot IDs, and on-robot YAML ### Initialization ```bash -git clone /fa-deploy-ws.git +git clone git@github.com:fiveages-sim/fa-deploy-ws.git cd fa-deploy-ws ./init_repo.sh ``` +[fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) needs repository access (default branch `fa-w2`). Without access, GitHub does not open the page. + Same script **name** as `open-deploy-ws`. Extra flags, robot IDs, and on-robot YAML live in the private README — copy them from there. Public end-effector selection is launch `type` / `left_type` / `right_type` (and `robot_profile`), not a `gripper:=` argument. See [robot_common_launch](../4-reference/descriptions/2-common.md). diff --git a/source/1-getting_started/4-fa_deploy_ws.md b/source/1-getting_started/4-fa_deploy_ws.md index a98feda..dc90a47 100644 --- a/source/1-getting_started/4-fa_deploy_ws.md +++ b/source/1-getting_started/4-fa_deploy_ws.md @@ -1,6 +1,6 @@ # fa-deploy-ws Setup -Setup guide for the internal `fa-deploy-ws` workspace used for FiveAges robot deployment. +Setup guide for the internal [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws) workspace used for FiveAges robot deployment. The link needs repository access (default branch `fa-w2`). Without access, GitHub does not open the page. ```{admonition} Access Required :class: warning diff --git a/source/2-how_to/2-simulation/4-isaac_sim.md b/source/2-how_to/2-simulation/4-isaac_sim.md index a3f9aff..35e63f7 100644 --- a/source/2-how_to/2-simulation/4-isaac_sim.md +++ b/source/2-how_to/2-simulation/4-isaac_sim.md @@ -1,125 +1,124 @@ # Isaac Sim -Run robot demos with NVIDIA Isaac Sim for high-fidelity simulation. +Run a robot in NVIDIA Isaac Sim and connect it to the same ROS 2 运控 stack used on hardware. -Use **FaSim-Isaac** `./init.sh` and `./run.sh`. Path and version live in that repo’s config; CLI flags are those named in its README. +FaSim-Isaac is the asset workspace: `./init.sh` then `./run.sh` (or `./run_headless.sh`). Robot choice is which USD you open, not a `./run.sh --robot` flag. Path and Isaac version live in `config/fa_sim.conf` / `config/fa_sim.local.conf`. -## Prerequisites +There are two ROS 2 connections. Pick one for a given stage. -- NVIDIA Isaac Sim binary installed (GPU + matching NVIDIA drivers) -- ROS 2 Jazzy workspace -- Default Isaac directory: `ISAACSIM_DIR` (`~/isaacsim` unless you override it) +| Launch / graph | Plugin | What moves the joints | +|----------------|--------|------------------------| +| `hardware:=isaac` | `topic_based_ros2_control/TopicBasedSystem` | OmniGraph joint topics | +| In-process `ROS2ControlLaunch` (Play) | `isaacsim_ros2_control/IsaacSimSystem` (`hardware=isaac_sim` inside the node) | Controller manager in the Isaac process | -## Steps +`isaac_sim` is a ros2_control hardware interface, not a second robot body. Details, clock, and TF: [FaSim-Isaac reference](../../4-reference/simulation/2-fasim_isaac.md). -### 1. Clone FaSim-Isaac +## Prerequisites -:::{code-block} bash -cd ~/ -git clone git@github.com:fiveages-sim/FaSim-Isaac.git -cd FaSim-Isaac -::: +- NVIDIA Isaac Sim, GPU, and a matching driver. Default directory `ISAACSIM_DIR` (`~/isaacsim` unless you override it). +- ROS 2 Jazzy workspace that already builds the robot (`open-deploy-ws` or, with access, [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws)). +- For the topic bridge, the workspace includes `topic_based_ros2_control`. For the in-process graph, `./init.sh` operation 5 has installed `fasim.ros2.nodes` into this Isaac, and the description xacro accepts `hardware` `isaac_sim`. -### 2. Initialize +## Start FaSim :::{code-block} bash +git clone git@github.com:fiveages-sim/FaSim-Isaac.git +cd FaSim-Isaac ./init.sh +./run.sh ::: -What the script does (FaSim README): +`./init.sh` menu ([README](https://github.com/fiveages-sim/FaSim-Isaac/blob/main/README.md)): -1. **Operation 1** — initialize submodules listed in `.gitmodules` / `submodules_visibility.conf` (`public` selected by default; `private` needs access). Re-runs are additive. -2. **Operation 2** — optional **Isaac ROS 2 Jazzy workspace**: version menu queries GitHub stable tags (fallback list in `config/fa_sim.conf` currently `6.0.1` / `6.0.0` / `5.1.0`). Override with `ISAAC_SIM_VERSION=… ./init.sh`. +1. Init selected submodules (`.gitmodules` / `submodules_visibility.conf`). Public entries start checked. Private entries (including [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd)) stay unchecked until you have access. Re-runs only add what you check. +2. Update submodules already checked out (`./init.sh --update`). The FaSim repo itself is not pulled. +3. Download ArtVIP into `environment/ArtVIP/` (`tools/artvip_kitchen.py`). +4. Optional Isaac ROS 2 Jazzy overlay under `isaac_jazzy_ws/`. The menu asks GitHub for stable tags. If that query fails, `config/fa_sim.conf` falls back to `6.2.0` / `6.1.0` / `6.0.1`. Override with `ISAAC_SIM_VERSION=… ./init.sh`. +5. Install FaSim extensions into this Isaac (`exts/fasim.steering.nodes`, `exts/fasim.ros2.nodes`) and silence script warnings. Re-run after you reinstall Isaac. Restart Isaac so the extensions load. -### 3. Start Isaac Sim +`./run.sh` shows the saved backend, then asks PhysX or Newton, CPU governor, and which ROS 2 workspace to source. `./run_headless.sh` is the same menu for Headless Streaming. Non-interactive examples from the README: :::{code-block} bash -./run.sh +./run.sh -y --physics physx --cpu auto --ros-ws ~/ros2_ws +./run_headless.sh -y --physics physx --instance 0 +./run.sh --asset-region china +./run.sh --kit-profile none ::: -What the script does: optional CPU governor, optional Zenoh router if `RMW_IMPLEMENTATION=rmw_zenoh_cpp`, then an interactive menu — **PhysX** / **Newton** / **Headless Streaming**. There is no `./run.sh --robot` or `./run.sh --headless`. +`config/fa_sim.conf` kit profiles (`--kit-profile` / `--list-kit-profiles`): `none`, `newton-physx-min`, `newton-physx`, `physx-compat`, `physx-compat-full`. `--asset-region` is `none`, `us`, or `china`. Copy `config/fa_sim.local.template.conf` to `config/fa_sim.local.conf` for a machine override. When `RMW_IMPLEMENTATION=rmw_zenoh_cpp`, `./run.sh` starts a Zenoh router and stops it on exit. -Path/version overrides: copy `config/fa_sim.local.template.conf` → `config/fa_sim.local.conf` and set `ISAACSIM_DIR` / `ISAAC_SIM_DEFAULT_VERSION`. Env also works: `ISAACSIM_DIR=/path ./run.sh`. +Open the robot USD under `robots/` (robot_usds) or a scene under `environment/`. Operation 5 must already be done before a stage that uses `ROS2ControlLaunch`. -### 4. Launch ROS 2 Side +## Topic bridge (`hardware:=isaac`) -In a new terminal: +In another terminal, after the workspace overlay: :::{code-block} bash source ~/open-deploy-ws/install/setup.bash -ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac +ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone hardware:=isaac ::: -Pass `robot:=…` on this ROS 2 launch as usual. Robot USD selection is done by opening the asset under FaSim `robots/` (robot_usds) in Isaac — not a FaSim `run.sh` flag. +`robot:=` is the description key (`_description`). `demo.launch.py` has no namespace argument. Do not append `namespace:=…` on this launch. -### 5. Verify Connection +The shared macro [`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro) writes: -:::{code-block} bash -ros2 topic list -::: +- `joint_commands_topic` = `/isaac/joint_command` +- `joint_states_topic` = `/isaac/joint_states` -Acone `hardware:=isaac` uses `topic_based_ros2_control/TopicBasedSystem` with `/isaac/joint_command` and `/isaac/joint_states` ([xacro](https://github.com/fiveages-sim/robot-descriptions-arx/blob/main/arx_acone_description/xacro/ros2_control/robot.xacro)). Do not expect a stack-wide `/target_pose`. +Those names have to be the OmniGraph `topicName` on **this** robot. W2’s topic-bridge payload [`W2/payloads/ROS/ros2.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/ros2.usda) publishes `/joint_command` and `/joint_states` instead. If the two sides differ, retarget the xacro `` (or the graph) until `ros2 topic echo` shows the same `sensor_msgs/JointState` names the controller claims. Plugin parameters: [topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md). -## USD Assets +`use_sim_time` follows `hardware` (`isaac` → true) unless you pass `use_sim_time:=true` or `false`. -FaSim-Isaac uses USD (Universal Scene Description) assets from `robot_usds`: +Check: -| Path | Content | -|------|---------| -| `humanoid/FiveAges/Gen1` | Gen1 wheeled-arm USD | -| `humanoid/FiveAges/Gen2` | Gen2 wheeled-arm USD | -| `humanoid/FiveAges/Gen3` | Gen3 wheeled-arm USD | -| `humanoid/Galbot` | Galbot mobile manipulator | -| `humanoid/Ubtech` | Ubtech humanoid | - -See [robot_usds reference](../../4-reference/simulation/3-robot_usds.md) for details. +:::{code-block} bash +ros2 topic echo /isaac/joint_states --once +# or the topicName this USD actually publishes +::: -## Environment Assets +A joint command on the matching command topic moves the articulation. There is no stack-wide `/target_pose`. -Scene environments are loaded from: -- `fiveages-env-usds` — Public environment assets -- `fa-project-usd` — Internal project-specific scenes (private) +## In-process driver (`isaac_sim`) -Open the scene USD in Isaac. There is no `./run.sh --env`. +Use this when the USD contains `fasim.ros2.nodes.ROS2ControlLaunch` (W2 in-process payload: [`W2/payloads/ROS/fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/fiveages.usda)). Play runs the graph. The node calls `emit_control`, which sets `hardware=isaac_sim`, passes the ArticulationRoot as `isaac_prim_path`, and starts the controller manager inside Isaac. -## Hardware Interface +You still need a description package whose ros2_control xacro includes `simulation_hardware_plugin` for `isaac_sim` ([robot_common_launch README](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/README.md)). The graph inputs are `robot`, `mode` (`demo`, `split_body`, `full_body`), `type`, and optional `namespace`, `infoFile`, `arms`. Empty `robot` reads the USD `Robot` variant; that string must be the description package stem. -The `hardware:=isaac` parameter uses the topic-based hardware interface that bridges Isaac Sim physics to ROS 2 control. Plugin `` names (`joint_commands_topic`, `initialize_commands_from_state`, …): [topic_based_ros2_control](../../4-reference/hardware/1-topic_based.md). +On Play, confirm: -## Verification +:::{code-block} bash +ros2 control list_controllers +ros2 topic echo /joint_states --once +ros2 topic hz /clock +::: -- Isaac Sim window (or Headless Streaming) is running from `./run.sh` -- ROS 2 topics from Isaac appear in `ros2 topic list` -- Robot responds to joint commands -- Sensor data (if configured) publishes to ROS 2 +`/joint_states` here is the controller’s `joint_state_broadcaster`, not the topic-bridge pair. `/clock` should tick near the physics rate. Arm degrees of freedom are not also bridged on `/isaac/joint_command`. -## Troubleshooting +`namespace` on the graph (empty for one robot) is how a second articulation gets `//controller_manager`. It is not a `demo.launch.py` argument. Frame ids stay `world`, `odom`, and `base_link` / `base_footprint`. See the reference for TF and for `infoFile`. -### Isaac Sim fails to launch +Whole-body mode needs the private [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller) submodule. To hold a mobile base, keep the description’s `mobile_base_tcp` info and send `BASE_LOCK`. A `full_body` graph with `infoFile` set to a `fixed_base` info file has no virtual chassis degree of freedom for that lock, and arm enable can sit in `WAITING_FOR_ENABLE_POLICY`. -1. Confirm `ISAACSIM_DIR` (default `~/isaacsim`) contains the launch scripts named in `config/fa_sim.conf` (`isaac-sim.sh`, `isaac-sim.newton.sh`, `isaac-sim.streaming.sh`) -2. Set `ISAACSIM_DIR` in `config/fa_sim.local.conf` if Isaac is not at `~/isaacsim` -3. Verify GPU drivers: `nvidia-smi` -4. Check Isaac Sim logs in `~/.nvidia-omniverse/logs/` +## What to open -### No ROS 2 topics +| Tree | Content | +|------|---------| +| `robots/` → [robot_usds](https://github.com/fiveages-sim/robot_usds) | Robot USD | +| `environment/fiveages_env/` | Public scenes | +| `environment/fa-project-usd/` → [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) | Project scenes (private; needs access) | +| `environment/artvip-usd/` | ArtVIP components | -1. Verify the ROS 2 bridge extension is enabled in Isaac Sim -2. Check domain ID matches between Isaac and ROS 2 -3. Restart `./run.sh` and the ROS 2 launch +Gen labels and brand folders: [robot_usds reference](../../4-reference/simulation/3-robot_usds.md). -### USD asset not found +## When it fails -Re-run `./init.sh` operation 1 and select the needed submodules (including `robots`). +**Isaac does not start.** `ISAACSIM_DIR` must contain the launchers named in `config/fa_sim.conf` (`isaac-sim.sh`, `isaac-sim.newton.sh`, `isaac-sim.streaming.sh`, `isaac-sim.newton.streaming.sh`). `nvidia-smi` shows a GPU. Logs: `~/.nvidia-omniverse/logs/`. -### Simulation runs slowly +**No ROS 2 topics after Play.** Domain id and `RMW_IMPLEMENTATION` match the sourced workspace. Topic bridge: the graph’s `topicName` matches the xacro. In-process: operation 5 is installed and Isaac was restarted; the stage’s `ROS` variant is the fiveages payload, not the topic-bridge payload. -- Reduce rendering quality in Isaac Sim settings -- Use `./run.sh` menu **Headless Streaming** for non-visual testing -- Check GPU memory usage +**Motion finishes much too fast.** On the in-process payload, `/clock` comes from the on-demand `ROS_Clock` graph (`OnPhysicsStep`), which is already how W2 `fiveages.usda` is wired. The topic-bridge `ros2.usda` still publishes the clock from `OnPlaybackTick`. Fix the clock source before editing joint gains. Mechanism: [FaSim-Isaac reference](../../4-reference/simulation/2-fasim_isaac.md). -## Next Steps +## Next -- [robot_usds reference](../../4-reference/simulation/3-robot_usds.md) - [FaSim-Isaac reference](../../4-reference/simulation/2-fasim_isaac.md) -- [Synthetic Data](../7-synthetic_data/0-index.md) — datagen pipeline on Isaac (not Gazebo) +- [Add a Robot](../6-deployment/10-add_a_robot.md) and the [Day 7 exam](../../0-overview/2-learning_path.md) +- [Synthetic Data](../7-synthetic_data/0-index.md) diff --git a/source/2-how_to/6-deployment/10-add_a_robot.md b/source/2-how_to/6-deployment/10-add_a_robot.md index 35b27b6..83f593e 100644 --- a/source/2-how_to/6-deployment/10-add_a_robot.md +++ b/source/2-how_to/6-deployment/10-add_a_robot.md @@ -103,7 +103,7 @@ What that skill covers (overview; follow the skill for the full procedure): 2. Isaac 5: Import URDF → USD. Isaac 6: Asset Transformer → USDA. 3. Robot Assembler (child → parent; one articulation root). 4. Root `variantSets` + **local** adapter payloads (`payloads/Physics/{none,physics,physx,mujoco}.usda`, …). -5. PhysX vs Newton/MuJoCo layers kept separate; host side `topic_based_ros2_control` + `hardware:=isaac`. +5. PhysX vs Newton/MuJoCo layers kept separate. Connect ROS 2 with one path: host `hardware:=isaac` (`TopicBasedSystem`) **or** a `ROS2ControlLaunch` payload that sets in-process `isaac_sim`. Do not bridge the same joints on both. Asset layout: [robot_usds README](https://github.com/fiveages-sim/robot_usds/blob/main/README.md) (`robots/manipulators/…`, `robots/mobile_manipulator/…`). FaSim-Isaac checkout: **`./init.sh`** (submodules + optional Isaac ROS 2 workspace), then **`./run.sh`**. See [Isaac Sim](../2-simulation/4-isaac_sim.md). @@ -114,3 +114,4 @@ Asset layout: [robot_usds README](https://github.com/fiveages-sim/robot_usds/blo - [robot_common_launch](../../4-reference/descriptions/2-common.md) - [Go to Real Hardware](9-go_real_hardware/0-index.md) - [Developer guide](../../5-developer/0-index.md) +- [Day 7 exam](../../0-overview/2-learning_path.md) — one new robot in FaSim, mock then sim diff --git a/source/2-how_to/7-synthetic_data/0-index.md b/source/2-how_to/7-synthetic_data/0-index.md index 6d5749a..b672682 100644 --- a/source/2-how_to/7-synthetic_data/0-index.md +++ b/source/2-how_to/7-synthetic_data/0-index.md @@ -4,13 +4,13 @@ This chapter is the **Isaac Sim datagen pipeline**: USD scenes → ROS 2 interfa This How-To category is the Isaac datagen pipeline, not Gazebo or teleop. Reference pages stay the source of APIs; this chapter only explains **how the pieces connect**. -```{admonition} Documented branches +```{admonition} Documented revisions :class: note -- [robot_action_composer](https://github.com/fiveages-sim/robot_action_composer/tree/feature/dex-grasp-generator) `@ feature/dex-grasp-generator` -- [lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2/tree/feature/sim-grasp-datagen) `@ feature/sim-grasp-datagen` +- [robot_action_composer](https://github.com/fiveages-sim/robot_action_composer) `main` +- [lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) `main` (`feature/sim-grasp-datagen` merged in [#10](https://github.com/fiveages-sim/lerobot_ros2/pull/10)) -Those branches are newer than `main`. Follow them, not `main`. +`feature/dex-grasp-generator` is no longer a branch. ``` ```{admonition} Terminology @@ -52,7 +52,7 @@ lerobot_ros2 (record_datasets.py → LeRobot dataset on disk) ## Baseline - **ROS 2 Jazzy** -- **Python 3.12** (same baseline as the lerobot_ros2 / composer READMEs on those branches) +- **Python 3.12** (same baseline as the lerobot_ros2 / composer READMEs on `main`) ## Out of scope diff --git a/source/2-how_to/7-synthetic_data/1-isaac_scenes.md b/source/2-how_to/7-synthetic_data/1-isaac_scenes.md index 3082cde..df7887d 100644 --- a/source/2-how_to/7-synthetic_data/1-isaac_scenes.md +++ b/source/2-how_to/7-synthetic_data/1-isaac_scenes.md @@ -17,13 +17,9 @@ cd FaSim-Isaac ./run.sh ::: -From the FaSim README: +`./init.sh` menu and `./run.sh` flags: [Isaac Sim](../2-simulation/4-isaac_sim.md). Operation 1 selects submodules (`public` checked, private unchecked until you have access). Operation 4 is the optional Isaac ROS 2 Jazzy overlay. The version menu queries GitHub stable tags; `config/fa_sim.conf` falls back to `6.2.0` / `6.1.0` / `6.0.1`. Override with `ISAAC_SIM_VERSION=… ./init.sh`. Operation 5 installs `fasim.ros2.nodes` (needed before Play on an in-process `ROS2ControlLaunch` graph). -1. **`./init.sh` operation 1** — initialize submodules listed in `.gitmodules` / `submodules_visibility.conf`. **public** items are selected by default; **private** items are not (need repo access). Re-runs are additive (`update --init` on the selection). -2. **`./init.sh` operation 2** — optional **Isaac ROS 2 Jazzy workspace**: download matching Isaac ROS workspaces, extract `jazzy_ws` to `isaac_jazzy_ws/`, install rosdep/colcon deps, build, and append `~/.bashrc`. Version menu queries GitHub stable tags; fallback list in `config/fa_sim.conf` currently includes `6.0.1` / `6.0.0` / `5.1.0`. Override with `ISAAC_SIM_VERSION=… ./init.sh`. -3. **`./run.sh`** — start Isaac Sim. Default install path is `ISAACSIM_DIR` (`~/isaacsim` unless you copy `config/fa_sim.local.template.conf` → `config/fa_sim.local.conf`). The menu is PhysX / Newton / Headless Streaming. - -The datagen example README ([`examples/IsaacSim/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/examples/IsaacSim/README.md) on `feature/sim-grasp-datagen`) currently lists Ubuntu 24.04, ROS 2 Jazzy, and Isaac Sim 6.0. Keep path/version in FaSim config rather than editing launch files by hand. +The datagen example README ([`examples/IsaacSim/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md) on `main`) still lists Ubuntu 24.04, ROS 2 Jazzy, and Isaac Sim 6.0. Keep path and version in FaSim config. The FaSim fallback list above is newer than that 6.0 line. Layout from that README: @@ -36,7 +32,7 @@ FaSim-Isaac/ ├── environment/ │ ├── fiveages_env/ # → fiveages-env-usds (public scenes) │ └── fa-project-usd/ # → fa-project-usd (private project USD) -└── isaac_jazzy_ws/ # created by init.sh operation 2 +└── isaac_jazzy_ws/ # created by init.sh operation 4 ::: Open the target robot USD from `robots/` (robot_usds) in Isaac and run the simulation. Enable Isaac’s ROS 2 simulation-control and prim services as in the [NVIDIA Isaac ROS 2 workspace docs](https://docs.isaacsim.omniverse.nvidia.com/latest/installation/install_ros.html#setup-ros-2-workspaces) linked from the example README (`/set_simulation_state`, prim service for object pose). diff --git a/source/2-how_to/7-synthetic_data/2-orchestration.md b/source/2-how_to/7-synthetic_data/2-orchestration.md index fd0cbda..2f14a55 100644 --- a/source/2-how_to/7-synthetic_data/2-orchestration.md +++ b/source/2-how_to/7-synthetic_data/2-orchestration.md @@ -2,7 +2,7 @@ After the Isaac USD scene is up, datagen does **not** call OCS2 or Nav2 servers from Python by name. YAML `task_queue` blocks resolve to **registered skills**; skills emit **`StageTarget`** sequences and send them through **`ROS2RobotInterface`**. -APIs below are from [robot_action_composer `@ feature/dex-grasp-generator`](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/README.md) and its `docs/`. YAML `skill:` values are registered names from that README (not a Python `ActionSequence` / `actions.MoveJ` class). +APIs below are from [robot_action_composer `main`](https://github.com/fiveages-sim/robot_action_composer/blob/main/README.md) and its `docs/`. YAML `skill:` values are registered names from that README (not a Python `ActionSequence` / `actions.MoveJ` class). ## ros2_robot_interface (motion and recording) @@ -21,7 +21,7 @@ Reference: [ros2_robot_interface](../../4-reference/python_apps/1-ros2_robot_int ## robot_action_composer (task_queue + skills) -**Branch:** [`feature/dex-grasp-generator`](https://github.com/fiveages-sim/robot_action_composer/tree/feature/dex-grasp-generator) +**Revision:** [`main`](https://github.com/fiveages-sim/robot_action_composer) In the lerobot_ros2 monorepo this package is `submodules/robot_action_composer`. Two layers: @@ -30,9 +30,9 @@ In the lerobot_ros2 monorepo this package is `submodules/robot_action_composer`. | **`motion_generation`** | Geometry → `StageTarget` / `ArmTarget` sequences; `execute_stage_sequence` calls `ROS2RobotInterface` (Cartesian, dual-arm, MoveJ, gripper timing). | | **`task_runtime`** | `runner.run_task_queue`: connect → FSM → optional Isaac reset → each YAML block → `get_skill` → execute. Unknown `skill:` names raise `KeyError` with the registered list. | -YAML lives under `robots//task_configs/**/*.yaml` (optional vendor grouping `robots///`). Discovery, merge rules, and `robot.yaml`: [TASK_CONFIG_YAML.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/TASK_CONFIG_YAML.md), [ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROBOT_CONFIG.md). +YAML lives under `robots//task_configs/**/*.yaml` (optional vendor grouping `robots///`). Discovery, merge rules, and `robot.yaml`: [TASK_CONFIG_YAML.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md), [ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md). -Skill names (examples from the README index; parameters in [SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/SKILLS_REFERENCE.md)): +Skill names (examples from the README index; parameters in [SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md)): | Category | Registered `skill:` names | |----------|---------------------------| @@ -41,13 +41,13 @@ Skill names (examples from the README index; parameters in [SKILLS_REFERENCE.md] | Navigation | `nav.navigate_to_pose`, `nav.navigate_to_object`, `nav.navigate_relative`, `nav.send_nav_goal`, `nav.wait_nav_arrived` | | Joint / session / env | `joint.movej_to_config`, `joint.goto_cached_joints`, `robot.cache_ee_pose`, `robot.send_mode_command`, `env.randomize_object_local_xyz`, … | -Datagen workspace used in the README is **`examples/IsaacSim`** inside lerobot_ros2 (contains `robots/`). Robot-specific notes, including wheeled-arm **FiveAges W2** dual-arm tasks, are next to those trees (e.g. [`robots/FiveAges_W2/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/examples/IsaacSim/robots/FiveAges_W2/README.md)). +Datagen workspace used in the README is **`examples/IsaacSim`** inside lerobot_ros2 (contains `robots/`). Robot-specific notes, including wheeled-arm **FiveAges W2** dual-arm tasks, are next to those trees (e.g. [`robots/FiveAges_W2/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/FiveAges_W2/README.md)). A [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) project directory can be the workspace instead (`LEROBOT_ROOT` plus that project’s `robot.yaml`). End-effector poses use one of the two frame paths in [robot_action_composer](../../4-reference/python_apps/5-robot_action_composer.md): live TF when `robot.yaml` has no `ee_tip`, or a USD tip→parent chain when `ee_tip` is set. ## Official Nav2, not a custom nav stack Composer **does not implement Nav2 servers**. `nav.*` skills wrap **`ROS2RobotInterface`’s Nav2 client API**. Scene-level launch is separate from the task YAML. -From [docs/ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROS2_STACK.md): +From [docs/ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROS2_STACK.md): - Do **not** put `ros2_stack` inside task-queue YAML. - Merge: `robot.yaml` → `ros2_stack:` then leaf **`.meta/ros2_stack.yaml`**. @@ -67,17 +67,17 @@ Run from a directory that contains `robots/` (usually `examples/IsaacSim`): cd examples/IsaacSim # Scene-level OCS2 + Nav2 (background logs under .ros2_stack//) -ros2-stack --lang zh launch -ros2-stack status -ros2-stack stop +ros2-stack launch --robot fiveages_w2 --group dex_hand +ros2-stack status --robot fiveages_w2 +ros2-stack stop --robot fiveages_w2 # Task queue (dry motion; optional --ensure-ros2-stack) motion-generation -motion-generation --robot dobot_cr5 --task-key pick_place --scene default +motion-generation --robot fiveages_w2 --task-key navigate_and_dex_grasp --scene apple motion-generation --robot fiveages_w2 --task-key transfer_blade --ensure-ros2-stack ::: -`grasp-generation serve …` is an optional grasp-setup UI on this branch ([GRASP_GENERATION.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/GRASP_GENERATION.md)); it is **not** the recording entry and is **not** ros2-viser. +`grasp-generation serve …` is an optional grasp-setup UI ([GRASP_GENERATION.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md)); it is **not** the recording entry and is **not** ros2-viser. The same step inside a task queue is the skill `dex_hand.auto_grasp`. Isaac entity pose / joint dump helpers (`check-isaac-pose`, `check-robot-status`) need the sim and `/get_entity_state` as documented in the composer README. diff --git a/source/2-how_to/7-synthetic_data/3-record_export.md b/source/2-how_to/7-synthetic_data/3-record_export.md index ba4b752..6cd1537 100644 --- a/source/2-how_to/7-synthetic_data/3-record_export.md +++ b/source/2-how_to/7-synthetic_data/3-record_export.md @@ -2,11 +2,11 @@ This page stops at **LeRobot dataset recording / export**. It does not document training, online inference, or how a policy consumes the dataset. -**Monorepo:** [lerobot_ros2 `@ feature/sim-grasp-datagen`](https://github.com/fiveages-sim/lerobot_ros2/tree/feature/sim-grasp-datagen) +**Monorepo:** [lerobot_ros2 `main`](https://github.com/fiveages-sim/lerobot_ros2) -**README:** [README.md on that branch](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/README.md) +**README:** [README.md](https://github.com/fiveages-sim/lerobot_ros2/blob/main/README.md) -Isaac-side shared steps: [`examples/IsaacSim/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/examples/IsaacSim/README.md). +Isaac-side shared steps: [`examples/IsaacSim/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md). ## What recording uses @@ -29,9 +29,9 @@ From the lerobot_ros2 README. **Python 3.12**, ROS 2 Jazzy, [uv](https://docs.as :::{code-block} bash git clone --recursive git@github.com:fiveages-sim/lerobot_ros2.git cd lerobot_ros2 -./init.sh all -# motion / task queue only: ./init.sh all-motion -# recording plugins (if you skipped all): ./init.sh install-lerobot +./init.sh all-motion +# recording / inference (NumPy 2, separate from the grasp env): +./init.sh install-lerobot source .venv/bin/activate ::: @@ -55,7 +55,7 @@ cd examples/IsaacSim python record_datasets.py ::: -Interactive prompts (from `record_main` / `dataset_recording.launcher` on this branch): +Interactive prompts (from `record_main` / `dataset_recording.launcher` on `main`): - Robot (registry under `examples/IsaacSim/robots`; default `dobot_cr5` if present) - Task folder / task (`task_key`) @@ -65,7 +65,7 @@ Interactive prompts (from `record_main` / `dataset_recording.launcher` on this b - Optional depth+pointcloud at keypoints (only if `lerobot_config.py` has depth topics) - Optional manual review after return-to-home -Per-robot `lerobot_config.py` (`LEROBOT_CFG`) is the LeRobot side of the split documented in [ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROBOT_CONFIG.md); `robot.yaml` stays the motion/stack side. +Per-robot `lerobot_config.py` (`LEROBOT_CFG`) is the LeRobot side of the split documented in [ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md); `robot.yaml` stays the motion/stack side. ## Export (what lands on disk) @@ -75,7 +75,7 @@ On this branch the runner creates a local LeRobot dataset: /lerobot_dataset/grasp_record_/ ::: -via `LeRobotDataset.create` (`repo_id` = that path, `use_videos=True`, fps from the record profile). Episodes are `dataset.add_frame` then `dataset.save_episode`. That **is** the export this chapter covers. Do not assume a Hugging Face upload CLI unless a README on this branch says so. +via `LeRobotDataset.create` (`repo_id` = that path, `use_videos=True`, fps from the record profile). Episodes are `dataset.add_frame` then `dataset.save_episode`. That is the export this chapter covers. A Hugging Face upload CLI is in scope only when the `main` README names one. ## Stop here diff --git a/source/3-concepts/1-ros2_control_here.md b/source/3-concepts/1-ros2_control_here.md index 0fbabee..62f090d 100644 --- a/source/3-concepts/1-ros2_control_here.md +++ b/source/3-concepts/1-ros2_control_here.md @@ -22,12 +22,13 @@ Documented launch values ([robot_common_launch](https://github.com/fiveages-sim/ |--------------|--------------------|-------| | `mock_components` (**default**) | `mock_components/GenericSystem` | No Gazebo / Isaac. There is **no** `hardware:=mock` branch in this xacro. | | `gz` | `gz_ros2_control/GazeboSimSystem` | [ocs2_arm README](https://github.com/fiveages-sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/README.md): install `ros-jazzy-ros-gz` and `ros-jazzy-gz-ros2-control` | -| `isaac` | `topic_based_ros2_control/TopicBasedSystem` | Acone params: `/isaac/joint_command`, `/isaac/joint_states`. Build `topic_based_ros2_control` ([arms_ros2_control README](https://github.com/fiveages-sim/arms_ros2_control/blob/main/README.md)) | +| `isaac` | `topic_based_ros2_control/TopicBasedSystem` | Shared macro: `/isaac/joint_command`, `/isaac/joint_states`. Match the graph `topicName` if this robot uses other names. Build `topic_based_ros2_control` ([arms_ros2_control README](https://github.com/fiveages-sim/arms_ros2_control/blob/main/README.md)) | +| `isaac_sim` | `isaacsim_ros2_control/IsaacSimSystem` | In-process driver. FaSim `ROS2ControlLaunch` sets it and `isaac_prim_path`. Not a `demo.launch.py` flag. | | `real` | Vendor plugin (Acone: `arx_ros2_control/ArxX5Hardware`) | Other brands: use the plugin class from that description’s `xacro/ros2_control/*.xacro`. | `REAL_HARDWARE` in `launch_arg_utils.py` is only `real`. -Optional controller overlay: if `_description/config/ros2_control/.yaml` exists, `load_robot_config` merges it. Example from the common README: `arx_lift2s` + `hardware:=isaac` merges `isaac.yaml`. No file → no overlay. +Optional controller overlay: if `_description/config/ros2_control/.yaml` exists, `load_robot_config` merges it **after** end-effector compose. Example from the common README: `arx_lift2s` + `hardware:=isaac` merges `isaac.yaml`. No file → no overlay. Order: [robot_common_launch](../4-reference/descriptions/2-common.md). ## Controllers (this repo) diff --git a/source/4-reference/controllers/3-ocs2_wbc.md b/source/4-reference/controllers/3-ocs2_wbc.md index 3bdd7d9..a44a554 100644 --- a/source/4-reference/controllers/3-ocs2_wbc.md +++ b/source/4-reference/controllers/3-ocs2_wbc.md @@ -5,7 +5,7 @@ Whole-body MPC — **全身控制** (`ocs2_wbc_controller`) — for wheeled dual ```{admonition} Access Required :class: warning -`controller/ocs2_wbc_controller` in [arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control) is a **private** submodule (`ocs2-wbc-controller`). Topics, FSM values, and launch names are in that package README after access. The in-tree loader on the public side is `full_body.launch.py`. +`controller/ocs2_wbc_controller` in [arms_ros2_control](https://github.com/fiveages-sim/arms_ros2_control) is the private submodule [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller). The link needs repository access. Topics, FSM values, and launch names are in that package README after access. The in-tree loader on the public side is `full_body.launch.py`. ``` ## Role diff --git a/source/4-reference/descriptions/2-common.md b/source/4-reference/descriptions/2-common.md index d6f0206..6312233 100644 --- a/source/4-reference/descriptions/2-common.md +++ b/source/4-reference/descriptions/2-common.md @@ -195,17 +195,19 @@ ros2 launch robot_common_launch humanoid.launch.py robot:=fiveages_w2r arms:=ar5 common.yaml → .yaml / ros2_controllers.yaml → {variant}.yaml # opt-in: config/ros2_control/.yaml - → {hardware}.yaml # opt-in: config/ros2_control/.yaml → EEF compose (if any) + → {hardware}.yaml # opt-in: config/ros2_control/.yaml → control.patch (profile) ::: +Hardware overlay runs **after** end-effector compose ([robot-descriptions-common #41](https://github.com/fiveages-sim/robot-descriptions-common/pull/41)), so a later compose pass does not drop gripper keys that `{hardware}.yaml` added. + How `.yaml` is chosen (`resolve_compose_type_key` / `_generate_progressive_type_candidates`): - **Symmetric** EEF (`type` only, or `left_type` equals `right_type`): progressive match by stripping `_` suffixes. Helper docstring example: `ccs_left_rg75` → `ccs_left` → `ccs`. First existing `{candidate}.yaml` wins; otherwise `ros2_controllers.yaml`. - **Asymmetric** (`left_type` ≠ `right_type`): skip progressive type YAML. Base file is `ros2_controllers.yaml`, then **EEF compose** from [`eef_control_registry.yaml`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/config/eef_control_registry.yaml) plus per-side templates (`control_compose.py`). -`hardware:=` values in that README: `mock_components` / `gz` / `isaac` / `real`. Overlay YAML is merged **only if the file exists**. Profile YAML `hardware:` (serial, `arm_ctrl_mode`) is a different layer and applies only when `hardware:=real`. +`hardware:=` values in that README: `mock_components` / `gz` / `isaac` / `isaac_sim` / `real`. `isaac_sim` is the in-process Isaac hardware interface ([`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro)); FaSim sets it from `ROS2ControlLaunch`, not from `demo.launch.py`. Overlay YAML is merged **only if the file exists**. `isaac_sim` can reuse `isaac.yaml` (`emit_control` passes `hardware_yaml=isaac`). Profile YAML `hardware:` (serial, `arm_ctrl_mode`) is a different layer and applies only when `hardware:=real`. `use_sim_time` defaults true for `gz`, `isaac`, and `isaac_sim` ([#42](https://github.com/fiveages-sim/robot-descriptions-common/pull/42)). ### Launch entries @@ -227,7 +229,7 @@ Also on `main` under `launch/` (not named in that README table): | Manipulation | `manipulation/humanoid_ocs2.launch.py` | | Navigation | `navigation/navigation_cartographer.launch.py`, `navigation/navigation_isaac_gt.launch.py` | -`navigation_isaac_gt.launch.py` is the default Nav2 launch cited by [robot_action_composer ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROS2_STACK.md). +`navigation_isaac_gt.launch.py` is the default Nav2 launch cited by [robot_action_composer ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROS2_STACK.md). `robot_common_launch` README invoke table (same package; install first): diff --git a/source/4-reference/descriptions/4-fiveages_umbrella.md b/source/4-reference/descriptions/4-fiveages_umbrella.md index 03b28a5..197710b 100644 --- a/source/4-reference/descriptions/4-fiveages_umbrella.md +++ b/source/4-reference/descriptions/4-fiveages_umbrella.md @@ -16,7 +16,7 @@ Launch names and xacro details: those **public package READMEs**. There is no `o ```{admonition} Still private — W2R and S2R are not open :class: warning -These remotes are **not** public (GitHub 404 without access): **W2R** (`fa-w2r-description`), **S2R** (`fa-s2r-description`), **Gen3** (`fa-wce3-description`, `fiveages-gen3-robot-usds`), and `fa-deploy-ws`. There is **no** public `robot-descriptions-fiveages` umbrella. Contact your team lead. After access, follow **those package READMEs**. +These remotes need repository access (without it, GitHub does not open the page): **W2R** ([fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description)), **S2R** ([fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description)), **Gen3** ([fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description), [fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3-robot-usds)), and [fa-deploy-ws](https://github.com/fiveages-sim/fa-deploy-ws). There is **no** public `robot-descriptions-fiveages` umbrella. After access, follow **those package READMEs**. ``` ```{admonition} Source of truth @@ -27,7 +27,7 @@ These remotes are **not** public (GitHub 404 without access): **W2R** (`fa-w2r-d - The public [robot_descriptions README](https://github.com/fiveages-sim/robot_descriptions/blob/main/README.md) **does not** table these packages — use `.gitmodules`, not the README brand tables - Public USD: [robot_usds README](https://github.com/fiveages-sim/robot_usds/blob/main/README.md) §3.1 Humanoid → FiveAges, [fiveages-gen1-robot-usds](https://github.com/fiveages-sim/fiveages-gen1-robot-usds), [fiveages-gen2-robot-usds](https://github.com/fiveages-sim/fiveages-gen2-robot-usds) - Workspace pattern (script name only): [fa-deploy-ws Setup](../../1-getting_started/4-fa_deploy_ws.md) — `./init_repo.sh`. Extra flags and robot IDs are in that private README after access. -- Public launch / `hardware:=`: [robot_common_launch](2-common.md) (`mock_components` / `gz` / `isaac` / `real`) +- Public launch / `hardware:=`: [robot_common_launch](2-common.md) (`mock_components` / `gz` / `isaac` / `isaac_sim` / `real`) ``` FiveAges **humanoid** platforms in this docs set (W1, W2, W2R, S2, S2R, WCE3) are **wheeled-arm humanoids** (mobile base + arms), not bipedal. @@ -48,7 +48,7 @@ FiveAges descriptions live as **git submodules** of the public umbrella. Checkou |------|-------------|--------|------------| | `humanoid/FiveAges/fiveages_w1_description` | `fiveages_w1_description` | [fa-w1-description](https://github.com/fiveages-sim/fa-w1-description) | Public | | `humanoid/FiveAges/fiveages_w2_description` | `fiveages_w2_description` | [fa-w2-description](https://github.com/fiveages-sim/fa-w2-description) | Public | -| `humanoid/FiveAges/fiveages_w2r_description` | `fiveages_w2r_description` | `fa-w2r-description` | Private — **not open** | +| `humanoid/FiveAges/fiveages_w2r_description` | `fiveages_w2r_description` | [fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description) | Private — **not open** | | `humanoid/FiveAges/fiveages_s2_description` | `fiveages_s2_description` | [fa-s2-description](https://github.com/fiveages-sim/fa-s2-description) | Public | | `humanoid/FiveAges/fiveages_w2_common_description` | `fiveages_w2_common_description` | [fa-w2-components](https://github.com/fiveages-sim/fa-w2-components) | Public | @@ -60,11 +60,11 @@ FiveAges descriptions live as **git submodules** of the public umbrella. Checkou |-----|------|-------------|--------|------------| | Gen1 | `humanoid/FiveAges/Gen1/fiveages_w1_description` | `fiveages_w1_description` | [fa-w1-description](https://github.com/fiveages-sim/fa-w1-description) | Public | | Gen2 | `humanoid/FiveAges/Gen2/fiveages_w2_description` | `fiveages_w2_description` | [fa-w2-description](https://github.com/fiveages-sim/fa-w2-description) | Public | -| Gen2 | `humanoid/FiveAges/Gen2/fiveages_w2r_description` | `fiveages_w2r_description` | `fa-w2r-description` | Private — **not open** | +| Gen2 | `humanoid/FiveAges/Gen2/fiveages_w2r_description` | `fiveages_w2r_description` | [fa-w2r-description](https://github.com/fiveages-sim/fa-w2r-description) | Private — **not open** | | Gen2 | `humanoid/FiveAges/Gen2/fiveages_s2_description` | `fiveages_s2_description` | [fa-s2-description](https://github.com/fiveages-sim/fa-s2-description) | Public | -| Gen2 | `humanoid/FiveAges/Gen2/fiveages_s2r_description` | `fiveages_s2r_description` | `fa-s2r-description` | Private — **not open** | +| Gen2 | `humanoid/FiveAges/Gen2/fiveages_s2r_description` | `fiveages_s2r_description` | [fa-s2r-description](https://github.com/fiveages-sim/fa-s2r-description) | Private — **not open** | | Gen2 | `humanoid/FiveAges/Gen2/fiveages_w2_common_description` | `fiveages_w2_common_description` | [fa-w2-components](https://github.com/fiveages-sim/fa-w2-components) | Public | -| Gen3 | `humanoid/FiveAges/Gen3/fiveages_wce3_description` | `fiveages_wce3_description` | `fa-wce3-description` | Private | +| Gen3 | `humanoid/FiveAges/Gen3/fiveages_wce3_description` | `fiveages_wce3_description` | [fa-wce3-description](https://github.com/fiveages-sim/fa-wce3-description) | Private | `feature/agilex` adds Gen2 **W2R** and **S2R** gitlinks; those remotes stay private. @@ -78,7 +78,7 @@ After access to a private remote, init the path named in `.gitmodules` (or let ` |--------------------------------|----------|--------------|------------| | `humanoid/FiveAges/Gen1` | [fiveages-gen1-robot-usds](https://github.com/fiveages-sim/fiveages-gen1-robot-usds) | W1 / Gen1 | Public | | `humanoid/FiveAges/Gen2` | [fiveages-gen2-robot-usds](https://github.com/fiveages-sim/fiveages-gen2-robot-usds) | W2 / S2 / Gen2 (`W2/`, `S2/`, `components/`) | Public | -| `humanoid/FiveAges/Gen3` | `fiveages-gen3-robot-usds` | WCE3 / Gen3 | Private | +| `humanoid/FiveAges/Gen3` | [fiveages-gen3-robot-usds](https://github.com/fiveages-sim/fiveages-gen3-robot-usds) | WCE3 / Gen3 | Private | Gen2 USD is **W2 and S2** only. It does **not** publish W2R or S2R. @@ -95,7 +95,7 @@ After access: 3. `colcon build`, then `source install/setup.bash` in the launch terminal (or that repo’s official quick-start script if it has one). 4. EEF / `hardware:=` follow [robot_common_launch](2-common.md). There is no `gripper:=` and no `hardware:=mock`. -Composer `--robot fiveages_w2` is a real key on [robot_action_composer ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROS2_STACK.md). It is **not** a documented `./init_repo.sh --robot` flag. +Composer `--robot fiveages_w2` is a real key on [robot_action_composer ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROS2_STACK.md). It is **not** a documented `./init_repo.sh --robot` flag. Copy an existing public `{robot}_description` only as a **layout hint** — [Add a Robot](../../2-how_to/6-deployment/10-add_a_robot.md). diff --git a/source/4-reference/hardware/0-index.md b/source/4-reference/hardware/0-index.md index ed52d16..54fdeb9 100644 --- a/source/4-reference/hardware/0-index.md +++ b/source/4-reference/hardware/0-index.md @@ -88,7 +88,7 @@ How-to: [Gazebo Simulation](../../2-how_to/2-simulation/3-gazebo_sim.md), [Isaac | Package | Bus | Plugins / robots | |---------|-----|------------------| -| [topic_based_ros2_control](1-topic_based.md) | ROS 2 topics | Isaac (`hardware:=isaac`) | +| [topic_based_ros2_control](1-topic_based.md) | ROS 2 topics | Isaac topic bridge (`hardware:=isaac`). In-process `isaac_sim` is a different plugin | | [unitree-ros2-control](2-unitree.md) | unitree_sdk2 | Unitree G1 / quadruped | | [dobot-cr-ros2-control](3-dobot.md) | TCP | Dobot CR | | [arx-ros2-control](4-arx.md) | CAN | ARX X5, Acone (dual-arm), Lift 2S | diff --git a/source/4-reference/hardware/1-topic_based.md b/source/4-reference/hardware/1-topic_based.md index 1ba7e43..1fc1803 100644 --- a/source/4-reference/hardware/1-topic_based.md +++ b/source/4-reference/hardware/1-topic_based.md @@ -1,6 +1,8 @@ # topic_based_ros2_control -In-tree under `arms_ros2_control/hardwares/` (not a nested gitmodule). ROS 2 topic hardware interface used when `hardware:=isaac` (Acone xacro: `/isaac/joint_command`, `/isaac/joint_states`). +In-tree under `arms_ros2_control/hardwares/` (not a nested gitmodule). ROS 2 topic hardware interface used when `hardware:=isaac`. + +The plugin defaults below (`/robot_joint_commands`, `/robot_joint_states`) are the class defaults in the README. The shared description macro [`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro) overrides them to `/isaac/joint_command` and `/isaac/joint_states` (Acone uses that macro). W2’s topic-bridge USD uses `/joint_command` and `/joint_states` instead. The xacro `` and the OmniGraph `topicName` are the same strings. In-process Isaac (`hardware=isaac_sim`) does not use this plugin. **Plugin:** `topic_based_ros2_control/TopicBasedSystem`. No `declare_parameter` and no `on_set_parameters`. diff --git a/source/4-reference/python_apps/4-lerobot_ros2.md b/source/4-reference/python_apps/4-lerobot_ros2.md index acee630..73080e1 100644 --- a/source/4-reference/python_apps/4-lerobot_ros2.md +++ b/source/4-reference/python_apps/4-lerobot_ros2.md @@ -2,15 +2,9 @@ LeRobot ↔ ROS 2 integration monorepo. LeRobot talks to the robot over ROS 2 topics. -```{admonition} Documented branch -:class: note - -Documented against branch `feature/sim-grasp-datagen` (tip 2026-09-20). That branch is newer than `main`; follow it, not `main`. -``` +**Repository:** [fiveages-sim/lerobot_ros2](https://github.com/fiveages-sim/lerobot_ros2) `main` (`f750af76`). `feature/sim-grasp-datagen` was merged in [#10](https://github.com/fiveages-sim/lerobot_ros2/pull/10) (`147ea78d`, 2026-10-23) and is no longer a branch. -**Repository:** [fiveages-sim/lerobot_ros2 @ `feature/sim-grasp-datagen`](https://github.com/fiveages-sim/lerobot_ros2/tree/feature/sim-grasp-datagen) - -**README:** [README.md on this branch](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/README.md) +**README:** [README.md](https://github.com/fiveages-sim/lerobot_ros2/blob/main/README.md) ## Purpose @@ -21,7 +15,7 @@ This checkout is a monorepo, not a single `pip install -e .` package. It wires: - `lerobot_robot_ros2` — LeRobot ROS 2 robot plugin (`ROS2Robot` / `ROS2RobotConfig` / `ROS2RobotInterfaceConfig`) - `lerobot_camera_ros2` — LeRobot ROS 2 camera plugin -The LeRobot core library is installed from PyPI. The default pin is `lerobot==0.5.1` in `.fa-env.toml` (first created from [`.fa-env.toml.example`](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/.fa-env.toml.example)). +The LeRobot core library is installed from PyPI. The default pin is `lerobot==0.5.1` in `.fa-env.toml` (first created from [`.fa-env.toml.example`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/.fa-env.toml.example)). ## Requirements @@ -49,11 +43,16 @@ source .venv/bin/activate # default backend=uv | Command | What it does | |---------|----------------| -| `./init.sh all` | Submodules + env + task orchestration + LeRobot plugins | -| `./init.sh all-motion` | Submodules + env + `ros2_robot_interface` + `robot_action_composer` only | -| `./init.sh install-lerobot` | PyTorch + PyPI `lerobot` + `lerobot_robot_ros2` / `lerobot_camera_ros2` | +| `./init.sh all-motion` | Submodules + env + `ros2_robot_interface` + `robot_action_composer`. NumPy stays 1.x | +| `./init.sh all-grasp` | `all-motion` plus dex submodules, `install-grasp` (`viser`, `wuji-sdk`), and the HUG env. NumPy stays 1.x | +| `./init.sh install-lerobot` | PyTorch + PyPI `lerobot` + `lerobot_robot_ros2` / `lerobot_camera_ros2`. Upgrades NumPy to 2 | +| `./init.sh all` | Submodules + env + orchestration + LeRobot plugins (NumPy 2) | | `./init.sh set-backend uv` | Write `backend` in `.fa-env.toml` (`uv` or `conda`) | +Orchestration and dexterous grasp share one environment on NumPy 1.x so they match ROS 2’s system OpenCV / `cv_bridge`. Recording and policy inference install NumPy 2 for `lerobot` 0.5. Use a separate environment for that step. `./init.sh install-lerobot` in the grasp environment upgrades NumPy and then head-camera capture through `cv_bridge` no longer matches the system build. Dexterous grasp is optional (the reference robot is FiveAges W2 with Wuji Hand2). A robot without that grasp config still runs `all-motion`. + +Optional submodules in [`.gitmodules`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/.gitmodules): [HUG](https://github.com/fiveages-sim/HUG) (private; Python 3.10 env under `submodules/hug/.venv`), [wuji-retargeting](https://github.com/fiveages-sim/wuji-retargeting), [internnav_w2](https://github.com/fiveages-sim/internnav_w2), [internnav_arx_lift2s](https://github.com/fiveages-sim/internnav_arx_lift2s), [LightNav-0_W2](https://github.com/fiveages-sim/LightNav-0_W2). `internnav_w2` and `LightNav-0_W2` need access. Runtime retargeting installs PyPI `wuji-sdk` (`./init.sh install-grasp`); do not recurse into the nested MuJoCo repos inside `wuji-retargeting`. + Runtime config lives in local `.fa-env.toml` (gitignored; copied from the example). Keys documented in the README: | Key | Meaning | @@ -64,7 +63,7 @@ Runtime config lives in local `.fa-env.toml` (gitignored; copied from the exampl | `[lerobot].version` | PyPI LeRobot version (default `0.5.1`) | | `[ros2].workspace` | ROS 2 workspace; sourced when the env is activated | -Personal overrides: `.fa-env.local.toml`. Env notes: [docs/ENV_THIS_CHECKOUT.md](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/ENV_THIS_CHECKOUT.md). Use `uv pip` inside this checkout's `.venv`, not system `pip` (PEP 668). Do not install `ros2-stack` / `grasp-generation` into `submodules/hug/.venv` (HUG's Python 3.10 env). +Personal overrides: `.fa-env.local.toml`. Env notes: [docs/ENV_THIS_CHECKOUT.md](https://github.com/fiveages-sim/lerobot_ros2/blob/main/docs/ENV_THIS_CHECKOUT.md). Use `uv pip` inside this checkout's `.venv`, not system `pip` (PEP 668). Do not install `ros2-stack` / `grasp-generation` into `submodules/hug/.venv` (HUG's Python 3.10 env). :::{admonition} Manual fallback :class: note @@ -114,7 +113,23 @@ robot.connect() robot.disconnect() ::: -More examples are under `examples/` on this branch. `lerobot_robot_ros2` depends on the local `ros2-robot-interface` install (`submodules/ros2_robot_interface` first). +More examples are under `examples/`. `lerobot_robot_ros2` depends on the local `ros2-robot-interface` install (`submodules/ros2_robot_interface` first). + +## Isaac workspace + +Shared steps: [`examples/IsaacSim/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md). That README still lists Isaac Sim 6.0. FaSim `config/fa_sim.conf` is the version menu for this stack (fallback `6.2.0` / `6.1.0` / `6.0.1`). + +`motion-generation` runs in any directory that contains `robots/` or a project `robot.yaml`. A [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) project directory (private; needs access) can be that workspace when `LEROBOT_ROOT` points at this checkout and `robot.yaml` `extends` a profile under `examples/IsaacSim/robots/`. The public example in that README is: + +:::{code-block} bash +export LEROBOT_ROOT=/path/to/lerobot_ros2 +cd "/path/to/fa-project-usd/Aimbo/2026-04 Bosch German&Poland POC" +motion-generation --robot fiveages_w2 --task-key poc_port4_bimanual_carry +::: + +`ros2-stack`, `check-robot-status`, and `record_datasets.py --workspace ` take the same directory. Orchestration files beside those scenes (`robot.yaml`, `task_configs/`, `maps/` or `map/`) are on `fa-project-usd` branch `feature/sinopec-test-tube-picking`, which is ahead of that repo’s `main`. + +Public G1D profile [`examples/IsaacSim/robots/Unitree/G1D/robot.yaml`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/Unitree/G1D/robot.yaml): `ee_target_frame` is `{arm}_eef`, `ee_command_frame` is `{arm}_tcp`, and there is no `ee_tip`. `ros2_stack.motion.required` is `false` with `args.hardware: isaac`, because the scene USD already starts in-process control on Play. That YAML `hardware: isaac` is the composer stack preset. It is not the in-process plugin name `isaac_sim`. Leaving `required: true` would start a second controller manager. ## Camera plugin @@ -126,16 +141,16 @@ export LEROBOT_ROS2_DISABLE_CV_BRIDGE=1 The uv path also expects system `ffmpeg` (for example `sudo apt install ffmpeg`). `install-plugins` additionally installs `scipy>=1.14` so `--system-site-packages` does not pick up a system SciPy that is incompatible with numpy 2.x. -## In-repo docs (this branch) +## In-repo docs (`main`) | Doc | Role | |-----|------| -| [docs/ENV_THIS_CHECKOUT.md](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/ENV_THIS_CHECKOUT.md) | Develop and install only in this checkout's env | -| [docs/HUG_SUBMODULE.md](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/HUG_SUBMODULE.md) | HUG submodule notes | -| [docs/WUJI_RETARGETING.md](https://github.com/fiveages-sim/lerobot_ros2/blob/feature/sim-grasp-datagen/docs/WUJI_RETARGETING.md) | Wuji retargeting | -| Composer [GRASP_GENERATION.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/GRASP_GENERATION.md) | Motion + grasp smoke (linked from the lerobot README) | +| [docs/ENV_THIS_CHECKOUT.md](https://github.com/fiveages-sim/lerobot_ros2/blob/main/docs/ENV_THIS_CHECKOUT.md) | Develop and install only in this checkout's env | +| [docs/HUG_SUBMODULE.md](https://github.com/fiveages-sim/lerobot_ros2/blob/main/docs/HUG_SUBMODULE.md) | HUG submodule notes | +| [docs/WUJI_RETARGETING.md](https://github.com/fiveages-sim/lerobot_ros2/blob/main/docs/WUJI_RETARGETING.md) | Wuji retargeting | +| Composer [GRASP_GENERATION.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md) | Motion + grasp smoke (linked from the lerobot README) | -Sim-grasp handoff / EE-align notes also live under `docs/SIM_GRASP_*.md` on this branch. +Sim-grasp handoff / EE-align notes also live under `docs/SIM_GRASP_*.md`. Nav deploy notes: `docs/INTERNAV_W2_SUBMODULE.md`, `docs/INTERNAV_ARX_LIFT2S_SUBMODULE.md`, `docs/LIGHTNAV_W2_SUBMODULE.md`. ## Related diff --git a/source/4-reference/python_apps/5-robot_action_composer.md b/source/4-reference/python_apps/5-robot_action_composer.md index d183ac3..c93f2aa 100644 --- a/source/4-reference/python_apps/5-robot_action_composer.md +++ b/source/4-reference/python_apps/5-robot_action_composer.md @@ -2,17 +2,11 @@ Motion generation and **task_queue** YAML orchestration: a skill registry turns YAML blocks into **`StageTarget`** sequences and runs them through **`ROS2RobotInterface`**. Optional LeRobot dataset recording is an extra, not the core path. -```{admonition} Documented branch -:class: note - -Documented against branch `feature/dex-grasp-generator` (tip 2026-09-20). That branch is newer than `main`; follow it, not `main`. -``` +**Repository:** [fiveages-sim/robot_action_composer](https://github.com/fiveages-sim/robot_action_composer) `main` (`5c94cc08`). `feature/dex-grasp-generator` is no longer a branch; follow `main`. -**Repository:** [fiveages-sim/robot_action_composer @ `feature/dex-grasp-generator`](https://github.com/fiveages-sim/robot_action_composer/tree/feature/dex-grasp-generator) +**README:** [README.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/README.md) -**README:** [README.md on this branch](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/README.md) - -There is no `ActionSequence` / `actions.MoveJ` / `CustomAction` API. Skills are **registered names** in YAML (`task_queue` → `skill`). Full parameter docs: [docs/SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/SKILLS_REFERENCE.md). +There is no `ActionSequence` / `actions.MoveJ` / `CustomAction` API. Skills are **registered names** in YAML (`task_queue` → `skill`). Full parameter docs: [docs/SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md). ## Purpose @@ -36,9 +30,9 @@ Same baseline as the lerobot_ros2 monorepo README: Typical path is from a **lerobot_ros2** checkout (composer is `submodules/robot_action_composer`): :::{code-block} bash -./init.sh all-motion # interface + robot_action_composer -./init.sh install-lerobot # extra: PyTorch + lerobot + plugins (record / infer) -# or once: ./init.sh all +./init.sh all-motion # interface + robot_action_composer (NumPy 1.x) +./init.sh all-grasp # optional dexterous hand (still NumPy 1.x) +# recording / inference, separate env: ./init.sh install-lerobot ::: `./init.sh all-motion` creates the env and installs the two local packages. Optional extras named in composer `pyproject.toml`: `[recording]` (LeRobot / `lerobot_robot_ros2`), `[grasp]` (`viser>=0.2` for grasp-generation UI). That extra is not the fa-py-libraries `./run.sh viser` launcher. @@ -70,7 +64,7 @@ uv pip install "viser>=0.2" # optional; grasp-generation UI - `registry.py` — `register_skill(name, fn)` / `get_skill(name)`; unknown names raise `KeyError` listing registered skills. - Each skill: `(ctx, params) -> (list[StageTarget], ExecutionMeta)`. Blocks with no Cartesian stages return an empty list (pure nav, pure MoveJ, side-effect-only). -YAML discovery scans `task_configs/**/*.yaml` and `robots/*/` (optional vendor grouping `robots///`). See [docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/TASK_CONFIG_YAML.md) and [docs/ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROBOT_CONFIG.md). +YAML discovery scans `task_configs/**/*.yaml` and `robots/*/` (optional vendor grouping `robots///`). See [docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md) and [docs/ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md). ## Skills (registered names) @@ -80,11 +74,12 @@ YAML blocks set `skill:` to a **registered name** (not a Python `MoveJ` / `Gripp |----------|----------------| | Single arm | `single_arm.pick`, `single_arm.place`, `single_arm.move_to_pose`, `single_arm.move_relative`, `single_arm.move_to_object`, `single_arm.goto_cache_pose`, `single_arm.drawer.pull_open`, `single_arm.drawer.close_push` | | Dual arm | `dual_arm.carry`, `dual_arm.parallel_pick`, `dual_arm.handover`, `dual_arm.place`, `dual_arm.bimanual_align`, `dual_arm.goto_cache_pose` | +| Dexterous hand | `dex_hand.auto_grasp` (optional; needs the grasp extra) | | Navigation | `nav.navigate_to_pose`, `nav.navigate_to_object`, `nav.navigate_relative`, `nav.send_nav_goal`, `nav.wait_nav_arrived` | | Joint | `joint.movej_to_config`, `joint.goto_cached_joints` | | Session / robot / env | `session.scratch_put`, `robot.cache_ee_pose`, `robot.cache_joint_state`, `robot.send_mode_command`, `env.randomize_object_local_xyz` | -Full list, defaults, and YAML examples: [docs/SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/SKILLS_REFERENCE.md). +Full list, defaults, and YAML examples: [docs/SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md). ## CLI pointers @@ -93,44 +88,47 @@ Run from a workspace that contains `robots/` (the README uses `examples/IsaacSim :::{code-block} bash # Task queue motion-generation -motion-generation --robot dobot_cr5 --task-key pick_place --scene default -motion-generation --workspace /path/to/workspace --robot dobot_cr5 --task-key pick_place +motion-generation --robot fiveages_w2 --task-key navigate_and_dex_grasp --scene apple motion-generation --lang zh -motion-generation --robot fiveages_w2 --task-key transfer_blade --ensure-ros2-stack # ROS 2 stack (see docs/ROS2_STACK.md) -ros2-stack --lang zh launch +ros2-stack launch --robot fiveages_w2 --group dex_hand +ros2-stack status --robot fiveages_w2 ros2-stack logs --robot fiveages_w2 -f ros2-stack stop --robot fiveages_w2 -ros2-stack status --robot fiveages_w2 --group "projets/siemens/Wind turbo blade" # Grasp generation UI (does not replace the two CLIs above) -grasp-generation serve --robot fiveages_w2 --workspace examples/IsaacSim +grasp-generation serve --robot fiveages_w2 --workspace . # Isaac Sim entity pose (needs /get_entity_state) -check-isaac-pose /World/robot/FiveAges_W2/LinkHou_S2/base_footprint/base_link -check-isaac-pose /World/scene/boxes/white_box_05 \ - --relative-to /World/robot/FiveAges_W2/LinkHou_S2/base_footprint/base_link +check-isaac-pose /World/FiveAges_W2/base_link # Current joints / EE pose (pasteable into YAML) -check-robot-status -check-robot-status --robot fiveages_w2 --workspace examples/IsaacSim -check-robot-status --wait 3.0 --show-joint-names +check-robot-status --robot fiveages_w2 --workspace . ::: `motion-generation` default `workspace_dir` is the current working directory. Language: `--lang` > `MOTION_GENERATION_LANG` > `.motion_last.json` > system `LANG`. Preferences such as `ensure_ros2_stack` are stored in workspace-root `.motion_last.json` (gitignored). -## In-repo docs (this branch) +## End-effector frames + +[`stages_in_command_ee_frame`](https://github.com/fiveages-sim/robot_action_composer/blob/main/robot_action_composer/task_runtime/placement/frames.py) rewrites a stage pose into the link OCS2 tracks. The two paths are not the same source: + +- **No `ee_tip` in `robot.yaml`.** Live TF from `ee_target_frame` to `ee_command_frame`. Public G1D ([`robot.yaml`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/robots/Unitree/G1D/robot.yaml)) sets `{arm}_eef` → `{arm}_tcp`. +- **`ee_tip` set.** First the USD local chain tip → parent (`parent_prim` / `tip_prim`), then an optional live TF from that parent frame to `ee_command_frame`. On W2, OCS2 often tracks `{arm}_eef`, not `{arm}_tcp`. A project `robot.yaml` on [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) `feature/sinopec-test-tube-picking` uses this path (needs access). The prim paths stay in that file. + +Empty frame names send the pose unchanged. + +## In-repo docs (`main`) Package docs for parameters and CLI (follow these for the full list): | Doc | Content | |-----|---------| -| [docs/SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/SKILLS_REFERENCE.md) | Per-skill parameters, defaults, YAML examples | -| [docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/TASK_CONFIG_YAML.md) | Task YAML shape, `skill_defaults` / `skill_params`, load/merge | -| [docs/ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROBOT_CONFIG.md) | `robot.yaml` / `lerobot_config.py` and `robots/` layout | -| [docs/ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/ROS2_STACK.md) | Scene-level control/nav launch (`.meta/ros2_stack.yaml`, `ros2-stack`) | -| [docs/GRASP_GENERATION.md](https://github.com/fiveages-sim/robot_action_composer/blob/feature/dex-grasp-generator/docs/GRASP_GENERATION.md) | Grasp-generation UI and smoke | +| [docs/SKILLS_REFERENCE.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/SKILLS_REFERENCE.md) | Per-skill parameters, defaults, YAML examples | +| [docs/TASK_CONFIG_YAML.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/TASK_CONFIG_YAML.md) | Task YAML shape, `skill_defaults` / `skill_params`, load/merge | +| [docs/ROBOT_CONFIG.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROBOT_CONFIG.md) | `robot.yaml` / `lerobot_config.py` and `robots/` layout | +| [docs/ROS2_STACK.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/ROS2_STACK.md) | Scene-level control/nav launch (`.meta/ros2_stack.yaml`, `ros2-stack`) | +| [docs/GRASP_GENERATION.md](https://github.com/fiveages-sim/robot_action_composer/blob/main/docs/GRASP_GENERATION.md) | Grasp-generation UI and smoke | Isaac Sim env / USD / workspace steps, when present, are in the monorepo `examples/IsaacSim/README.md`. diff --git a/source/4-reference/simulation/2-fasim_isaac.md b/source/4-reference/simulation/2-fasim_isaac.md index 1732163..e16c876 100644 --- a/source/4-reference/simulation/2-fasim_isaac.md +++ b/source/4-reference/simulation/2-fasim_isaac.md @@ -1,103 +1,137 @@ # FaSim-Isaac -NVIDIA Isaac Sim integration for FiveAges Sim. +NVIDIA Isaac Sim workspace for FiveAges Sim: robot and scene USD, an optional Isaac ROS 2 Jazzy overlay, and the extensions that start 运控 inside Sim. -**Repository:** [fiveages-sim/FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac) +**Repository:** [fiveages-sim/FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac) `main` (`3606dc89`, 2026-11-13). In-process ros2_control landed on `main` in [#7](https://github.com/fiveages-sim/FaSim-Isaac/pull/7) (`1a4193a3`). `feature/ros2-control-node` has since diverged (Replicator capture under `exts/fasim.replicator.sdg` is on that branch, not on `main`). **README:** [README.md](https://github.com/fiveages-sim/FaSim-Isaac/blob/main/README.md) -## Purpose +How to start Sim and which launch to use: [Isaac Sim](../../2-how_to/2-simulation/4-isaac_sim.md). -**FaSim** is NVIDIA Isaac Sim high-fidelity simulation plus the same ROS 2 运控 stack as the real robot: matching motion capability, plus simulation ground truth. [FaSim-Isaac](https://github.com/fiveages-sim/FaSim-Isaac) is the one-click asset workspace: it pulls robot USD and scene submodules, can install the Isaac ROS 2 Jazzy overlay, and starts Sim. +## Two hardware interfaces -## Prerequisites +| Key | Where it is set | Plugin | Joint I/O | +|-----|-----------------|--------|-----------| +| `isaac` | `ros2 launch … hardware:=isaac` | `topic_based_ros2_control/TopicBasedSystem` | `sensor_msgs/JointState` topics | +| `isaac_sim` | `emit_control` inside `ROS2ControlLaunch` (not a `demo.launch.py` flag) | `isaacsim_ros2_control/IsaacSimSystem` | In-process articulation | -- NVIDIA Isaac Sim binary (GPU + matching drivers) -- Default path `ISAACSIM_DIR` (`~/isaacsim`); override in `config/fa_sim.local.conf` or the environment +Shared xacro: [`simulation_hardware.xacro`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/xacro/ros2_control/simulation_hardware.xacro). `hardware:=isaac` writes `/isaac/joint_command` and `/isaac/joint_states`. `hardware:=isaac_sim` writes `` from launch `isaac_prim_path` (ArticulationRoot). [`robot_common_launch` README](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/README.md) lists both keys. `use_sim_time` is true for `gz`, `isaac`, and `isaac_sim` unless the launch argument is explicitly `true` or `false` ([`launch_arg_utils.py`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/robot_common_launch/common/launch_arg_utils.py)). -Do not hardcode a single Isaac minor version. `./init.sh` operation 2 queries GitHub stable tags; fallback list in `config/fa_sim.conf` currently `6.0.1` / `6.0.0` / `5.1.0`. +A robot xacro that whitelists `validated_hardware_type` must include `isaac_sim` or that xacro fails on purpose. -## Installation +`{hardware}.yaml` overlays merge only when the file exists. `load_robot_config` order is common → type yaml → `{variant}.yaml` → end-effector compose → `{hardware}.yaml` → `control.patch` ([`robot_utils.py`](https://github.com/fiveages-sim/robot-descriptions-common/blob/main/robot_common_launch/robot_common_launch/common/robot_utils.py)). Hardware overlay runs after compose so a later compose pass does not drop gripper keys from `isaac.yaml` ([robot-descriptions-common #41](https://github.com/fiveages-sim/robot-descriptions-common/pull/41)). `isaac_sim` can reuse `isaac.yaml`; emit passes `hardware_yaml=isaac`. A file named `isaac_sim.yaml` is loaded when the launch hardware string is `isaac_sim`. -:::{code-block} bash -git clone git@github.com:fiveages-sim/FaSim-Isaac.git -cd FaSim-Isaac -./init.sh -./run.sh -::: +### Topic names are per robot -What `./init.sh` does: +The shared macro’s `/isaac/joint_*` pair is the topic-bridge default (Acone uses that macro). W2’s topic-bridge graph publishes `/joint_command` and `/joint_states` ([`ros2.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/ros2.usda)). The xacro `` and the graph `topicName` are the same strings. `demo.launch.py` does not take a namespace that rewrites them. -1. Initialize selected submodules (`.gitmodules` / `submodules_visibility.conf`; public default) -2. Optional Isaac ROS 2 Jazzy workspace (`isaac_jazzy_ws/`). Override version with `ISAAC_SIM_VERSION=… ./init.sh` +In-process W2 ([`fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/fiveages.usda)) does not bridge body or arm `JointState` topics. The controller manager owns those degrees of freedom. Chassis `cmd_vel` / `odom` stay on the child ROS graph. -What `./run.sh` does: optional CPU governor, optional Zenoh router, then a menu — **PhysX** / **Newton** / **Headless Streaming**. There is no `./run.sh --robot`, `--headless`, or `--env`. +## In-process launch -Local config: +`OgnROS2ControlLaunch` ([`OgnROS2ControlLaunch.ogn`](https://github.com/fiveages-sim/FaSim-Isaac/blob/main/exts/fasim.ros2.nodes/fasim/ros2/nodes/ogn/python/nodes/OgnROS2ControlLaunch.ogn)) runs once after Play: -:::{code-block} bash -cp config/fa_sim.local.template.conf config/fa_sim.local.conf -# edit ISAACSIM_DIR / ISAAC_SIM_DEFAULT_VERSION -::: +| Input | Role | +|-------|------| +| `targetPrim` | One ArticulationRoot | +| `robot` | Description stem (`unitree_g1d`, `fiveages_w2`). Empty reads the USD `Robot` variant | +| `mode` | `demo`, `split_body`, or `full_body` | +| `type` | `robot_common_launch` end-effector key. Empty reads EE variants on the stage | +| `namespace` | Controller manager namespace. Empty is the global `/controller_manager` | +| `infoFile` | OCS2 `.info` basename. Empty keeps the description default | +| `useSimTime` | Forced true for `isaac_sim` (needs `/clock`) | +| `publishRobotDescription` | Latch the same xacro on `/robot_description` (default true) | -## ROS 2 Connection +`emit_control` builds one xacro URDF and pins both the controller manager and `/robot_description` to it. `Ros2ControlManager.setup` is called with `publish_robot_description=False`, so the manager does not publish that topic again. `robot_state_publisher` (host process) publishes `/robot_description` and the URDF TF tree. If that process does not start, a latched `fasim_robot_description` publisher is the fallback. Resource Manager therefore loads the description once. -In a separate terminal (robot name is a ROS 2 launch argument, not a FaSim flag): +That xacro path is also why Play does not synthesize a fresh URDF from the stage on every start: the node reuses the description xacro and only falls back to USD synthesis for an unexpected prim. -:::{code-block} bash -ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac -::: +### CppAD cache -## Structure +`ocs2_arm_controller` declares `recompile_libraries` with default **true** when `task.info` does not set `recompileLibraries` ([`CtrlComponent.h`](https://github.com/fiveages-sim/arms_ros2_control/blob/main/controller/ocs2_arm_controller/include/ocs2_arm_controller/control/CtrlComponent.h)). The library folder is `${OCS2_PLANNING_URDF_DIR:-/tmp}/ocs2_ros2//ocs2/`. -:::{code-block} none -FaSim-Isaac/ -├── init.sh -├── run.sh -├── config/ # fa_sim.conf + optional fa_sim.local.conf -├── robots/ # → robot_usds -├── environment/ -│ ├── fiveages_env/ # → fiveages-env-usds -│ └── fa-project-usd/ # → fa-project-usd (private) -└── isaac_jazzy_ws/ # created by init.sh operation 2 +`emit_control` then sets `recompile_libraries: false` on the **main** controller only: `ocs2_arm_controller` for `demo` / `split_body`, `ocs2_wbc_controller` for `full_body`. That force applies to the in-process `isaac_sim` path. A topic-bridge `hardware:=isaac` launch does not run `emit_control`, so it keeps the controller default (true unless that robot’s info or YAML already says false). + +Reusing the xacro URDF and reusing the CppAD cache are the two startup shortcuts for a simulated robot that runs 运控 inside Isaac. + +### `infoFile` and `BASE_LOCK` + +`infoFile` overrides `info_file_name` on the main controller. `fixed_base_tcp` drops the virtual chassis degrees of freedom (`manipulatorModelType` 0) so whole-body planning is body and arms. + +`emit_control` warns when `mode` is `full_body` and the override name contains `fixed_base`: the planner has `basePlan=0`, so a runtime `BASE_LOCK` has nothing to constrain, and the arm enable policy can stay in `WAITING_FOR_ENABLE_POLICY`. Locking the base uses `mobile_base_tcp` plus `BASE_LOCK`. + +Whole-body control needs [ocs2-wbc-controller](https://github.com/fiveages-sim/ocs2-wbc-controller) (private; open it after access). + +## Clock + +In-process W2 publishes `/clock` from a separate on-demand graph `ROS_Clock`: `evaluationMode=OnDemand`, `pipelineStage=pipelineStageOnDemand`, `OnPhysicsStep` → `PublishClock`, `IsaacReadSimulationTime` with `resetOnStop=1` ([`fiveages.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/fiveages.usda)). `OnPhysicsStep` does not run in the automatic `ROS_Control` graph, so the clock graph stays beside it. `ROS_Control` still uses `OnPlaybackTick` to start `ROS2ControlLaunch` once. + +The topic-bridge payload on the same robot ([`ros2.usda`](https://github.com/fiveages-sim/fiveages-gen2-robot-usds/blob/main/W2/payloads/ROS/ros2.usda)) still drives `PublishClock` from `OnPlaybackTick` and sets `resetOnStop=0`. + +`/clock` is the controller’s time base when `use_sim_time` is true. A render-frame clock advances several physics steps in one tick, so a timed move finishes early. The repair is the physics-step clock, not a joint-parameter change. The same `ROS_Clock` pattern is what new fiveages in-process payloads follow; this page verifies it on W2. Odometry graphs keep their own `ReadSimTime` (`resetOnStop=1`) so `odom` stamps stay valid. Camera prims belong on the scene payload, not on this clock graph. + +`arms_target_manager`, when the node spawns it, is a host process with `use_sim_time:=false` so markers are not tied to the physics step. + +## TF + +Isaac’s odometry graph publishes `world → odom → base_*` and `/odom`. It does not publish the whole URDF tree. `robot_state_publisher` publishes `base_footprint → base_link` (when both links exist) and the arm tree, including fixed frames such as `right_eef`. + +W2’s in-process ArticulationRoot is `base_link` (`/FiveAges_W2/base_link`). The odometry chain on that payload is `world → odom → base_footprint`; `robot_state_publisher` publishes `base_footprint → base_link`. OCS2 `baseFrame` is the same link the planner’s `task.info` names. `base_footprint` is the ground link; `base_link` may sit above it. Two publishers on one edge fight. A standing model with no `base_footprint` uses `base_link` for that chain. Confirm the link in that robot’s USD and `task.info` before copying the W2 names. + +### Several robots + +One ArticulationRoot, one `ROS2ControlLaunch`, and one controller manager per robot. Isolation is the graph `namespace` plus relative topic names (`cmd_vel`, `fsm_command`, `robot_description`). `/clock` stays global. + +A ROS namespace remaps topics (`//tf`, `//tf_static`). It does not prefix `frame_id`. Each tree still has frames named `world`, `odom`, and `base_link`. `world → odom` is that robot’s latched spawn pose on **its** `//tf`, not a rewritten frame called `g1d/world`. RViz listens to `/tf` unless you remap it, for example: + +:::{code-block} bash +ros2 run tf2_ros tf2_echo world base_link --ros-args \ + -r /tf:=//tf -r /tf_static:=//tf_static ::: -## Submodules +`` is the string on that graph’s `namespace` input, not a `demo.launch.py` argument. A stage with one graph and one controller manager per robot has been run. -| Path | Repository | Visibility | -|------|------------|------------| -| `robots/` | robot_usds | Public | -| `environment/fiveages_env/` | fiveages-env-usds | Public | -| `environment/fa-project-usd/` | fa-project-usd | Private | +## Navigation -## Topic Bridge +`NavigationLaunch` ([`OgnNavigationLaunch.ogn`](https://github.com/fiveages-sim/FaSim-Isaac/blob/main/exts/fasim.ros2.nodes/fasim/ros2/nodes/ogn/python/nodes/OgnNavigationLaunch.ogn)) starts `ros2 launch robot_common_launch navigation_isaac_gt.launch.py` on Play when `enabled` is true. W2’s fiveages graph leaves `enabled` false. -FaSim-Isaac bridges Isaac Sim to ROS 2: +`map` and `paramsFile` are paths relative to the opened stage root, so an `env/` layer can point at `../../maps//map.yaml` stored in the same [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) project. The node does not call composer `ros2-stack`. Default `nav2Profile` is `map_only`. `publishMapWorldTf` defaults true (map drawn in USD world). `publishMapOdomTf` defaults false because odometry comes from Isaac. -| Isaac Topic | ROS 2 Topic | Direction | -|-------------|-------------|-----------| -| Joint positions | `/joint_states` | Isaac → ROS | -| Joint commands | `/joint_commands` | ROS → Isaac | +## Project scenes -Open robot USD from `robots/` and scene USD from `environment/` in Isaac. Selection is not a `run.sh` CLI flag. +[fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) is private. On `main`, a project is `scene.usd(a)`, `objects/`, and runnable `env/` ([README](https://github.com/fiveages-sim/fa-project-usd/blob/main/README.md)). -## Troubleshooting +Orchestration files next to those scenes (`robot.yaml`, `task_configs/`, `maps/` or `map/`) are on branch `feature/sinopec-test-tube-picking`, which is ahead of `main` and not merged (compared 2026-11-13). Three projects on that branch have this layout: `Fiveages/2026-11 Standard Moving Boxes`, `Siemens/2026-06 Wind Turbine Blade Detection`, and `Aimbo/2026-04 Bosch German&Poland POC`. Open the branch after you have access. The public entry for running a project directory is [lerobot_ros2 `examples/IsaacSim/README.md`](https://github.com/fiveages-sim/lerobot_ros2/blob/main/examples/IsaacSim/README.md) (`motion-generation` with `LEROBOT_ROOT` set). Camera rigs stay in the scene USD. -### Isaac Sim Won't Start +## Layout + +:::{code-block} none +FaSim-Isaac/ +├── init.sh +├── run.sh +├── run_headless.sh +├── config/ # fa_sim.conf + optional fa_sim.local.conf +├── exts/fasim.ros2.nodes/ # ROS2ControlLaunch, NavigationLaunch +├── exts/fasim.steering.nodes/ # swerve graph node +├── tools/audit_mimic_joint_drives.py +├── robots/ # → robot_usds +└── environment/ + ├── fiveages_env/ + ├── fa-project-usd/ # private + ├── artvip-usd/ + └── labutopia-usd/ +::: -1. Confirm `ISAACSIM_DIR` contains `isaac-sim.sh` (and the Newton / streaming launchers named in `fa_sim.conf`) -2. Override the path in `config/fa_sim.local.conf` -3. Check GPU drivers: `nvidia-smi` -4. Check logs: `~/.nvidia-omniverse/logs/` +Submodule URLs: [`.gitmodules`](https://github.com/fiveages-sim/FaSim-Isaac/blob/main/.gitmodules). Visibility: `submodules_visibility.conf`. -### No ROS 2 Connection +## Mimic joints -1. Check domain ID matches -2. Verify ROS 2 bridge extension enabled -3. Restart `./run.sh` and the ROS 2 nodes +`tools/audit_mimic_joint_drives.py` reports mimic joints that have no drive. Assets that already use `PhysxMimicJointAPI` or `NewtonMimicAPI` should not gain a second drive: the solver already enforces the mimic, and a drive at `targetPosition=0` fights it. `--apply` is for a mimic that has neither PhysX nor Newton mimic API. ## Related -- [robot_usds](3-robot_usds.md) -- [Isaac Sim How-To](../../2-how_to/2-simulation/4-isaac_sim.md) -- [Synthetic Data](../../2-how_to/7-synthetic_data/0-index.md) +- [Isaac Sim how-to](../../2-how_to/2-simulation/4-isaac_sim.md) +- [topic_based_ros2_control](../hardware/1-topic_based.md) +- [robot_common_launch](../descriptions/2-common.md) +- [lerobot_ros2](../python_apps/4-lerobot_ros2.md) +- [Environment assets](5-env_assets.md) diff --git a/source/4-reference/simulation/5-env_assets.md b/source/4-reference/simulation/5-env_assets.md index b765104..7b4453d 100644 --- a/source/4-reference/simulation/5-env_assets.md +++ b/source/4-reference/simulation/5-env_assets.md @@ -30,19 +30,11 @@ FaSim-Isaac/ ### Usage -```python -# Load environment in Isaac Sim -from omni.isaac.core.utils.stage import add_reference_to_stage - -add_reference_to_stage( - usd_path="environment/fiveages_env/office.usd", - prim_path="/World/Environment" -) -``` +Start Isaac with FaSim `./run.sh` and open the scene USD under `environment/fiveages_env/`. ## fa-project-usd -**Repository:** fa-project-usd (private) +**Repository:** [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd) (private; the link needs access) ```{admonition} Access Required :class: warning @@ -78,14 +70,9 @@ Start Isaac with FaSim `./run.sh` (PhysX / Newton / Headless Streaming menu). Op ## Creating Custom Environments -1. Create USD scene in Isaac Sim -2. Export to `environment/` directory -3. Reference in configuration - -```python -# Custom scene setup -scene_path = "environment/custom_scene.usd" -``` +1. Create the USD scene in Isaac Sim. +2. Put it under `environment/fiveages_env/` or, with access, under [fa-project-usd](https://github.com/fiveages-sim/fa-project-usd). +3. Open that file from `./run.sh`. On `main`, a project is `scene.usd(a)`, `objects/`, and `env/` ([README](https://github.com/fiveages-sim/fa-project-usd/blob/main/README.md)). `robot.yaml`, `task_configs/`, and `maps/` or `map/` sit on branch `feature/sinopec-test-tube-picking` (ahead of `main`, not merged). ## Related diff --git a/source/6-more_applications/4-simulation_engineer.md b/source/6-more_applications/4-simulation_engineer.md index d6f55bf..ab4763b 100644 --- a/source/6-more_applications/4-simulation_engineer.md +++ b/source/6-more_applications/4-simulation_engineer.md @@ -4,12 +4,12 @@ For engineers who import sim assets, configure a robot in this stack, and compos ## 1. Isaac line and USD assets -1. [Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md) — FaSim-Isaac `./init.sh` then `./run.sh`; ROS 2 side `hardware:=isaac`. +1. [Isaac Sim](../2-how_to/2-simulation/4-isaac_sim.md) — FaSim-Isaac `./init.sh` then `./run.sh`. ROS 2 is either `hardware:=isaac` (topic bridge) or in-process `isaac_sim` on Play. 2. [Isaac Scenes and USD](../2-how_to/7-synthetic_data/1-isaac_scenes.md) — how FaSim pulls [robot_usds](../4-reference/simulation/3-robot_usds.md). 3. [robot_usds](../4-reference/simulation/3-robot_usds.md) and [USD submodules](../4-reference/simulation/4-usd_submodules.md) — brand folders, public vs private trees. 4. Environment assets: [env assets](../4-reference/simulation/5-env_assets.md) when the scene needs more than the robot. -Gazebo (different backend): [Gazebo Simulation](../2-how_to/2-simulation/3-gazebo_sim.md), [Gazebo reference](../4-reference/simulation/1-gazebo.md). There is **no** `hardware:=mock`; keys are `mock_components` / `gz` / `isaac` / `real`. +Gazebo (different backend): [Gazebo Simulation](../2-how_to/2-simulation/3-gazebo_sim.md), [Gazebo reference](../4-reference/simulation/1-gazebo.md). There is **no** `hardware:=mock`; keys are `mock_components` / `gz` / `isaac` / `isaac_sim` / `real`. ## 2. Robot configuration @@ -25,7 +25,7 @@ Isaac datagen motions are **task_queue YAML skills**, not a Python `ActionSequen 1. [Synthetic Data](../2-how_to/7-synthetic_data/0-index.md) — pipeline map. 2. [Interface and Orchestration](../2-how_to/7-synthetic_data/2-orchestration.md) — `./init.sh all-motion`, `motion-generation`, `ros2-stack`. -3. [robot_action_composer](../4-reference/python_apps/5-robot_action_composer.md) — documented branch `feature/dex-grasp-generator`; skill names and flags on that README / `docs/`. +3. [robot_action_composer](../4-reference/python_apps/5-robot_action_composer.md) — `main`; skill names and flags on that README / `docs/`. Composer `--robot fiveages_w2` is a real key on composer `ROS2_STACK.md`. It is **not** an `./init_repo.sh --robot` flag.