不使用mmwaveStudio软件,通过DCA1000采集原始数据(以IWR1642为例)

不使用mmwaveStudio软件,通过DCA1000采集原始数据(以IWR1642为例)

目的

因为需要雷达结合其他设备一起采集数据,所以如果用mmwaveStudio软件采集原始数据,不太好解决多设备同步问题。OpenRadar里面提供了从DCA1000获取原始数据的代码,但还是得通mmwaveStudio配置雷达参数,再运行代码,显得有点繁琐,而且还可能会出现软件卡住的问题,所以一直想着跳过软件采集代码。在网上也看到了很多资料,都没成功,最后我采用了Zovonoir 博主的方法,以及github 提供的代码完成了不使用mmwaveStudio采集TI雷达原始数据的方法。

准备工作

  1. 硬件:IWR1642,DCA1000,电源5V2A, 网线,安卓usb数据线
  2. 软件:
    (1)安装uniflash软件,用于烧录sdk提供的bin文件。
    (2)安装TI mmWaveSDK
    烧录的bin文件(xwr16xx_mmw_demo.bin)位于sdk的目录下,例如我的就是
    Alt
  3. mmWave Demo Toolbox:无需安装,直接打开网站即可
    网址最后的3.6.0是sdk版本,此处我下载的sdk是3.5版本,因此选择3.6.0,可以选择sdk的版本是3.5和3.6,如果你的sdk版本是2.0及以下,只要把链接最后的3.6.0改成2.0.0即可。区别如下
    在这里插入图片描述
    在这里插入图片描述

IWR1642三种工作模式

IWR1542一共有三种模式,对应于SP0、SP1、SP2三个开关的不同短接模式,下图是官方文档提供的信息。
在这里插入图片描述

  1. 烧录模式(Flashing Mode)
    此模式将跳帽短接SP0和SP2,即101。此模式用来烧写bin程序。
    在这里插入图片描述

  2. 功能模式(Functional Mode)
    此模式将跳帽短接SP0,即001。此模式是单独使用IWR1642板子采集数据。
    在这里插入图片描述

  3. 采集模式
    此模式将跳帽短接SP0和SP1, 即011。此模式是在使用mmWaveStudio软件时,搭配 DCA1000采集原始数据的情况下采用。
    在这里插入图片描述

操作步骤

  1. 打开Uniflash软件,烧录上面准备工作提供的bin文件(无需DCA1000)。具体操作:
    (1)5V2A电源给IWR1642通电,连接好usb数据线,并将模式调到Flashing Mode。
    (2)打开Uniflash,选择自己的设备,然后选择左侧Settings&Utilities,将Com Port改成自己设备的配置端口,如图所示,我的是COM7。最后选择左侧Program,选择bin文件,并点击下方Load Image,稍等片刻就能Load成功了。
    在这里插入图片描述
    在这里插入图片描述
    修改COM Port
    在这里插入图片描述
    导入bin文件
    在这里插入图片描述
    加载成功。

  2. 打开mmWave Demo网页,配置好自己的参数,可以点击页面下方的按钮选择将参数文件下载下来,然后自己写代码进行串口通信,将参数发送给雷达,或者可以直接点击发送指令发送(二选一),然后再plot界面就能看到雷达的一些数据图。
    在这里插入图片描述
    到此为止,以上步骤是TI雷达开箱即用例程的步骤,具体步骤可以参考TI官方提供的教程(不同型号的雷达操作步骤类似,上图是IWR6843的截图),数据的获取也是通过串口进行的,没有使用到DCA1000,我们知道如果想使用DCA1000采集原始数据需要用到官方提供的mmwaveStudio软件,如何那么结合上面的步骤跳过软件的使用呢?接下来就是关键步骤了。

  3. 首先修改下刚刚网页保存下来的参数(以1642为例,参考自Zovonoir
    ),以下参数修改依据官方提供的文档MMWAVE SDK User Guide,里面有每个参数的详细解释。

