TI的Doppler-Azimuth架构(TI文档)

news2025/3/20 1:36:52

        TI在AWR2944平台上推出新的算法架构,原先的处理方式是做完二维FFT后在RD图上做CFAR检测,然后提取各个通道数据做测角。

        Doppler-Azimuth架构则是做完二维FFT后,再做角度维FFT,生成Doppler-Azimuth频谱图,然后在该频谱图上做目标检测。这种处理方式的信号链如下图所示,整个处理链路由DSP、ARM和HWA协作完成。

        另外需要注意的是,由于TDM模式下测角需要先做速度补偿,因此这种架构只支持DDM模式。

1 Doppler-Azimuth架构处理步骤

        从接收ADC数据到生成点云是DDMA接收链路的核心部分,由DSP和HWA协作完成,包括下面步骤:

        1.Chirp级处理:DDMA的chirp级处理链路和TDM是一样的,由DFE触发EDMA搬运数据,使用HWA自动完成运算,不需要DSP参与,对每个chirp执行一次,执行去直流,干扰抑制,1D-FFT和数据压缩,通过EDMA将压缩后的1D-FFT结果保存在L3。

        在SDK的demo中,chirp级处理是通过RangeProc DPU完成的。

        2.Range gete级处理:对每个range gate执行一次,主要的处理在HWA完成,但是需要DSP接入两次。

        在SDK中,Range gate级处理是通过DopplerProc-DDMA DPU完成的,它的处理工作分为:

        2.1.数据解压缩:将L3上的压缩数据通过EDMA搬移进HWA,执行数据解压缩,解压缩后的数据保存在L3上的scratch buffer。

        2.2.2D-FFT和DDMA解调:待一个range bin对应的所有Doppler bin的1D-FFT结果都解压缩完成后,通过EDMA将L3上scratch buffer的数据搬移进HWA,执行2D-FFT和DDMA解调。DDMA解调完成后,需要DSP第一次介入,根据获得的发射天线Tx和子带sub-band的对应关系,对2D-FFT的结果按照虚拟天线的位置进行重排。

        2.3.相关检测:由HWA对上一步按照虚拟天线位置重排过的2D-FFT数据,执行天线相位/增益补偿和水平角度FFT,接着由HWA在Doppler维度进行CFAR-OS和Local Maxima的计算,在HWA计算完成后需要DSP第二次介入,根据HWA的输出结果提取可能的(Doppler,azimuth)目标列表,并把这个目标在所有虚拟天线上的2D-FFT结果保存下来供后面的垂直角度估计使用。

        3.内插和垂直角度估计:待所有range  bin的range gate级处理都完成后,由DSP对所有检出的(Doppler,azimuth)目标列表进行内插和垂直角度估计,形成最后的点云列表保存在L3,并通过mailbox将点云列表的信息通知ARM。

        ARM在得到L3上的点云列表后,进行后续的目标跟踪,得到tracker的目标列表,并通过UART输出。

2 Chrip级处理

        在demo中chirp级处理是通过RangeProc DPU完成的。这个DPU的处理流程如下图所示。

        ADC buffer中一个chirp的ADC数据收齐后,将通过ADC_CAPTURE_COMPLETE事件自动触发EDMA的通道31(EDMA_DSS_TPCC_A_EVT_RSS_ADC_CAPTURE_COMPLETE),将ADC数据从ADC buffer搬移到HWA的M0/M1,并启动HWA进行后面的运算。整个chirp级处理信号链包含ping和pong两个通道,每个ADC_CAPTURE_COMPLETE事件触发ping或pong通道执行一次,完成一个chirp的处理。信号链总共使用了10个HWA Param(ping/pong各5个),5个EDMA channel,下面的表格分别列出这些HWA Param和EDMA channel的功能。

表1 Chirp级处理HWA Param配置(Ping)
Param编号功能触发机制运算Engine输入->输出Mem说明
1DummyDMANone-由EDMA out signature通道触发,保证当前chirp处理开始前,上一个chirp已经处理完并输出
2DC估计

DMA

