This pull request adds three new features to the PrPy planning pipeline:
DETERMINISTIC_TRAJECTORY Trajectory Tag: Indicates whether repeating the same planning query will produce the same trajectory
DETERMINSTIC_ENDPOINT Trajectory Tag: Indicates whether repeating the same planning query will result in a trajectory with the same endpoint as this trajectory.
determinstic flag on PlanningError: Indicates whether repeating the same planning query could result in success.
The trajectory tags default to being absent and the deterministic flag defaults to None. I strongly suggest logging a warning and not silently defaulting to False if they are not set. It is possible that I missed a few calls in the PrPy motion planners that we need to annotate.
This data metadata is correctly propagated by the Sequence, MethodMask, and FirstSupportedMetaPlanners. Note that the behavior of Sequence is a bit unintuitive: it will flag a trajectory as non-deterministic if any previous planner in the sequence was non-determinstic.
There are a few additional points of subtly:
Seeds. I consider the value of a random number generator seed, even if it is passed explicitly as an argument, to be non-deterministic. This is the only useful way to model randomness: almost everything on a computer deterministic if we consider PRNGs to be deterministic.
DETERMINSTIC_ENDPOINT on Sequence. I conservatively flag the endpoint of a trajectory as non-deterministic if a previous failure was non-deterministic. This is overly conservative for PlanToConfiguration, where the endpoint is always deterministic.
Trajopt. We need to port these changes over to or_trajopt separately since it lives in a separate repository.
This pull request adds three new features to the PrPy planning pipeline:
DETERMINISTIC_TRAJECTORY
Trajectory Tag: Indicates whether repeating the same planning query will produce the same trajectoryDETERMINSTIC_ENDPOINT
Trajectory Tag: Indicates whether repeating the same planning query will result in a trajectory with the same endpoint as this trajectory.determinstic
flag onPlanningError
: Indicates whether repeating the same planning query could result in success.The trajectory tags default to being absent and the
deterministic
flag defaults toNone
. I strongly suggest logging a warning and not silently defaulting toFalse
if they are not set. It is possible that I missed a few calls in the PrPy motion planners that we need to annotate.This data metadata is correctly propagated by the
Sequence
,MethodMask
, andFirstSupported
MetaPlanner
s. Note that the behavior ofSequence
is a bit unintuitive: it will flag a trajectory as non-deterministic if any previous planner in the sequence was non-determinstic.There are a few additional points of subtly:
DETERMINSTIC_ENDPOINT
onSequence
. I conservatively flag the endpoint of a trajectory as non-deterministic if a previous failure was non-deterministic. This is overly conservative forPlanToConfiguration
, where the endpoint is always deterministic.or_trajopt
separately since it lives in a separate repository.