计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
srdf【效率与协作】MoveIt2 SRDF 创作、验证和规划语义工作流程。在创建、编辑、检查或验证“.srdf”文件、MoveIt 规划组、虚拟关节、被动关节、末端执行器、组状态、禁用碰撞、URDF 配对规划语义或用于实时审查的 SRDF 切换时使用。使用 URDF 技能进行机器人结构,使用 SDF 技能进行模拟器描述,使用 cad-viewer 技能进行渲染、实时查看链接和可选的 MoveIt2 控件。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Provenance: maintained in earthtojake/text-to-cad. Use the installed local skill files as the runtime source of truth; the repository link is only for provenance and release review.
Use this skill for MoveIt semantic robot descriptions on top of an existing valid URDF. SRDF defines planning semantics; it does not define physical robot structure. The .srdf file is the source of truth: author and edit the XML directly. There is no gen_srdf() contract.
SRDF correctness is a planning semantics problem. The common failure is not invalid XML; it is a plausible SRDF that gives MoveIt the wrong planning group, wrong tool link, wrong default state, unsafe disabled-collision matrix, or wrong joint units. Because language models are weak at spatial and kinematic reasoning, derive planning groups, end effectors, group states, and disabled collisions from the URDF topology, MoveIt Setup Assistant output, sampled collision analysis, or explicit user data. Do not infer them from visual theme alone — and do not type any link or joint name from memory: extract the URDF's link/joint table first and copy names from it.
Do not place geometry, inertials, joint origins, link poses, mesh references, physical joint limits, transmissions, or ros2_control interfaces in SRDF.
After completing SRDF work that creates or modifies a .srdf, you must ALWAYS hand the explicit file path to $cad-viewer when that skill is installed. $cad-viewer must start CAD Viewer if it is not already running and return link(s) to the relevant created or updated file(s); include optional MoveIt2 controls in the handoff only when the user needs interactive IK or path-planning review. If $cad-viewer is unavailable or startup fails, report that instead of silently omitting the handoff.
$urdf and validate it. The SRDF pairs with that URDF by colocation and robot name, and every name in the SRDF must exist in it.references/srdf-workflow.md.references/planning-ledger.md before writing XML; keep a compact copy as a comment block in the .srdf..srdf in the same folder as its .urdf, with the same <robot name> — that is the only linking mechanism. The validator, the viewer, and the MoveIt2 server all resolve the pairing by scanning the folder for the URDF whose robot name matches; exactly one URDF per robot name per folder. No metadata element links the files. See references/authoring-contract.md.references/disabled-collisions.md..srdf with scripts/validate; it cross-validates all names, chains, states, and pairs against the paired URDF. Fix findings and re-validate until clean.Run with the Python environment for the project or workspace. Treat python in examples as an interpreter placeholder; if bare python is unavailable, substitute python3, a project virtualenv interpreter, or the configured interpreter path. The validator uses only the Python standard library.
From this skill directory, the validator shape is:
python scripts/validate path/to/robot.srdf
python scripts/validate path/to/a.srdf path/to/b.srdf
python scripts/validate path/to/robot.srdf --strict
python scripts/validate path/to/robot.srdf --format json
The validator collects all findings in one pass (severity, code, XML path). It parses the SRDF, resolves the paired URDF (the same-folder .urdf whose robot name matches; none or several is an error), and cross-validates: group/joint/link/subgroup name existence, chain path resolvability, subgroup cycles, virtual/passive joints, end-effector topology, group-state membership/limits/completeness, disabled-collision pairs (including Adjacent-reason truthfulness), and misspelled elements. --strict treats warnings as failures; --format json emits a machine-readable findings document. It exits nonzero if any target fails. Relative targets resolve from the current working directory.
<robot name>; that colocation-plus-name match is the only pairing mechanism, and exactly one URDF per robot name may exist in the folder.$cad-viewer owns optional local moveit2_server guidance for interactive planning review.scripts/snapshot renders the robot to a PNG still or an orbit GIF, using the same shared
CLI and headless browser runtime every rendering skill uses — so a snapshot matches what
the CAD Viewer shows.
python scripts/snapshot --input path/to/robot.srdf --output review.png
python scripts/snapshot --input path/to/robot.srdf --output turntable.gif --mode orbit
It accepts .srdf only. Pose the robot with the job field "jointValues" (joint name to
degrees, defaulting to the rest pose) rather than --params, which is STEP-only; robots
are authored in metres and are framed on the robot scene scale automatically.
Theme settings live under one --theme, mirroring the viewer's Theme tab. The default
theme is snapshot — Workbench Light with the ground grid, origin axis and shadows
removed, because in a still image those read as geometry. There is no --display: display
settings (mode, clip, exploded, edges) are CAD topology settings, and a robot carries none.
Link meshes are resolved relative to the description, so they must be present: an
unhydrated Git LFS pointer fails as "No link mesh loaded for robot". Run
git lfs checkout <mesh dir> first.
Use python scripts/snapshot --help for the complete current command interface.
references/authoring-contract.mdreferences/srdf-workflow.mdreferences/planning-ledger.mdreferences/validation.mdreferences/end-effectors.mdreferences/disabled-collisions.mdFor local MoveIt2 controls, use $cad-viewer; in that skill, read references/moveit2-server.md.