def __init__(self): b1, p1 = P('b1', BODY), P('p1', GLOB_POSE) rp, b2, p2 = P('rp', REL_POSE), P('b2', BODY), P('p2', GLOB_POSE) Axiom.__init__( self, AtGlobPose(b1, p1), Or( AtFixedPose(b1, p1), Exists([rp, b2, p2], And(IsPoseProd(p1, rp, p2), AtGlobPose(b2, p2), AtRelPose(b1, rp, b2)))))
def __init__(self): b, p, t = P('b', BLOCK), P('p', POSE), P('t', TRAJ) Axiom.__init__( self, Safe(b, t), Or( Holding(b), # TODO - could also have equality here Exists( [p], And( AtPose(b, p), #Not(Equal(p1, p2)), # TODO - I could always immediately outlaw them having the same pose... IsCollisionFree(p, t)))))
def __init__(self): b1, p1, p2 = P('b1', BLOCK), P('p1', POSE), P('p2', POSE) Axiom.__init__( self, Safe(b1, p2), Or( Holding(b1), # TODO - could also have equality here Exists( [p1], And( AtPose(b1, p1), #Not(Equal(p1, p2)), # TODO - I could always immediately outlaw them having the same pose... IsCollisionFree(p1, p2)))))
def __init__(self): b1, p1, b2, p2 = P('b1', BLOCK), P('p1', POSE), P('b2', BLOCK), P('p2', POSE) Axiom.__init__( self, Safe(b1, b2, p2), Or( Holding(b1), # TODO - could also have equality here #Or(Equal(b1, b2), # TODO - could also have equality here Exists( [p1], And( AtPose(b1, p1), #Not(Equal(p1, p2)), # Having the same pose is certainly a collision # NOTE - cannot use equality if I have the same object IsCollisionFree(b1, p1, b2, p2)))))