This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] IWR6843AOPEVM:能否将生命体征和高架 3D 人员跟踪与跌倒检测结合使用

Guru**** 2812305 points

Other Parts Discussed in Thread: IWR6843AOP, MMWAVEICBOOST

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1621916/iwr6843aopevm-failure-in-combining-vital-signs-and-overhead-3d-people-tracking-with-fall-detection

器件型号: IWR6843AOPEVM
主题中讨论的其他器件: IWR6843AOPMMWAVEICBOOST

尊敬的 TI 团队:

我正在尝试构建一个 单一固件  亮起  IWR6843AOP  可实现:

  1. 高架 3D 人员跟踪(多达 5 条轨道)
  2. 跌倒检测
  3. 生命体征(仅限单人输出)

我们的问题是、这种组合是否得到正式支持、如果是、正确的整合方法是什么。

平台/设置

  • 板:IWR6843AOP
  • CLI/数据端口:COM7/COM8
  • CLI 波特:115200
  • 工程中的 SDK/工具链:基于毫米波 SDK 3.6 LTS 的构建环境
  • 我将与雷达工具箱中的 TI 预编译开销演示二进制文件进行比较

工作原理

借助 TI 预编译的二进制文件+ TI 默认开销 cfg、一切都能立即正常运行:

  • 二进制文件: overhead_3d_people_track_demo_default.bin (TI 预编译)
  • 配置: pt_6843_3d_aop_overhead_3m_radial.cfg
  • 具有相同的硬件、相同的 COM 端口

失败(我们的合并/自定义构建)

我们的自定义 cfg 将完全加载、但 sensorStart 失败。

出现故障时的密钥 CLI 日志:

sensorStart

调试:CLISensorStart 调用 configSensor

调试:configSensor dataPathConfig 开始

错误:MSS DPM 任务在 ioctl cmd=101 之前未启动

错误:CLISensorStart configSensor Failed(–1)

之前、我们还出现了完整的 CLI 静默问题(resetDevice/sensorStop 没有响应)、但现在 CLI 响应迅速、并且执行了配置命令;故障主要发生在 sensorStart/DPM 路径上。

我们已经尝试过的

  • 最多可跟踪 5 个生命体征、仅供单人使用
  • 内存/布局清理 (MSS/DSS)、包括将 DSS 系统堆 从 L3 别名风险中移出
  • 根据 TI 参考恢复了 DSS 启动关键型堆/暂存布局
  • 改进了主机 CLI 握手逻辑和时序
  • 更改了 MSS INIT 排序并在代码中添加了 DPM 就绪等待/门控

尽管如此、sensorStart 在自定义编译上仍然失败。 传感器也会成功启动几次。 我可以看到正确的 LED 亮起、但随后我不会在 UART 数据端口(在本例中为 COM8)上收到任何消息。  

问题

  1. IWR6843AOP 在一个图像中是否支持此功能组合(高架 3D 跟踪+跌倒+生命体征)? 甚至可以实现吗?  
  2. 如果是、  为避免此 cmd=101  故障、建议的 MSS/DSS/DPM 初始化顺序是什么?
  3. 是否有已结合这些功能或文档化合并路径的 TI 参考工程?
  4. 是否存在使此集成无效的已知限制(内存,任务顺序,DPM 同步状态或不受支持的命令序列)?

