chenhaojun's picture
Add files using upload-large-folder tool
c8144dc verified
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import numpy as np
from dexart.env.task_setting import ROBUSTNESS_INIT_CAMERA_CONFIG
import open3d as o3d
def visualize_observation(obs, use_seg=False, img_type=None):
def visualize_pc_with_seg_label(cloud):
pc = o3d.geometry.PointCloud(o3d.utility.Vector3dVector(cloud[:, :3]))
def map(feature):
color = np.zeros((feature.shape[0], 3))
COLOR20 = np.array(
[[230, 25, 75], [60, 180, 75], [255, 225, 25], [0, 130, 200], [245, 130, 48],
[145, 30, 180], [70, 240, 240], [240, 50, 230], [210, 245, 60], [250, 190, 190],
[0, 128, 128], [230, 190, 255], [170, 110, 40], [255, 250, 200], [128, 0, 0],
[170, 255, 195], [128, 128, 0], [255, 215, 180], [0, 0, 128], [128, 128, 128]]) / 255
for i in range(feature.shape[0]):
for j in range(feature.shape[1]):
if feature[i, j] == 1:
color[i, :] = COLOR20[j, :]
return color
color = map(cloud[:, 3:])
pc.colors = o3d.utility.Vector3dVector(color)
return pc
pc = obs["instance_1-point_cloud"]
if use_seg:
gt_seg = obs["instance_1-seg_gt"]
pc = np.concatenate([pc, gt_seg], axis=1)
pc = visualize_pc_with_seg_label(pc)
if img_type == "robot":
robot_pc = obs["imagination_robot"]
pc += visualize_pc_with_seg_label(robot_pc)
else:
raise NotImplementedError
return pc
def get_viewpoint_camera_parameter():
robustness_init_camera_config = ROBUSTNESS_INIT_CAMERA_CONFIG['laptop']
r = robustness_init_camera_config['r']
phi = robustness_init_camera_config['phi']
theta = robustness_init_camera_config['theta']
center = robustness_init_camera_config['center']
x0, y0, z0 = center
# phi in [0, pi/2]
# theta in [0, 2 * pi]
x = x0 + r * np.sin(phi) * np.cos(theta)
y = y0 + r * np.sin(phi) * np.sin(theta)
z = z0 + r * np.cos(phi)
cam_pos = np.array([x, y, z])
forward = np.array([x0 - x, y0 - y, z0 - z])
forward /= np.linalg.norm(forward)
left = np.cross([0, 0, 1], forward)
left = left / np.linalg.norm(left)
up = np.cross(forward, left)
mat44 = np.eye(4)
mat44[:3, :3] = np.stack([forward, left, up], axis=1)
mat44[:3, 3] = cam_pos
return cam_pos, center, up, mat44