Spaces:
Runtime error
Runtime error
# Copyright (c) Meta Platforms, Inc. and affiliates. | |
# All rights reserved. | |
# | |
# This source code is licensed under the license found in the | |
# LICENSE file in the root directory of this source tree. | |
import random | |
import numpy as np | |
import torch | |
def compute_ARE(rotation1, rotation2): | |
if isinstance(rotation1, torch.Tensor): | |
rotation1 = rotation1.cpu().detach().numpy() | |
if isinstance(rotation2, torch.Tensor): | |
rotation2 = rotation2.cpu().detach().numpy() | |
R_rel = np.einsum("Bij,Bjk ->Bik", rotation1.transpose(0, 2, 1), rotation2) | |
t = (np.trace(R_rel, axis1=1, axis2=2) - 1) / 2 | |
theta = np.arccos(np.clip(t, -1, 1)) | |
error = theta * 180 / np.pi | |
return np.minimum(error, np.abs(180 - error)) | |