File size: 1,206 Bytes
7399b6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""Push a block to a target region WITHOUT grasping it (RLBench slide_block_to_target)."""
from ..registry import register_task
from ..envs import YamTaskEnv
from ..solvers import push
from .. import conditions as C


@register_task("push_block")
class PushBlockTask(YamTaskEnv):
    title = "PUSH BLOCK TO TARGET (no grasp)"
    tags = ["push", "contact-rich", "no-grasp", "primitive"]
    instruction = {"default": "Push the block onto the green square."}

    block_spawn = (0.02, 0.12)
    spawn_jitter = (0.02, 0.015)
    target_xy = (0.02, -0.06)
    target_size = 0.10
    gripper_effort, gripper_damping = 75, 85

    def _load_scene(self):
        self.scene.build_marker({"name": "target", "xy": self.target_xy, "size": self.target_size,
                                 "xy_jitter": (0.015, 0.015)})
        self._placed = [self.scene.place_object(
            {"name": "cube_r", "xy": self.block_spawn, "xy_jitter": self.spawn_jitter})]

    def solve(self):
        return push.solve(self, obj="cube_r", target="target")

    def evaluate(self):
        return self.check(C.labelled("block on the target",
                                     C.object_moved_to("cube_r", "target", tol=0.07)))