跳到正文
cccskills
免费在 GitHub 公开

srdf

Create and validate SRDF files that define how MoveIt2 plans robot motion. Check planning groups, named poses, end effectors, and collision exclusions against an existing URDF robot model, then review the model visually.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

MoveIt2 SRDF authoring, validation, and planning-semantics workflow. Use when creating, editing, inspecting, or validating `.srdf` files, MoveIt planning groups, virtual joints, passive joints, end effectors, group states, disabled collisions, URDF-paired planning semantics, or SRDF handoff for live review. Use the URDF skill for robot structure and the SDF skill for simulator descriptions. Open and visually review existing SRDF files in CAD Viewer.

查看安装方法

适用场景

  • Define planning groups for a robot arm
  • Check named poses and joint limits
  • Review collision exclusion settings
  • Validate an SRDF against its URDF

包含的文件(9)

  • SKILL.md11.7 KB
  • agents/openai.yaml317 B
  • LICENSE1.0 KB
  • references/authoring-contract.md4.5 KB
  • references/disabled-collisions.md1.8 KB
  • references/end-effectors.md1.6 KB
  • references/planning-ledger.md3.3 KB
  • references/srdf-workflow.md2.9 KB
  • references/validation.md3.8 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

SRDF

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.

Setup

Run cadgen through uv, so this skill's commands share one installation, and its warm build daemon, with the CAD app's server:

  • cadgen below means uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.22 cadgen
  • python below means uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.22 python

The first run downloads that installation and the first snapshot its headless browser; later runs reuse both.

Format boundary

  • URDF owns physical robot structure: links, joints, geometry, inertials, limits, mimic joints, transmissions, and robot-state publishing.
  • SRDF owns MoveIt semantics: virtual joints, passive joints, planning groups, group states, end effectors, and disabled collision pairs.
  • SDF owns simulator/world semantics: physics, sensors, lights, plugins, worlds, and simulation-specific metadata.

Do not place geometry, inertials, joint origins, link poses, mesh references, physical joint limits, transmissions, or ros2_control interfaces in SRDF.

Show the model

Show the user each file you create or change, and any they ask to see. Snapshots and validation don't replace this.

  • If your tools include cad_show (your host may prefix it), use it with the file's absolute path, and follow its description for when to call it again. cad_view reads what the user selected; cad_screenshot shows you what they see. Neither is a review of your own work.

  • Otherwise run the CAD Viewer, from any folder:

    cadgen viewer --host 127.0.0.1 --json --detach
    

    --detach returns once the viewer answers requests and leaves it running in the background: always pass it, since a foreground viewer never exits (and piping its output through tail can hide the URL for good). It starts this machine's one viewer, or reuses it. Read url from its one JSON line (never guess the port), and for each file return url?file=<its URL-encoded absolute path>. If it fails to launch, say so.

Keep the SRDF beside its uniquely matching URDF (same robot name). Review planning groups, named states and joints; visual review does not prove planning correctness.

Required workflow

  1. Start from a valid URDF. Author or fix the URDF first with $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.
  2. Extract the URDF table. Before writing any SRDF XML, list the URDF's robot name, links, joints (with type, parent, child, limits, mimic flags). Copy names from this table only; never type them from memory. See references/srdf-workflow.md.
  3. Identify the planning task. Record whether the goal is arm IK, gripper control, mobile base planning, dual-arm planning, tool use, or local smoke testing.
  4. Create or update the planning ledger. Use references/planning-ledger.md before writing XML; keep a compact copy as a comment block in the .srdf.
  5. Pair with the URDF by colocation. Save the .srdf in the same folder as its .urdf, with the same <robot name> — that is the only linking mechanism. The validator and the viewer both 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.
  6. Define virtual and passive joints deliberately. Use them when needed by the robot model.
  7. Define planning groups from URDF topology. Prefer chain groups for serial manipulators when base/tip form a real parent-to-child path in the URDF tree (the validator verifies this). Use joint/link/subgroup definitions only when they are deliberate.
  8. Define end effectors after group membership is known. Avoid overlap between an end-effector group and its parent group. Record the actual target/TCP link.
  9. Define group states in URDF-native units. Revolute and continuous values are radians; prismatic values are meters. Do not store degrees in SRDF. Values must lie within URDF limits and must not set fixed or mimic joints.
  10. Generate disabled collisions from evidence. Use adjacency derived from the URDF joint table, MoveIt Setup Assistant sampling, or explicit user-provided collision matrices. Do not invent broad disable lists. See references/disabled-collisions.md.
  11. Validate every created or modified .srdf with cadgen srdf validate; it cross-validates all names, chains, states, and pairs against the paired URDF. Fix findings and re-validate until clean.
  12. Run MoveIt smoke tests when available. Use MoveIt Setup Assistant or a project MoveIt launch directly.
  13. Report assumptions and skipped checks. Include incomplete validation, missing MoveIt environment, manually reasoned collision disables, and inferred target links.