% ***************************************************************
% Created for SDK ver:03.05
% Created using Visualizer ver:3.5.0.0
% Frequency:77
% Platform:xWR16xx
% Scene Classifier:best_range_res
% Azimuth Resolution(deg):15
% Range Resolution(m):0.044
% Maximum unambiguous Range(m):9.02
% Maximum Radial Velocity(m/s):1
% Radial velocity resolution(m/s):0.13
% Frame Duration(msec):100
% RF calibration data:None
% Range Detection Threshold (dB):15
% Doppler Detection Threshold (dB):15
% Range Peak Grouping:enabled
% Doppler Peak Grouping:enabled
% Static clutter removal:disabled
% Angle of Arrival FoV: Full FoV
% Range FoV: Full FoV
% Doppler FoV: Full FoV
% ***************************************************************
sensorStop
flushCfg
dfeDataOutputMode 1
channelCfg 15 3 0
adcCfg 2 1
adcbufCfg -1 0 1 1 0
profileCfg 0 77 429 7 57.14 0 0 70 1 256 5209 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 2
frameCfg 0 1 16 0 100 1 0
lowPower 0 1
guiMonitor -1 1 1 0 0 0 1
cfarCfg -1 0 2 8 4 3 0 15 1
cfarCfg -1 1 0 4 2 3 1 15 1
multiObjBeamForming -1 1 0.5
clutterRemoval -1 0
calibDcRangeSig -1 0 -5 8 256
extendedMaxVelocity -1 0
bpmCfg -1 0 0 1
lvdsStreamCfg -1 0 0 0
compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
CQRxSatMonitor 0 3 5 121 0
CQSigImgMonitor 0 127 4
analogMonitor 0 0
aoaFovCfg -1 -90 90 -90 90
cfarFovCfg -1 0 0 8.92
cfarFovCfg -1 1 -1 1.00
calibData 0 0 0
sensorStart

修改高亮部分,将adcbufCfg -1 0 1 1 0修改成adcbufCfg -1 0 1 1 1,将lvdsStreamCfg -1 0 0 0修改为lvdsStreamCfg -1 0 1 0。
这里有两个参数需要强调一下。第一个是frameCfg的第三个参数,该参数对应number of loops,必须大于等于4,这是因为在处理多普勒图时,loops的数量太少会导致无法处理,所以这里官方规定必须大于等于4,但是如果你使用mmwaveStudio软件获取原始数据时,这个参数你可以设置小于4的值。第二个是adcbufCfg里面的SampleSwap参数(第三个值),这个参数规定了DCA1000采集的原始数据的IQ顺序,这里只有参数1可以选择,也就是Q在前I在后,在后期处理原始数据要注意这个问题,否则解析的数据就会有问题,而在mmwaveStudio软件里这个参数默认是I在前Q在后的。

  1. 连接DCA1000+Iwr1642,接线方式不详细赘述了,可以通过拨动DCA1000的SW3开关选择DCA1000供电(DCA1000需要接一个5V2.5A电源)还是雷达板直接供电(DCA1000不需要接电源)。DCA1000的usb接在RADAR_FTDI接口。如下图所示。切记:此时的雷达模式要设置成功能模式,即001,只短接SOP0(不是采集模式!!!采集模式是在使用mmwaveStudio软件采集原始数据时设置的模式。)
    在这里插入图片描述
  2. 打开mmwaveStudio提供的CLI程序。首先进入mmwaveStudio安装目录下路径:
    在这里插入图片描述
    该目录下能看到cf.json文件,该文件是DCA1000的配置文件(区别于上面保存的雷达配置文件),需要做一点修改,参考自Zovonoir

{
“DCA1000Config”: {
“dataLoggingMode”: “raw”,
“dataTransferMode”: “LVDSCapture”,
“dataCaptureMode”: “ethernetStream”,
“lvdsMode”: 2,
“dataFormatMode”: 3,
“packetDelay_us”: 25,
“ethernetConfig”: {
“DCA1000IPAddress”: “192.168.33.180”,
“DCA1000ConfigPort”: 4096,
“DCA1000DataPort”: 4098
},
“ethernetConfigUpdate”: {
“systemIPAddress”: “192.168.33.30”,
“DCA1000IPAddress”: “192.168.33.180”,
“DCA1000MACAddress”: “12.34.56.78.90.12”,
“DCA1000ConfigPort”: 4096,
“DCA1000DataPort”: 4098
},
“captureConfig”: {
“fileBasePath”: “C:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\PostProc”,
“filePrefix”: “adc_data”,
“maxRecFileSize_MB”: 1024,
“sequenceNumberEnable”: 1,
“captureStopMode”: “infinite”,
“bytesToCapture”: 4000,
“durationToCapture_ms”: 4000,
“framesToCapture”: 40
},
“dataFormatConfig”: {
“MSBToggle”: 0,
“laneFmtMap”: 0,
“reorderEnable”: 0,
“dataPortConfig”: [
{
“portIdx”: 0,
“dataType”:“real”
},
{
“portIdx”: 1,
“dataType”: “complex”
},
{
“portIdx”: 2,
“dataType”: “real”
},
{
“portIdx”: 3,
“dataType”: “real”
},
{
“portIdx”: 4,
“dataType”: “complex”
}
]
}
}
}

