SensingSP™ is an open-source library designed for simulating electromagnetic sensing systems and implementing signal processing and machine learning algorithms.
Install Blender 4.0.
Use SensingSP™ directly inside Blender:
Open Command Prompt and run:
cd "C:\Program Files\Blender Foundation\Blender 4.0\4.0\python\bin"
Replace the path above with your Blender installation path if different
python -m pip install sensingsp --no-deps
python -m pip install "numpy<2.0.0" matplotlib==3.7.3 opencv-python==4.8.1.78 PyQt5==5.15.10 scipy==1.10.1 numba==0.58.1 torch==2.0.1 scikit-learn==1.3.2 seaborn==0.12.2 tensorboard==2.13.0 torchviz==0.0.2 torchsummary==1.5.1 PyWavelets==1.4.1 pyserial==3.5
Verify in Blender: open the Scripting workspace and run:
import sensingsp as ssp
print("SensingSP version:", ssp.__version__)
import sensingsp as ssp
ssp.utils.initialize_environment()
radar = ssp.radar.utils.addRadar(
radarSensor=ssp.radar.utils.RadarSensorsCategory.TI_Cascade_AWR2243,
location_xyz=[-3, 0, 1])
ssp.radar.utils.addTarget(
refRadar=radar,
range=5, RCS0=3)
ssp.utils.initialize_simulation()
while ssp.config.run():
path_d_drate_amp = ssp.raytracing.Path_RayTracing_frame()
d_drate_amp=path_d_drate_amp[0][0][0][0][0][0][0]
print(d_drate_amp)
ssp.utils.increaseCurrentFrame()
$$P_r = \frac{P_t G_t G_r \lambda^2 \sigma}{(4\pi)^3 R_t^2 R_r^2 L}$$
import numpy as np
sensor_power_dBm = 12
NTX = 4 * 3
tx_power_dBm = sensor_power_dBm - 10 * np.log10(NTX) # Transmit power in dBm
tx_gain_dB = 0 # Transmit antenna gain in dB
rx_gain_dB = 0 # Receive antenna gain in dB
frequency = 76e9 # Operating frequency in Hz
wavelength = ssp.LightSpeed / frequency # Wavelength in meters
range_m = 10 / 2
rcs = 3 # Radar cross-section (RCS) in square meters
# Convert power from dBm to watts
tx_power_watts = 10 ** ((tx_power_dBm - 30) / 10)
# Convert gains from dB to linear scale
tx_gain_linear = 10 ** (tx_gain_dB / 10)
rx_gain_linear = 10 ** (rx_gain_dB / 10)
# Calculate the received power using the radar range equation
rx_power_watts = (tx_power_watts * tx_gain_linear * rx_gain_linear * wavelength**2 * rcs) / \
((4 * np.pi)**3 * range_m**4)
print(f" sqrt(Received Pow): {np.sqrt(rx_power_watts)} ")
# Display the results
print(f" Radar Equation: amp = {np.sqrt(rx_power_watts)} ")
print(f" SensingSP Ray Tracing output: amp = {d_drate_amp[2]} ")
Radar Equation: amp = 2.2295761512298927e-07
SensingSP Ray Tracing output: amp = 2.2292628849539048e-07
import sensingsp as ssp
ssp.utils.initialize_environment()
radar = ssp.radar.utils.addRadar(radarSensor=ssp.radar.utils.RadarSensorsCategory.TI_AWR1642)
# Add targets to the radar scenario
target_1 = ssp.radar.utils.addTarget(
refRadar=radar,
range=5, azimuth=10,
RCS0=3, radial_velocity=0 )
target_2 = ssp.radar.utils.addTarget(
refRadar=radar,
range=20, azimuth=0,
RCS0=2, radial_velocity=0 )
ssp.visualization.visualize_scenario()
ssp.utils.initialize_simulation()
ssp.utils.set_configurations([ssp.radar.utils.RadarSignalGenerationConfigurations.Spillover_Disabled,
ssp.radar.utils.RadarSignalGenerationConfigurations.RayTracing_Balanced,
ssp.radar.utils.RadarSignalGenerationConfigurations.CUDA_Disabled])
dataCube, radarParameters = ssp.utils.research.simplest.RadarRawData()
# Print the shape of the data cube
print(dataCube.shape, dataCube.dtype)
(256, 256, 4) complex128
import sensingsp as ssp
import numpy as np
from mathutils import Vector
print(ssp.__version__)
"""Initialize the simulation environment"""
ssp.utils.initialize_environment()
"""Set up the radar sensor, add dynamic objects, and configure the camera."""
# Add radar sensor at the specified location.
radar = ssp.radar.utils.addRadar(
radarSensor=ssp.radar.utils.RadarSensorsCategory.TI_IWR6843,
location_xyz=(0, 0, 1)
)
# Fetch and add objects (Walking Man) to the environment.
walkingman_file = ssp.utils.hub.fetch_file("animation", "WalkingMan")
ssp.environment.add_blenderfileobjects(
walkingman_file,
RCS0=1,
translation=(4.5, 0.7, 0),
rotation=(0, 0, np.pi)
)
ssp.environment.add_blenderfileobjects(
walkingman_file,
RCS0=1,
translation=(4.5, 0, 0),
rotation=(0, 0, 0)
)
"""Initialize simulation parameters and radar configurations."""
endframe = 30
ssp.utils.initialize_simulation(endframe=endframe)
configurations = [
ssp.radar.utils.RadarSignalGenerationConfigurations.Spillover_Disabled,
ssp.radar.utils.RadarSignalGenerationConfigurations.RayTracing_Balanced,
ssp.radar.utils.RadarSignalGenerationConfigurations.CUDA_Enabled
]
ssp.utils.set_configurations(configurations)
"""Run the main simulation loop and create a grid video after processing all frames."""
while ssp.config.run():
path_d_drate_amp = ssp.raytracing.Path_RayTracing_frame()
Signals = ssp.integratedSensorSuite.SensorsSignalGeneration_frame(path_d_drate_amp)
# Loop over each radar sensor configuration.
for isuite, radarSpecifications in enumerate(ssp.RadarSpecifications):
for iradar, specifications in enumerate(radarSpecifications):
for XRadar, timeX in Signals[isuite]['radars'][iradar]:
# Debug: print the count of radar signals.
print("Processing radar signal, count:", len(Signals[isuite]['radars'][iradar]))
# Apply a Hamming window to the fast-time dimension.
fast_time_window = ssp.radar.utils.hamming(XRadar.shape[0])
X_windowed_fast = XRadar * fast_time_window[:, np.newaxis, np.newaxis]
# Compute the Range FFT.
NFFT_Range = int(2 ** (np.ceil(np.log2(XRadar.shape[0])) + 1))
d_fft = (np.arange(NFFT_Range) * ssp.LightSpeed / 2 /
specifications['FMCW_ChirpSlobe'] / NFFT_Range / specifications['Ts'])
X_fft_fast = np.fft.fft(X_windowed_fast, axis=0, n=NFFT_Range) / XRadar.shape[0]
# Extract the first transmitter's pulses for Doppler processing.
rangePulseTX0RX0 = X_fft_fast[:, 0::specifications['M_TX'], 0]
NFFT_Doppler = int(2 ** (np.ceil(np.log2(rangePulseTX0RX0.shape[1])) + 2))
rangeDopplerTXRX = np.fft.fft(rangePulseTX0RX0, axis=1, n=NFFT_Doppler) / rangePulseTX0RX0.shape[1]
rangeDopplerTXRX = np.fft.fftshift(rangeDopplerTXRX, axes=1)
f_Doppler = np.linspace(
-0.5 / (specifications['PRI'] * specifications['M_TX']),
0.5 / (specifications['PRI'] * specifications['M_TX']),
NFFT_Doppler
)
print(f'Processed frame = {ssp.config.CurrentFrame}')
ssp.utils.increaseCurrentFrame()
-->
"sensingsp/raytracing/RayTracingFunctions.py": {
"functions": [
"cart2sph",
"azel_fromRotMatrix_dir",
"dir_from_azel_matrix",
"azel_fromRotMatrix_dir_test",
"calculate_reflected_direction",
"calculate_refracted_direction"
],
"classes": {
"SourceType": [
"__init__",
"__repr__"
],
"RaySet": [
"__init__",
"root",
"__repr__"
],
"Path4WavePropagation": [
"__init__",
"add_middle_element",
"__repr__"
],
"RayTracingFunctions": [
"check_line_of_sight",
"check_line_of_sight_checkID",
"check_line_of_sight_ID",
"LOS_RX_Target_RIS",
"LOS_RX_Target_RIS_4ris",
"LOS_RX_RIS_4scatter",
"random_normalized_vectors_around_direction",
"rayset_gen_TX",
"rayset_gen_RIS",
"rayset_gen_Scatter",
"RXPath"
]
}
},
"sensingsp/raytracing/BlenderGeometry.py": {
"functions": [
"cart2sph",
"azel_fromRotMatrix_dir"
],
"classes": {
"BlenderGeometry": [
"get_Target_Position",
"get_Suite_Position",
"get_Position_Velocity"
]
}
},
"sensingsp/radar/utils/radarutils.py": {
"functions": [
"CUDA_cfar_ca_2D_alpha",
"cfar_ca_2D_alpha_cuda",
"cfar_ca_2D_alpha",
"cfar_ca_2D",
"cfar_simple_2D",
"cfar_simple_max",
"calculate_n_from_beamwidth",
"antenna_gain_from_beamwidth",
"predefined_array_configs_TI_Cascade_AWR2243",
"make_Radar_DAR",
"predefined_array_configs_M_MIMO",
"predefined_array_configs_imagingURARX",
"predefined_array_configs_LinearArray",
"predefined_array_configs_DARWu_AllRX",
"predefined_array_configs_DARWu_AllTX",
"predefined_array_configs_DARWu",
"virtualArray_info",
"predefined_array_configs_3TX1RX",
"predefined_array_configs_TI_IWR6843",
"predefined_array_configs_TI_AWR1642",
"predefined_array_configs_URA",
"predefined_array_configs_3by1",
"predefined_array_configs_TI_IWR6843_az",
"predefined_array_configs_JSON",
"predefined_array_configs_SISO",
"predefined_array_configs_txrx",
"predefined_array_configs_ALTOS_V1",
"predefined_array_configs_infineon_BGT60UTR11AIP",
"predefined_array_configs_infineon_BGT60TR13C",
"predefined_array_configs_infineon_BGT24LTR11_CW",
"setDefaults",
"set_radar_displayrangeLim",
"rangeResolution_and_maxUnambigiousRange",
"FMCW_Chirp_Parameters",
"set_FMCW_Chirp_Parameters",
"compute_spectrogram",
"plot_spectrogram",
"plot_signal",
"compute_spectrum",
"plot_spectrum",
"rangeprocessing",
"clutter_removal",
"dopplerprocessing_mimodemodulation",
"rangedoppler_detection",
"rangedoppler_detection_alpha",
"xyz_angleprocessing",
"angleprocessing_CoArray",
"angleprocessing",
"pointscloud",
"angleprocessing_capon1D",
"steeringvector",
"addTarget",
"printAntennaInfp",
"addRadar",
"addRadarFile"
],
"classes": {
"RadarSensorsCategory": [],
"RadarSignalGenerationConfigurations": [],
"MIMORadarTechnique": [],
"RadarSpecJSON": [
"__init__",
"save_to_json",
"load_from_json"
]
}
},
"sensingsp/radar/waveforms/radarwaveforms.py": {
"functions": [
"barker_code",
"frank_code",
"golomb_sequence",
"generate_pulse_train",
"generate_fmcw_signal",
"gaussian_waveform",
"p1_code",
"p2_code",
"p3_code",
"p4_code",
"zadoff_chu_code"
],
"classes": {}
},
"sensingsp/radar/utils/rss.py": {
"functions": [
"CFAR_Window_Selection_F",
"find_indices_within_distance",
"apply_adc",
"apply_adc_real"
],
"classes": {}
},
"sensingsp/radar/utils/mimo.py": {
"functions": [
"matlab_like_hadamard",
"steeringVector_position",
"update_block_diag_matrix",
"Distributed_MIMO_steeringMatrix_position",
"generate_covariance_matrix",
"generate_covariance_matrix_Distributed",
"generate_complex_gaussian_samples",
"pfaTHR_tH0",
"ROC_tH1H0",
"ROC_tH1",
"array_detector_ABC",
"array_detector_ABC_inv",
"array_detector_Hermitian",
"array_detector_MF",
"MF_pfa",
"MF_threshold",
"MF_pd",
"array_detector_EstimatedAmplitude",
"array_detector_ED",
"ED_pfa",
"array_detector_ACE",
"array_detector_Kelly",
"Kelly_pfa",
"Kelly_threshold",
"Kelly_DistributedIndependentSameRadars_pfa",
"array_detector_Rao",
"array_detector_MMED",
"array_detector_MED",
"array_detector_RankOne_SingleShot",
"array_detector_SCM_N",
"array_detector_cos2",
"array_detector_SINR",
"array_detector_AMFDeemphasis",
"array_detector_Kalson",
"array_detector_SD",
"array_detector_ABORT",
"array_detector_WABORT",
"array_detector_CAD",
"array_detector_CARD",
"array_detector_2SROB",
"array_detector_1SROB",
"array_detector_ROB",
"hamming",
"array_detector_ROC_MonteCarlo_sortxH0",
"array_detector_ROC_AMF_ACE_MonteCarlo",
"array_detector_ROC_Kelly_MonteCarlo",
"array_detector_findTHR_AMF_ACE",
"array_detector_PdSNR_AMF_ACE_Kelly_MonteCarlo",
"array_detector_PdNSecondary_AMF_ACE_Kelly_MonteCarlo",
"VAsignal2coArraySignal_1D_RangeDopplerVA",
"VAsignal2coArraySignal_1D",
"VAsignal2coArraySignal_1D_sum",
"VAsignal2coArraySignal_2D",
"MIMO_minimum_redundancy_array",
"minimum_redundancy_array",
"mimo_antenna_order"
],
"classes": {
"MIMO_Functions": [
"sv",
"plot_Angle_Doppler",
"AD_matrix"
]
}
},
"sensingsp/visualization/visualization.py": {
"functions": [
"plot_tiangles",
"visualize_array",
"visualize_scenario",
"visualizeProcessingOutputs",
"visualize_radar_path_d_drate_amp",
"plot_continuous_curve",
"plot_pattern",
"plot_pattern_button"
],
"classes": {}
},
"sensingsp/visualization/videoGrid.py": {
"functions": [
"get_video_resolution",
"create_grid_video",
"combine_videos",
"addframe_GridVideoWriters",
"firsttime_init_GridVideoWriters",
"captureFig"
],
"classes": {}
},
"sensingsp/visualization/tex.py": {
"functions": [
"target_position",
"tx_position",
"rx_position",
"tx_rx_phase",
"wavenumber",
"wavenumber2",
"tx_target_distance",
"rx_target_distance",
"target_range",
"target_unit_vector",
"target_unit_vector_angles",
"tx_ura",
"rx_ura",
"my_limit",
"ny_limit",
"mz_limit",
"nz_limit",
"raw_data_cube",
"signal_steering_matrix",
"cq",
"transmit_steering_vector",
"receive_steering_vector",
"Doppler_steering_vector",
"doppler",
"doppler_processing_x",
"detector_MF",
"detector_AMF",
"detector_NAMF",
"detector_Kelly",
"detector_Kelly_vec",
"detector_Kelly_siso",
"detector_Kelly_siso_simple",
"hypothesis_text",
"hypothesisH1_text",
"hypothesisH0_text",
"glrt_ratio_text",
"pdfH1",
"pdfH0",
"Sigma",
"yofx",
"sigma",
"Omega",
"ml_estimates_text",
"determinant_relation_text",
"simplified_detector_text",
"final_detector_text",
"xd_distribution_text",
"glrtks_text"
],
"classes": {}
},
"sensingsp/ris/utils.py": {
"functions": [
"add_ris",
"add_ris_mat"
],
"classes": {}
},
"sensingsp/ai/extras/ConwaysGameofLife.py": {
"functions": [
"read_cells",
"game_of_life_kernel",
"generate_frame_kernel",
"save_game_of_life_video_cuda",
"save_game_of_life_video_cpu",
"runapp"
],
"classes": {
"GameofLifeApp": [
"__init__",
"initUI",
"save_video",
"initialize_grid",
"load_pattern"
]
}
},
"sensingsp/ai/radarML/DDPM/diffusion.py": {
"functions": [
"get_time_embedding",
"sample",
"infer",
"train"
],
"classes": {
"DownBlock": [
"__init__",
"forward"
],
"MidBlock": [
"__init__",
"forward"
],
"UpBlock": [
"__init__",
"forward"
],
"Unet": [
"__init__",
"forward"
],
"LinearNoiseScheduler": [
"__init__",
"add_noise",
"sample_prev_timestep"
],
"MnistDataset": [
"__init__",
"load_images",
"__len__",
"__getitem__"
]
}
},
"sensingsp/ai/radarML/HandGestureMisoCNN.py": {
"functions": [
"initialize_weights_scaled_kaiming",
"initialize_weights_xavier",
"initialize_weights_lecun",
"normalize_along_rows",
"make_sample",
"load_sample",
"runradarmisoCNNapp"
],
"classes": {
"RadarGestureDataset": [
"__init__",
"normalize_along_rows",
"__len__",
"__getitem__"
],
"RadarBranch": [
"__init__",
"forward"
],
"MultiInputModel": [
"__init__",
"forward"
],
"RadarMisoCNNApp": [
"__init__",
"initUI",
"initNet",
"initdataset",
"browse_folder",
"testinput_model",
"browse_testfile",
"loaddataset",
"def_model",
"train_model",
"test_model",
"visualize_model",
"loadfromhub",
"visualize_samples",
"visualize_model_as_image",
"visualize_parameter_updates"
]
}
},
"sensingsp/ai/radarML/HumanHealthMonitoringConvAE_BiLSTM.py": {
"functions": [
"normalize_ecg",
"extract_file_info",
"load_sample",
"printnninfo",
"printnnshape",
"runradarConvAEBiLSTMapp"
],
"classes": {
"RadarECGDataset": [
"__init__",
"__len__",
"__getitem__"
],
"Layer1_HumanHM": [
"__init__",
"forward"
],
"MODWTLayer_fix": [
"__init__",
"forward",
"_apply_convolution"
],
"MODWTLayer": [
"__init__",
"forward",
"_apply_convolution"
],
"Layer2_HumanHM": [
"__init__",
"forward"
],
"RadarHumanHMApp": [
"__init__",
"initUI",
"initNet",
"initdataset",
"browse_folder",
"testinput_model",
"browse_testfile",
"loaddataset",
"def_model",
"train_model",
"test_model",
"visualize_model",
"visualize_samples",
"testpretrained_but",
"modwt_but",
"visualize_model_as_image",
"visualize_parameter_updates"
]
}
},
"sensingsp/ai/radarML/SHARPWifiSensing.py": {
"functions": [
"runradarSHARPWifiSensingapp"
],
"classes": {
"SHARPPipelineApp": [
"__init__",
"initUI",
"browse_dataset_folder",
"browse_code_folder",
"get_files_in_subdir",
"visualize_selected_file",
"run_phase_sanitization",
"run_doppler_computation",
"run_create_datasets",
"run_train_model"
]
}
},
"sensingsp/ai/radarML/GANWaveforms.py": {
"functions": [
"runradarWaveformapp",
"create_dataset"
],
"classes": {
"RadarWaveformDataset": [
"__init__",
"__len__",
"__getitem__"
],
"LayersGenerator": [
"__init__",
"forward"
],
"LayersDiscriminator": [
"__init__",
"forward"
],
"GAN": [
"__init__",
"train_discriminator",
"train_generator",
"generate_fake_data"
],
"RadarWaveformApp": [
"__init__",
"initUI",
"initNet",
"initdataset",
"browse_folder",
"testinput_model",
"browse_testfile",
"loaddataset",
"def_model",
"train_model",
"test_model",
"visualize_model",
"visualize_samples",
"visualize_model_as_image",
"visualize_parameter_updates"
]
}
},
"sensingsp/radar/utils/datasets/CarryObject.py": {
"functions": [
"run"
],
"classes": {}
},
"sensingsp/radar/utils/apps.py": {
"functions": [
"process_events",
"guess_memory_usage",
"pyqtgraph3DApp",
"FMCW_Chirp_Parameters",
"patch_pattern",
"appselect",
"runfmcwchirpapp",
"runRISAnalysisapp",
"runradarArrayapp",
"runRadarVis",
"runrAntennaElementPatternapp",
"runHubLoad",
"runradarconfigapp",
"runradarPatchAntennaPatternapp"
],
"classes": {
"AntennaElementPattern": [
"__init__",
"initUI",
"on_run"
],
"RadarVisApp": [
"__init__",
"initUI",
"on_run",
"style_axes",
"pointcloud_axe",
"vs_processing",
"temp",
"on_next",
"on_next_old2",
"on_next_old"
],
"HubLoadApp": [
"__init__",
"initUI",
"simplescenario",
"chestOsc",
"init_hub",
"load_selected"
],
"RadarArrayApp": [
"__init__",
"initUI",
"on_radarsensor_changed",
"updatesuiteradarspec",
"runnextframe",
"initsimulation",
"vissimulation",
"_build_runsim_tab",
"visualize_pattern",
"_build_transmit_receive_tab",
"_on_radar_mode_change",
"_build_signal_tab",
"_build_noise_adc_tab",
"_build_angleProcessing_tab",
"_build_radar_config_tab",
"_build_simulations_tab",
"_build_run_tab",
"delall_button_fcn",
"set_button_fcn",
"processingUI_button_fcn",
"addTarget_button_fcn",
"n_pulse_mimo_btn_fcn",
"read_settings",
"read_settings0",
"write_settings",
"write_settings0",
"fmcwinfo_fcn",
"readradarspec",
"writeradarspec",
"run_add",
"browse_file",
"loadfile",
"on_config_changed",
"apply_vaAuto",
"on_mimo_changed",
"apply_settings",
"download_from_hub",
"visualize_virtual",
"load_data",
"save_data",
"run_analysis"
],
"RISAnalysisApp": [
"__init__",
"initUI",
"generate_ris_data",
"generate_ris_data2",
"generate_ris_data3",
"run_blenderpath_button",
"run_blender_button",
"run_blender_button2",
"run_analysis",
"run_analysis2",
"set_axes_equal"
],
"FMCWApp": [
"__init__",
"initUI",
"calculate_parameters",
"clear_inputs"
],
"RadarConfigApp": [
"__init__",
"add_parameter_widgets",
"create_labeled_widget",
"save_to_json",
"load_from_json",
"update_parameters_from_ui",
"update_ui_from_parameters"
],
"PatchAntennaPatternApp": [
"__init__",
"_init_ui",
"def1",
"def2",
"def3",
"add_row",
"remove_selected_rows",
"draw_segments"
]
}
},
"sensingsp/environment/scenarios.py": {
"functions": [
"make_simple_scenario",
"run_simple_chain",
"add_scenario",
"sim_scenario",
"predefine_wifi_sensing",
"processing_pulse_radar",
"predefine_pulse_radar",
"ris_analysis_app_scenario",
"ris_analysis_app_scenario2",
"predefine_movingcube_6843",
"predefine_TruckHuman_SameRG",
"predefine_TruckHuman_DiffRG",
"processing_1",
"processing_4",
"processing_3",
"processing_2",
"radar_path_d_drate_amp",
"rcxchain",
"wifi_sensing",
"raytracing_test",
"processing_HandGesture1642",
"update_pointclouds",
"predefine_Altos_Radar",
"predefine_Altos_Radar_file",
"predefine_Hand_Gesture_3Xethru_Nature_paper",
"setRCSToMaterial",
"add_blenderfileobjects",
"predefine_Hand_Gesture_1642",
"predefine_Pattern_SISO",
"process_predefine_Hand_Gesture_3Xethru_Nature_paper",
"deform_scenario_1",
"handGesture_simple",
"raytracing_rays",
"generate_chest_vibration_target",
"generate_chest_vibration_target_simple",
"raytracing_refraction_test"
],
"classes": {}
},
"sensingsp/environment/models.py": {
"functions": [
"create_car_material",
"create_wheel",
"create_body",
"create_roof",
"create_car"
],
"classes": {}
},
"sensingsp/environment/environment.py": {
"functions": [
"constantVelocity",
"colorobject",
"add_cube",
"add_plane"
],
"classes": {
"BlenderSuiteFinder": [
"find_suite_information",
"find_suite_planes",
"find_camera_planes",
"find_lidar_planes",
"find_radar_planes",
"find_tx",
"find_rx",
"find_risElement",
"find_ris_planes",
"find_probe_planes",
"find_probeSurface"
]
}
},
"sensingsp/utils/output2matlab.py": {
"functions": [
"savemat_in_tmpfolder",
"file_in_tmpfolder",
"saveMatFile",
"saveScenario"
],
"classes": {}
},
"sensingsp/utils/stochastics.py": {
"functions": [
"Complex_Noise_Buffer"
],
"classes": {}
},
"sensingsp/utils/texturemapping.py": {
"functions": [
"interpolate_3d_from_uv_bpy",
"barycentric_coordinates",
"uv_map_image_to_sphere"
],
"classes": {}
},
"sensingsp/utils/utils.py": {
"functions": [
"export_radar_positions",
"subdivide_object",
"initialize_environment",
"initialize_simulation",
"set_RayTracing_advanced_intense",
"setRadar_oneCPI_in_oneFrame",
"setRadar_multipleCPI_in_oneFrame",
"set_configurations",
"set_RayTracing_balanced",
"set_RayTracing_light",
"set_raytracing_bounce",
"set_debugSettings",
"get_debugSettings",
"tic",
"toc",
"pointCloud_RangeAzimuthElevation_THR",
"azel2uv",
"sph2cart",
"cart2sph",
"imshow",
"plot",
"plot_text",
"initEnvironment",
"delete_all_objects",
"save_Blender",
"getRadarSpecs",
"useCUDA",
"set_frame_start_end",
"increaseCurrentFrame",
"total_paths",
"force_zeroDoppler_4Simulation",
"zeroDopplerCancellation_4Simulation",
"trimUserInputs0",
"trimUserInputs",
"modifyArrayinfowithFile",
"open_Blend",
"applyDecimate",
"cleanAllDecimateModifiers",
"mesh2triangles",
"createMeshesCollection_fromTrianglesRCS0",
"scale_unit_sphere",
"vectorize_triangleList",
"showTileImages",
"renderBlenderTriangles",
"exportBlenderTriangles",
"exportBlenderFaceCenters",
"decimate_scene",
"decimate_scene_all",
"plot1D",
"plot2D",
"open_folder",
"open_temp_folder",
"readImage_tempfolder",
"channels_info",
"set_axes_equal",
"exportBlenderPolygons"
],
"classes": {
"RadarTiming": [
"__init__",
"update"
],
"RadarBuffer": [
"__init__",
"buffer_pulses",
"get_buffered_cpis",
"get_remaining_pulses"
]
}
},
"sensingsp/utils/processingfunctions.py": {
"functions": [
"processing_functions_run1",
"processing_functions_run2_old",
"processing_functions_run2",
"processing_functions_run3",
"processing_functions_RISProbe1",
"extrafunctions"
],
"classes": {}
},
"sensingsp/utils/blenderUI.py": {
"functions": [
"define_settings",
"blender_buttons_run_2"
],
"classes": {}
},
"sensingsp/utils/uiinputs.py": {
"functions": [
"QtUI_to_BlenderAddonUI",
"BlenderAddonUI_to_QtUI",
"BlenderAddonUI_to_RadarSpecifications",
"createRadarObject_from_QtUI",
"QtUI_arrays",
"setQtUI_arrays",
"set_TI_AWR1642_toQtUI",
"set_TI_IWR6843_toQtUI",
"set_TI_AWR2243_toQtUI",
"set_TI_AWR2944_toQtUI",
"set_TI_Cascade_AWR2243_toQtUI",
"set_SISO_mmWave76GHz_toQtUI",
"set_Xhetru_X4_toQtUI",
"set_Altos_toQtUI"
],
"classes": {}
},
"sensingsp/utils/predefines.py": {
"functions": [
"add_radar_string",
"add_sensors_string",
"add_radar",
"add_radar_Json",
"predefine_cube_cascade",
"predefine_movingcube_6843",
"add_camera",
"add_lidar",
"add_ris",
"add_JRC",
"add_Probe"
],
"classes": {}
},
"sensingsp/utils/research/simplest/__init__.py": {
"functions": [
"RayTracing",
"tx_rx_Location",
"RadarRawData",
"txNumber",
"rxNumber",
"PRF",
"ADCrate",
"FMCW_slew_rate",
"wavelength",
"txrxplot",
"RangeProcessing",
"DopplerProcessing",
"TDM_PhaseCompensation",
"CFAR2D",
"MIMOArrayOrder",
"DOAProcessing",
"CFAR2DAngle",
"printDetections",
"MIMORadarTechnique",
"MIMORadarTechniqueObj",
"setMIMO",
"ui_frame_processing"
],
"classes": {}
},
"sensingsp/utils/research/algorithms/ScenarioMultipath.py": {
"functions": [
"runSimpleScenario"
],
"classes": {}
},
"sensingsp/utils/research/algorithms/MLRadarHandGesture.py": {
"functions": [
"runSimpleScenario"
],
"classes": {}
},
"sensingsp/utils/research/algorithms/WifiSensing.py": {
"functions": [
"reflect_point",
"path_length_and_validity",
"image_method",
"build_cir",
"ofdm_params",
"ofdm_modulate",
"qam_mod",
"estimate_csi"
],
"classes": {
"Plane": [
"__init__"
]
}
},
"sensingsp/utils/research/algorithms/MLRadarHumanHealthMonitoring.py": {
"functions": [
"createChestMovement",
"runSimpleScenario",
"model_inference"
],
"classes": {}
},
"sensingsp/utils/research/algorithms/TDMPhaseCompensation.py": {
"functions": [
"runSimpleScenario"
],
"classes": {}
},
"sensingsp/utils/hub.py": {
"functions": [
"download_file",
"load_metadata",
"fetch_file",
"visualize_file",
"visualize_hub",
"visualize_downloaded_files",
"list_downloaded_files",
"fetch_all_files",
"fetch_random_file",
"available_files",
"download_zipfile_extract_remove",
"available_models",
"load_model_metadata",
"fetch_pretrained_model"
],
"classes": {}
},
"sensingsp/integratedSensorSuite/integratedSensorSuite.py": {
"functions": [
"define_suite",
"SensorsSignalGeneration",
"SensorsSignalGeneration_frame",
"CUDA_signalGeneration",
"Sim_CUDA_signalGeneration",
"push_radar_buffer",
"pop_radar_buffer",
"SensorsSignalProccessing",
"SensorsSignalProccessing_Angle",
"SensorsSignalProccessing_Angle_frame",
"polar_range_angle",
"SensorsSignalProccessing_Chain_RangeProfile_RangeDoppler_AngleDoppler_old",
"SensorsSignalProccessing_Chain_RangeProfile_RangeDoppler_AngleDoppler",
"SensorsSignalProccessing_Chain_DAR",
"SensorsSignalProccessing_WinvTDM",
"SensorsSignalProccessing_Chain_DAR_CoArray",
"SensorsSignalProccessing_Chain_RangeProfile_RangeDoppler_AngleDoppler_TruckHuman",
"SensorsSignalProccessing_RIS_Included",
"SensorsSignalProccessing_RIS_Included_Probe",
"SensorsSignalProccessing_Chain_RangeProfile_RangeDoppler_AngleDoppler_2D"
],
"classes": {}
},
"sensingsp/probe/utils.py": {
"functions": [
"sph2cart",
"add_probe"
],
"classes": {}
},
"sensingsp/config.py": {
"functions": [],
"classes": {
"Config": [
"__init__",
"GPU_run_available",
"get_frame_end",
"release_videofigures",
"define_videofigures",
"define_axes",
"setDopplerProcessingMethod_FFT_Winv",
"restart",
"getCurrentFrame",
"run",
"get_system_type",
"check_latex_installed",
"install_latex_in_colab",
"check_ui_available",
"create_temp_folder"
]
}
},
"sensingsp/camera/utils.py": {
"functions": [
"add_camera",
"render"
],
"classes": {}
},
"sensingsp/hardware/radar/XethruUI.py": {
"functions": [
"list_available_ports",
"runapp"
],
"classes": {
"RadarPlotCanvas": [
"__init__",
"update_plot"
],
"GeneralDevice": [],
"RadarApp": [
"__init__",
"add_device",
"update_device_table",
"send_fcn",
"connect_device",
"update_plot",
"closeEvent"
]
}
},
"sensingsp/hardware/radar/TImmWave.py": {
"functions": [
"read_config_file",
"find_magic_word",
"parse_header",
"parse_tlv",
"parse_detected_objects",
"parse_range_profile",
"parse_noise_profile"
],
"classes": {
"MMWaveDevice": [
"__init__",
"connect",
"send_command",
"_read_data_loop",
"disconnect",
"send_config_file",
"process_data"
]
}
},
"sensingsp/hardware/radar/XeThru.py": {
"functions": [
"parse_rf_data",
"parse_baseband_iq",
"set_detection_zone_command"
],
"classes": {
"XeThruDevice": [
"__init__",
"connect",
"_read_data_loop",
"disconnect",
"init",
"set_RF_mode",
"process_data"
]
}
},
"sensingsp/hardware/radar/DeviceUI.py": {
"functions": [
"list_available_ports",
"runapp"
],
"classes": {
"RadarPlotCanvas": [
"__init__",
"update_plot"
],
"GeneralDevice": [],
"RadarApp": [
"__init__",
"add_device",
"update_device_table",
"connect_device",
"update_plot",
"closeEvent"
]
}
},
"sensingsp/raytracing/__init__.py": {
"functions": [],
"classes": {}
},
"sensingsp/raytracing/raytracing.py": {
"functions": [
"Path_RayTracing",
"run",
"Path_RayTracing_frame",
"calc_Path_TX",
"calc_Path_Middle",
"calc_Path_RX",
"paths_processing",
"tx2rx",
"tx2scatter_or_ris",
"scatter_amp",
"tx_amp",
"antenna_gain",
"rx_amp",
"tx_amp_ris",
"calc_Path_TX_functional",
"calc_Path_Middle_functional",
"calc_Path_RX_functional"
],
"classes": {
"Vector3D": [
"__init__",
"distance_to",
"diff",
"__repr__"
]
}
},
"sensingsp/lidar/utils.py": {
"functions": [
"add_lidar",
"pointcloud",
"isosphere_directions"
],
"classes": {}
}
For inquiries, suggestions, or contributions, feel free to reach out:
Moein Ahmadi
Email: moein.ahmadi@uni.lu