FFTM0->M2由EDMA in signature通道触发,估计信号的直流分量,保存在寄存器中
3DC去除+干扰统计ImmediateFFTM0->M2从信号中减去2中得到的DC估计值后保存到M2,同时进行干扰统计
4干扰消除+FFTImmediateFFTM0->M2利用3中得到的干扰统计先进行干扰消除,然后再进行加窗和FFT
5数据压缩ImmediateCompressM0->M2完成一个chirp的4根天线数据的压缩
表2 Chirp级处理EDMA通道配置
Channel编号功能触发机制触发通道输入->输出Mem说明
1EDMA InDFE-ADC buf->M0/M1每个chirp由硬件事件ADC_CAPTURE_COMPLETE触发一次,根据当前chirp编号将数据搬移到M0或M1
2EDMA In SigChainEDMA InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER根据当前chirp编号,选择触发对应的ping/pong通道的HWA DC估计Param
3EDMA Out PingHWA-M2->L3 radar cube由HWA ping通道数据压缩Param触发,每个chirp的压缩完成触发一次,根据当前chirp编号将数据搬移到L3 radar cube的对应位置
4EDMA Out PongHWA-M3->L3 radar cube由HWA pong通道数据压缩Param触发,每个chirp的压缩完成触发一次,根据当前chirp编号将数据搬移到L3 radar cube的对应位置
5EDMA Out SigChainEDMA Out Ping/PongSIG_DMACHx_DONE-> DMA2HWA_TRIGGER根据当前chirp编号,选择触发对应的ping/pong通道的HWA Dummy Param

        需要注意的是AWR2944在ADC buffer上的数据格式是交织模式,这点和AWR1642/AWR1843不同。

3 数据压缩

        HWA中的数据压缩模块能够对1D-FFT的结果进行压缩,再保存到L3上。在2D-FFT前可以使用HWA的解压缩模块先把L3上的数据解压缩,再送给HWA的FFT模块。通过这个功能可以使有限的L3空间保存更大的radar cube,有利于提高DDMA波形的chirp总数。

        HWA数据压缩模块使用EGE(Exponential Golomb Encoder)算法,对每个chirp的1D-FFT结果进行了50%压缩比的数据压缩。压缩以block为单位进行,每个block包含4根天线,连续8个range bin的1D-FFT结果,每个block压缩前的数据长度为128字节(1D-FFT结果的每个采样点的宽度是4字节,总共32个采样点),压缩后的数据长度为64字节。

        demo共有192个range bin,所以每个chirp的数据压缩将分为24个block进行。对每个chirp,数据压缩前后HWA Mem上的数据格式如下图所示。HWA完成一个chirp的数据压缩后,将通过EDMA Out Ping/Pong通道将压缩后的数据搬移到L3上的radar cube。为了方便2D-FFT前的数据解压缩,Radar cube上不同chirp的同一个编号的压缩block是紧排在一起的,所以我们可以看到下图中768个chirp的block1顺序排列在radar cube最前面,然后是768个chirp的block2,block3,...,block24。

        按照demo的波形配置,radar cube在压缩前的空间大小为2304KB(4byte*4ant*192range*768chirp),压缩后的空间大小为1152KB(64byte*24block*768chirp)。可以看出AWR2944增加的数据压缩功能对RAM空间的节省是巨大的。

4 数据解压缩

        在range gate级处理的开始,必须先通过EDMA把radar cube上数据搬移到HWA后进行数据解压缩。2D-FFT需要对所有chirp(demo中N=768)的同一个range gate进行FFT计算,这就需要对上图中每行的所有768个压缩block(chirp)进行解压缩。考虑到1个HWA Mem的大小只有16KB,HWA只能分次完成这768个block的解压缩。demo的解压缩数据处理信号链如下图所示,这个信号链包括ping和pong两个通道(采用ping-pong是为了使EDMA数据搬移和HWA解压缩运算流水运行,提高效率),每个通道1次可以解压缩64个block(chirp)的压缩数据,ping通道HWA计算完成将触发pong通道HWA继续执行,ping和pong通道的1次执行将完成128个chirp的数据解压缩,这也叫解压缩的1个loop。1个loop执行完后将自动触发下1个loop的执行,这样通过6个loop完成768个block(chirp)的数据解压缩。信号链总共使用了2个HWA Param(ping/pong各1个),6个EDMA channel,表格3和4将分别列出这些HWA Param和EDMA channel的功能。

表3 数据解压缩HWA Param配置
Param编号功能触发机制运算Engine输入->输出Mem说明
1解压缩PingDMACompressM0->M2由EDMA In Ping signature通道触发,在ping通道EDMA将64个压缩数据搬移到M0后执行
2解压缩PongDMACompress

