Motion planning · repose-motion-planning

Scene validity

Every planner asks the same three questions: is this configuration free, is this segment free, and how much clearance is there? CuSceneValidity answers them against one captured scene snapshot, so all planners agree on what "free" means.

Capture

rust
let mut validity = CuSceneValidity::<6>::new(chain, model, CuJointResolution::default());
let ok = validity.capture(&request.scene, &request.exclusions);

capture copies the scene and exclusions for the job and validates them against the robot. If they're invalid, it returns false and every configuration counts as blocked, which planners report as InvalidRequest.

Queries

is_configuration_free(&q)Within limits and free of self, environment and attached-object collisions, with exclusions applied.
is_segment_free(&a, &b)The straight joint line is free at the configured resolution. Discrete sampling, not swept volumes.
clearance(&q)Smallest signed distance in metres between robot (plus attached objects) and itself or the scene. Negative is penetration; None if q can't be evaluated.
joint_distance(&a, &b, metric)L2 distance in normalised joint units.

scene_revision() and exclusions() report what was captured, and planners copy both into their result.

Use it outside a planner

It's a convenient one-stop checker for your own code: validate a list of program waypoints against the current scene before you send them anywhere, or compute clearance along a path for a dashboard.

API reference