Commands

Run cadgen as Setup defines it. cadgen doctor <skill-dir> reports the installation in use and checks that it is the one this skill pins — docs drift silently on another. Validation itself needs nothing beyond the Python standard library; only snapshots need the browser. Use cadgen <verb> --help for the complete current interface.

The validator shape is:

cadgen srdf validate path/to/robot.srdf
cadgen srdf validate path/to/robot.srdf --strict
cadgen srdf validate path/to/robot.srdf --json

The validator parses the SRDF, resolves the paired URDF (the same-folder .urdf whose robot name matches; none, several, or an invalid one 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. Each phase collects all its findings in one pass (severity, code, XML path), but a structural error stops the cross-file phase — re-run after every fix. One run validates ONE file: --strict treats warnings as failures and --json prints one line of {"ok", "path", "issues": [{"severity", "code", "message", "element", "hint"}], "summary"}, where element is the XML path. It exits nonzero if the target fails. Relative targets resolve from the current working directory.

Hard rules

  • The SRDF lives in the same folder as its URDF and shares its <robot name>; that colocation-plus-name match is the only pairing mechanism, and exactly one URDF per robot name may exist in the folder.
  • Every link, joint, group, and subgroup name must come from the URDF table or a group defined in the same file.
  • Group states use URDF-native units: radians for revolute/continuous, meters for prismatic.
  • Disabled collision pairs require truthful reasons and provenance.
  • End-effector groups should not share links with their parent planning group.
  • Visual rendering review is useful but cannot prove planning correctness.

Snapshot Tool

cadgen snapshot renders the robot to a PNG still, using the same shared CLI and headless browser runtime every rendering skill uses — so a snapshot matches what the CAD Viewer shows.

cadgen snapshot path/to/robot.srdf review.png

Hand it the .srdf; it routes by suffix and renders the paired URDF's geometry — the same-folder .urdf whose <robot name> matches, exactly as cadgen srdf validate pairs them. No match, or more than one, is refused before anything renders, naming the robot name it looked for and the .urdf files it found. Pose the robot with --joint-values — {joint: degrees} JSON, joints you do not name staying where the CAD Viewer opens the robot: each at its default, then this SRDF's home group state if it declares one (the "jointValues" job field is the same thing in a packet). The snapshot draws the robot with the viewer's own scene, so it shows what the viewer shows, and a link mesh that cannot be loaded fails it rather than leaving the link out. Robots are authored in metres and are framed on the robot scene scale automatically.

A normal snapshot uses Solid mode and Light appearance. The display mode is solid (the default) or parts (each link its own colour), each at its own defaults; --grid draws the measuring grid under the robot, and --preview draws Preview's shared photographic scene instead, in perspective. Inline display JSON and JSON files are the Viewer's display object: mode, grid, appearance (light, the default, or dark), camera (projection and focal length) and clip. Top-level --camera and --joint-values remain active in every display mode. display.clip cuts the robot as the viewer's Clip does ({"clip":{"axis":"x","at":0.05}}, at in metres); exploded, and shaded, xray, hidden-line and wireframe, describe a STEP model's CAD edges and parts, and are refused by name here. A Quick Edit job from the viewer replays as it is: its jointValues, its selection.hide (the parts hidden in the Links panel, by their ids), its clip, annotation and measurements (cadgen snapshot --job <file>). Quick Edit supplies inline JSON or a .snapshot.json path; save inline JSON to a temporary file before using --job. Inspect supplied annotations before editing. Without annotations, the captured view is optional context; render it when useful to the request.

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.

An SRDF's geometry comes from its paired URDF, so it has no snapshot door of its own; the polymorphic cadgen snapshot routes one by suffix. The grammar is cadgen snapshot TARGET [OUT] [flags], the same one every format door uses. Use cadgen snapshot --help for the complete current interface.

References

  • Authoring contract (structure, URDF pairing, golden skeleton): references/authoring-contract.md
  • SRDF workflow (URDF table extraction, edit loop): references/srdf-workflow.md
  • Planning ledger: references/planning-ledger.md
  • Validation and verification recipe: references/validation.md
  • End effectors: references/end-effectors.md
  • Disabled collisions: references/disabled-collisions.md

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Prepare files for printing on Bambu Lab printers by opening sliced files in Bambu Connect or unsliced models in Bambu Studio. The user selects the printer, checks the setup, and starts printing in the app.

中文简介正在准备中。当前显示英语简介。

  • Open a sliced file in Bambu Connect
  • Open an unsliced model in Bambu Studio
  • Prepare printing through Bambu Cloud or LAN
earthtojake/text-to-cad2.1万2026年10月18日 更新

cad

免费

Create and edit 3D parts and assemblies with adjustable dimensions using cadgen. Export STEP, STL, 3MF, or GLB files, inspect geometry, and open existing models in CAD Viewer for visual review.

中文简介正在准备中。当前显示英语简介。

  • Create a part from specified dimensions or a drawing
  • Revise part dimensions and assembly placements
  • Export models as STEP, STL, 3MF, or GLB
earthtojake/text-to-cad2.1万2026年10月18日 更新

Check mesh files for 3D printing by measuring geometry and comparing it with process-specific design limits. Get findings on wall thickness, overhangs, and supports, plus build orientation options and concrete redesign guidance.

中文简介正在准备中。当前显示英语简介。

  • Check whether a mesh meets printing design limits
  • Find thin walls and unsupported overhangs
  • Compare build orientations to reduce supports
earthtojake/text-to-cad2.1万2026年10月18日 更新

dfm

免费

Review part designs for sheet metal, CNC machining, or injection molding. Compare geometry measurements with applicable supplier or tooling limits, then document manufacturing concerns, suggested changes, and checks that still need evidence.

中文简介正在准备中。当前显示英语简介。

  • Review sheet metal bends and flat patterns
  • Check CNC tool access and internal corners
  • Review molding draft and undercuts
earthtojake/text-to-cad2.1万2026年10月18日 更新

dxf

免费

Create and update 2D DXF drawings from written requirements or CAD geometry using Python and build123d. Prepare cutting profiles and marking layers, check for open contours and duplicate geometry, and review drawings in CAD Viewer.

中文简介正在准备中。当前显示英语简介。

  • Create dimensioned gasket or panel drawings
  • Generate flat profiles from STEP geometry
  • Separate cutting and engraving geometry into layers
earthtojake/text-to-cad2.1万2026年10月18日 更新

Create a manufacturing drawing PDF from a part’s 3D geometry, with projected views, measured dimensions, hole callouts, and a title block. Rerun the drawing script after model changes to update the sheet.

中文简介正在准备中。当前显示英语简介。

  • Prepare a dimensioned drawing for manufacturing
  • Document hole sizes and machining requirements
  • Update drawings after changing a part model
earthtojake/text-to-cad2.1万2026年10月18日 更新

查看 earthtojake 的全部技能

报告此技能的问题