READ ME for dataset supporting "A universal 3D imaging sensor on a silicon photonics platform" Authors: Christopher Rogers, Alexander Y. Piggot, David J. Thomson, Robert F. Wiser, Ion E. Opris, Steven A. Fortune, Andrew J. Compston, Alexander Gondarenko, Fanfan Meng, Xia Chen, Graham Reed, and Remus Nicolaescu Corresponding Author: remus.nicolaescu@point.cloud (https://orcid.org/0000-0001-9609-722X) Dataset DOI: doi.org/10.5258/SOTON/D1619 Publishing Journal: Nature Dates of Data Collection: April through September 2020 Location of Data Collection: Pointcloud Inc., 329 Bryant St #2D, San Francisco, CA, USA 94107 Description: The .zip file contains all the data and code accompanying this dataset. There are three sub-folders in the top-level .zip file for the data corresponding to Figure 3, Figure 4, and the extended data figures of the paper, referred to respectively as figure3, figure4, and extfigs. Each of those folders in turn have two of their own sub-folders called data and plots that hold the corresponding numerical data and image artwork (in both .pdf and .svg format) from the paper as well as Python code in the higher directory that will create the figures from the data. A detailed description of the contents of each folder follows. figure3/: Figure 3 demonstrates the electro-optic performance of our receiver. The data files include: -data/lo_noise_time.csv: Typical time-domain response of one of the amplifiers with local oscillator light coupled into the receiver. Used to create plots/fig3a.xxx by plot_fig3a.py, the frequency response of the amplifiers. -data/amplifier_noise.csv: The amplifier noise in A/sqrt(Hz) of each of the 32x16 (given by row_index and column_index, respectively) amplifiers. Used to create plots/fig3b.xxx by plot_fig3b.py, a histogram of the noise floor of each channel's amplifier chain. -data/lo_transmission.csv & data/photocurrent_psd_frequencyaveraged_rms.csv: The measured fractional LO power going to each of the 32x16 (given by row_index and column_index, respectively) balanced heterodyne detectors and the frequency averaged photocurrent power spectral density in A/sqrt(Hz) for each of the 32x16 (again given by row_index and column_index) detectors. Used to create plots/fig3c.xxx by plot_fig3c.py, a histogram of the common mode rejection ratio for all the detectors. -data/plot_tia_data.csv: A collection of previously designed amplifiers' descriptions, technology, and performance metrics as well as the same for our own design. Used to create plots/fig3d.xxx, a comparison of our amplifier design with previous designs. -data/LOsweep_*.csv: The three files are used to create plots/fig3e.xxx by plot_fig3e.py and refer specifically to: -* = current_Amps: LO currents in A that were input to the balanced detector. -* = frequency_Hertz: The frequencies in Hz corresponding to the measured power spectral densities of the balanced detectors -* = psd_AmpssquaredperHertz: Balanced detector output power spectral density in A^2/Hz. Each comma-separated row corresponds to a frequency from the above file, and each column corresponds to the LO current given in the above file. figure4/: Figure 4 shows the results of our work. In all cases below, nan entries in the point cloud data correspond to captures that did not meet the detection threshold of 10 photoelectrons and were thus excluded. The data files include: -data/plate_static_psd.csv: Typical frequency-domain power spectral density in photoelectrons normalized such that the expected shot noise is unity (i.e. equal to 1.0) of both an up-chirp and down-chirp for a single, static target approximately 17 meters away from the sensor. Used in part to create plots/fig4a.xxx by plot_fig4a.py, a typical received signal from a static target. -data/ball_1rpm_psd.csv: Typical frequency-domain power spectral density in photoelectrons normalized such that the expected shot noise is unity (i.e. equal to 1.0) of both an up-chirp and down-chirp for a ball rotating at 1 revolution per minute approximately 17 meters away from the sensor. Used in part to create plots/fig4a.xxx by plot_fig4a.py, a typical received signal from a moving target. -data/plate_17m_histogram*.csv: More than 40 frames (with each frame number given by the last two digits in the file name before the .csv extension) of point cloud data of a static plate at 17 m. Used in part to create plots/fig4b.xxx by plot fig4b.py, a histogram of the depth error of our system. -data/wall_75m_histogram*.csv: More than 40 frames (with each frame number given by the last two digits in the file name before the .csv extension) of point cloud data of a wall at 75 m. Used in part to create plots/fig4b.xxx by plot fig4b.py, a histogram of the depth error of our system. -data/ball_1rpm_velhistneg.csv: More than 1000 single pixel captures of a ball rotating at 1 rpm at the edge moving away from the sensor. Used in part to create plots/fig4c.xxx by plot fig4c.py, a histogram of the velocity measurement error of our system. -data/ball_1rpm_velhistpos.csv: More than 1000 single pixel captures of a ball rotating at 1 rpm at the edge moving towards the sensor. Used in part to create plots/fig4c.xxx by plot fig4c.py, a histogram of the velocity measurement error of our system. -data/ball_1rpm_pointcloud*.csv: Three frames (with each frame number given by the last two digits in the file name before the .csv extension) of point cloud data of a ball rotating at 1 rpm. Used to create plots/fig4d.xxx and plots/fig4f.xxx by plot fig4dfgh.py, respectively three frames of point clouds as well as a line cut of velocity measurements across the ball. -data/boxes_55m_pointcloud*.csv: Three frames (with each frame number given by the last two digits in the file name before the .csv extension) of point cloud data of stacked boxes at 55 m. Used to create plots/fig4g.xxx by plot fig4dfgh.py, three frames of point clouds. -data/wall_75m_pointcloud*.csv: Three frames (with each frame number given by the last two digits in the file name before the .csv extension) of point cloud data of a wall at 75 m. Used to create plots/fig4g.xxx by plot fig4dfgh.py, three frames of point clouds. extfigs/: The extended data figures provide additional information about our system. The data files include: -data/calib_tx_2020-04-27T20_21_49.json: Thermo-optic switch tree calibration data. Used to create plots/tx_switch_tune_0.xxx, plots/tx_switch_tune_1.xxx, and plots/tx_switching_map.xxx by plot_extfig1bc.py showcasing the performance of our system's thermo-optic switches. -data/thermooptic_switch_2020-09-21.csv: Monitor photodiode output in arbitrary units for a single thermo-optic switch both when switched on and off at 0 seconds in time. Used to create plots/thermooptic_on.xxx and plots/thermooptic_off.xxx by plot_extfig1d.py demonstrating the on and off transients of a representative thermo-optic switch. -data/retroreflector_horizontal.csv & data/retroreflector_vertical.csv: Point cloud data of a retroflector both along a horizontal edge and vertical edge, respectively. Used to create plots/retroflector.xxx by plot_extfig5a.py showing the imaging contrast of our system. -data/cardboard_XXm_pointcloudYY.csv: Point cloud data of a flat piece of cardboard at various distances from the sensor, with XX representing the approximate distance from the sensor in meters and YY representing a frame number. Used to create plots/dist_noise.xxx and plots/dist_detprob.xxx by plot_extfig5b.py illustrating how our system's performance changes with distance from the target. -data/singlechirp_rpm=*.csv & multichirp_rpm=*.csv: More than 500 single pixel captures of a disk spinning at various rates, with the number in the filename corresponding to the spin rate in revolutions per minute. Used to create velocity_singlechirp.xxx and velocity_multichirp.xxx, a comparison of measured and actual velocities for different speeds for both a single chirp and multiple chirps. Changes applied 29/01/21: Figure3\data: filename 'tap=30mW.csv' changed to the more descriptive 'lo_noise_time.csv' and also changed line 102 in the python file 'plot_fig3a.py' that loads that data to the new filename. Figure3\plot_fig3c.py: removed the comment on line 13 "ASSUMPTION: photodiode responsivity is 1.0 A/W" and instead changed the comment on line 12 to read "Common mode rejection ratio, assuming a measured photodiode responsivity of about 1.0 A/W". extfigs\plot_extfig1bc.py: changed the comment on line 10 from "Roughly estimate parameters" to "Initial guess of parameters"