Spaces:
Running
on
Zero
Running
on
Zero
#!/usr/bin/env python2 | |
""" | |
@author: Christian Forster | |
""" | |
import os | |
import numpy as np | |
import utils.utils_poses.ATE.transformations as tf | |
def get_rigid_body_trafo(quat, trans): | |
T = tf.quaternion_matrix(quat) | |
T[0:3, 3] = trans | |
return T | |
def get_distance_from_start(gt_translation): | |
distances = np.diff(gt_translation[:, 0:3], axis=0) | |
distances = np.sqrt(np.sum(np.multiply(distances, distances), 1)) | |
distances = np.cumsum(distances) | |
distances = np.concatenate(([0], distances)) | |
return distances | |
def compute_comparison_indices_length(distances, dist, max_dist_diff): | |
max_idx = len(distances) | |
comparisons = [] | |
for idx, d in enumerate(distances): | |
best_idx = -1 | |
error = max_dist_diff | |
for i in range(idx, max_idx): | |
if np.abs(distances[i]-(d+dist)) < error: | |
best_idx = i | |
error = np.abs(distances[i] - (d+dist)) | |
if best_idx != -1: | |
comparisons.append(best_idx) | |
return comparisons | |
def compute_angle(transform): | |
""" | |
Compute the rotation angle from a 4x4 homogeneous matrix. | |
""" | |
# an invitation to 3-d vision, p 27 | |
return np.arccos( | |
min(1, max(-1, (np.trace(transform[0:3, 0:3]) - 1)/2)))*180.0/np.pi | |