APP下载

海洋激光雷达软件控制系统研究

2020-12-25程小劲曹建东

计算机技术与发展 2020年12期
关键词:工控线程激光雷达

范 米,程小劲*,曹建东,贺 岩

(1.上海工程技术大学 机械与汽车工程学院,上海 201620;2.中国科学院 上海光学精密机械研究所,上海 201800)

0 引 言

海洋激光雷达探测技术是海洋应用中一种基于蓝绿激光的先进探测技术,相较于传统声纳探测技术而言,海洋激光雷达探测范围比较小,但是由于激光的高亮度、方向性好、高相干性、传播速度快等特点,它的探测效率以及探测点密度较高,因此在海水较浅的区域具有其独特的优势[1]。

海洋激光雷达探测技术起源于20世纪60年代末,Syracuse大学的研究人员完成了激光海水深度测量系统的搭建,并初步验证了激光测深的可行性[2]。1970到1990年间,海洋激光雷达探测技术的相关研究主要侧重于实验系统,1980年,美国NASA研制了机载水文激光雷达AOL(airborne oceangraphic),采用重频为400 Hz,功率为2 kW的氦氖激光器,成功绘制出深度小于10 m的海底地貌[3]。同年,澳大利亚的研究人员研制了WRELADS系统,在平均衰减系数为0.23的水域,可测深度为30 m[4]。1981年,瑞典的研究人员成功研制了机载的FLASH系统,在衰减系数为0.6的水域,可测深度为35 m[5]。随着技术的逐渐成熟,海洋激光雷达从实验室走向商业应用,1994年,美国拥有了实用型的水文勘测系统SHOALS,采用绿光与红外光共线扫描的方式,独立的红外和拉曼海面通道实现了20°天顶角以内的精确定位[6]。而瑞典将FLASH系统升级为了HAWK EYE系统,进一步实现了全波形数据实时存储,提高了采样频率、GPS定位精度、扫描精度[7]。同时,澳大利亚也将WRELADS升级为了LADS实用机载激光水文勘测系统,测深范围为2 m~50 m[8-9]。国内相关方面的研究起步较晚,80年代末开始研制机载海洋激光雷达系统,并于90年代成功进行了海上实验。近些年在国家相关项目的资助下,由中国科学院上海光学机械精密研究所研发出了机载双频雷达Mapper5000,测深范围为0.25 m~51 m,各项技术指标,如测深能力、精度、扫描角度等,与目前国际上主要的机载激光测深系统接近[10]。

随着雷达系统技术的发展,以“硬件为核心,面向专项功能”的传统雷达系统正逐步转向以“软件技术为核心,面向实际需求”的雷达系统,优秀的激光雷达系统软件,不仅需要提供友好的交互操作,还能够提升雷达系统的自动化水平和信息化水平[11]。该文针对水下激光雷达系统开发项目软件控制系统的需求,利用多线程实现了一套海洋激光雷达系统控制软件的设计,并根据所采集的水体回波信号进行了滤波分析。

1 系统硬件组成

典型海洋激光雷达系统硬件组成如图1所示,主要包括:激光器、电机、ARM工控板、硬盘、4通道高速AD采集卡、现场可编程门阵列(FPGA)扩展板、温度传感器、深度传感器、姿态传感器、温湿度传感器以及光电倍增管(PMT),其中PMT1、PMT2接收近场回波信号,PMT3、PMT4为门控型PMT,用于接收远场回波信号。电脑(PC)、高速AD采集卡以及工控板通过交换机进行通信。以下将高速AD采集卡、FPGA扩展板一并称为FPGA。FPGA主要实现以下功能:通过RS232串口转发PC下发的指令以控制激光器、电机;设置PMT高压(增益)、采样参数,为激光器提供外触发模式下的重频和调Q信号,以及进行采样控制、存储控制;上传设备状态、AD采样数据、指令计数以及传感器数据。工控板与深度传感器、温湿度传感器以及姿态传感器采用RS232串口进行通信,温度传感器则是连接到工控板的12位ADC转换的引脚。工控板定时采集各个传感器的数据,并将各传感器数据以结构体的形式进行封装,其中包括了工控板GPS(global positioning system)周和秒,通过RS232串口一并发送到FPGA,由FPGA上传。为确保工控板系统时间与PC系统时间的一致性,与PC通过UDP实现了时间同步功能。

