示例#1
0
def generate_preset_test_rotation_matrices_2d():
    """Generates pre-set test 2d rotation matrices."""
    angles = generate_preset_test_euler_angles(dimensions=1)
    preset_rotation_matrix = rotation_matrix_2d.from_euler(angles)
    if tf.executing_eagerly():
        return np.array(preset_rotation_matrix)
    with tf.compat.v1.Session() as sess:
        return np.array(sess.run([preset_rotation_matrix]))
示例#2
0
  def test_from_euler_jacobian_random(self):
    """Test the Jacobian of the from_euler function."""
    x_init = test_helpers.generate_random_test_euler_angles(dimensions=1)
    x = tf.convert_to_tensor(value=x_init)

    y = rotation_matrix_2d.from_euler(x)

    self.assert_jacobian_is_correct(x, x_init, y)
示例#3
0
  def test_from_euler_normalized_preset(self):
    """Tests that an angle maps to correct matrix."""
    euler_angles = test_helpers.generate_preset_test_euler_angles(dimensions=1)

    matrix = rotation_matrix_2d.from_euler(euler_angles)

    self.assertAllEqual(
        rotation_matrix_2d.is_valid(matrix),
        np.ones(euler_angles.shape[0:-1] + (1,), dtype=bool))
示例#4
0
  def test_from_euler_with_small_angles_approximation_random(self):
    """Tests small_angles approximation by comparing to exact calculation."""
    # Only generate small angles. For a test tolerance of 1e-3, 0.17 was found
    # empirically to be the range where the small angle approximation works.
    random_euler_angles = test_helpers.generate_random_test_euler_angles(
        min_angle=-0.17, max_angle=0.17, dimensions=1)

    exact_matrix = rotation_matrix_2d.from_euler(random_euler_angles)
    approximate_matrix = (
        rotation_matrix_2d.from_euler_with_small_angles_approximation(
            random_euler_angles))

    self.assertAllClose(exact_matrix, approximate_matrix, atol=1e-3)
示例#5
0
  def test_inverse_random(self):
    """Checks that inverting rotated points results in no transformation."""
    random_euler_angles = test_helpers.generate_random_test_euler_angles(
        dimensions=1)
    tensor_shape = random_euler_angles.shape[:-1]

    random_matrix = rotation_matrix_2d.from_euler(random_euler_angles)
    random_point = np.random.normal(size=tensor_shape + (2,))
    rotated_random_points = rotation_matrix_2d.rotate(random_point,
                                                      random_matrix)
    predicted_invert_random_matrix = rotation_matrix_2d.inverse(random_matrix)
    predicted_invert_rotated_random_points = rotation_matrix_2d.rotate(
        rotated_random_points, predicted_invert_random_matrix)

    self.assertAllClose(
        random_point, predicted_invert_rotated_random_points, rtol=1e-6)
示例#6
0
def generate_preset_test_rotation_matrices_2d():
    """Generates pre-set test 2d rotation matrices."""
    angles = generate_preset_test_euler_angles(dimensions=1)
    preset_rotation_matrix = rotation_matrix_2d.from_euler(angles)
    return preset_rotation_matrix
示例#7
0
 def func(test_point, test_angle):
   random_matrix = rotation_matrix_2d.from_euler(test_angle)
   return rotation_matrix_2d.rotate(test_point, random_matrix)