雷达文档
Learning

3D People 浠g爜鍦板浘

IWR6843 3D people tracking 鐨勫畬鏁存暟鎹祦銆佺‖浠舵灦鏋勫拰婧愮爜瀵艰埅锛屼粠闆跺紑濮嬩篃鑳借鎳?

3D People 浠g爜鍦板浘

杩欓〉瑙e喅涓€涓棶棰橈細**鏁版嵁浠庡摢鏉ワ紝鎬庝箞娴侊紝鏈€鍚庡幓鍝?*銆?


涓€銆佸厛鐪嬬‖浠讹細IWR6843 鏈変袱棰楀鐞嗗櫒

IWR6843 鏄竴棰楀崟鑺墖姣背娉㈤浄杈?SoC銆傝姱鐗囧唴閮ㄦ湁涓ら瀹屽叏涓嶅悓鐨勫鐞嗗櫒锛岃窇鍚勮嚜鐨勪唬鐮侊紝閫氳繃鍏变韩鍐呭瓨 + DPM 娑堟伅妗嗘灦浜掗€氥€?

鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?                    IWR6843 SoC                          鈹?
鈹?                                                         鈹?
鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?  鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹?
鈹? 鈹?  MSS (R4F ARM)      鈹?  鈹?  DSS (C674x DSP)       鈹?鈹?
鈹? 鈹?                     鈹?  鈹?                        鈹?鈹?
鈹? 鈹? 绯荤粺鎺у埗銆丆LI 瑙f瀽   鈹?  鈹? 淇″彿澶勭悊涓诲姏           鈹?鈹?
鈹? 鈹? Tracker (GTRACK)    鈹?  鈹? Range FFT (via HWA)    鈹?鈹?
鈹? 鈹? UART 杈撳嚭           鈹?  鈹? Capon 娉㈡潫褰㈡垚         鈹?鈹?
鈹? 鈹?                     鈹?  鈹? CFAR 妫€娴?             鈹?鈹?
鈹? 鈹? mss_main.c          鈹?  鈹? dss_main.c             鈹?鈹?
鈹? 鈹? trackerproc_3d.c    鈹?  鈹? objectdetection.c      鈹?鈹?
鈹? 鈹? pcount3D_cli.c      鈹?  鈹? radarProcess.c         鈹?鈹?
鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?  鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹?
鈹?            鈹?                           鈹?              鈹?
鈹?            鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?              鈹?
鈹?                       鈹?DPM (鍒嗗竷寮忓鐞嗙鐞嗗櫒)           鈹?
鈹?                       鈹?鍏变韩 L3 RAM                     鈹?
鈹?                                                         鈹?
鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?  鈹?
鈹? 鈹? RF 鍓嶇 鈫?ADCBuf 鈫?HWA (纭欢鍔犻€熷櫒)             鈹?  鈹?
鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?  鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?

MSS = Master SubSystem锛岃窇 TI-RTOS (SYS/BIOS)锛岃礋璐o細鎺у埗娴併€丆LI銆乀racker銆乁ART 杈撳嚭 DSS = Digital Signal SubSystem锛岃窇 TI-RTOS锛岃礋璐o細鎵€鏈夐噸璁$畻锛團FT銆佹尝鏉熷舰鎴愩€丆FAR锛? HWA = Hardware Accelerator锛屼笓鐢ㄧ‖浠跺仛 Range FFT锛岄€熷害鏋佸揩锛岀敱 MSS 渚?DPC 椹卞姩 DPM = Data Processing Manager锛孴I SDK 鎻愪緵鐨勮法 CPU 娑堟伅妗嗘灦


