黄少伟,雷闰龙,毛雪松
(1.肇庆学院,计算机科学与软件学院/大数据学院,肇庆 526061;2.武汉科技大学,信息科学与工程学院,武汉 430081)
距离和速度是在动态场景中完成智能驾驶路径规划所必须两个重要的参数,目前能够完成这两个参数同时测量的设备只有毫米波雷达[1]。但是由于毫米波雷达发射的波束较宽,不能实现对测量空间的3D成像。随着智能驾驶技术的发展和驾驶场景趋于复杂化,研制激光雷达成为一个必要的需求。
应用于智能驾驶的激光雷达发射一个短脉冲,通过测量脉冲的飞行时间获取目标的距离,为了提高距离测量的精度,这种方法使用的脉冲长度只有几纳秒[2]。运动目标在光频上产生的多普勒频率范围为几兆到上百兆赫兹,因此如果使用外差检测法,光脉冲的长度远小于多普勒信号的一个频率周期,而使用傅里叶变换计算信号频率要求信号的长度大于多普勒频率的一个周期。基于这一原因,目前激光雷达不能在测量目标距离的同时,利用多普勒测量目标的速度,而只是根据所测对象相对于时间的距离变化率来给出速度的估值,所需时间长、误差较大。
毫米波雷达测量目标距离和速度使用频率调制连续波[3-4],从技术上看,目前还不能在光频上制作出性能良好的三角啁啾信号,因此在激光雷达的设计中不能借鉴毫米波雷达的测量方法。
为实现目标距离和速度的同时测量,本课题组提出使用非等间隔脉冲序列的方式,并用数据累加增强接收机的抗噪声性能,研制非等间隔信号频谱分析方法,计算包含在回波内的多普勒信号的频率[5-7]。在这些方法中,脉冲位置幅度调制方法具有良好的抗干扰性能、仅需单个光电检测器即可实现距离速度同时测量。为了生成位置幅度调制的光脉冲序列,需要产生相应的电脉冲序列[8],本文基于信号状态机,在FPGA上实现脉冲位置调制序列,并利用可编程放大模块,根据脉冲间隔实现对信号的放大,从而得到位置幅度调制的脉冲序列。该序列可作用与电光调制器的RF端口,使电光调制器输出相应的光脉冲序列[9],再经光放大器线性放大,即可作为激光雷达的发送信号,使其具备同时测量目标距离和速度的能力。
首先,根据单位时间内激光雷达测量的空间点数确定脉冲序列的长度。设单位时间内的测量点数为M,则完成一次测量的信号长度最大为1/M。设激光雷达的最大测量距离为d,则每个脉冲的飞行时间为τ=2d/c。为了等待脉冲序列中最后一个脉冲到达激光雷达的接收机,在两次测量之间需要设置长度为τ的空闲时间间隔,因此脉冲序列的长度取1/M-τ。
然后,将序列长度1/M-τ划分为N个等间隔的时间片段,在每个时间端内的随机位置处放置一个脉冲,即可构成位置调制的脉冲序列,如图1(a)所示。使用这种调制格式可以利用数据累加为距离测量获得良好的抗噪声性能[7]。
图1 位置调制脉冲序列的格式
将窄脉冲序列看作采样脉冲,则由位置调制脉冲序列构成的回波与本地连续激光相干输出为多普勒信号的不等间隔采样,而快速傅里叶变换算法仅适用于等间隔采样数据,因此需要对接收到的回波预处理。根据傅里叶变换的定义
(1)
如果采样间隔不相等则将ΔT修改为ΔTi,得到
(2)
比较(1)式和(2)式,可以看出如果采样数据间隔不相等,只需将数据和间隔相乘,得到的新数据就可以利用FFT来计算信号的频谱,所得到的频谱与真实频谱之间仅有幅度上的差异。用多普勒测量目标的速度,仅需通过频谱计算求出多普勒信号的频率,对频谱的幅度不关心,因此在激光雷达的回波信号处理中可以使用这一方法。
然而,雷达回波通常淹没在噪声中,利用(2)式对回波脉冲幅度调整需要知道回波的位置,因此实际上需要首先利用数据累加方法确定出脉冲序列的位置,该方法存在速度测量对距离测量的依赖性。实际上,光信号的衰减和发射光强度之间存在线性关系,可以将幅度与间隔相乘这一过程调整到发射端,即将序列中每个脉冲的幅度放大到原来的ΔTi倍,构成新的位置幅度同时调制的脉冲序列,如图1(b)所示。发射这种格式的光信号,则可以将接收数据直接使用FFT就可以得到多普勒信号的频率。为了得到这种格式的光信号,需要产生相应格式的电信号。
为演示位置幅度调制脉冲序列的生成方法,本文选择利用FPGA生成伪随机序列,并利用信号放大模块放大脉冲幅度,系统的原理如图2所示。为比较原始位置调制脉冲序列和位置幅度调制序列,从DA模块引出两个输出,一个连接到示波器用于观察,另一个输出到信号放大模块。
图2 脉冲序列生成的原理
作为原理演示,本文选用的FPGA型号为STEP MAXO2-V2小脚丫开发板,DA模块选取MCP4822,其自身带有参考电压源,可作为最大电压完成轨到轨输出,并用SPI协议传输数据,其LDAC引脚可用于锁定DAC同时输出,通过软件编写设定增益选择位可选择单位增益或双倍增益输出。信号放大模块选用AD623,是一款可编程增益放大器,由单电源供电,供电范围3V~12V。
模块之间的通信采用SPI通信模式,根据SPI通信的特点,采用一个简单的线性有限状态机来实现,即每到一个时间节点需要完成对应的工作。选择使用CASE语句完成计数器的时间判断,可以很好地在对应的时间节点完成对底层基本的数据传送。
伪随机码可以通过m多项式产生,本设计中需要在一定时间T内的M个不同时间段中分别放置1个码元表示脉冲的位置,为此使用循环移位寄存器,图3为设计中使用的简单移位寄存器。按照位置幅度调制脉冲序列的构成原则,第一个脉冲幅度保持不变,然后对其后的0计数,直到遇到下一个1码元为止,0的个数为N,则将遇到的该码元放大N倍,依次形成幅度随脉冲间隔距离变化的波形。考虑到器件最大供给电压为5V,设计时应该注意到1码元对应最小幅值应为1V,对电压放大按照倍数来算最大能放大到5V,按照倍数关系,也就是说两个1码元间隔最多为4。照此确定下来,时间片M中可以有3个码元,时间片M可以是5个这样时间T为15个码元的宽度。
图3 移位寄存器结构图示例
按照前述的原理,主要是在随机序列上进行判断然后进行处理,使用一段式状态机,如图4所示,在状态S0中,遇到第一个码元,先不进行判断,接下来跳转到另一个状态S1,在S1状态中分为两种情况,第一种情况是目前状态是检测到0,另一种状态是检测到1,在检测到0的基础上进行计数用一个变量AM_X进行存储,一直重复在S1的状态,直到检测到下一个1时,然后清除AM_X的数据,给它赋值为0。然后跳转到另外一个状态S2,在S2状态下开始检测,若检测到0,进行计数AM_X自加一,然后在S2状态下继续检测,继续直到检测到1时,跳出S2状态,然后对AM_X进行清零,并且进入S1状态中。
图4 信号处理状态图
整个处理过程的状态始终在S1与S2中进行循环,使发射机总是处于发射脉冲的状态。信号放大N+1倍,不是通过程序直接倍乘,而是采用MCP41100与CP2102的联合验证调试,将DA模块的数值与MCP41100的数值结合起来,完成理论上的N+1倍的效果,这样的思路就是在对应的倍数上,使用CASE语句完成这个功能。
把程序编译下载到开发板中,LED灯闪烁,表示伪随机序列正在不断地生成,将示波器通道一接到信号放大模块的信号输出端,通道二接到DA模块的原始序列上,进行观察。如图5所示,显示了3个时间T的信号波形,明显看到黄色(通道一)信号有很明显的幅度起伏,对应于位置幅度调制脉冲序列,而绿色信号(通道二)幅度不是有很大的起伏,对应于位置调制脉冲序列。
图5 示波器观察的位置调制和位置幅度调制脉冲序列
将图5的脉冲序列在时间轴上放大,如图6所示,绿色信号为位置调制脉冲序列,标号为①和②的黄色信号一个高一个低,因为1脉冲和2脉冲之间的间隔为0,所以标号②对应的脉冲放大(0+1)倍,也就是保持幅度不变,在标号②与标号③之间存在两个0码元间隔,则对应的标号③码元的脉冲幅度幅度应放大(2+1)倍。作为原理演示,观察到两个脉冲相邻的情况,在激光雷达脉冲波形的实际制作中,可以通过程序避免这一情况的发生。
图6 位置幅度调制脉冲序列的放大显示
假设激光雷达的光源波长为1550nm,道路环境中运动目标的速度范围从行人步行速度的1m/s到高速公路两车相向而行的最大360km/h,则运动目标产生的多普勒信号频从1.29MHz到129MHz。使用这一频率范围内的多普勒信号去调制信号板生成的位置幅度电脉冲信号,得到对多普勒信号的不等间隔采样,然后直接使用FFT计算多普勒信号的频率。在仿真中,为了使数据能够与激光雷达实际波形匹配,对电脉冲序列在时间轴上做了压缩,因为作为原理演示,实验中使用的FPGA板无法产生超短脉冲序列。得到的信号频谱如图7所示,结果表明该位置幅度调制序列在速度测量方面产生的多普勒误差小70kHz,对应速度误差低于0.054m/s。距离测量方面,可与文献[10]一致,采用数据累加方法,获得很高的抗噪声性能。
图7 位置幅度调制脉冲序列被多普勒调制后直接使用FFT计算得到的频谱图
本文通过使用FPGA和信号放大模块,实现了位置幅度同时调制的脉冲序列电信号,可以将该序列作用于电光调制器的RF端口,生成相应的光脉冲序列。将位置和幅度同时调制的光脉冲序列作为汽车激光雷达的测量信号波形,可以在几微秒的时间内同时测量目标的距离和速度,且具有良好的抗噪声和干扰性能,在智能汽车道路环境感知中具有很好的应用前景。