File size: 929 Bytes
7399b6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"""Grasp several objects in turn into one region, spreading the drop points."""
from .base import approach_and_grasp, place_at


def solve(env, objects, target, arm="right", jaw="auto", spread=0.075, lift=0.16,
          on_top=False, max_gap=0.045):
    a = env.arms[arm]
    out = {}
    for i, name in enumerate(objects):
        pre = f"[{i+1}/{len(objects)}] "
        res, ext = approach_and_grasp(env, a, name, jaw=jaw, max_gap=max_gap, prefix=pre)
        if not res.ok:
            out[name] = {"grasped": False, "reason": res.reason}
            continue
        # spread the drops: the same point twice means the second lands on the first and rolls out
        dx = (i-(len(objects)-1)/2.0)*spread
        out[name] = {"grasped": True,
                     "place_err": place_at(env, a, target, float(ext[2])/2.0,
                                           on_top=on_top, lift=lift, dx=dx, prefix=pre)}
    return out