Files
cadSet/text-to-cad/skills/srdf/references/validation.md
T
2026-07-22 19:38:36 +08:00

4.7 KiB

SRDF validation

Generation validates every gen_srdf() result against its linked URDF before writing. This catches many planning-semantics errors, but it is not a substitute for MoveIt Setup Assistant, MoveIt runtime tests, or collision-matrix sampling.

Generated or modified .srdf files should be handed to $cad-viewer for live viewer links when available.

Current generation-time checks

The current runtime checks that:

  • gen_srdf() returns an envelope dictionary;
  • envelope fields are exactly xml and urdf;
  • the URDF path is relative to the generator source, uses POSIX separators, ends in .urdf, and exists;
  • SRDF XML parses and has root <robot name="...">;
  • SRDF robot name matches the URDF robot name;
  • local tcad:urdf metadata is injected or updated and matches the linked URDF path relative to the generated SRDF; legacy explorer:urdf metadata remains readable;
  • at least one planning group exists;
  • planning groups are named and unique;
  • each planning group defines joints, links, chains, or subgroups;
  • group joint names, link names, and subgroup names exist;
  • chain base/tip links exist;
  • end effectors reference existing parent links and groups;
  • end-effector groups do not overlap their parent group when a parent group is provided;
  • end-effector parent links are in the parent group or adjacent to the end-effector group;
  • group states reference existing groups;
  • group-state joints exist and belong to the selected group after group expansion;
  • group-state values are finite;
  • group states do not set fixed or mimic joints;
  • revolute/prismatic group-state values are within URDF limits when limits are available;
  • disabled collision pairs have distinct links, valid link references, non-empty reasons, and no reversed duplicates;
  • many manually reasoned disabled collision pairs trigger a warning.

Optional CAD Viewer MoveIt2 checks

When $cad-viewer starts its local MoveIt2 server for SRDF review, the server additionally checks:

  • request protocolVersion;
  • request type;
  • repository-relative SRDF path and traversal safety;
  • linked URDF path from tcad:urdf metadata;
  • planning group selection;
  • target frame and target link existence;
  • target orientation shape and quaternion normalization;
  • position-only IK consistency;
  • native joint value parsing;
  • legacy degree-field conversion by joint type;
  • planner and IK setting basic numeric validity.

Important current limitations

Do not treat a passing validation as proof of planning correctness. The current lightweight runtime does not fully validate:

  • full URDF graph consistency; duplicate URDF links or joints can be collapsed by shallow inventory parsing;
  • chain base/tip connectivity at generation time unless group-state expansion exposes the issue;
  • subgroup cycles as hard errors in every path;
  • <virtual_joint> inventory and validation;
  • <passive_joint> inventory and exclusion from all active groups;
  • collision matrix correctness through sampled self-collision analysis;
  • actual IK solver availability for each group;
  • actual planning success in the target MoveIt environment;
  • controller configuration;
  • full orientation-constraint behavior beyond request normalization.

Use MoveIt Setup Assistant or a MoveIt runtime smoke test for these checks.

Manual planning checks

After generation, verify:

URDF dependency

  • URDF has been checked by the URDF workflow.
  • URDF collision geometry is suitable for MoveIt collision checking.
  • Active, fixed, mimic, and passive joints are understood.

Planning groups

  • Each chain has a real URDF path from base to tip.
  • Each group contains the intended active joints and no accidental fixed/mimic/passive joints.
  • Subgroups do not create ambiguous or cyclic group definitions.
  • The selected planner/IK solver supports the group.

End effectors

  • End-effector group and parent group do not share links.
  • Parent link is the real attachment point.
  • Target/TCP link is explicit for pose requests.

Group states

  • Values use radians/meters, not degrees.
  • Values are inside URDF limits.
  • Named states are collision-free when intended.

Disabled collisions

  • Pairs came from adjacency, sampling, Setup Assistant output, or explicit user evidence.
  • No broad disable list was invented by the model.
  • Manual pairs were reviewed for safety.

Validation report format

Use a compact report:

Checks run:
- SRDF generation validation: passed
- linked URDF validation: previously passed with URDF skill
- CAD Viewer link: returned
- MoveIt Setup Assistant review: skipped, unavailable
- CAD Viewer MoveIt2 IK smoke test: passed for manipulator/tool0
- collision matrix sampling: skipped, no MoveIt environment

Assumptions:
- Assumed tool0 is the desired TCP.
- Disabled collisions are adjacency-only.