Spaces:
Runtime error
Runtime error
You are an AI in robot simulation code and task design. I will provide you some example tasks, code implementation, and some guidelines for how to generate tasks and then you will help me generate a new task. My goal is to design diverse and feasible tasks for tabletop manipulation. I will first ask you to describe the task in natural languages and then will let you write the code for it. | |
========= | |
Here are all the assets. Use only these assets in the task and code design. | |
""" | |
insertion/: | |
ell.urdf fixture.urdf | |
bowl/: | |
bowl.urdf | |
box/: | |
box-template.urdf | |
stacking/: | |
block.urdf stand.urdf | |
zone/: | |
zone.obj zone.urdf | |
pallet/: | |
pallet.obj pallet.urdf | |
ball/: | |
ball-template.urdf | |
cylinder/: | |
cylinder-template.urdf | |
bowl/: | |
bowl.urdf | |
# assets not for picking | |
corner/: | |
corner-template.urdf | |
line/: | |
single-green-line-template.urdf | |
container/: | |
container-template.urdf | |
""" | |
""" | |
import numpy as np | |
from cliport.tasks.task import Task | |
from cliport.utils import utils | |
import pybullet as p | |
class PlaceRedInGreen(Task): | |
"""pick up the red blocks and place them into the green bowls amidst other objects.""" | |
def __init__(self): | |
super().__init__() | |
self.max_steps = 10 | |
self.lang_template = "put the red blocks in a green bowl" | |
self.task_completed_desc = "done placing blocks in bowls." | |
self.additional_reset() | |
def reset(self, env): | |
super().reset(env) | |
n_bowls = np.random.randint(1, 4) | |
n_blocks = np.random.randint(1, n_bowls + 1) | |
# Add bowls. | |
# x, y, z dimensions for the asset size | |
bowl_size = (0.12, 0.12, 0) | |
bowl_urdf = 'bowl/bowl.urdf' | |
bowl_poses = [] | |
for _ in range(n_bowls): | |
bowl_pose = self.get_random_pose(env, obj_size=bowl_size) | |
env.add_object(urdf=bowl_urdf, pose=bowl_pose, category='fixed') | |
bowl_poses.append(bowl_pose) | |
# Add blocks. | |
# x, y, z dimensions for the asset size | |
blocks = [] | |
block_size = (0.04, 0.04, 0.04) | |
block_urdf = 'stacking/block.urdf' | |
for _ in range(n_blocks): | |
block_pose = self.get_random_pose(env, obj_size=block_size) | |
block_id = env.add_object(block_urdf, block_pose) | |
blocks.append(block_id) | |
# Goal: each red block is in a different green bowl. | |
self.add_goal(objs=blocks, matches=np.ones((len(blocks), len(bowl_poses))), targ_poses=bowl_poses, replace=False, | |
rotations=True, metric='pose', params=None, step_max_reward=1) | |
self.lang_goals.append(self.lang_template) | |
# Colors of distractor objects. | |
# IMPORTANT: RETRIEVE THE ACTUAL COLOR VALUES | |
bowl_colors = [utils.COLORS[c] for c in utils.COLORS if c != 'green'] | |
block_colors = [utils.COLORS[c] for c in utils.COLORS if c != 'red'] | |
# Add distractors. | |
n_distractors = 0 | |
while n_distractors < 6: | |
is_block = np.random.rand() > 0.5 | |
urdf = block_urdf if is_block else bowl_urdf | |
size = block_size if is_block else bowl_size | |
colors = block_colors if is_block else bowl_colors | |
pose = self.get_random_pose(env, obj_size=size) | |
color = colors[n_distractors % len(colors)] | |
obj_id = env.add_object(urdf, pose, color=color) | |
n_distractors += 1 | |
""" | |
========= | |
Please describe the task "TASK_NAME_TEMPLATE" in natural languages and format the answer in a python dictionary with keys "task-name" and value type string, "task-description" (one specific sentence) and value type string, and "assets-used" and value type list of strings. | |
========= | |
Now write the pybullet simulation code for the task "TASK_NAME_TEMPLATE" in python code block starting with ```python. | |