1
1
import timeit
2
2
3
+ import numpy as np
3
4
import torch
4
5
5
6
from pytorch_kinematics .transforms .rotation_conversions import axis_and_angle_to_matrix_33 , axis_angle_to_matrix , \
6
- pos_rot_to_matrix , matrix_to_pos_rot , random_rotations
7
+ pos_rot_to_matrix , matrix_to_pos_rot , random_rotations , quaternion_from_euler
7
8
8
9
9
10
def test_axis_angle_to_matrix_perf ():
@@ -22,6 +23,21 @@ def test_axis_angle_to_matrix_perf():
22
23
print (f'New method: { dt2 :.5f} ' )
23
24
24
25
26
+ def test_quaternion_from_euler ():
27
+ q = quaternion_from_euler (0 , 0 , 0 )
28
+ np .testing .assert_allclose (q , np .array ([1. , 0 , 0 , 0 ]))
29
+ root2_over_2 = np .sqrt (2 ) / 2
30
+
31
+ q = quaternion_from_euler (0 , 0 , np .pi / 2 )
32
+ np .testing .assert_allclose (q , np .array ([root2_over_2 , 0 , 0 , root2_over_2 ]))
33
+
34
+ q = quaternion_from_euler (- np .pi / 2 , 0 , 0 )
35
+ np .testing .assert_allclose (q , np .array ([root2_over_2 , - root2_over_2 , 0 , 0 ]))
36
+
37
+ q = quaternion_from_euler (0 , np .pi / 2 , 0 )
38
+ np .testing .assert_allclose (q , np .array ([root2_over_2 , 0 , root2_over_2 , 0 ]))
39
+
40
+
25
41
def test_pos_rot_conversion ():
26
42
N = 1000
27
43
R = random_rotations (N )
0 commit comments