Repository navigation
v1.1.0
Additive and backward compatible. plan(...) keeps its signature and
semantics; every 1.0.0 test passes unchanged.
Added
- Planning between sets.
CBiRRT.solve(problem)takes a
PlanningProblemmade of aJointSpace, a start set, a goal set, a
validator, and an optional path-admissible set.plan(...)now lowers its
arguments into this representation. Seedocs/design.md. - State sets (
pycbirrt.sets): a membership-onlyStateSetprotocol
with optionalSetSampler,SetDistance, andSetProjectorcapabilities;
FiniteSet,PredicateSet,EmptySet;AnyOf(union) andAllOf
(intersection) with arbitrary nesting and explicit capability rules; the
named strategiesMostViolatedProjectionandRejectionSampling;
supports,is_finite,members. TSRConfigurationSet, the configuration-space set a TSR induces
through forward kinematics, with membership, distance, sampling, and
IK-based projection.tsr_weightsgives the volume-weighted mixture.JointSpace: joint limits, angular-aware metric and direction,
interpolation, and uniform sampling in one object (planner.space).- Distinct tolerances on
CBiRRTConfig:membership_tolerance,
connection_tolerance,edge_resolution,progress_tolerance,
projection_progress_tolerance. Defaults reproduce 1.0.0 behavior. PlanResultgainsstart_sourceandgoal_source(which alternative a
path used, as a path through nested sets),failure_reason,
planning_time,tree_sizes, and the search treestree_startand
tree_goalfor inspection.abort_fnonCBiRRTConfigto stop planning early (#12).- Failed root sampling reports why: IK unreachable, in collision, or
constraint violated. - Integration test on the UR5e in MuJoCo (skipped without the menagerie),
hypothesis property tests for the set laws, and headless smoke tests for
the examples. - MIT license, SPDX headers, issue and PR templates.
Changed
- Sampling from TSRs is reproducible under a seed. 1.0.0 used numpy's
global random state for poses, so seeded plans were not repeatable. - Goal and start bias apply to any sampleable set, including finite sets.
- With several constraint TSRs, projection converges each TSR before
re-evaluating which is most violated. Single-TSR constraints are unchanged. - Bias samples are collision-filtered by the validator rather than by
IKSolver.solve_valid; onlysolveis required of a solver for sets. - TSR-sampled goal configurations are collision-checked before becoming tree
roots. - The tsr package is imported only by
pycbirrt.tsr_setand
pycbirrt.legacy.
Deprecated
CBiRRTConfig.tsr_tolerance. Passing it setsmembership_toleranceand
connection_tolerancetogether and emits aDeprecationWarning; reading
it returnsmembership_tolerance.
Fixed
- Constraint projection with non-identity TSR frames. The closest
in-bounds point was used as a world pose without composingT0_wand
Tw_e, so projection failed whenever a constraint TSR had a translated or
rotated frame (#28). - Do not mark bounded joints as angular. The UR5e examples marked its
±2π joints angular, which let the planner join configurations a full turn
apart and spin a joint through 360° on execution (#35).angular_joints
is for genuinely unlimited joints only; the config comment now says so.
If you copied the old example configuration, removeangular_joints. examples/planar_arm.pyandexamples/multi_config_demo.pycrashed on a
result field removed in March (#32).- Collision checker state no longer goes stale between queries (#11).
- CI: the formatter version is pinned to the 0.15 series and a stale lock
file that could never be honored was removed (#26).