M4->M6

由EDMA In Pong signature通道触发,在pong通道EDMA将64个block压缩数据搬移到M4后执行
表4 数据解压缩EDMA通道配置
Channel编号功能触发机制触发通道输入->输出Mem说明
1EDMA Ping InSW/chain-/EDMA Ping OutL3 Radar cube->M0第1个loop由SW启动,后面5个loop由EDMA Ping Out通道chain,6个loop完成768个chirp的解压缩
2EDMA Ping In SigChainEDMA Ping InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA解压缩Ping Param
3

EDMA

Pong In

SW/chain-/EDMA Ping OutL3 Radar cube->M4第1个loop由SW启动,后面5个loop由EDMA Pong Out通道chain,6个loop完成768个chirp的解压缩
4EDMA Pong In SigChainEDMA Pong InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA 解压缩Pong Param
5

EDMA

Ping Out

HWA-M2 -> L3 Decomp Scratch buf由HWA解压缩Ping Param触发,每个block的解压缩完成触发一次,将当前block解压缩数据搬移到L3 Decomp scratch buf的对应位置
6EDMA Pong OutHWA-M6->L3 Decomp Scratch buf由HWA解压缩Pong Param触发,每个block的解压缩完成触发一次,将当前block解压缩数据搬移到L3 Decomp scratch buf的对应位置

        需要注意的是HWA通过6个loop将解压缩出对应8个range bin的所有768个chirp的1D-FFT数据,这些数据通过EDMA Ping/Pong Out通道搬移到L3上的Decomp Scratch buf。这个Decomp Scratch buf的大小是98304byte((4byte*4ant*8range*768chirps),格式如下图所示。这里的数据将供后面的DDMA解调和相关检测使用。每8个range bin的所有range gate级处理完成后,再通过软件启动下8个range bin的数据解压缩操作,并更新Decomp Scratch buf中的内容为下8个range bin的解压缩数据,这样的循环要执行24次,完成总共192个range bin的处理。

5 2D-FFT和DDMA解调

        当第4节中1次数据解压缩的循环完成,输出连续8个range bin的768个chirp的1D-FFT解压缩数据到L3上的Decomp Scratch buf后,demo将循环8次,分别对每个range bin进行2D-FFT,DDMA解调,相关检测,得到这个range bin上所有的(Doppler,azimuth)目标列表。这是range gate级处理的核心部分。range gate级核心处理中HWA和DSP需要协同工作。对于1个range bin,需要顺序完成下面4个运算步骤:

        1)HWA完成2D-FFT和DDMA Metric生成,这是HWA处理的第一阶段(Stage),称之为Doppler Stage

        2)DSP根据HWA输出的DDMA Metric,获得Tx ant和sub-band的对应关系,对2D-FFT的结果按照虚拟天线的位置进行重排,称之为DDMA解调(DDMA Demodulation)

        3)HWA进行水平角度FFT(Azimuth FFT),CFAR-OS和2D Maxima,称之为Azim Stage

        4)DSP根据HWA输出的CFAR-OS和2D Maxima结果提取出这个range bin上所有的(Doppler,azimuth)目标列表,称之为Extract Obj

        为了提高执行效率,使HWA处理的步骤1)、3)和DSP处理的步骤2)、4)流水并行执行,避免HWA和DSP互相等待,demo以2个range bin为一个基本的处理循环,在这个循环中实现了ping-pong两个数据处理通道,分别处理range bin x和x+1。整个range gate级处理的时序如下图所示。

        TI以DSP第一次介入的DDMA解调(DDMA Demodulation)为边界,将HWA的处理工作分为两个阶段(Stage):Doppler Stage和Azim Stage。本节将介绍Doppler Stage的实现,下一节将介绍Azim Stage。

        Doppler stage的信号链如图所示,包含ping-pong两个数据处理通道。demo在需要进行range gate级处理的时候,根据当前range bin的编号通过软件触发对应ping或pong通道的EDMA,将对应这个range bin的所有4根天线768个chirp的1D-FFT数据搬移到HWA的M0或M2(搬移前后数据都是按照天线交织格式排列的),并启动HWA的ping或pong通道进行后面的运算。

        信号链总共使用了12个HWA Param(ping/pong各6个),10个EDMA channel(ping/pong各5个),下面的表格将分别列出这些HWA Param和EDMA channel的功能。

