Spaces:
Sleeping
Sleeping
import numpy as np | |
from perception_utils import detect | |
objects = ['green block', 'yellow line'] | |
# Query: ee. | |
ee = detect('ee')[0] | |
ret_val = ee | |
objects = ['drawer', 'blue block', 'yellow block'] | |
# Query: topmost handle. | |
handles = detect('drawer handle') | |
# topmost so sort by z, take the last one | |
handles = sorted(handles, key=lambda x: x.position[2]) | |
top_handle = handles[-1] | |
ret_val = top_handle | |
objects = ['yellow block', 'pink block', 'brown line', 'pink block'] | |
# Query: second to the left block. | |
blocks = detect('block') | |
# second to the left so sort by y, take the second one | |
blocks = sorted(blocks, key=lambda x: x.position[1]) | |
second_left_block = blocks[1] | |
ret_val = second_left_block | |
objects = ['blue line', 'pink line', 'green block'] | |
# Query: table. | |
table = detect('table')[0] | |
ret_val = table | |
objects = ['green line', 'drawer', 'yellow block'] | |
# Query: second to the bottom handle. | |
handles = detect('drawer handle') | |
# second to the bottom so sort by z, take the second one | |
handles = sorted(handles, key=lambda x: x.position[2]) | |
second_bottom_handle = handles[1] | |
ret_val = second_bottom_handle | |
objects = ['brown line', 'brown block'] | |
# Query: brown line. | |
brown_line = detect('brown line')[0] | |
ret_val = brown_line | |
objects = ['green block', 'brown block', 'yellow line'] | |
# Query: block. | |
block = detect('green block')[0] | |
ret_val = block | |
objects = ['pink block', 'pink line', 'blue block'] | |
# Query: block closest to the pink line. | |
blocks = detect('block') | |
pink_line = detect('pink line')[0] | |
closest_block = min(blocks, key=lambda x: np.linalg.norm(x.position - pink_line.position)) | |
ret_val = closest_block | |
objects = ['blue block', 'blue line', 'green block', 'pink block', 'brown block'] | |
# Query: the block that is on top of the blue block. | |
blocks = detect('block') | |
blue_block = detect('blue block')[0] | |
# find the block that is on top of the blue block | |
for block in blocks: | |
if block.position[2] > blue_block.position[2]: | |
ret_val = block | |
break | |
objects = ['drawer'] | |
# Query: top drawer handle. | |
handles = detect('drawer handle') | |
# top drawer handle so sort by z, take the last one | |
handles = sorted(handles, key=lambda x: x.position[2]) | |
top_handle = handles[-1] | |
ret_val = top_handle |