コード例 #1
0
## Project initial configuration on state 'placement'
res, q_init, error = graph.applyNodeConstraints ('placement', q1)
q2 = q1 [::]
q2 [7] = .2

## Project goal configuration on state 'placement'
res, q_goal, error = graph.applyNodeConstraints ('placement', q2)

## Define manipulation planning problem
ps.setInitialConfig (q_init)
ps.addGoalConfig (q_goal)

# v = vf.createViewer ()
# pp = PathPlayer (v)
# v (q1)

## Build relative position of the ball with respect to the gripper
for i in range (100):
  q = robot.shootRandomConfig ()
  res,q3,err = graph.generateTargetConfig ('grasp-ball', q_init, q)
  if res and robot.isConfigValid (q3): break;

if res:
  robot.setCurrentConfig (q3)
  gripperPose = Transform (robot.getJointPosition (gripperName))
  ballPose = Transform (robot.getJointPosition (ballName))
  gripperGraspsBall = gripperPose.inverse () * ballPose
  gripperAboveBall = Transform (gripperGraspsBall)
  gripperAboveBall.translation [2] += .1
コード例 #2
0
    constraints=Constraints(numConstraints=com_constraint + foot_placement +
                            left_gripper_lock + right_gripper_lock +
                            gaze_constraint + waist_constraint))
graph.addConstraints(edge="Loop | f",
                     constraints=Constraints(numConstraints=com_constraint +
                                             foot_placement + arm_locked))

graph.initialize()

ps.setParameter("SimpleTimeParameterization/safety", 0.5)
ps.setParameter("SimpleTimeParameterization/order", 2)
ps.setParameter("SimpleTimeParameterization/maxAcceleration", .25)
ps.addPathOptimizer("RandomShortcut")
ps.addPathOptimizer("SimpleTimeParameterization")

res, q, err = graph.generateTargetConfig("starting_motion", initConf, initConf)
if not res:
    raise RuntimeError('Failed to project initial configuration')

ps.setRandomSeed(54)
ps.setInitialConfig(initConf)
ps.addGoalConfig(q)
ps.solve()
# Delete intermediate non optimized paths
for i in range(ps.numberPaths() - 1):
    ps.erasePath(0)

# Generate N random configurations
N = args.N
if N != 0:
    configs = [q[::]]
コード例 #3
0
graph.createEdge('home',  free , 'start_arm', isInNode="home")
graph.createEdge( free , 'home', 'end_arm', isInNode=free)

graph.addConstraints(node="home", constraints=Constraints(numConstraints=lock_arm+lock_head))
graph.addConstraints(edge="end_arm", constraints=Constraints(numConstraints=["tiago_base", "lock_part"]))
graph.addConstraints(edge="move_base", constraints=Constraints(numConstraints=['tiago/gripper grasps driller/handle', "lock_part"]))
graph.addConstraints(edge="start_arm", constraints=Constraints(numConstraints=['tiago/gripper grasps driller/handle', "lock_part"]))

cproblem = ps.hppcorba.problem.getProblem()

cgraph = cproblem.getConstraintGraph()

graph.initialize()
# 3}}}

res, q0, err = graph.generateTargetConfig('start_arm', q0, q0)
assert (res)

# {{{3 Constraint graph validation
graphValidation = ps.client.manipulation.problem.createGraphValidation()
graphValidation.validate(cgraph)
if graphValidation.hasErrors():
    print(graphValidation.str())
    print("Graph has infeasibilities")
    sys.exit(1)
elif graphValidation.hasWarnings():
    print(graphValidation.str())
    print("Graph has only warnings")
else:
    print("Graph *seems* valid.")
# 3}}}
コード例 #4
0
## Project goal configuration on state 'placement'
res, q_goal, error = graph.applyNodeConstraints('placement', q2)

## Define manipulation planning problem
ps.setInitialConfig(q_init)
ps.addGoalConfig(q_goal)

v = vf.createViewer()
pp = PathPlayer(v)
# v (q1)

## Build relative position of the ball with respect to the gripper
for i in range(100):
    q = robot.shootRandomConfig()
    res1, q3, err = graph.generateTargetConfig('approach-ball', q_init, q)
    if res1 and robot.isConfigValid(q3): break

if res:
    robot.setCurrentConfig(q3)
    gripperPose = Transform(robot.getJointPosition(gripperName))
    ballPose = Transform(robot.getJointPosition(ballName))
    gripperGraspsBall = gripperPose.inverse() * ballPose
    gripperAboveBall = Transform(gripperGraspsBall)
    gripperAboveBall.translation[2] += .1


def solve():
    print("Solver started")
    ps.solve()
    print("Solution found, let's display it")
コード例 #5
0
ファイル: script_hpp.py プロジェクト: jmirabel/agimus-demos
# Constraint in this state are explicit so ps.setMaxIterProjection(1) should not
# make it fail.
res, q1, err = graph.applyNodeConstraints(
    'tiago/gripper grasps driller/handle', q0)
q1valid, msg = robot.isConfigValid(q1)
if not q1valid:
    print(msg)
assert res

ps.setInitialConfig(q1)

if not isSimulation:
    qrand = q1
    for i in range(100):
        q2valid, q2, err = graph.generateTargetConfig(
            'driller/drill_tip > skin/hole | 0-0', q1, qrand)
        if q2valid:
            q2valid, msg = robot.isConfigValid(q2)
        if q2valid:
            break
        qrand = robot.shootRandomConfig()
    assert q2valid

    if not isSimulation:
        ps.addGoalConfig(q2)
        ps.solve()

    try:
        v = vf.createViewer()
        v(q1)
    except:
コード例 #6
0
graph.addConstraints(
    node="starting_state",
    constraints=Constraints(numConstraints=com_constraint + foot_placement +
                            left_gripper_lock + right_gripper_lock))
graph.addConstraints(
    node="free",
    constraints=Constraints(numConstraints=com_constraint + foot_placement +
                            left_gripper_lock + right_gripper_lock +
                            gaze_constraint + waist_constraint))
graph.addConstraints(edge="Loop | f",
                     constraints=Constraints(numConstraints=com_constraint +
                                             foot_placement + arm_locked))

graph.initialize()

res, q, err = graph.generateTargetConfig("apply_constraints", initConf,
                                         initConf)
if not res:
    raise RuntimeError('Failed to project initial configuration')

ps.setInitialConfig(initConf)
ps.addGoalConfig(q)
ps.solve()
pathId = ps.numberPaths() - 1
configs = [q[::]]

# Generate N random configurations
N = args.N
i = 1
while i < N:
    q = robot.shootRandomConfig()
    res, q1, err = graph.generateTargetConfig("Loop | f", configs[0], q)