表5 Doppler stage处理HWA Param配置(Ping)
Param编号功能触发机制运算Engine输入->输出Mem说明
1DummyDMANone-

由Doppler FFT Data In Sig通道触发,保证当前range bin处理开始前,输入数据已经搬移到M0

2Doppler FFTImmediateFFTM0->M4计算4次768点FFT,输入输出的数据都按天线交织排列,输入每个采样点4 byte,输出每个采样点8 byte
3Log2AbsImmediateFFTM4->M0对2中计算的每个采样点求对数绝对值,输入输出的数据格式不变,输入每个采样点8 byte,输出每个采样点2 byte
4天线累加ImmediateFFTM0->M1对3中得到的4天线768点的对数绝对值,进行4天线累加,利用FFT的bin0实现,输出768点的累加值,每个累加值2 byte
DDMA metricImmediateFFTM1->M0DDMA metric计算,利用了FFT的bin0实现了4点累加,同时利用HWA的SHUFFLE功能实现了输入点位置的控制(根据DDMA metric计算需要)
6Sub-band累加SWFFT

M1->M0

+768*2

等待DDMA metric计算和搬移完毕后手工触发,根据4的输出,将6个sub-band上128个Doppler bin的对数绝对值累加起来,利用了FFT的bin0实现了6点累加,同时利用HWA的SHUFFLE功能实现了输入点位置的控制
表6 Doppler stage处理EDMA通道配置(Ping)
Channel编号功能触发机制触发通道输入->输出Mem说明
1Doppler FFT Data InSW-L3 Decomp Scratch buf ->M0每个range bin开始处理前,由软件手工触发将数据搬移到M0
2Doppler FFT Data In SigChainDoppler FFT Data InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA ping通道的Dummy Param
3Doppler FFT Data OutHWA-M4->L3 Doppler FFT Scratch Buf由HWA ping通道Log2Abs Param触发,在对数绝对值计算完毕后,将Doppler FFT数据搬移到L3 Doppler FFT Scratch buf的对应位置
4DDMA Metric Data OutHWA-M0->L3 DDMA Metric Scratch Buf由HWA ping通道DDMA metric Param触发,将计算完的DDMA metric搬移到L3 DDMA Metric Scratch buf的对应位置
5SumTx Data OutHWA-M0+768*2->L3 Det Matrix Buf由HWA ping 通道Sub-band累加Param触发,将计算完的Sub-band累加结果搬移到L3 Det Matrix的对应位置

        DDMA解调的核心是DDMA Metric的计算(HWA完成)和2D-FFT结果的重排(DSP)完成。demo里HWA在完成Doppler FFT,Log2Abs和天线累加后,将生成对应768个Doppler bin的能量热图,这768个Doppler bin分为6个sub-band,每个sub-band有128个Doppler bin。demo采用下表所示的算法进行DDMA解调。

        DDMA Metric是一个128*6的数组,保存对于128个Doppler bin的[Z1,Z2,...,Z6]的能量,它的计算是通过HWA DDMA Metric Param的FFT运算功能实现的,采用4点FFT的bin0获得4个bin的累加值,而计算时访问Doppler bin能量热图的格式是通过HWA的SHUFFLE功能实现的,计算的结果输出到L3上的DDMA Metric Scratch buf。下图给出了HWA DDMA Metric Param计算DDMA Metric的实现方法。在HWA计算完DDMA Metric后,需要DSP介入,在每个Doppler bin对应的6个Metric[Z1,Z2,...,Z6]上找到最大值Zi,根据上表的方法,推断出4个发射天线Tx1/2/3/4在6个sub-band 2D-FFT数据(保存在L3上的Doppler FFT Scratch Buf)中的位置,然后把Tx1/2/3/4的数据顺序提取出来,拷贝到L3上的dopFFTSubMat buf,这就是DSP的DDMA解调。DDMA解调前2D-FFT数据的格式是[128 Doppler][6 sub-band][4 Rx ant][8 byte],DDMA解调后2D-FFT数据的格式变为[128 Doppler][4 Tx ant][4 Rx ant][8 byte]。解调后的数据格式中每个range bin的16根虚天线的数据按Tx1Rx1->Tx1Rx2->Tx1Rx3->Tx1Rx4->Tx3Rx1->Tx3Rx2->Tx3Rx3->Tx3Rx4->Tx4Rx1->Tx4Rx2->Tx4Rx3->Tx4Rx4->Tx2Rx1->Tx2Rx2->Tx2Rx3->Tx2Rx4的顺序排列,方便后面的水平角度FFT的计算。