第一处"C:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\PostProc",是数据文件的存储路径,按照自己的需求改动。
第二处"reorderEnable": 0,改为"reorderEnable": 1
第三处"dataPortConfig"中的所有real都改为complex

此外,该目录下还有一个可执行文件DCA1000EVM_CLI_Control.exe,这个是一个命令行程序,提供了DCA1000的一些接口,包括配置DCA1000的参数和记录日志以及采集数据,详细可以看以下两个文件,有详细的介绍。
在这里插入图片描述
然后在此目录下打开cmd,首先执行

DCA1000EVM_CLI_Control.exe fpga cf_bk.json

在这里插入图片描述
这一步的目的是配置fpga。
然后执行

DCA1000EVM_CLI_Control.exe record cf_bk.json

在这里插入图片描述
这一步的目的是开启日志记录,记录例如获取多少的数据包,丢了多少包这一类信息,跟数据存放在一起,是一个csv文件,打开如下图。
在这里插入图片描述
最后执行

DCA1000EVM_CLI_Control.exe start_record cf_bk.json

在这里插入图片描述
DCA1000开始监听数据,如果此时雷达开始工作,DCA1000便会开始采集数据,DCA1000左上侧的灯开始闪烁则说明开始采集数据了。

6.启动雷达
这里介绍两种方式,一种就是在mmwave Demo给雷达发送配置文件来启动雷达,详细步骤可以参考Zovonoir。但是为了方便后期开发,我们可以自己编写代码将我们保存的配置参数通过串口发送给雷达,这里的代码参考了github 。运行config_and_wait_key.py。此时确保你已经在cmd执行了DCA1000EVM_CLI_Control.exe start_record cf_bk.json。然后在代码终端按回车键,给雷达发送sensorStart参数来启动雷达。
在这里插入图片描述
这个时候如果没有问题的话,可以看到DCA1000的灯在闪烁,说明已经开始采集数据了。最终数据会存放在cf.json配置文件里面的路径。
在这里插入图片描述
原始数据以及日志。

好了,不使用mmwaveStudio软件,通过DCA1000采集原始数据的方法介绍结束了。该方法应该也能移植到其他型号的雷达,应该也能实现多雷达数据采集。有什么不对的地方欢迎大家指正。

补充 6843AOP

IWR6843AOP+MMWAVEBOOST+DCA1000,使用上述方法采集数据的开关设置。
1.MMWAVEBOOST设置成functional mode,如图所示,左下角的开关设置成001,默认都是development mode。IWR6843AOP的开关设置如图所示,设置为MMWAVEICBOOST Mode。相关文档保存在了百度网盘,可自行下载查看。[链接], 提取码: 1234

在这里插入图片描述

失败原因

目前遇到的原因有两个。
1.framecfg里面的loops参数的设置不能太大,要保证activeramp duty cycle小于等于50%,如果你不会计算,可以先打开mmwave studio软件配置参数,软件的sensorconfig那一页右下角会自动计算。
在这里插入图片描述
2.一帧的数据不能太大,我在实际中遇到的是一帧数据超过48kb可能就会出现问题,这应该是out of box的demo的问题,如果你使用mmwave studio就不会出现这个问题。一帧数据的大小计算方式如:
s i z e = s i z e o f ( u i n t 1 6 t ) × t x × l o o p s × A D C S a m p l e s size={sizeof(uint16_t)}\times {tx}\times{loops}\times{ADC Samples} size=sizeof(uint16t)×tx×loops×ADCSamples
比如,设置loops=64,使用3个发射天线,采样点设置为128,那么一帧的数据大小为:
2 × 3 × 64 × 128 = 49512 b i t = 48 k b 2 \times{3}\times{64}\times{128}=49512bit=48kb 2×3×64×128=49512bit=48kb
可参考Number of chirp loop per frame

如何在不使用mmwave studio的情况下能够实现更大的参数设置呢?目前还没找到好的解决方案,ti的官方论坛给出了可能的实施方案link1 link2 link3
但是我还没尝试过,如果有大佬成功了,麻烦分享一下。万分感激!!!!

失败原因已解决

文章里。

  • 10
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 58
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值