60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
"""
 | 
						|
GTSAM Copyright 2010-2019, Georgia Tech Research Corporation,
 | 
						|
Atlanta, Georgia 30332-0415
 | 
						|
All Rights Reserved
 | 
						|
 | 
						|
See LICENSE for the license information
 | 
						|
 | 
						|
ProjectionFactorRollingShutter unit tests.
 | 
						|
Author: Yotam Stern
 | 
						|
"""
 | 
						|
import unittest
 | 
						|
 | 
						|
import numpy as np
 | 
						|
 | 
						|
import gtsam
 | 
						|
import gtsam_unstable
 | 
						|
from gtsam.utils.test_case import GtsamTestCase
 | 
						|
 | 
						|
 | 
						|
pose1 = gtsam.Pose3()
 | 
						|
pose2 = gtsam.Pose3(np.array([[ 0.9999375 ,  0.00502487,  0.00998725,  0.1       ],
 | 
						|
                              [-0.00497488,  0.999975  , -0.00502487,  0.02      ],
 | 
						|
                              [-0.01001225,  0.00497488,  0.9999375 ,  1.        ],
 | 
						|
                              [ 0.        ,  0.        ,  0.        ,  1.        ]]))
 | 
						|
point = np.array([2, 0, 15])
 | 
						|
point_noise = gtsam.noiseModel.Diagonal.Sigmas(np.ones(2))
 | 
						|
cal = gtsam.Cal3_S2()
 | 
						|
body_p_sensor = gtsam.Pose3()
 | 
						|
alpha = 0.1
 | 
						|
measured = np.array([0.13257015, 0.0004157])
 | 
						|
 | 
						|
 | 
						|
class TestProjectionFactorRollingShutter(GtsamTestCase):
 | 
						|
 | 
						|
    def test_constructor(self):
 | 
						|
        '''
 | 
						|
        test constructor for the ProjectionFactorRollingShutter
 | 
						|
        '''
 | 
						|
        factor = gtsam_unstable.ProjectionFactorRollingShutter(measured, alpha, point_noise, 0, 1, 2, cal)
 | 
						|
        factor = gtsam_unstable.ProjectionFactorRollingShutter(measured, alpha, point_noise, 0, 1, 2, cal,
 | 
						|
                                                               body_p_sensor)
 | 
						|
        factor = gtsam_unstable.ProjectionFactorRollingShutter(measured, alpha, point_noise, 0, 1, 2, cal, True, False)
 | 
						|
        factor = gtsam_unstable.ProjectionFactorRollingShutter(measured, alpha, point_noise, 0, 1, 2, cal, True, False,
 | 
						|
                                                               body_p_sensor)
 | 
						|
 | 
						|
    def test_error(self):
 | 
						|
        '''
 | 
						|
        test the factor error for a specific example
 | 
						|
        '''
 | 
						|
        values = gtsam.Values()
 | 
						|
        values.insert(0, pose1)
 | 
						|
        values.insert(1, pose2)
 | 
						|
        values.insert(2, point)
 | 
						|
        factor = gtsam_unstable.ProjectionFactorRollingShutter(measured, alpha, point_noise, 0, 1, 2, cal)
 | 
						|
        self.gtsamAssertEquals(factor.error(values), np.array(0), tol=1e-9)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    unittest.main()
 |