6 相关检测

        通过DDMA解调获得每个range bin按照虚天线顺序排列好的2D-FFT数据,demo的相关检测就是在虚天线维度对2D-FFT的结果进行水平角度FFT,并对FFT的结果在Doppler维度进行CFAR检测(为了输出尽可能多的点云,demo没有进行range维度的CFAR)。因为在doppler维度进行检测的时候,利用了虚天线阵列的2D-FFT结果,这是一个相关检测(另一种常用的非相关检测方法是先简单地把所有虚天线的2D-FFT结果合并,再检测)。在4接收天线的场景,相关检测的性能比非相关检测要好1.5到2dB,这也是demo提高雷达性能的一个重要手段。

        2D-FFT做完水平角度的FFT后,RA-Map和DA-Map图分别如下图所示。

        相关检测的信号链如下图所示,包含ping-pong两个数据处理通道。

        每个通道1次处理1个range bin,首先通过EDMA将这个range bin对应的DDMA解调后的128个Doppler bin上的12根水平虚拟天线的2D-FFT数据搬移到HWA内。然后在每个Doppler bin的12根虚天线数据做48点的补零FFT,得到下图所示的128*48的[Doppler,Azimuth]热图。在这个热图上,将分别使用HWA的CFAR和Local-Maxima engine进行1次Doppler维度的CFAR-OS检测,和2D平面上的Maxima检测,只有当1个bin同时满足:1)在Doppler维CFAR-OS检测超过门限,2)能量大于2D平面上下左右4个bin的能量,才判断这个bin是一个有效的[Doppler,Azimuth]目标,放入有效目标列表。需要注意的是,HWA的CFAR和Local-Maxima engine的结果都通过EDMA先输出到L2上的CFAR Scratch Buf和Local Max Scratch Buf,然后由DSP从这两个buffer中提取有效信息并进行比较,保存同时满足上面两个条件的bin,这就是DSP执行的Extract Obj的工作。

        信号链总共使用了10个HWA Param(ping/pong各5个), 10个EDMA channel(ping/pong各5个), 表格7 和8分别列出了这些HWA Param和EDMA channel的功能。

表7 Azim stage处理HWA Param配置(Ping)
Param编号功能触发机制运算Engine输入->输出Mem说明
1DummyDMANone-由Azim FFT Data In Sig通道触发,保证当前 range bin处理前,重排后的2D-FFT结果已经搬移 到M0
2Azim FFTImmediateFFTM0->M4计算128次48点FFT (12根水平虚天线后补36 个零)并求log2Abs,输入每个样点8 byte, 输出每 个样点2 byte
3CFARImmediateCFARM4->M0对2中输出的[Doppler, Azim]热图在Doppler方向 做CFAR-OS
4LocalMaxImmediateLOCAL MAXM4->M1对2中输出的[Doppler, Azim]热图计算2D Local Maxima
5DummyImmediateNone-通过中断通知软件Azim Stage HWA执行完毕
表8 Azim stage处理EDMA通道配置(Ping)
Channel编号功能触发机制触发通道输入->输出Mem说明
1Azim FFT Data InSW-L3 dopFFTSubMat buf ->M0每个range bin的DDMA解调完成 后,由软件手工触发将重排后的2D FFT结果搬移到M0
2Azim FFT Data In SigChainAzim FFT Data InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA ping通道的Dummy Param
3CFAR OutHWA-M0->L2 CFAR Scratch Buf由HWA ping通道CFAR Param触 发,对这个range bin的Doppler维 度CFAR完成后,将结果搬移到L2 CFAR Scratch Buf的对应位置
4LOCAL MAX OutHWA-M1->L2 LocalMax Scratch Buf由HWA ping通道LocalMax Param 触发,对这个range bin的LocalMax 完成后,将结果搬移到L2 LocalMax Scratch Buf的对应位置
5Azim FFT Data OutHWA-M4->L2 AzimFFT Buf由HWA ping通道最后的Dummy触 发,将Azim FFT结果搬移到L2 AzimFFT Buf的对应位置