如果有用、我可以共享完整的 MSS/DSS 控制台日志、自定义二进制文件、映射文件和自定义配置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    您应该看到处理链执行所有不同任务所需的时间。 这可能是由于竞态条件失败、在下一帧从射频前端进入之前、处理无法完成

    此致、

    Pedrorm

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Pedrorm:  

    感谢您的答复。

    因此、这意味着这种方法是可能的、并且实现存在问题。  

    我将尝试调试处理链、并在此处进行相应更新。  

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更新:  

    我尝试更详细地了解调试过程。 发现奇怪的行为,我不能缠绕我的头。

    以下是我尝试过的调试日志。 任何帮助让我理解我的错误将是伟大的。 或者有任何关于如何解决这个问题的建议、我可以通过任何其他方式让高空人员跟踪、跌倒检测和生命体征运行?


     

    == initial CLI sync ==
    mmwDemo:/>
    
    == firmware id ==
    fwid
    FWID: DSSSAFE3-20260305-1430
    Build: Mar  5 2026 15:48:58
    Done
    mmwDemo:/>
    
    == resetDevice ==
    (skipped; pass --reset-device or set MMWAVE_DO_RESET_DEVICE=1 to force reset)
    
    == sensorStop (safe) ==
    sensorStop
    Ignored: Sensor is already stopped
    Done
    mmwDemo:/>
    
    == Sending CFG ==
    sensorStop
    Ignored: Sensor is already stopped
    Done
    mmwDemo:/>
    flushCfg
    Done
    mmwDemo:/>
    dfeDataOutputMode 1
    Done
    mmwDemo:/>
    channelCfg 15 7 0
    Done
    mmwDemo:/>
    adcCfg 2 1
    Done
    mmwDemo:/>
    adcbufCfg -1 0 1 1 1
    Done
    mmwDemo:/>
    lowPower 0 0
    Done
    mmwDemo:/>
    profileCfg 0 61.2 60.00 17.00 50 328965 0 55.27 1 64 2000.00 2 1 36
    Done
    mmwDemo:/>
    chirpCfg 0 0 0 0 0 0 0 1
    Done
    mmwDemo:/>
    chirpCfg 1 1 0 0 0 0 0 2
    Done
    mmwDemo:/>
    chirpCfg 2 2 0 0 0 0 0 4
    Done
    mmwDemo:/>
    frameCfg 0 2 160 0 120.00 1 0
    Done
    mmwDemo:/>
    dynamicRACfarCfg -1 10 1 1 1 8 8 6 4 4.00 6.00 0.50 1 1
    Done
    mmwDemo:/>
    staticRACfarCfg -1 4 4 2 2 8 16 4 6 6.00 13.00 0.50 0 0
    Done
    mmwDemo:/>
    dynamicRangeAngleCfg -1 7.000 0.0010 2 0
    Done
    mmwDemo:/>
    dynamic2DAngleCfg -1 5 1 1 1.00 15.00 2
    Done
    mmwDemo:/>
    staticRangeAngleCfg -1 0 1 1
    Done
    mmwDemo:/>
    antGeometry0 -1 -1 0 0 -3 -3 -2 -2 -1 -1 0 0
    Done
    mmwDemo:/>
    antGeometry1 -1 0 -1 0 -3 -2 -3 -2 -3 -2 -3 -2
    Done
    mmwDemo:/>
    antPhaseRot 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1
    Done
    mmwDemo:/>
    fovCfg -1 64.0 64.0
    Done
    mmwDemo:/>
    compRangeBiasAndRxChanPhase 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
    Done
    mmwDemo:/>
    staticBoundaryBox -3 3 -3 3 -0.5 3
    Done
    mmwDemo:/>
    boundaryBox -4 4 -4 4 -0.5 3
    Done
    mmwDemo:/>
    sensorPosition 2.9 0 90
    Done
    mmwDemo:/>
    gatingParam 3 2 2 3 4
    Done
    mmwDemo:/>
    stateParam 3 3 6 20 3 1000
    Done
    mmwDemo:/>
    allocationParam 20 20 0.05 20 1.5 20
    Done
    mmwDemo:/>
    maxAcceleration 1 0.1 1
    Done
    mmwDemo:/>
    trackingCfg 1 4 400 5 37 33 120 1
    Done
    mmwDemo:/>
    presenceBoundaryBox -4 4 -4 4 0.5 2.5
    Done
    mmwDemo:/>
    vitalsign 15 300
    Done
    mmwDemo:/>
    VSRangeIdxCfg 0 21
    Done
    mmwDemo:/>
    sensorStart
    Debug: CLISensorStart entered (argc=1)
    Debug: CLISensorStart calling openSensor
    Debug: Init Calibration Status = 0xffe
    Debug: CLISensorStart openSensor complete
    Debug: CLISensorStart calling configSensor
    Debug: configSensor entry
    Debug: configSensor bpmConfig done
    Debug: configSensor MMWave_config begin
    Debug: configSensor MMWave_config done
    Debug: configSensor dataPathConfig begin
    Debug: DPM ioctl cmd=101 begin
    Debug: DPM ioctl cmd=101 calling DPM_ioctl
    Debug: DPM ioctl cmd=101 DPM_ioctl returned 0
    Debug: DPM ioctl cmd=101 waiting report sem
    Debug: DPM ioctl cmd=101 report sem received
    Debug: DPM ioctl cmd=101 done
    Debug: DPM ioctl cmd=201 begin
    Debug: DPM ioctl cmd=201 calling DPM_ioctl
    Debug: DPM ioctl cmd=201 DPM_ioctl returned 0
    Debug: DPM ioctl cmd=201 waiting report sem
    Debug: DPM ioctl cmd=201 report sem received
    Debug: DPM ioctl cmd=201 done
    Debug: DPM ioctl cmd=200 begin
    Debug: DPM ioctl cmd=200 calling DPM_ioctl
    Debug: rangeHWA ioctl static pre-start cfg subFrame=0
    Debug: rangeHWA preStart radarCube bytes=491520 (rBins=64 dChirps=160 vAnt=12 fine=0)
    Debug: rangeHWA preStart calling rangeConfig
    Debug: rangeHWA rangeConfig calling DPU_RangeProcHWA_config
    Debug: rangeHWA rangeConfig DPU_RangeProcHWA_config ret=0
    Debug: rangeHWA preStart rangeConfig ret=0
    Debug: DPM ioctl cmd=200 DPM_ioctl returned 0
    Debug: DPM ioctl cmd=200 waiting report sem
    Debug: DPM ioctl cmd=200 report sem received
    Debug: DPM ioctl cmd=200 done
    Debug: DPM ioctl cmd=100 begin
    Debug: DPM ioctl cmd=100 calling DPM_ioctl
    Debug: DPM ioctl cmd=100 DPM_ioctl returned 0
    Debug: DPM ioctl cmd=100 waiting report sem
    Debug: DPM ioctl cmd=100 report sem received
    Debug: DPM ioctl cmd=100 done
    Debug: configSensor dataPathConfig done
    Debug: configSensor trackerConfig begin
    Debug: trackerConfig cfg paramSet=4 maxPts=400 maxTracks=5 deltaT(ms)=120.00
    Debug: DPM ioctl cmd=203 begin
    Debug: DPM ioctl cmd=203 calling DPM_ioctl
    Debug: rangeHWA ioctl tracker cfg begin (maxPts=400 maxTracks=5)
    Debug: rangeHWA ioctl tracker cfg heap free before=75512
    Debug: trackerProc_config entry set=4 maxPts=400 maxTracks=5 heapFree=75512
    Debug: trackerProc_config pointCloud bytes=8000 heapFree=67512
    Debug: trackerProc_config targetList bytes=740 x2 heapFree=65984
    Debug: trackerProc_config targetIndex bytes=400 x2 heapFree=65184
    Debug: trackerProc_config height buffers ready heapFree=64680
    Debug: trackerProc_config calling gtrack_create heapFree=64680
    Debug: trackerProc_config gtrack_create ret=0x800c358 err=0 heapFree=53448
    Debug: rangeHWA ioctl tracker cfg ret=0
    Debug: rangeHWA ioctl tracker cfg heap free after=53448
    Debug: DPM ioctl cmd=203 DPM_ioctl returned 0
    Debug: DPM ioctl cmd=203 waiting report sem
    Debug: DPM ioctl cmd=203 report sem received
    Debug: DPM ioctl cmd=203 done
    Debug: configSensor trackerConfig done
    Debug: configSensor exit (0)
    Debug: CLISensorStart configSensor complete
    Debug: CLISensorStart calling startSensor
    Debug: sensorStart -> DPM_start
    Debug: sensorStart -> assigning static point cloud buffers (12000, 3000)
    Debug: sensorStart -> calling DPM_start
    Debug: rangeHWA DPC start entry
    Debug: rangeHWA DPC start triggering range proc
    Debug: rangeHWA DPC start trigger ret=0
    Debug: rangeHWA DPC start exit
    Debug: sensorStart -> DPM_start returned 0
    Debug: sensorStart -> waiting DPM start report
    Debug: sensorStart -> DPM_start acked (taskTick=27 syncTick=23 dpcTick=88521)
    Debug: sensorStart -> MMWave_start
    Debug: sensorStart complete
    Debug: CLISensorStart startSensor complete
    Done
    mmwDemo:/>Debug: DPC result #1
    Debug DSP: frame#1 pts=2 dyn=2 stat=0 rawSNR=[37..48] rawNoise=[1477..2497]
      raw[0] snr=48 noise=1477 vel=0.028
      raw[1] snr=37 noise=2497 vel=0.028
    Debug: gtrack pts=2 snrMin=4.0 snrMax=6.0
      pt[0] r=1.87 az=0.01 el=-0.12 dop=0.03 snr=6.0
      pt[1] r=1.95 az=-0.08 el=-0.06 dop=0.03 snr=4.0
    Debug: tracker frame #1 ret=0 ptsIn=2 tgts=0 pres=0
    Debug: UART tx frame #1 len=256 tlv=3 err=0 route=logging
    Perf: sf=0 frame=1 budget=120000 dsp=70483 trk=20143 uart=8370 total=98996 use=82% avg=98996 max=98996 over=0/1
    Debug: DPC result #2
    Debug DSP: frame#2 pts=2 dyn=2 stat=0 rawSNR=[32..33] rawNoise=[1477..2497]
      raw[0] snr=33 noise=1477 vel=-0.028
      raw[1] snr=32 noise=2497 vel=0.028
    Debug: gtrack pts=2 snrMin=4.0 snrMax=4.0
      pt[0] r=1.87 az=0.05 el=-0.16 dop=-0.03 snr=4.0
      pt[1] r=0.85 az=-0.18 el=0.45 dop=0.03 snr=4.0
    Debug: tracker frame #2 ret=0 ptsIn=2 tgts=0 pres=0
    Debug: UART tx frame #2 len=256 tlv=3 err=0 route=logging
    Perf: sf=0 frame=2 budget=120000 dsp=70480 trk=18609 uart=8821 total=97910 use=81% avg=98453 max=98996 over=0/2
    Debug: DPC result #3
    Debug DSP: frame#3 pts=1 dyn=1 stat=0 rawSNR=[47..47] rawNoise=[1477..1477]
      raw[0] snr=47 noise=1477 vel=-0.028
    Debug: gtrack pts=1 snrMin=5.0 snrMax=5.0
      pt[0] r=1.87 az=0.01 el=-0.14 dop=-0.03 snr=5.0
    Debug: tracker frame #3 ret=0 ptsIn=1 tgts=0 pres=0
    Debug: UART tx frame #3 len=256 tlv=3 err=0 route=logging
    Perf: sf=0 frame=3 budget=120000 dsp=70266 trk=14213 uart=8832 total=93311 use=77% avg=96739 max=98996 over=0/3
    Debug: tracker frame #4 ret=0 ptsIn=1 tgts=0 pres=0
    Perf: sf=0 frame=4 budget=120000 dsp=70265 trk=5940 uart=2978 total=79183 use=65% avg=92350 max=98996 over=0/4
    Debug: tracker frame #5 ret=0 ptsIn=1 tgts=0 pres=0
    Perf: sf=0 frame=5 budget=120000 dsp=70265 trk=5940 uart=2979 total=79184 use=65% avg=89716 max=98996 over=0/5
    
    == sensorStart ==
    (already sent by cfg)
    
    == dataPort probe ==
    COM8 @ 921600: bytes=0, magic=no
    COM8 @ 115200: bytes=0, magic=no
    COM8 @ 1250000: open/read failed: Cannot configure port, something went wrong. Original message: PermissionError(13, 'A device attached to the system is not functioning.', None, 31)
    COM8 @ 1843200: open/read failed: Cannot configure port, something went wrong. Original message: PermissionError(13, 'A device attached to the system is not functioning.', None, 31)
    COM7 @ 115200: bytes=0, magic=no
    COM7 @ 921600: bytes=0, magic=no
    Active preset recorded: overhead-3d

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    这看起来不像 sensorStart 失败,如提到在最初的帖子,因为你似乎已经得到了 5 帧的信息. 它是否在第 5 帧之后挂起? 您是否有 MMWAVEICBOOST 来设置断点并探索存储器? 你是否遇到了某种严重的故障? 因为根据日志、您似乎收到了 5 个帧。 也就是说、有一点奇怪的是、第 4 帧和第 5 帧表示有 1 个点、但不像第 1-3 帧那样打印 R AZ el DOP SNR 值。 如果在 frameCfg 中降低帧速率、会发生什么情况? 将帧周期从 120 更改为 500 甚至 1000。

    此致、

    Pedrorm