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))
Exemple #2
0
                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)))