def test_GPS(self): qBO = np.array([.0,0.,0.,1.]) state = np.hstack((qBO,np.array([-0.1,0.39159385,-0.7]))) sat = satellite.Satellite(state,12.05) sat.setPos(np.array([7070e3,0.,0.])) sat.setVel(np.array([5.60,-5.0,0.0])) v_expected = np.array([7070e3,0.,0.,5.60,-5.0,0.0,12.05]) self.assertTrue(np.allclose(defblock.gps(sat),v_expected))
i, int(Ncontrol / 100) ) == 0: # we are printing percentage of cycle completed to keep track of simulation print(int(100 * i / Ncontrol)) if (i % (i_time_gps + i_time_J2) <= i_time_gps): propbool = 0 else: propbool = 1 # sensor reading if (sensbool == 0): # getting default sensor reading (zero noise in our case) Advitiy.setSun_b_m(defblock.sunsensor(Advitiy)) Advitiy.setMag_b_m_p(Advitiy.getMag_b_m_c()) Advitiy.setMag_b_m_c(defblock.magnetometer(Advitiy)) Advitiy.setgpsData(defblock.gps(Advitiy)) Advitiy.setOmega_m(defblock.gyroscope(Advitiy)) # Advitiy.setJ2Data(defblock.J2_propagator(Advitiy)) if (sensbool == 1): # getting sensor reading from models Advitiy.setSun_b_m(sensor.sunsensor(Advitiy)) Advitiy.setMag_b_m_p(Advitiy.getMag_b_m_c()) Advitiy.setMag_b_m_c(sensor.magnetometer(Advitiy)) Advitiy.setOmega_m(sensor.gyroscope(Advitiy)) if (propbool == 0): # Using sgp to propagate Advitiy.setgpsData(sensor.GPS(Advitiy)) if (propbool == 1): # Use J2 to propagate
class TestDefaultBlocks(unittest.TestCase): @file_data("test-data/test_defaultsunsensor.json") @unpack def test_sunsensor(self, value): qBI = np.asarray(value[0]) v_sv_i = np.asarray(value[1]) v_pos_i = np.array([1e6, -2.03, -3.0]) v_vel_i = np.array([2.0e3, 2.8, -73.2]) qBO = frames.qBI2qBO(qBI, v_pos_i, v_vel_i) state = np.hstack((qBO, np.zeros(3))) mySat = satellite.Satellite(state, 12.0) mySat.setQ_BI(qBI) result = defblock.sunsensor(mySat, v_sv_i) v_expected = value[2], value[3] self.assertTrue(np.allclose(result, v_expected)) @file_data("test-data/test_defaultsunsensor.json") @unpack def test_magmeter(self, value): qBI = np.asarray(value[0]) v_sv_i = np.asarray(value[1]) v_pos_i = np.array([1e6, -2.03, -3.0]) v_vel_i = np.array([2.0e3, 2.8, -73.2]) qBO = frames.qBI2qBO(qBI, v_pos_i, v_vel_i) state = np.hstack((qBO, np.zeros(3))) mySat = satellite.Satellite(state, 12.0) mySat.setQ_BI(qBI) result = defblock.magmeter(mySat, v_sv_i) v_expected = value[2], value[3] self.assertTrue(np.allclose(result, v_expected)) def test_gyroscope(self): v_w_BI_b = np.array((-3.9999, 4.8575, 0)) self.assertTrue(np.allclose(defblock.gyroscope(v_w_BI_b), v_w_BI_b)) sgp_output = np.genfromtxt('sgp_output.csv', delimiter=",") defblock.J2_propagator() defblock.gps() gps_output = np.genfromtxt('gps_output.csv', delimiter=",") J2_output = np.genfromtxt('J2_output.csv', delimiter=",") T = sgp_output[:, 0] l = np.linspace(0, len(T), 12, int) #Sample 7 data points from entire file @data(l[0], l[1], l[2], l[3], l[4], l[5], l[6], l[7], l[8], l[9]) def test_GPS(self, value): v_expected = self.sgp_output[int(value), 1:4] v_result = self.gps_output[int(value), 1:4] self.assertTrue(np.allclose(v_expected, v_result)) @data(l[0], l[1], l[2], l[3], l[4], l[5], l[6], l[7], l[8], l[9]) def test_J2_propagator(self, value): v_expected = self.sgp_output[int(value), 1:4] v_result = self.J2_output[int(value), 1:4] self.assertTrue(np.allclose(v_expected, v_result)) def test_controller(self): qBO = np.array([.0, 0., 0., 1.]) state = np.hstack((qBO, np.array([0.10050588, -0.05026119, -0.3014887]))) mySat = satellite.Satellite(state, 128.05) self.assertTrue(np.allclose(defblock.controller(mySat), np.zeros(3))) def test_disturbance(self): qBO = np.array([.0, 0., 0., 1.]) state = np.hstack((qBO, np.array([0.10050588, -0.05026119, -0.3014887]))) mySat = satellite.Satellite(state, 128.05) self.assertTrue(np.allclose(defblock.disturbance(mySat), np.zeros(3)))