7 内插和垂直角度估计

        demo通过前面介绍的Chirp级和Range gate级处理,在对一个frame的128个doppler bin完成相关检测后,将形成当前 frame 有效的 [Doppler, Azimuth] 目标列表。在这个列表的基础上,demo 进行了Azimuth维度的角度内插,和垂直角度估计,以形成最终的点云列表,这个计算是在DSP上完成的。 首先对于相关检测得到的每个目标的 Azimuth bin 的索引 peakIdx 和它前后的两个相邻索引 peakIdx-1, peakIdx+1,执行内插,精度提升(将azimuth bin的数量N从48提高到256)和镜像翻转,获得在[-128, 128] 范围内的索引peakIdxRound,算法如下表所示。

        AWR2944 EVM的虚拟天线阵列下图所示,包含12根水平虚拟天线,4根垂直虚拟天线。

        假设目标的水平角度为θ,垂直角度为φ, 则根据图20的天线阵列,目标在水平方向相邻天线间的相位旋转值𝜔𝑥和 目标在垂直方向相邻天线间的相位旋转值𝜔𝑧满足:

        对目标来说,在12根水平虚天线上的接收信号可表示为(假设目标在第1根水平虚天线上的信号为𝐴𝑒𝑗𝜓):

        类似的,目标在4根垂直虚天线上的接收信号可表示为

         demo中采用下表中的算法来估计目标的水平角度θ和垂直角度φ

        根据表 中的第1和第6步结果,利用三角函数关系很容易计算出𝑐𝑜𝑠(𝜃)和𝑐𝑜𝑠(𝜑),再结合目标的距离R,就可以得到目标在三维坐标系中的坐标(X, Y, Z)和速度V。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「自动驾驶的数学交响曲:线性代数、微积分与优化理论的深度共舞」—— 解析人工智能背后的高阶数学工具链

引言 自动驾驶系统是数学工具链的集大成者。从传感器数据的多维空间映射到控制指令的生成,每一步都隐藏着线性代数、微积分、概率论和优化理论的精妙配合。本文将构建一个数学模型完整的自动驾驶案例,结合Python代码实现,揭示以下核心数学工具: 线性代数:张量运算与特征空…

调试 Rust + WebAssembly 版康威生命游戏

1. 启用 Panic 日志 1.1 让 Panic 信息显示在浏览器控制台 如果 Rust 代码发生 panic!(),默认情况下不会在浏览器开发者工具中显示详细的错误信息。这使得排查问题变得困难。 我们可以使用 console_error_panic_hook 这个 Rust crate,将 Panic 信息打…

VSCode通过SSH远程登录Windows服务器

系列 1.1 VSCode通过SSH远程登录Windows服务器 1.2 VSCode通过SSH免密远程登录Windows服务器 文章目录 系列1 准备工作2 远程服务器配置2.1 安装SSH服务器2.2 端口 3 本地电脑配置3.1 安装【Remote - SSH】。3.2 登录 1 准备工作 本地电脑Windows 11,已安装VS Cod…

qt下载和安装教程国内源下载地址

qt不断在更新中,目前qt6日渐成熟,先前我们到官方下载或者国内镜像直接可以下载到exe文件安装,但是最近几年qt官方似乎在逐渐关闭旧版本下载通道,列为不推荐下载。但是qt5以其广泛使用和稳定性,以及积累大量代码使得qt5…

mysql 到 doris 挪移数据

工具datax..... 下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 下载以后解压:tar -xvzf datax.tar.gz 然后,理论上就可以直接使用了。但是,datax本身是python2写的,如果需要python3…

ubuntu系统下添加pycharm到快捷启动栏方法

一、背景 之前在ubuntu系统下使用pycharm时,总是要进入/home/dlut/pycharm-community-2022.1/bin文件夹下,然后终端执行命令下面的命令才可修改代码: ./pycharm.sh为了以后方便,这里给出添加pycharm到快捷启动栏的方法 二、添加…

开源:LMDB 操作工具:lmcmd

目录 什么是 LMDB为什么编写 lmcmd安装方法如何使用 连接数据库命令列表 小结 1. 什么是 LMDB LMDB(Lightning Memory-Mapped Database)是一种高效的键值存储数据库,基于内存映射(memory-mapping)技术,提供…

