VoxPoserExamples / VoxPoserApiExamples /Real /value_maps /real_get_rotation_map_prompt.py
Eralien's picture
init commit
1ec9b78
import numpy as np
from plan_utils import get_empty_rotation_map, set_voxel_by_radius, cm2index, vec2quat
from perception_utils import parse_query_obj
from transforms3d.euler import euler2quat, quat2euler
from transforms3d.quaternions import qmult, qinverse
# Query: face the support surface of the bowl.
rotation_map = get_empty_rotation_map()
bowl = parse_query_obj('bowl')
target_rotation = vec2quat(-bowl.normal)
rotation_map[:, :, :] = target_rotation
ret_val = rotation_map
# Query: face the table when within 30cm from table center.
rotation_map = get_empty_rotation_map()
table = parse_query_obj('table')
table_center = table.position
target_rotation = vec2quat(-table.normal)
set_voxel_by_radius(rotation_map, table_center, radius_cm=30, value=target_rotation)
ret_val = rotation_map
# Query: face the blue bowl.
rotation_map = get_empty_rotation_map()
blue_bowl = parse_query_obj('brown block')
target_rotation = vec2quat(-blue_bowl.normal)
rotation_map[:, :, :] = target_rotation
ret_val = rotation_map
# Query: turn clockwise by 45 degrees when at the center of the beer cap.
rotation_map = get_empty_rotation_map()
beer_cap = parse_query_obj('beer cap')
(x, y, z) = beer_cap.position
curr_rotation = rotation_map[x, y, z]
rotation_delta = euler2quat(0, 0, np.pi / 4)
rotation_map[x, y, z] = qmult(curr_rotation, rotation_delta)
ret_val = rotation_map
# Query: turn counter-clockwise by 30 degrees.
rotation_map = get_empty_rotation_map()
curr_rotation = rotation_map[0, 0, 0]
rotation_delta = euler2quat(0, 0, -np.pi / 6)
rotation_map[:, :, :] = qmult(curr_rotation, rotation_delta)
ret_val = rotation_map
# Query: rotate the gripper to be 45 degrees slanted relative to the plate.
rotation_map = get_empty_rotation_map()
plate = parse_query_obj('plate')
face_plate_quat = vec2quat(-plate.normal)
# rotate 45 degrees around the x-axis
rotation_delta = euler2quat(-np.pi / 4, 0, 0)
target_rotation = qmult(face_plate_quat, rotation_delta)
rotation_map[:, :, :] = target_rotation
ret_val = rotation_map