图1 海洋激光雷达系统硬件组成

2 系统控制软件设计

根据系统的硬件组成和控制功能的需求,将系统控制软件设计分成通信协议设计、功能模块设计、多线程设计和界面设计四个部分。

2.1 UDP通信协议设计

系统基于UDP实现网络通信,相较于TCP(transmission control protocol),UDP具有程序结构简单、速度快等优点,UDP协议的报文格式由帧头、指令计数、指令、包号、数据长度、数据、和校验以及帧尾组成。帧头、和校验以及帧尾用于判断帧的正确性;帧计数用于记录软件发送帧的次数;帧中数据长度为有效数据长度,数据区大小为定值,未使用部分以0填充,当数据超过最大长度时,将利用包号对数据进行分帧以及组合处理[12]。

为了提高UDP协议的可靠性,采用了停止等待的自动重传请求(stop-and-wait automatic repeat-request,SW_ARQ)协议保障数据传输的可靠性,基本思路为:发送方每一次发送完一个数据帧时,同时设置定时器,等待接收方收到的回复确认后,再进行下一次发送,如果接收方回复为错误数据帧或者在定时时间内无返回时,则发送方重新发送。

2.2 功能模块设计

模块划分对软件设计起着非常重要的作用,良好的模块划分具有诸多优点:使程序设计更加清晰,提高程序编写效率;对模块进行单元测试,可以增加程序稳定性;便于对某个功能的维护、修改,甚至是未来功能的扩展[13]。针对项目需求,将功能划分为7个模块:(1)激光器模块:激光重频、电流、外触发参数设置以及出关光、错误复位、状态查询功能;(2)电机模块:电机初始化功能(电机光学归零,即光学窗口出射中心点),并提供了两种工作模式(基于光学零位,根据当前折射率进行电机角度转换后的定位模式和扫描模式),同时还可以设置电机转动速度;(3)扩展板模块:PMT高压(增益)设置以及门控型PMT偏移时间设置;(4)采样模块:采样参数设置,包括采样长度、抽样频率、提取起始点以及提取长度。采样时,可以选择是否将将AD预览数据以及当前设置参数保存至当地文件,以便于后续处理;(5)硬盘存储模块:通过检索硬盘空闲区域,可以将AD数据存储至硬盘,后续可以使用硬盘回收功能将数据进行回收至本地;(6)图形显示模块:可以根据通道勾选情况,实时显示多个通道的AD采样波形,并提供了坐标轴范围、自动调整坐标轴设置、水体回波信号滤除功能以及根据折射率进行的坐标轴变换功能;(7)信息显示模块:可以显示时间、计数、电机、激光器、传感器等状态信息,并提供了时间同步功能(精确到秒)。

2.3 多线程设计

在进行耗时操作(处理大量数据)时,避免用户界面失去响应[14],软件采用如图2所示的多线程设计,主要划分为:主界面线程、数据帧封装线程、UDP发送线程、UDP接收线程、数据帧解析线程以及AD数据解析线程。

图2 多线程设计框架

主界面线程为人机交互界面,可以通过按键实现对设备的控制、状态监测,采样参数设置,对AD采样数据进行本地存储或硬盘存储,硬盘数据回收,预览AD采样波形以及滤除AD采样波形背景,实现与工控板实现时间同步等功能。数据帧封装线程将待发送指令以及数据进行封装,然后通过UDP发送线程到FPGA,由FPGA进行转发或处理,并回复。UDP接收线程接收FPGA回发的数据帧,通过数据帧解析线程,对接收的数据帧进行解析与验证,根据解析的指令做相应的处理,包括:将传感器参数以及设备状态等参数提交到主界面线程以更新界面信息,AD采样数据存储至本地以及提交到AD数据解析线程,经由AD数据解析线程解析后,再提交到主界面线程以预览AD采样波形。

2.4 界面设计

为了实现系统的人机交互操作,根据系统的功能划分,设计了如图3所示的系统界面。界面的左边为控制部分,主要控制激光器、电机、扩展板、采样和硬盘。界面的中间为波形显示部分,可以设置坐标轴、设置折射率、坐标轴转换、背景波形滤除和选择显示通道。界面的右边为状态参数显示部分,主要包括采样参数、时间同步和状态信息。