angular中的路由传参

目录 一、矩阵参数 一、矩阵参数 在angular中传参时可以使用矩阵参数,即直接通过变量值的形式在地址中体现,但需要注意参数的使用范围为当前路径段,而不是全局的查询参数。 const params {name: lhhh,age: 18,list: [{ name: htt }],}; //先…

AI时代下的心理咨询师新利器:心理咨询小程序

在AI技术日新月异的今天,心理咨询师们也需要与时俱进,借助新型工具来提升咨询效率和服务质量。正如一位优秀的厨师离不开一把锋利的菜刀,心理咨询师同样需要一款得力助手来辅助其工作。而心理咨询小程序,正是这样一款应运而生的工…

垃圾分类--环境配置

写在前面: 如果你们打这届比赛时,还有我们所保留的内存卡,那么插上即可运行(因为内存卡里我们已经配置好所有的环境) 本文提供两种环境的配置 一种是基于yolov8:YOLOv8 - Ultralytics YOLO Docshttps://d…

json字符串转对象,对象转JSON

背景: JSON字符串与对象之间的转换。在对接接口的数据的时候,因为是实时数据转发过来的。发现后端发过的数据是字符串【JSON字符串】但是我们前端需要的是一个对象。 核心代码: JSON.parse(JSON字符串) 效果展示: 接口JSON字符串转…

pandas中excel自定义单元格颜色

writerpd.ExcelWriter(filepathf05教师固定学生占比1月{today}.xlsx,engineopenpyxl) df.to_excel(writer,sheet_name明细) piv1.to_excel(writer,sheet_name1月分布) wswriter.book.create_sheet(口径) ws.cell(1,1).value综合占比: ws.cell(1,2).value固定学生占比…

3D标定中的平面约束-平面方程的几何意义

平面方程的一般形式为 AxByCzD0,其中系数 A、B、C、D共同决定了平面的几何特性。 系数对平面姿态的影响 1. 法向量方向2. 平面位置3. 比例关系4. 姿态变换5.平面空间变换 1. 法向量方向 法向量方向由 A、B、C 决定 核心作用:系数 A、B、C 构成的向量 (…

蓝桥杯第13届真题2

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码&a…

Linux-03 删除ubuntu系统文件夹Videos和Templates后,如何恢复

文章目录 问题解决方法1. 重新创建 Videos 和 Templates 文件夹2. 配置 user-dirs.dirs 文件3. 更新用户目录配置xdg-user-dirs-update4. 重启系统:sudo reboot 问题 手欠的嫌弃Videos和Templates文件夹是空的,也不会用,就删除了&#xff0c…

Linux系统移植篇(十)根文件系统构建 V3 - Yocto

可以简单的将 Ubuntu 理解为一个根文件系统,和我们用 busybox、buildroot 制作的根文件系统一样。因此移植Ubuntu也就是将Ubuntu根文件系统移植到我们的开发板上,但是因为 I.MX6ULL 孱弱的性能,本章我们就只移植 Ubuntu 的最小根文件系统&…

E902基于bash与VCS的仿真环境建立

网上看见很多E902仿真的文章,但用到的编译器是类似于这种Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120,而我按照相应的步骤与对应的编译器,仿真总会报错。后面将编译器换成riscv64-elf-x86_64-20210512,反而成功了。现在开…

Pycharm接入DeepSeek,提升自动化脚本的写作效率

一.效果展示: 二.实施步骤: 1.DeepSeek官网创建API key: 创建成功后,会生成一个API key: 2. PyCharm工具,打开文件->设置->插件,搜索“Continue”,点击安装 3.安装完成后&…

Windows安装Apache Maven 3.9.9

第一步下载资源 官网:下载 Apache Maven – Maven 环境变量配置 M2_HOME 指向bin目录 MAVEN_HOME 指向根目录 M2_HOME 不确定是否必须要 Path配置 ,需要注意MAVEN顺序应当在java之前 验证是否安装成功,在cmd中以管理员方式打开&#xff0c…

jmeter将返回的数据写入csv文件

举例说明,我需要接口返回体中的exampleid与todoid的数据信息(使用边界提取器先将其提取),并将其写入csv文件进行保存 使用后置处理器BeanShell 脚本实例如下 import java.io.*;// 设置要写入的文件路径 String filePath "…