% % Introduction % This verification script takes radarCube mat file as input. It % randomly selects one chirp data to search for the peak. The peak % information is printed for user for verify the object. % % % Requirement for the test % The captured bin files should be generated from mmwave studio with a % corner reflector at a certain range. Run post_processing script to parse % the JSON file and bin file(s) to generate radarCube mat file for this % test. % % Syntax: % verify_data('radarCubeMatFileName') % function verify_data(radarCubeMatFile) % constant parameters c = physconst('LightSpeed');% Speed of light in air (m/s) fc = 77e9;% Center frequency (Hz) lambda = c/fc; pii=pi; try % Load radar cube data load(radarCubeMatFile); catch error("Error reading input *.mat file"); end % Get radar cube params radarCubeParams = radarCube.dim; rfParams = radarCube.rfParams; % Radom select frame/chirp/rxChan frameIdx = ceil(radarCubeParams.numFrames * (rand)); chirpIdx = ceil(radarCubeParams.numChirps * (rand)); rxChan = ceil(radarCubeParams.numRxChan * (rand)); fprintf('radarCube data verification after processing the captured bin file...\n'); fprintf('-------------------------------------------------------------------\n'); fprintf('Input radar cube File contains %d frames, %d chirps per frame, %d Rx Channel of data.\n', ... radarCubeParams.numFrames, ... radarCubeParams.numChirps, ... radarCubeParams.numRxChan); % Load radarCube data and estimate velocity for frameIdx=1:8 for chirpIdx=1:384 for rxChan = 1:4 frameDataa = radarCube.data{frameIdx}; win_dop =reshape(frameDataa(chirpIdx,rxChan,:),256,1).* 1;%hann(Nd); DopData(chirpIdx,rxChan,:)=fftshift(fft(win_dop,256)); % frameData = radarCube.data{frameIdx}; dopplerData(:) = DopData(chirpIdx,rxChan,:); dopplerProfile = abs(dopplerData); [peakVall, peakIdxx] = max(dopplerProfile); V = (lambda*peakIdxx*rfParams.dopplerResolutionMps)/(4*pii*0.0001); fprintf('Result: \n \tpeak doppler index = %d\n \tpeakVal = %f\n \tpeak doppler = %f(Mps)\n vitesse= %f(Mps)', ... peakIdxx, round(peakVall,2), ... peakIdxx*rfParams.dopplerResolutionMps, V); end end figure(1); plot(abs(dopplerData)); end % Load radarCube data and estimate range for frameIdx=1:8 for chirpIdx=1:384 for rxChan = 1:4 frameData = radarCube.data{frameIdx}; rangeData(:) = frameData(chirpIdx,rxChan,:); rangeProfile = abs(rangeData); [peakVal, peakIdx] = max(rangeProfile); fprintf('\tframe= %d, \tchirp=%d, \trxChan=%d\n',... frameIdx, chirpIdx, rxChan); fprintf('Result: \n \tpeak range index = %d\n \tpeakVal = %f\n \tpeak range = %f(meter)\n', ... peakIdx, round(peakVal,2), ... peakIdx*rfParams.rangeResolutionsInMeters); end end % Debug Plot figure(2); plot(abs(rangeData)); end end