コード例 #1
0
ファイル: graphutility.py プロジェクト: lineCode/hpp-gui
 def refresh(self):
     self.cg = ConstraintGraph(self.plugin.r, "", False)
     try:
         self.fillGripper()
         self.fillHandles()
         self.applyFilters()
     except Exception as e:
         pass
コード例 #2
0
def makeGraph(robot, table, objects):
    graph = ConstraintGraph(robot, "graph")
    factory = ConstraintGraphFactory(graph)
    grippers = ["talos/left_gripper", "talos/right_gripper"]
    factory.setGrippers(grippers)
    factory.setObjects(
        [obj.name for obj in objects],
        [obj.handles for obj in objects],
        [obj.contacts for obj in objects],
    )
    factory.environmentContacts(table.contacts)
    factory.constraints.strict = True
    factory.setRules (makeRules (robot, grippers))
    factory.generate()
    return graph
コード例 #3
0
ファイル: common_hpp.py プロジェクト: longhathuc/agimus-demos
def makeGraph(robot):
    from hpp.corbaserver.manipulation.constraint_graph_factory import (
        ConstraintGraphFactory,
    )

    graph = ConstraintGraph(robot, "graph")
    factory = ConstraintGraphFactory(graph)
    factory.setGrippers(["talos/left_gripper"])
    factory.setObjects(["box"], [Object.handles], [Object.contacts])
    factory.environmentContacts(Table.contacts)
    factory.setRules(
        [
            Rule(["talos/left_gripper"], [Object.handles[1]], False),
            # Rule([ "talos/left_gripper", ], [ Object.handles[0], ], True),
            Rule(["talos/left_gripper"], [".*"], True),
            # Rule([ "talos/right_gripper", ], [ Object.handles[1], ], True),
        ]
    )
    factory.generate()
    return graph
コード例 #4
0
def makeGraph(ps, table, objects):
    robot = ps.robot
    graph = ConstraintGraph(robot, "graph")
    factory = ConstraintGraphFactory(graph)
    grippers = ["talos/left_gripper", "talos/right_gripper"]
    factory.setGrippers(grippers)
    factory.setObjects(
        [obj.name for obj in objects],
        [obj.handles for obj in objects],
        [obj.contacts for obj in objects],
    )
    factory.environmentContacts(table.contacts)
    factory.constraints.strict = True
    factory.setRules (makeRules (robot, grippers))
    factory.setPreplacementDistance("box", 0.1)
    factory.generate()
    sm = SecurityMargins(ps, factory, ["talos", "box", "table"])
    sm.setSecurityMarginBetween ("talos", "box", 0.02)
    sm.setSecurityMarginBetween ("box", "table", 0.03)
    sm.apply()
    return graph, factory
コード例 #5
0
ファイル: script.py プロジェクト: Laeksya/hpp_benchmark
    rules = [
        Rule(grippers, [''], True),
        Rule(grippers, ['sphere0/handle'], True),
        Rule(grippers, ['sphere1/handle'], True)
    ]
    cg = ConstraintGraph.buildGenericGraph(robot=robot,
                                           name="manipulation",
                                           grippers=grippers,
                                           objects=objects,
                                           handlesPerObjects=handlesPerObject,
                                           shapesPerObjects=contactsPerObject,
                                           envNames=[],
                                           rules=rules)

if lang == 'py':
    cg = ConstraintGraph(robot, "manipulation")
    factory = ConstraintGraphFactory(cg)
    factory.setGrippers(grippers)
    factory.setObjects(objects, handlesPerObject, contactsPerObject)
    factory.generate()

for e in [
        'ur3/gripper > sphere0/handle | f_ls',
        'ur3/gripper > sphere1/handle | f_ls'
]:
    cg.setWeight(e, 100)
for e in [
        'ur3/gripper < sphere0/handle | 0-0_ls',
        'ur3/gripper < sphere1/handle | 0-1_ls'
]:
    cg.setWeight(e, 100)
コード例 #6
0
grippers = ['pr2/l_gripper', 'pr2/r_gripper']
boxes = ['box']
handlesPerObject = [
    ['box/handle', 'box/handle2'],
]
objContactSurfaces = [
    ['box/box_surface'],
]
envSurfaces = [
    'kitchen_area/pancake_table_table_top',
]

# Build rules
rules = [Rule([""], [""], True)]

cg = ConstraintGraph(robot, 'graph')
factory = ConstraintGraphFactory(cg)
factory.setGrippers(grippers)
factory.environmentContacts(envSurfaces)
factory.setObjects(boxes, handlesPerObject, objContactSurfaces)
factory.setRules(rules)
factory.generate()

cg.addConstraints (graph = True, constraints =\
                   Constraints (lockedJoints = lockAll))
cg.initialize()

res = ps.client.manipulation.problem.applyConstraints(cg.nodes['free'], q_init)
if not res[0]:
    raise Exception('Init configuration could not be projected.')
q_init = res[1]
コード例 #7
0
])

grippers = ['pr2/l_gripper']
boxes = ['box']
handlesPerObject = [['box/handle']]
# envSurfaces = ['kitchen_area/pancake_table_table_top',
#                'kitchen_area/white_counter_top_sink']
# contactPerObject = [['box/box_surface']]
envSurfaces = []
contactPerObject = [[]]

ps.client.manipulation.graph.autoBuild('graph', grippers, boxes,
                                       handlesPerObject, contactPerObject,
                                       envSurfaces, rules)

cg = ConstraintGraph(robot, 'graph', makeGraph=False)
cg.setConstraints(graph=True, lockDof=locklhand)
cg.setWeight('pr2/l_gripper < box/handle | 0-0_ls', 0)

res, q_init, err = cg.applyNodeConstraints('free', q_init)
if not res:
    raise RuntimeError("Failed to project initial configuration")
res, q_goal, err = cg.applyNodeConstraints('free', q_goal)
if not res:
    raise RuntimeError("Failed to project initial configuration")
ps.setInitialConfig(q_init)
ps.addGoalConfig(q_goal)
ps.setMaxIterPathPlanning(5000)

import datetime as dt
totalTime = dt.timedelta(0)
コード例 #8
0
left_arm_lock = createLeftArmLockedJoints(ps)
right_arm_lock = createRightArmLockedJoints(ps)
if args.arm == 'left':
    arm_locked = right_arm_lock
elif args.arm == 'right':
    arm_locked = left_arm_lock
else:
    arm_locked = list()

left_gripper_lock, right_gripper_lock = createGripperLockedJoints(ps, initConf)
com_constraint, foot_placement, foot_placement_complement = \
    createQuasiStaticEquilibriumConstraint (ps, initConf)
gaze_constraint = createGazeConstraint(ps, args.arm)
waist_constraint = createWaistYawConstraint(ps)

graph = ConstraintGraph(robot, "graph")

graph.createNode(["free", "starting_state"])
graph.createEdge("starting_state",
                 "free",
                 "starting_motion",
                 isInNode="starting_state")
graph.createEdge("free",
                 "starting_state",
                 "go_to_starting_state",
                 isInNode="starting_state")
graph.createEdge("free", "free", "Loop | f", isInNode="starting_state")

# Set constraints
graph.addConstraints(
    node="starting_state",