4.7 KiB
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
xmlandurdf; - 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:urdfmetadata is injected or updated and matches the linked URDF path relative to the generated SRDF; legacyexplorer:urdfmetadata 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:urdfmetadata; - 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.