1 """script to test rtc_standalone feature
4 test_rtc_standalone <parameters_filename> [options]
6 with 'parameters_filename' the path to the parameters file
9 -h --help Show this help message and exit
10 -d, --devices devices Specify the devices
13 from docopt
import docopt
16 from carmaWrap
import threadSync
22 arguments = docopt(__doc__)
23 param_file = arguments[
"<parameters_filename>"]
26 sim = shesha_sim.Simulator(param_file)
28 if arguments[
"--devices"]:
30 for k
in range(len(arguments[
"--devices"])):
31 devices.append(int(arguments[
"--devices"][k]))
32 sim.config.p_loop.set_devices(devices)
35 nactu = sim.config.p_controller0.nactu
36 nvalid = sim.config.p_controller0.nvalid
37 rtc_standalone = shesha_init.rtc_standalone(
38 sim.c, len(sim.config.p_wfss), nvalid, nactu, sim.config.p_centroider0.type,
39 sim.config.p_controller0.delay, sim.config.p_wfs0.npix // 2 - 0.5,
40 sim.config.p_wfs0.pixsize)
41 rtc_standalone.set_cmat(0, sim.rtc.get_cmat(0))
42 rtc_standalone.set_decayFactor(0, np.ones(nactu, dtype=np.float32))
43 rtc_standalone.set_matE(0, np.identity(nactu, dtype=np.float32))
44 rtc_standalone.set_modal_gains(
46 np.ones(nactu, dtype=np.float32) * sim.config.p_controller0.gain)
48 s_ref = np.zeros((sim.config.p_loop.niter, 2 * nvalid.sum()), dtype=np.float32)
50 c = np.zeros((sim.config.p_loop.niter, nactu), dtype=np.float32)
52 img = sim.wfs.get_binimg(0)
53 img = np.zeros((sim.config.p_loop.niter, img.shape[0], img.shape[1]), dtype=np.float32)
55 for k
in tqdm(range(sim.config.p_loop.niter)):
57 img[k, :, :] = sim.wfs.get_binimg(0)
58 s_ref[k, :] = sim.rtc.get_centroids(0)
59 c_ref[k, :] = sim.rtc.get_com(0)
61 rtc_standalone.load_rtc_validpos(0, sim.config.p_wfs0._validsubsx,
62 sim.config.p_wfs0._validsubsy)
63 rtc_standalone.set_open_loop(0, 1)
64 rtc_standalone.set_open_loop(0, 0)
67 for k
in tqdm(range(sim.config.p_loop.niter)):
68 rtc_standalone.load_rtc_img(0, img[k, :, :].copy())
70 rtc_standalone.fill_rtc_bincube(0, sim.config.p_wfs0.npix)
71 rtc_standalone.do_centroids(0)
72 rtc_standalone.do_control(0)
73 rtc_standalone.save_com(0)
75 rtc_time += time.time() - a
76 s[k, :] = rtc_standalone.get_centroids(0)
77 c[k, :] = rtc_standalone.get_com(0)
79 print(
"RTC speed : ", 1 / (rtc_time / sim.config.p_loop.niter),
" fps")