▼Cgr::block | |
▼Cgr::radar::estimator_cw | This block estimates the velocity from given peaks of a CW spectrum. The estimator looks for a f32vector tagged with a 'frequency' identifier (symbol) and calculates the velocity with the doppler formula. The identifier (symbol) of the output data is 'velocity'. Needed identifier (symbols) of the input are 'frequency' |
Cgr::radar::estimator_cw_impl | |
▼Cgr::radar::estimator_fmcw | This block estimates range and veloicty from peaks of a FMCW spectrum. Input messages are data with the identifier 'frequency' of the up-chirp, down-chirp and CW part. If data is available on all three message ports the estimation starts. The velocity is estimated with the frequency information of the CW block and the range is estimated with the up and down chirp. If multiple frequencies are given, the velocity is estimated first and associated with the most likely range from the up- and down-chirp. The output identifiers are 'range' and 'velocity' |
Cgr::radar::estimator_fmcw_impl | |
▼Cgr::radar::estimator_fsk | This block estimates the range with peaks given from a FSK spectrum. Needed identifiers (symbols) are 'frequency' and 'phase'. The velocity is calculated with the 'frequency' information and the doppler formula. The phase of the doppler peaks are used to estimate the range. Output identifier are 'range' and 'velocity'. If push_power is true the information about the power of the peaks is pushed through. This can be used for estimating the RCS of an object |
Cgr::radar::estimator_fsk_impl | |
▼Cgr::radar::estimator_ofdm | This block evaluates the peaks given from a OFDM matrix. Input are the bins of the peaks with the identifiers 'axis_x' and 'axis_y'. The parameters of the block axis_x and axis_y are vectors which define the mapping of the axis. If two values are given it is assumed a linear progression in between. If four values are given the middle values are set on half of the axis and it is interpolated linear in between. len_x and len_y gives the length of the axis in number of bins. symbol_x and symbol_y defines the identifier (symbols) for the output data. merge_consecutive toggles merging consecutive peaks. Each peak is compared with peaks in a range of one bin. If there is a peak with a higher power the actual bin is not used for evaluations. If merge_consecutive is true data with identifier 'power' is needed |
Cgr::radar::estimator_ofdm_impl | |
▼Cgr::radar::estimator_rcs | Basic RCS block for estimating the RCS of a single target. Some hardware specs need to be known for calculating RCS values, see parameters for details. The radar equation is used to calculate the RCS: RCS = Pr*(4pi)^3*R^4/(Pt*Gt*Gr*lamda^2). The Rx power (Pr) and the distance (R) are being estimated, while the other parameters are given in the flowgraph. It is possible to average a number of samples by setting the num_mean value > 1. The RCS will be 0 until enough samples are collected to calculate the mean value (be patient). The Tx power (Pt) needs to be calibrated with external hardware. I recommend to calibrate for the wanted power and not to change the parameters in the flowgraph on the Tx side after that. The RCS block needs the Rx power, to estimate the RCS. For that, the input power of the block needs to be determined analytically and altered via the corr_factor and exponent values, to fit the following equation: Pr = P_input ^ (exponent) * corr_factor / Pt. In addition, the FFTs need to be normalized for correct power calculation |
Cgr::radar::estimator_rcs_impl | |
▼Cgr::radar::msg_gate | This block blocks messages whose data is not in range of val_min to val_max. All parameters are given as vectors. Each index represents a dataset with given identifier (symbol) which should be tested on valid data in given range. All other data is pushed through |
Cgr::radar::msg_gate_impl | |
▼Cgr::radar::msg_manipulator | This block manipulates data in a msg with given identifier (symbol). All data are given as vectors and each index represents a dataset with identifier which should be processed. All other data is pushed through. The addition is performed before the multiplication |
Cgr::radar::msg_manipulator_impl | |
▼Cgr::radar::print_results | This block prints data of messages filled with data of the structure [ [[symbol_0],[data_0]], [[symbol_1],[data_1]], ...] on the command line. Only data of the datatypes f32vector and long, and rx_time tuples are displayed. The output can also be stored in a text file |
Cgr::radar::print_results_impl | |
▼Cgr::radar::qtgui_scatter_plot | This block displays a scatter plot of two data sets. The identifiers (symbols) are given with label_x and label_y. The display range is given with axis_x and axis_y. Points that are not in range are simply not displayed (there are no errors or warnings). label gives an additional label to differ multiple scatter plots on the screen by the titles. The update interval is given in milliseconds |
Cgr::radar::qtgui_scatter_plot_impl | |
▼Cgr::radar::qtgui_time_plot | This block displays a plot of a value with a given interval in milliseconds. label_y represents the identifier (symbol) of the data. The y axis is scaled with axis_y. range_time gives the shown range of the x axis in seconds. label is an additional label for the title |
Cgr::radar::qtgui_time_plot_impl | |
▼Cgr::radar::tracking_singletarget | This block tracks a singletarget detection with a particle or kalman filter. As input values with identifiers 'range' and 'velocity' are needed and should hold a f32vector with only one element. All input variables tagged with std gives the standard deviation of the parameter. The threshold_track is a value which decides with the likelihood of the data if the new data is accepted as a track. A good starting value is threshold_track = 0.001. threshold_lost is the number of false tracks unitel the track is lost and the tracker begins with a new one. The string filter decides which tracking kernel should be used. 'kalman' or 'particle' are valid. If 'particle' is chosen num_particle gives the number of particles for the particle filter. If 'kalman' is chosen there is no effect on the tracker |
Cgr::radar::tracking_singletarget_impl | |
▼Cgr::radar::trigger_command | This block executes a command with the std::system() command if a value from a f32vector with a given identifier (symbol) is in a given range. Each index of a vector refers to a identifier. The execution of a command can be blocked for block_time milliseconds after the last execution |
Cgr::radar::trigger_command_impl | |
▼CQWidget | |
Cgr::radar::scatter_plot | |
Cgr::radar::spectrogram_plot | |
Cgr::radar::time_plot | |
▼Cgr::sync_block | |
▼Cgr::radar::signal_generator_cw_c | This block generates a signal for CW radar in baseband. The waveform consists of one (or sometimes multiple) constant frequency |
Cgr::radar::signal_generator_cw_c_impl | |
▼Cgr::radar::signal_generator_fmcw_c | |
Cgr::radar::signal_generator_fmcw_c_impl | |
▼Cgr::radar::signal_generator_fsk_c | This block generates a signal for FSK radar in baseband. The waveform consists of a signal with an alternating frequency. The packet length for subsequent tagged streams is calculated with two times the samples per single frequency multiplied by the blocks per tag |
Cgr::radar::signal_generator_fsk_c_impl | |
▼Cgr::radar::signal_generator_sync_pulse_c | This block generates a signal for the synchronization of the USRP Echotimer in baseband. The signal is pulsed with a constant amplitude with various pulse length and wait samples in between. It is structured by alternating wait parts and burst parts and starting with the first wait part. The pulses are full real signals |
Cgr::radar::signal_generator_sync_pulse_c_impl | |
▼Cgr::tagged_stream_block | |
▼Cgr::radar::crop_matrix_vcvc | This matrix crops a data matrix. A tagged stream combined with vectors as items represent a matrix. crop_x and crop_y gives the ranges which shall be pushed through. Rest of the matrix is lost |
Cgr::radar::crop_matrix_vcvc_impl | |
▼Cgr::radar::estimator_sync_pulse_c | This block can be used to estimate the shift of a signal on input 1 in relation to another on input 2. For example the constant number of delay samples due to hardware effect from a signal source can be estimated. The calculation of the shift is done by a cross correlation of the input signals. The number of correlations in samples is given with num_xcorr. The output message is the number of delay samples with the identifier (symbol) 'sync_pulse'. This can be displayed with the 'Print Results' block |
Cgr::radar::estimator_sync_pulse_c_impl | |
▼Cgr::radar::find_max_peak_c | This block estimates a single peak of a given FFT spectrum as tagged stream. Output is a message with the information of frequency, phase and power of the peak as a f32vector with a single item. All data is tagged with the identifiers (symbols) 'frequency', 'phase' and 'power'. The peak is estimated on the whole spectrum or on the range max_freq if cut_max_freq is true. Furthermore a threshold of the spectrum amplitude can be given with threshold. The DC peak can be cut out with the protected samples samp_protect. This value do not evaluate samp_protect samples around the DC peak. If no suitable peak is found the block returns empty vectors with the identifiers |
Cgr::radar::find_max_peak_c_impl | |
▼Cgr::radar::ofdm_cyclic_prefix_remover_cvc | This block removes the cyclic prefix of a OFDM signal by cut away the cyclic prefix data. cp_len gives the length of the cyclic prefix. fft_len represents the length of the data before the cyclic prefix |
Cgr::radar::ofdm_cyclic_prefix_remover_cvc_impl | |
▼Cgr::radar::ofdm_divide_vcvc | This block performs a complex complex division with in0/in1. If vlen_out > vlen_in the additional space is filled with zeros. This can be used for zeropadding. discarded_carriers is a vector of the carriers which should be not used and set zero as division result. num_sync_words gives the number of sync words on which the discarded_carriers rule is not applied |
Cgr::radar::ofdm_divide_vcvc_impl | |
▼Cgr::radar::os_cfar_2d_vc | This block estimates peaks of a given matrix. A matrix can be represented as a combination of vectors and tagged streams. Input has to be a matrix with linear scaled values (NOT logarithmic scaled!). Used algorithm is a 2D OS-CFAR algorithm. The algorithm uses around the cell under test (CUT) on each side samp_compare samples to estimate the noise floor. samp_protect is a protected are around the CUT which is not used for acquiring compare samples. Index 0 of a input vector refers to x axis properties and index 1 refers to y axis properties. The relative threshold is defined by the bin of the vector within the sorted samp_compare samples. A standard value is rel_threshold = 0.78. The value of this bin is multiplied by mult_threshold and compared with the CUT. If the magnitude square of the CUT is greater than the threshold the matrix item is accepted. Used identifiers (symbols) for data are 'axis_x', 'axis_y' and 'power' |
Cgr::radar::os_cfar_2d_vc_impl | |
▼Cgr::radar::os_cfar_c | This block estimates peaks of a given FFT spectrum as tagged stream. Multi peak detection is implemented with the OS-CFAR algorithm. The algorithm uses around the cell under test (CUT) on each side samp_compare samples to estimate the noise floor. This relative threshold is defined by the bin of the vector within the sorted samp_compare samples. A standard value is rel_threshold = 0.78. The value of this bin is multiplied by mult_threshold and compared with the CUT. samp_protect samples are a protected are which is not used for acquiring compare samples. If consecutive bins are detected as valid peaks it is possible to merge these detections with merge_consecutive = true. Output data are f32vectors with the information of frequency, power and phase. The identifiers (symbols) are 'frequency', 'power' and 'phase' |
Cgr::radar::os_cfar_c_impl | |
▼Cgr::radar::qtgui_spectrogram_plot | This block displays a spectrogram plot of a tagged stream with vectors. Tagged streams combined with vectors represent a matrix. The value of the matrix elements are displayed within a color plot. The colorbar can be scaled automatically or with a manual scale with axis_z. The axis of x and y are set with axis_x and axis_y. The update rate interval is given in milliseconds |
Cgr::radar::qtgui_spectrogram_plot_impl | |
▼Cgr::radar::split_cc | This block splits a tagged stream into segments. As packet_parts you give the structure of the packet, e.g. (10, 20, 5). With the packet number you can choose which packet shall be pushed to output. Counting begins on zero. E.g. packet_num=1 returns 20 items |
Cgr::radar::split_cc_impl | |
▼Cgr::radar::split_fsk_cc | This block splits a FSK signal consisting of two separate signals. samp_per_freq items are taken and pushed alternating to the outputs. Discarded samples are thrown away at the beginning of samp_per_freq samples and only samp_per_freq-samp_discard are pushed to output |
Cgr::radar::split_fsk_cc_impl | |
▼Cgr::radar::static_target_simulator_cc | |
Cgr::radar::static_target_simulator_cc_impl | |
▼Cgr::radar::transpose_matrix_vcvc | This block transposes a matrix. A tagged stream combined with vectors as items represent a matrix. vlen_in is the vector length of the input data and vlen_out the vector length of the output data. vlen_out is equal to the items (vectors) per tagged stream on the input stream |
Cgr::radar::transpose_matrix_vcvc_impl | |
▼Cgr::radar::ts_fft_cc | This blocks takes a tagged stream and returns a FFT of the length of the input stream. The output is NOT normalized on the number of input items and no window is used |
Cgr::radar::ts_fft_cc_impl | |
▼Cgr::radar::usrp_echotimer_cc | <+description of block+> |
Cgr::radar::usrp_echotimer_cc_impl | |