请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:IWR1642BOOST 主题中讨论的其他器件:IWR1642
大家好
我编写了一个 python 脚本、以通过 USB 读取数据流、将对象数据转换为(x、y)坐标并使用 IWR1642 EVM 将其显示在控制台上。 我在一个空房间里测试了它、结果有些奇怪(例如、距离为355米等)。 我已附加我的 python 脚本和示例输出。 请告诉我哪里出错了。
导入序列
导入系统
导入字符串
导入结构
导入时间
导入 NumPy 作为从
十进制导入*
########## ####### ####### ####### #
###全局变量
obj_struct_size_bytes = 12;
magicWord =[2、1、4、3、6、5、8、7]
word =[1、256、656、16777216]
#word =[1
、256]
#### ####### ####### ####### ######
GUI 演示##########中的配置参数
txChannelEn= 3 #startelCfg #2
numTxAnt= 2
digOutSampleRate= 5209 # profileCfg #11
freqSlopeConst= 70 #profileIdCfg #8
numAddcSamples= 256 #profileCfg #10
numRangeBins= 8#2rouncup (3
#profileIdCfg=
5 #Endramex #13 #profileName #rameCfg = 3 #tchirt1 #t1)#t1 #profileEndramex #ramex #ramex #randramex #rands = 14 #profileEndq1 #proframex #proframex #rumeQ=14 #proframex
0 #frameCfg #1
numLoops= 16 #frameCfg #3
numChirpsPerFrame=(线性调频脉冲结束 IDx -chirpStartIdx + 1)*numLoops
numplerBins= numChirpsPerFrame/numTxAnt
##############################
rangeIdxToMeters = 3e8 * digOutSampleRate * 1e3 /(2 * freqSlopeConst * 1e12 * numRangeBins)
dopplerResolutionMps = 3e8 /(2 * startFreq* 1e9 *(idleTime + rampEndTime)* 1e-6 * numerRangeBins) dopplerResolutionMps = 3e8 /(2 * numberstartFreq* 1eQ* 1eDopeQ* 1eDopeDopeDopeDope9 *
)* 1),而 Serial Doper2eDopeDopeDop
#byteVec = ser.read (ser.inWaiting ())
byteVec = ser.read (520)
x = list (byteVec)
startIdx =[]
#print ('Read Data:\n'、x、'\n')
for ind in (i for i、e in enumere=magicWord[0]时)如果start=x
= magicWord[0]、
则
为 start=x = x、则为 startx =以获取 magings=x:x+ind =所有字:#对于每个数据包、执行不必要
的 j = j + 8#Skip magic word
j = j + 20#get 到检测到的对象数。 仅选择 TLV 是检测点
数对于
范围(4)中的 k 来说、如果
j+k >= len (x):
break
numDetObj = numDetObj+ x[j+k]*word[k]#fer line 1220 of MMW_DEMOM.m
#print ('NumDetObj='+str(numDetObj)+')+'))j
= j + 8#Exit the header part
j = j+8#如果
j=x=x=x=x=(len,则跳过 TLV 信息:#帐户超过列表
中断长度
#detdetObj 部件参考 MMW_DEMOM.m
numObj = 0
detObj = nP.zes ([numDetObj、5])
numObj = x[j+1]+ x[j+2] xy256
j = j+2
'detzQFormat = 2^(x[j+j_bytes
= x[j+j]+x[x_structure_j]+12_bytes #x[j+12_bytes+]+x[x_j_zh]+]+x='d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&
\n'、字节、'\n')
如果 len (bytes)>= numDetIdObj*obj_struct_size_bytes:
j = j+numDetedj* obj_struct_size_bytes
#print (len (bytes)/numDetodObj)
bytes = nP.array (bytes).ranges (numObj、obj_struct
(obj_size)、'xeQn)、'sizbytes ='s'、's&d'、'.z&d'、'.z&d'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、 1]* 256)* rangeIdxToMeters
Obj[:、1]= bytes[:、2]+ bytes[:、3]*256
(对于范围内的 r (numObDetj):
如果 detObj[r、1]> numdetplerBins/2-1:
Dopj[r、1]= dopodopplerObj
、bins:1、1、1、1、1、1、1、dopdopplerbins:1、1、1、1、1、1、1、dopdopdopplerbins:1、1、1、1、1 #参考 MMW_DEMOM.m line 1265
detObj[:、1]*= dopplerResolutionMps
detObj[:、2]=(字节[:、6]+字节[:、7]*256)
detObj[:、3]=(字节[:、 8]+bytes[:、9]*256)
用于 r in 范围(numDetObj):
如果 detObj[r、2]>32767:
detObj[r、2]-= 65536
#for r in 范围(numDetetObj):
#如果 detObj[r、3]>32767:
#Obdetj[r、3]-= 65536
#detObj[:、2、xydetObj[:、2]> 32767]= detObj[:、2、detObj[:、2]> 32767]- 65536
detdetObj[:、3][detdetdetObj[:、3]> 32767]= detObj[
:]、in
、3[= 327j]、in、time[= 0:]、time[0://、time[3:]、time[0:]、timedetObj]、如果范围://、则为://、//、//、
detObj[r、4]=-1
继续
detObj[r、4]= np.sqrt (detObj[r、2]**2 + detj[r、3]**2)/abs (detObj[r、1])
print ("Range \t\t Velocity \t\t X_cot \t Y_cobt\t #break)(#detObj[r、#t.np)、
#close (np)、#break = np (#t)、#detobj)、#np (#break = np、#break)、#np