图3 用户界面

3 海洋激光雷达功能实现

根据系统的功能要求和模块设计,该系统可以实现电机角度转换、坐标轴变换、时间同步以及水体回波信号滤除等功能。

3.1 电机角度转换

海洋激光雷达在水下进行工作时,如图4所示,出射激光经过反射镜后,通过光学窗口出射,激光实际出射角度会因为介质的折射率不同而发生变化,为便于用户设置激光实际的出射角度,通过用户对折射率的设置,对电机转动角度做了相应的转换。

iairsinθair=iwatersinθwater

(1)

其中,iair、iwater分别为空气折射率和水的折射率,θair、θwater分别为激光出射角度以及激光的实际出射角度。根据式(1),即可得到实际电机定位的角度θair。基于上述公式,在本系统中电机可转动±15°,而在折射率为1.33的淡水中,实际从光窗出射的角度为±11.5°。

图4 出射光路示意图

3.2 坐标轴变换

AD原始数据为采样时间点以及采样点值,单位采样时间点代表1 ns,单位采样点值代表2.44 mV。为了使用户可以更加直观地获取采样的距离和幅值信息,软件提供了坐标轴变换功能,横坐标可以在采样时间和采样距离之间切换,同样,纵坐标也可以在采样点值和采样幅值之间变换,采样距离实际距离与水的折射率有关,采样距离与采样时间点的转换可由式(2)、式(3)导出。

vwater=clight/iwater

(2)

d=vwater*t/2

(3)

其中,vwater为激光在水中的传播速度,clight为光速,t为激光往返时间,d为激光距离。

3.3 时间同步

AD数据包含的时间信息由工控板提供,而PC与工控板的时间不一定具有同步性,这样会导致进行采样操作时的时间与保存的AD数据时间信息不一致,所以需要对PC和工控板进行时间同步。基于网络时间协议NTP(network time protocol)思想[15],如图5所示,由PC发送消息,通知工控板准备进行时间同步。工控板回复PC时,将工控板当前系统时间t1存入数据帧。经过网络时延δ,由PC接收,接收时将系统时间t2存入,发送时将系统时间t3存入。经过网络时延δ,工控板接收到时,取系统时间t4。将以上时间参数代入式(6)计算,即可获得工控板与PC的时间差,实现时间同步。

图5 时间同步

设PC与工控板相差时间为Δ,则可得到如下关系式:

t2=t1+δ+Δ

(4)

t3=t4-δ+Δ

(5)

由式(4)、式(5)推导可得时间差:

Δ=[(t2+t3)-(t1+t4)]/2

(6)

3.4 水体回波信号滤除

对AD数据进行解析后,获取的波形如图6(b)所示,该波形具有两个波峰,第一个为水体回波信号,第二个为目标回波信号。用户可以在当前环境下以及配置参数下,先采样获取水体回波信号(见图6(a)),将文件保存至本地,再读入该文件,软件将对水体回波信号保存多次平均后的数据结果,再对目标进行采样,通过水体回波信号滤除功能将采样数据与之前保存的环境水体回波数据相减,即可获取目标回波信号(见图6(c))。

(a)水体回波信号

(b)总回波信号

(c)滤除后的目标信号

4 结束语

软件控制在激光雷达系统中发挥着越来越重要的作用,该文在搭建完海洋激光雷达硬件系统的基础上,通过软件实现了对海洋激光雷达系统相关设备的可靠控制、状态参数的监测、以及AD数据处理与波形显示。接下来将从两个方面对软件控制系统进行优化,一方面通过预存储技术,通过将数据预先存入容器中,再由专门的线程进行写入本地文件,从而提高处理速度,进而实现实时本地存储。

另外在波形预览方面,可以进一步采用时间累积的方式实现伪彩色图像,进而更加直观地观测到目标距离的变化。

猜你喜欢

工控线程激光雷达
5G终端模拟系统随机接入过程的设计与实现
激光雷达实时提取甘蔗垄间导航线
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
法雷奥第二代SCALA?激光雷达
融合激光雷达与超声波数据的障碍物检测方法
Ouster发布首款全固态数字激光雷达
安全防护应贯穿工控系统全生命周期
全国政协委员何帮喜:工控网络安全防护应纳入国家战略
启明星辰网御星云 进军工控安全领域