浜屻€佸畬鏁存暟鎹祦锛堜竴甯х殑鐢熷懡鍛ㄦ湡锛?

  RF 澶╃嚎鎺ユ敹鍥炴尝
        鈹?
        鈻?
  ADC 閲囨牱 鈫?ADCBuf (鐗囦笂纭欢缂撳啿)
        鈹?
        鈻?
  HWA 纭欢鍔犻€熷櫒
  Range FFT  (rangeHWA DPU锛岀敱 MSS DPC 瑙﹀彂)
        鈹? 杈撳嚭: radar_cube
        鈹? shape: [numChirps 脳 numRxAnt 脳 numRangeBins]
        鈹? 瀛樻斁鍦? L3 鍏变韩 RAM
        鈻?
 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
 鈹? DSS: DPC_ObjectDetection_execute()     鈹? 鈫?objectdetection.c:518
 鈹? 璋冪敤: DPU_radarProcess_process()       鈹?
 鈹?                                        鈹?
 鈹? Step 1: 闈欐€佹潅娉㈡秷闄?(鍧囧€肩浉鍑?        鈹?
 鈹? Step 2: Capon 娉㈡潫褰㈡垚                 鈹?
 鈹?         鈫?range-azimuth 鐑姏鍥?        鈹?
 鈹? Step 3: 2D CFAR 妫€娴?                  鈹?
 鈹?         鏂逛綅瑙掓柟鍚?+ 璺濈鏂瑰悜           鈹?
 鈹?         鈫?妫€娴嬪埌鐨勫嘲鍊煎潗鏍?            鈹?
 鈹? Step 4: 澶氭櫘鍕掍及璁?                    鈹?
 鈹?         鈫?姣忎釜鐐圭殑閫熷害                 鈹?
 鈹?                                        鈹?
 鈹? 杈撳嚭: radarProcessOutput               鈹?
 鈹?   .pointCloudOut  (鐞冨潗鏍囩偣浜?         鈹?
 鈹?   .heatMapOut     (鐑姏鍥?             鈹?
 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
                鈹?
                鈹?DPM_Report_NOTIFY_DPC_RESULT
                鈹?(璺?CPU锛屼粠 DSS 鈫?MSS)
                鈻?
 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
 鈹? MSS: Pcount3DDemo_handleObjectDetResult鈹? 鈫?mss_main.c:1688
 鈹?                                        鈹?
 鈹? 1. SOC_translateAddress() 鏄犲皠 DSS 鍦板潃鈹?
 鈹? 2. 鎷疯礉鐐逛簯鍒?MSS 鏈湴                 鈹?
 鈹?    gMmwMssMCB.pointCloudFromDSP[]      鈹?
 鈹? 3. 鍘嬬缉缂栫爜 鈫?pointCloudToUart         鈹?
 鈹? 4. Semaphore_post(trackerDPUSemHandle) 鈹?
 鈹? 5. Semaphore_post(uartTxSemHandle)     鈹?
 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
        鈹?                  鈹?
        鈻?                  鈻?
 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?   鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
 鈹?Tracker 浠诲姟鈹?   鈹? UART 鍙戦€佷换鍔?       鈹?
 鈹?            鈹?   鈹?                     鈹?
 鈹?DPU_Tracker 鈹?   鈹?MmwDemo_uartTxTask() 鈹?鈫?mss_main.c:575
 鈹?Proc_process鈹?   鈹?                     鈹?
 鈹?            鈹?   鈹?灏佽 TLV 鏁版嵁鍖?     鈹?
 鈹?gtrack_step 鈹?   鈹? [Header]            鈹?
 鈹?鈫?鐩爣鍒楄〃  鈹?   鈹? [鐐逛簯 TLV]          鈹?
 鈹?鈫?鐩爣绱㈠紩  鈹?   鈹? [鐩爣鍒楄〃 TLV]      鈹?
 鈹?鈫?鍦ㄥ満鏍囧織  鈹?   鈹? [鐩爣绱㈠紩 TLV]      鈹?
 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?   鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
                               鈹?UART
                               鈻?
                        Host PC / 涓婁綅鏈?

涓夈€佸叧閿暟鎹粨鏋勯€熸煡

姣忎釜绠ご浼犻€掔殑鍒板簳鏄粈涔堢被鍨嬶紵

闃舵鏁版嵁缁撴瀯瀛楁璇存槑
ADC 鍘熷uint16_t[]鈥?IQ 浜ら敊锛?6-bit
Range FFT 鍚?radar_cube[chirp][rx][range]澶嶆暟锛屽瓨 L3
DSS 杈撳嚭鐐逛簯DPIF_PointCloudSphericalrange, azimuthAngle, elevAngle, velocity鐞冨潗鏍囷紝姣忎釜妫€娴嬬偣
鐐逛簯闄勫姞淇℃伅DPIF_PointCloudSideInfosnr淇″櫔姣?
DSS鈫扢SS 缁撴灉DPC_ObjectDetection_ExecuteResult.objOut (radarProcessOutput)DPC 灏佽
Tracker 杈撳叆GTRACK_measurementPointrange, azimuth, elevation, doppler, snr鐢辩偣浜戠洿鎺ヨ浆
Tracker 鐩爣trackerProc_Targettid, S[] (鐘舵€佸悜閲?鐩爣浣嶇疆+閫熷害
UART TLVMmwDemo_output_message_headermagicWord, numTLVs, frameNumber0x0102...0708

鍥涖€佽法 CPU 閫氫俊鏈哄埗锛圖PM锛?

杩欐槸鏈€瀹规槗娣锋穯鐨勫湴鏂广€?

DSS 瀹屾垚涓€甯у鐞?
    鈹?
    鈹?DPC_ObjectDetection_execute() 杩斿洖
    鈹?ptrResult 鎸囧悜 DSS 鍐呭瓨涓殑缁撴灉
    鈹?
    鈻?DPM 妗嗘灦鑷姩璺ㄦ牳鍙戦€氱煡
    鈹?
MSS: Pcount3DDemo_DPC_ObjectDetection_reportFxn()
    鈹?case DPM_Report_NOTIFY_DPC_RESULT:
    鈹?    Pcount3DDemo_handleObjectDetResult(ptrResult)
    鈹?
    鈻?SOC_translateAddress() 鎶?DSS 鍦板潃杞垚 MSS 鍙闂殑鍦板潃
    鈹?
    鎷疯礉鏁版嵁鍒?MSS 鏈湴 gMmwMssMCB 缁撴瀯浣?
    鈹?
    鈻?閫氱煡 DSS 缁撴灉宸叉秷璐癸紝閲婃斁鍐呭瓨
    DPM_ioctl(DPC_OBJDET_IOCTL__DYNAMIC_EXECUTE_RESULT_EXPORTED)

鍏抽敭鐞嗚В锛欴SS 鍜?MSS 閮藉湪鍚屼竴涓墿鐞嗗湴鍧€绌洪棿鐨勪笉鍚屽垎鍖猴紝浣?CPU 鍚勮嚜鐪嬪埌鐨勮櫄鎷熷湴鍧€涓嶅悓銆俙SOC_translateAddress()` 璐熻矗缈昏瘧銆?


浜斻€乀racker锛圙TRACK锛夊湪鍝噷璺戯紵

Tracker 璺戝湪 MSS锛圧4F锛変笂锛屼笉鍦?DSS銆?

MSS 浠诲姟璋冨害:
  MmwDemo_trackerDPUTask()          鈫?mss_main.c:1874
      绛?Semaphore(trackerDPUSemHandle)
      DPU_TrackerProc_process()     鈫?trackerproc_3d.c:521
          鏍煎紡杞崲: DPIF_PointCloudSpherical 鈫?GTRACK_measurementPoint
          gtrack_step()             鈫?TI GTRACK 搴擄紙闂簮锛?
      杈撳嚭鍐欏叆 gMmwMssMCB.trackerOutput

*涓轰粈涔堝湪 MSS 鑰屼笉鏄?DSS锛? DSS 鐨?C674x 鎿呴暱鍚戦噺杩愮畻锛團FT銆佺煩闃碉級銆俆racker 鏄姸鎬佹満 + Kalman 婊ゆ尝锛岄€昏緫鎺у埗澶氾紝鏇撮€傚悎閫氱敤 ARM銆?


鍏€丱penRadar Python 瀹屾暣瀵圭収

Python demo 鏄浉鍚岀畻娉曠殑**绂荤嚎鍙傝€冨疄鐜?*锛屾暟鎹笉鏉ヨ嚜纭欢鑰屾潵鑷綍鍒剁殑 .bin 鏂囦欢銆?

# people_tracking.py 鍚勬楠?鈫?鍥轰欢瀵圭収

# [1] 璇诲彇 ADC 鏁版嵁 + reshape
adc_data = np.fromfile('./data/circle.bin', dtype=np.uint16)
all_data = DCA1000.organize(...)          # 鈫?ADCBuf 纭欢缂撳啿

# [2] Range FFT
radar_cube = dsp.range_processing(frame) # 鈫?rangeHWA DPU (HWA 纭欢)

# [3] 闈欐€佹潅娉㈡秷闄?
radar_cube = radar_cube - radar_cube.mean(0)  # 鈫?DSS radarProcess 鍐呴儴

# [4] Capon 娉㈡潫褰㈡垚 鈫?鐑姏鍥?
range_azimuth[:,i], beamWeights[:,i] = dsp.aoa_capon(...)  # 鈫?RADARDEMO_aoaEst2DCaponBF

# [5] 2D CFAR 妫€娴?
first_pass  = dsp.ca_(heatmap_log, axis=0)  # 鏂逛綅瑙掓柟鍚?
second_pass = dsp.ca_(heatmap_log.T, axis=0) # 璺濈鏂瑰悜
peaks = first_pass & second_pass            # 鈫?RADARDEMO_detectionCFAR

# [6] 澶氭櫘鍕掍及璁?
dopplerEst = np.fft.fft(dopplerFFTInput)    # 鈫?DSS DopplerEst 妯″潡

# [7] EKF Tracker
tracker.update_point_cloud(ranges, azimuths, dopplers, snrs)
targetDescr, tNum = tracker.step()          # 鈫?gtrack_step() + trackerproc_3d.c

# [8] 鍙鍖?
gtrack_visualize.update_frame(...)          # 鈫?UART 鈫?涓婁綅鏈?

娉ㄦ剰锛歅ython 涓病鏈?MSS/DSS 鐨勫垎鐣岋紝鎵€鏈変唬鐮佸湪涓€涓繘绋嬮噷椤哄簭鎵ц銆傚浐浠朵腑杩欎釜鍒嗙晫鏄湡瀹炵殑纭欢杈圭晫銆?


涓冦€佹帹鑽愰槄璇昏矾寰勶紙鎸夐毦搴﹂€掑锛?

绗?1 姝ワ細鍏堣窇 Python

鍏堟妸 people_tracking.py 璺戦€氾紝鐞嗚В绠楁硶娴佺▼锛屼笉鐢ㄧ湅浠讳綍 C 浠g爜銆?

绗?2 姝ワ細鐪?DSS 妫€娴嬮摼

璇?objectdetection.c锛岄噸鐐圭湅 DPC_ObjectDetection_execute()锛岀悊瑙?DSP 渚у仛浜嗕粈涔堛€?

绗?3 姝ワ細鐪嬭法鏍告暟鎹祦

璇?mss_main.c 涓殑 handleObjectDetResult()锛岀悊瑙?DPM 濡備綍鎶婄粨鏋滀粠 DSS 浼犲埌 MSS銆?

绗?4 姝ワ細鐪?Tracker

璇?trackerproc_3d.c 鐨?DPU_TrackerProc_process()锛岀悊瑙g偣浜戝浣曞彉鎴愮洰鏍囧垪琛ㄣ€?


鍏€佸叧閿叆鍙f枃浠?

鏂囦欢澶勭悊鍣?鑱岃矗
mss_main.cMSS R4F绯荤粺涓绘帶銆佷换鍔¤皟搴︺€佺粨鏋滄帴鏀躲€乁ART 杈撳嚭
dss_main.cDSS C674xDSP 渚т富鎺с€丏PM 浠诲姟
objectdetection.cDSS C674x妫€娴嬮摼 DPC锛氳皟搴︿俊鍙峰鐞?
radarProcess.cDSS C674xCapon 娉㈡潫褰㈡垚 + CFAR 鏍稿績
trackerproc_3d.cMSS R4FTracker DPU 灏佽锛岃皟鐢?GTRACK
people_tracking.py鈥?Python 绔埌绔弬鑰冨疄鐜?
ekf.py鈥?Python EKF tracker

涔濄€佸父瑙侀棶棰橀€熺瓟

Q: 鐐逛簯鍦ㄥ摢閲屽舰鎴愶紵 A: DSS 鐨?radarProcess.c 鍐呴儴锛孋apon 娉㈡潫褰㈡垚 + CFAR 涔嬪悗杈撳嚭鐞冨潗鏍囩偣浜戙€傚浐浠跺嚱鏁版槸 DPU_radarProcess_process()锛孭ython 瀵瑰簲 dsp.aoa_capon() + dsp.ca_() 缁勫悎銆?

Q: MSS 鍜?DSS 鎬庝箞浼犳暟鎹紵 A: 閫氳繃 DPM 妗嗘灦 + 鍏变韩 L3 RAM銆侱SS 澶勭悊瀹屾妸缁撴灉鎸囬拡鍐欏叆 DPM buffer锛孌PM 鍙?NOTIFY_DPC_RESULT 娑堟伅缁?MSS锛孧SS 鐢?SOC_translateAddress() 鎶?DSS 鎸囬拡杞垚 MSS 鍙鍦板潃鍚庢嫹璐濇暟鎹€?

Q: Tracker 鐢ㄧ殑鏄粈涔堢畻娉曪紵 A: TI GTRACK锛屾湰璐ㄦ槸 Group Tracking锛屽熀浜庢墿灞曞崱灏旀浖婊ゆ尝锛圗KF锛夈€傛牳蹇冨疄鐜板湪 TI SDK 鐨?gtrack 搴撲腑锛堥棴婧愪簩杩涘埗锛夈€侾ython 鐨?ekf.py 鏄紑婧愮殑姒傚康瀵圭収銆?

Q: UART 杈撳嚭鏍煎紡鏄粈涔堬紵 A: TLV锛圱ype-Length-Value锛夋牸寮忥紝榄旀湳瀛?0x0102 0x0304 0x0506 0x0708 寮€澶淬€傛瘡甯у寘鍚細鐐逛簯 TLV + 鐩爣鍒楄〃 TLV + 鐩爣绱㈠紩 TLV銆?


鍑芥暟绾х簿纭储寮曡锛歔3D People 绮剧‘鐗堝嚱鏁版祦](/docs/learn/3d-people-function-flow)

On this page