def eiscat_uhf(): uhf_lat = 69.58649229 uhf_lon = 19.22592538 uhf_alt = 85.554 rx_beam = alib.uhf_beam(az0=90.0, el0=75.0, I_0=10**4.81, f=930e6) scan = rslib.beampark_model( az=90.0, el=75.0, lat=uhf_lat, lon=uhf_lon, alt=uhf_alt, ) uhf = antenna.AntennaRX( name="UHF Tromso", lat=uhf_lat, lon=uhf_lon, alt=uhf_alt, el_thresh=30, freq=930e6, rx_noise=100, beam=rx_beam, scan=scan, phased=False, ) tx_beam = alib.uhf_beam(az0=90.0, el0=75.0, I_0=10**4.81, f=930e6) uhf_tx = antenna.AntennaTX( name="UHF Tromso TX", lat=uhf_lat, lon=uhf_lon, alt=uhf_alt, el_thresh=30, freq=930e6, rx_noise=100, beam=tx_beam, scan=scan, tx_power=1.6e6, # 2 MW? tx_bandwidth=1e6, # 1 MHz duty_cycle=0.125, n_ipp=10.0, ipp=20e-3, pulse_length=30.0 * 64.0 * 1e-6, phased=False, ) # EISCAT UHF beampark tx = [uhf_tx] rx = [uhf] euhf = RadarSystem(tx, rx, 'Eiscat UHF') euhf.set_SNR_limits(14.0, 14.0) return euhf
def eiscat_uhf(): uhf_lat = 69.34023844 uhf_lon = 20.313166 uhf = rc.rx_antenna( "UHF Tromso", uhf_lat, uhf_lon, 30, 930e6, 100, a.cassegrain_beam(az0=0, el0=90, lat=uhf_lat, lon=uhf_lon, I_0=10**4.3, f=930e6, a0=16.0, a1=4.58 / 2.0)) uhf_tx = rc.tx_antenna( "UHF Tromso TX", uhf_lat, uhf_lon, 30, 930e6, 100, a.cassegrain_beam(0, 90, uhf_lat, uhf_lon, I_0=10**4.3, a0=16.0, a1=4.58 / 2.0, f=930e6), rslib.beampark_model(az=90.0, el=75.0, lat=uhf_lat, lon=uhf_lon, alt=0.0), 2e6, # 2 MW 1e6, # 1 MHz 0.125) # 12.5% duty-cycle # EISCAT UHF beampark tx = [uhf_tx] rx = [uhf] euhf = rc.radar_system(tx, rx, 'Eiscat UHF') return euhf
#initialize the radar setup e3d = rl.eiscat_uhf() e3d._min_on_axis=25.0 e3d._min_SNRdb=1.0 e3d._tx[0].enr_thresh = 1.0 #SNR? e3d._tx[0].el_thresh = 30.0 #deg for rx in e3d._rx: rx.el_thresh = 30.0 #deg e3d._tx[0].ipp = 10e-3 # pulse spacing e3d._tx[0].n_ipp = 5 # number of ipps to coherently integrate e3d._tx[0].pulse_length = 1e-3 #initialize the observing mode e3d_scan = rslib.beampark_model(az=0.0, el=90.0, alt = 150, dwell_time = 0.1) e3d_scan.set_radar_location(e3d) e3d._tx[0].scan = e3d_scan def pdf(a,e,i,omega,Omega,mu,s): pass #load the input population pop = p.MC_sample(pdf,num=1e5) sim = s.simulation( \ radar = e3d,\ population = pop,\ sim_root = sim_root,\ simulation_name = s.auto_sim_name('BEAMPARK_RHO')
os.environ['TZ'] = 'GMT' time.tzset() ####### RUN CONFIG ####### campagin = 0 ########################## if campagin == 0: the_date = '_2019_04_02_' SIM_TIME = 24.0 dt = np.datetime64('2019-04-02T12:01') mjd = dpt.npdt2mjd(dt) scan = rslib.beampark_model( lat=radar._tx[0].lat, lon=radar._tx[0].lon, alt=radar._tx[0].alt, az=90.0, el=70.0, ) elif campagin == 1: the_date = '_2019_04_05_' SIM_TIME = 5.0 dt = np.datetime64('2019-04-05T08:01') mjd = dpt.npdt2mjd(dt) scan = rslib.beampark_model( lat=radar._tx[0].lat, lon=radar._tx[0].lon, alt=radar._tx[0].alt, az=90.0, el=45.0, )
def eiscat_svalbard(): """ The steerable antenna of the ESR radar, default settings for the Space Debris radar mode. """ uhf_lat = 78.15 uhf_lon = 16.02 uhf_alt = 0.0 rx_beam = alib.uhf_beam( az0=90.0, el0=75.0, I_0=10**4.25, f=500e6, ) tx_beam = alib.uhf_beam( az0=90.0, el0=75.0, I_0=10**4.25, f=500e6, ) scan = rslib.beampark_model( az=90.0, el=75.0, lat=uhf_lat, lon=uhf_lon, alt=uhf_alt, ) uhf = antenna.AntennaRX( name="Steerable Svalbard", lat=uhf_lat, lon=uhf_lon, alt=uhf_alt, el_thresh=30, freq=500e6, rx_noise=120, beam=rx_beam, phased=False, scan=scan, ) uhf_tx = antenna.AntennaTX( name="Steerable Svalbard TX", lat=uhf_lat, lon=uhf_lon, alt=uhf_alt, el_thresh=30, freq=500e6, rx_noise=120, beam=tx_beam, scan=scan, tx_power=0.6e6, # 600 kW tx_bandwidth=1e6, # 1 MHz duty_cycle=0.125, pulse_length=30.0 * 64.0 * 1e-6, ipp=20e-3, n_ipp=10.0, ) # EISCAT UHF beampark tx = [uhf_tx] rx = [uhf] euhf = RadarSystem(tx, rx, 'Eiscat Svalbard Steerable Antenna') euhf.set_SNR_limits(14.77, 14.77) return euhf
def tromso_space_radar(freq=1.2e9): lat = 69.5866115 lon = 19.221555 alt = 85.0 rx_beam = alib.tsr_beam( el0=90.0, f=freq, ) scan = rslib.beampark_model( az=0.0, el=90.0, lat=lat, lon=lon, alt=alt, ) tsr_rx = antenna.AntennaRX( name="Tromso Space Radar", lat=lat, lon=lon, alt=alt, el_thresh=30, freq=freq, rx_noise=100, beam=rx_beam, phased=False, scan=scan, ) tx_beam = alib.tsr_beam( el0=90.0, f=freq, ) tsr_tx = antenna.AntennaTX( name="Tromso Space Radar TX", lat=lat, lon=lon, alt=alt, el_thresh=30, freq=freq, rx_noise=100, beam=tx_beam, scan=scan, tx_power=500.0e3, tx_bandwidth=1e6, duty_cycle=0.125, n_ipp=10.0, ipp=20e-3, pulse_length=30.0 * 64.0 * 1e-6, ) # EISCAT UHF beampark tx = [tsr_tx] rx = [tsr_rx] tsr_r = RadarSystem(tx, rx, 'Tromso Space Radar') tsr_r.set_SNR_limits(10.0, 10.0) return tsr_r
SCANS.append(SCAN4) SCAN5 = rs.radar_scan(lat = 69,lon = 19,alt = 150,\ pointing_function = point_circle_fence, \ name = 'Circle fence scan', \ pointing_coord = 'azel') n_scan5 = 100 SCAN5._function_data['n'] = n_scan5 SCAN5._function_data['az'] = np.linspace(0, 360, num=n_scan5) SCAN5._function_data['el'] = [50 for i in range(n_scan5)] SCAN5._scan_time = n_scan5 * SCAN5._function_data['dwell_time'] SCANS.append(SCAN5) SCAN6 = rslib.beampark_model(69, 19) SCANS.append(SCAN6) for SC in SCANS: t = np.linspace(0, SC._scan_time, num=np.round(2 * SC._scan_time / SC._function_data['dwell_time'])) fig = plt.figure(figsize=(10, 10)) ax = fig.add_subplot(111, projection='3d') ax.view_init(15, 5) plothelp.draw_earth_grid(ax) plothelp.draw_radar(ax, 69, 19) for i in range(len(t)): p0, k0 = SC.antenna_pointing(t[i])
#!/usr/bin/env python # # plot eiscat 2018 beampark pointing directions # import numpy as np import matplotlib.pyplot as plt import time from mpl_toolkits.mplot3d import Axes3D import coord import plothelp import radar_scans as rs import radar_scan_library as rslib uhf = rslib.beampark_model(90.0, 75.0, lat=69.58, lon=19.23) esr = rslib.beampark_model(90.0, 75.0, lat=78.15, lon=16.02) scans.append(uhf) scans.append(esr) fig = plt.figure(figsize=(8, 8)) ax = fig.add_subplot(111, projection='3d') ax.view_init(15, 5) plothelp.draw_earth_grid(ax) plothelp.draw_radar(ax, 69.58, 19.23, name="UHF", color="red") plothelp.draw_radar(ax, 78.15, 16.02, name="ESR", color="blue") p0, k0 = uhf.antenna_pointing(0.0) p1 = p0 + k0 * 3000e3
def test_envisat_detection(): from mpi4py import MPI # SORTS imports CORE import population_library as plib from simulation import Simulation #SORTS Libraries import radar_library as rlib import radar_scan_library as rslib import scheduler_library as schlib import antenna_library as alib import rewardf_library as rflib #SORTS functions import ccsds_write import dpt_tools as dpt sim_root = './tests/tmp_test_data/envisat_sim_test' radar = rlib.eiscat_uhf() radar.set_FOV(max_on_axis=30.0, horizon_elevation=25.0) scan = rslib.beampark_model( lat=radar._tx[0].lat, lon=radar._tx[0].lon, alt=radar._tx[0].alt, az=90.0, el=75.0, ) radar.set_scan(scan) #tle files for envisat in 2016-09-05 to 2016-09-07 from space-track. TLEs = [ ('1 27386U 02009A 16249.14961597 .00000004 00000-0 15306-4 0 9994', '2 27386 98.2759 299.6736 0001263 83.7600 276.3746 14.37874511760117' ), ('1 27386U 02009A 16249.42796553 .00000002 00000-0 14411-4 0 9997', '2 27386 98.2759 299.9417 0001256 82.8173 277.3156 14.37874515760157' ), ('1 27386U 02009A 16249.77590267 .00000010 00000-0 17337-4 0 9998', '2 27386 98.2757 300.2769 0001253 82.2763 277.8558 14.37874611760201' ), ('1 27386U 02009A 16250.12384028 .00000006 00000-0 15974-4 0 9995', '2 27386 98.2755 300.6121 0001252 82.5872 277.5467 14.37874615760253' ), ('1 27386U 02009A 16250.75012691 .00000017 00000-0 19645-4 0 9999', '2 27386 98.2753 301.2152 0001254 82.1013 278.0311 14.37874790760345' ), ] pop = plib.tle_snapshot(TLEs, sgp4_propagation=True) pop['d'] = n.sqrt(4 * 2.3 * 4 / n.pi) pop['m'] = 2300. pop['C_R'] = 1.0 pop['C_D'] = 2.3 pop['A'] = 4 * 2.3 ccsds_file = './data/uhf_test_data/events/2002-009A-2016-09-06_08:27:08.tdm' obs_data = ccsds_write.read_ccsds(ccsds_file) jd_obs = dpt.mjd_to_jd(dpt.npdt2mjd(obs_data['date'])) jd_sort = jd_obs.argsort() jd_obs = jd_obs[jd_sort] jd_det = jd_obs[0] pop.delete([0, 1, 2, 4]) #now just best ID left jd_pop = dpt.mjd_to_jd(pop['mjd0'][0]) tt_obs = (jd_obs - jd_pop) * 3600.0 * 24.0 sim = Simulation( radar=radar, population=pop, root=sim_root, scheduler=schlib.dynamic_scheduler, ) sim.observation_parameters( duty_cycle=0.125, SST_fraction=1.0, tracking_fraction=0.0, SST_time_slice=0.2, ) sim.run_observation(jd_obs[-1] - jd_pop + 1.0) sim.print_maintenance() sim.print_detections() sim.set_scheduler_args(logger=sim.logger, ) sim.run_scheduler() sim.print_tracks() print(sim.catalogue.tracklets[0]['t']) print(jd_obs) shutil.rmtree(sim_root) assert False
def beampark_plot(): scan = rslib.beampark_model(az=0., el=45.0, lat=69., lon=19., alt=150.) plot_radar_scan(scan, earth=True) plt.show()
#tx_beam = alib.planar_beam(az0 = 0.0,el0 = 90.0,lat = 60,lon = 19,f=233e6,I_0=10**4.2,a0=40.0,az1=0,el1=90.0) tx_beam = alib.e3d_array_beam_stage1(opt='dense') #antenna.plot_gain(tx_beam,res=300,min_el=80.0) radar.set_beam('TX', tx_beam ) #radar.set_beam('RX', alib.planar_beam(az0 = 0.0,el0 = 90.0,lat = 60,lon = 19,f=233e6,I_0=10**4.5,a0=40.0,az1=0,el1=90.0) ) radar.set_beam('RX', alib.e3d_array_beam() ) #initialize the observing mode #radar_scan = rslib.ns_fence_rng_model(min_el = 30.0, angle_step = 2.0, dwell_time = 0.1) #az_points = n.arange(0,360,45).tolist() + [0.0]; #el_points = [90.0-n.arctan(50.0/300.0)*180.0/n.pi, 90.0-n.arctan(n.sqrt(2)*50.0/300.0)*180.0/n.pi]*4+[90.0]; #radar_scan = rslib.n_const_pointing_model(az_points,el_points,len(az_points),dwell_time = 0.4) radar_scan = rslib.beampark_model(az=0.0,el=90.0) radar_scan.set_radar_location(radar) radar.set_scan(radar_scan) obs_par = sch.calculate_observation_params( \ duty_cycle = 0.25, \ SST_f = 1.0, \ tracking_f = 0.0, \ coher_int_t=0.2) sch.configure_radar_to_observation(radar,obs_par,'scan') # get all IODs for one object during 24 hours o=so.space_object(a=7000,e=0.0,i=72,raan=0,aop=0,mu0=0,C_D=2.3,A=1.0,m=1.0,diam=0.1) det_times=st.get_passes(o,radar,69*3600.,70*3600.,max_dpos=50.0)
def mock_radar(): lat = 90.0 lon = 0.0 alt = 0.0 rx_beam = alib.planar_beam( az0=0, el0=90, I_0=10**4.5, f=233e6, a0=40, az1=0.0, el1=90.0, ) tx_beam = alib.planar_beam( az0=0, el0=90, I_0=10**4.5, f=233e6, a0=40, az1=0.0, el1=90.0, ) rx = antenna.AntennaRX( name="Top", lat=lat, lon=lon, alt=alt, el_thresh=30, freq=233e6, rx_noise=120, beam=rx_beam, ) scan = rslib.beampark_model( az=0.0, el=90.0, lat=lat, lon=lon, alt=alt, ) tx = antenna.AntennaTX( name="Top TX", lat=lat, lon=lon, alt=alt, el_thresh=30, freq=233e6, rx_noise=120, beam=tx_beam, scan=scan, tx_power=5.0e6, tx_bandwidth=1e6, # 1 MHz duty_cycle=0.25, pulse_length=30.0 * 64.0 * 1e-6, ipp=20e-3, n_ipp=10.0, ) tx = [tx] rx = [rx] Mock = RadarSystem(tx, rx, 'Mock radar') Mock.set_FOV(max_on_axis=90.0, horizon_elevation=0.0) return Mock
def mock_radar_mult(): lat = [85.0, 89.0, 90.0, 89.0, 85.0] lon = [0, 90.0, 0, 270.0, 180] alt = 0.0 tx_l = [] rx_l = [] for ind in range(5): rx_beam = alib.planar_beam( az0=0, el0=90, I_0=10**4.5, f=233e6, a0=40, az1=0.0, el1=90.0, ) rx = antenna.AntennaRX( name="Top", lat=lat[ind], lon=lon[ind], alt=alt, el_thresh=30, freq=233e6, rx_noise=120, beam=rx_beam, ) rx_l.append(rx) lat = [90.0, 87.0] lon = [0, 0.0] for ind in range(2): tx_beam = alib.planar_beam( az0=0, el0=90, I_0=10**4.5, f=233e6, a0=40, az1=0.0, el1=90.0, ) scan = rslib.beampark_model( az=0.0, el=90.0, lat=lat[ind], lon=lon[ind], alt=alt, ) tx = antenna.AntennaTX( name="Top TX", lat=lat[ind], lon=lon[ind], alt=alt, el_thresh=30, freq=233e6, rx_noise=120, beam=tx_beam, scan=scan, tx_power=5.0e6, tx_bandwidth=1e6, # 1 MHz duty_cycle=0.25, pulse_length=30.0 * 64.0 * 1e-6, ipp=20e-3, n_ipp=10.0, ) tx_l.append(tx) Mock = RadarSystem(tx_l, rx_l, 'bIG Mock radar') Mock.set_FOV(max_on_axis=90.0, horizon_elevation=0.0) return Mock