自动驾驶数据采集与管理系统设计与实现

2023-03-04 06:37张师源孙加新
计算机技术与发展 2023年2期
关键词:工控机管理系统自动

惠 飞,张师源,孙加新,冯 耀

(长安大学 信息工程学院,陕西 西安 710064)

0 引 言

自动驾驶车辆技术能有效地减少城市交通拥堵、改善道路交通污染、提高交通安全[1],可以有效地降低人为因素引起的交通事故率,广泛应用于公共交通、货运物流、军事等领域[2]。近些年来,各大车企、互联网公司和高校都对自动驾驶技术进行了研究,自动驾驶技术在全世界开始了新一轮的核心技术发展期[3]。自动驾驶汽车搭载了大量高精度传感器[4],实时采集和监测自动驾驶汽车上各类传感器的数据是自动驾驶技术开发和测试的一个重要环节[5]。自动驾驶算法模型训练和验证需要大量数据集支撑,标注处理后的数据集对算法的训练和研究有更大的价值[6]。对实际驾驶过程中的车辆进行实时的数据采集,使自动驾驶汽车的测试验证更加真实和准确,对于提高自动驾驶测试的准确度和可靠性,减少自动驾驶技术的测试和开发周期起到重要作用[7]。

针对目前自动驾驶技术测试和开发对于实时数据的需求,该文设计实现了一种自动驾驶数据采集与管理系统。该系统利用多传感器模块化的设计[8]实时采集车辆运行过程中的车辆状态和环境数据,并利用车载工控机对采集到的数据进行数据处理,通过HTTP接口和FTP协议将数据发送至云端服务器进行存储。云端服务器包含数据采集监控平台和数据管理平台两部分,数据采集监控平台能够监控数据采集过程中车辆的实时状态和各传感器的运行连接状态。数据管理平台负责管理采集到的数据,使用MySQL数据库存储系统数据,TDengine时序数据库[9]存储传感器数据,通过系统管理员、数据管理员、普通用户三种角色[10],不同角色拥有不同操作权限,保证了数据的安全性,同时方便用户下载使用采集到的传感器数据,从而为自动驾驶技术开发和测试提供更有效的数据支持,进一步为自动驾驶技术的发展做出贡献。

1 系统结构

该系统主要由感知模块、数据处理模块、云端服务器、Web客户端四部分组成。系统总体架构如图1所示。

图1 系统总体架构

其中感知模块包含各类高精度传感器,如:组合导航、毫米波雷达、激光雷达、工业相机和CAN分析仪等,通过多传感器采集车辆状态信息(如车辆位置、车辆姿态、车速、轮速、方向盘角度、油门踏板开合度等),以及周围环境数据(如毫米波雷达数据、激光雷达点云数据、工业相机图像数据);传感器采用标准接口与工控机连接,在工控机上完成传感器的初始化工作后开始数据采集,将采集到的传感器数据进行处理、封装,通过HTTP接口和FTP协议将数据上传到云端NodeJS服务器。

云端服务器为基于Express框架的NodeJS高性能服务器[11],NodeJS由于本身异步[12]的特性,可以很好地支持高密度IO操作请求[13],保证数据采集过程中,系统能够在数据处理模块高频率上传数据时稳定运行。Express框架是一个用来快速搭建功能完整的Web应用和HTTP工具的简洁且灵活的NodeJS框架[14],使用Express框架来搭建自动驾驶数据采集与管理系统的服务器,提供接收传感器数据的HTTP接口和Web客户端需要的数据下载接口。服务器通过HTTP接口接收到数据处理模块上传的传感器数据,之后将数据存储在数据库中。

Web客户端分为数据管理平台和数据采集监控平台,数据采集监控平台可以实时监控车辆状态和传感器运行连接状态,在传感器或车辆出现异常情况时及时采取措施。数据管理平台主要负责对用户提供数据下载服务,用户登录系统后,根据角色不同展示不同菜单,可以进行数据查询、数据下载、数据下载申请、数据维护等操作。

2 硬件结构

在感知模块中,主要由ARS408-21毫米波雷达、velodyne32线激光雷达、FLIR工业相机、CAN分析仪、导远INS570D组合导航五个传感器组成。系统采用PLUSG0-CX02电源管理模块为各类传感器和工控机供电,通信模块采用华为5G CPE Pro终端,保证了数据传输过程的稳定性和实时性。系统硬件连接示意图如图2所示。

图2 系统硬件连接示意图

感知模块是系统的数据来源,感知模块传感器布设如图3所示。汽车状态通过CAN分析仪读取,CAN分析仪一端和汽车CAN总线相连,另一端通过USB串口接入工控机,读取汽车CAN总线数据;毫米波雷达安装在汽车前侧,由汽车内部走线至后备箱,通过USB串口与工控机相连;组合导航安装在车顶对角通过转换器和工控机的DB9端口相连;高速相机安装在车顶台架上,通过USB串口与工控机相连;激光雷达安装在汽车顶部台架上和工控机的以太网口相连,接收激光雷达点云数据。所有传感器接入数据处理模块,在工控机上通过程序读取CAN总线数据、激光雷达点云、毫米波雷达原始数据、高速相机视频数据、组合导航车辆位置姿态信息等。

图3 车载传感器布设实物图

数据处理模块是数据采集的关键部分,根据不同传感器接口编写相应程序读取传感器数据,再进行数据处理。完成数据处理工作后将数据封装,通过5G网络发送到云端服务器,由云端服务器进行监测、分析和数据存储。

3 软件模块

自动驾驶数据采集与管理系统的软件部分主要分为数据采集系统和数据管理系统两部分。

3.1 数据采集系统

对于数据采集系统,所有传感器初始化之后,在工控机上通过传感器采集程序采集到原始数据后,对不同传感器原始数据进行相应处理,最后通过5G网络将处理后的数据发送到云端服务器。数据采集及上传流程如图4所示。

图4 数据采集及上传流程

数据采集系统的采集端和云端服务器代码都运行在Linux系统上,所有传感器按照模块化程序设计的思路[15],能够独立运行,在后期系统运行过程中,程序的模块化设计也有利于增加额外的功能需求。

3.1.1 CAN总线数据解析

底盘通讯协议如表1所示,通过串口采集到CAN总线数据,由CAN数据解析程序将原始数据解析并封装成JSON数据包,按照20 ms采集并发送一次的频率,调用CAN总线数据接收接口上传至云端服务器。

表1 底盘通讯协议

3.1.2 组合导航数据处理

组合导航数据通过USB串口接收,在数据处理模块由组合导航解析程序根据接口数据格式解析出车辆俯仰角、方位角、横滚角、经纬度、地向速度、北向速度、东向速度、定位信息精度、定速信息精度、姿态信息精度、设备内部温度、GPS状态、轮速状态等信息。封装成JSON数据包,按照100 ms发送一次的频率,调用组合导航数据接收接口发送数据包到云端服务器。

3.1.3 毫米波雷达数据处理

毫米波雷达数据通过USB串口接收,根据ARS408雷达数据通讯协议解析出目标纵坐标、目标横坐标、目标纵向相对速度、目标横向相对速度、目标动态属性、目标雷达散射截面积、雷达状态数据等信息。将数据封装成JSON数据包,按照100 ms发送一次的频率,调用毫米波雷达数据接收接口发送数据包到云端服务器。

3.1.4 激光雷达数据处理

激光雷达数据通过以太网口接收,获取道路环境内所有激光点云的3D坐标信息和障碍物的反射率信息。将点云的空间坐标(x,y,z)及反射强度,时间戳保存为pcd文件储存在工控机本地硬盘中并将文件通过FTP协议上传至云端服务器进行存储。

3.1.5 工业相机数据处理

相机图像数据通过USB串口接收,将图像数据和时间戳保存在工控机本地硬盘中,并通过FTP协议上传至云端服务器进行存储。

3.1.6 数据采集监控模块

数据采集监控模块是数据采集系统的一部分,主要用于监控传感器连接运行状态和数据采集车辆的状态。通过传感器上传的数据报文解析到传感器运行状态;汽车CAN总线数据解析到车速、轮速、方向盘角度、油门踏板开合度等汽车状态信息,将数据实时反映在监控平台可视化界面[16],在出现异常情况时及时处理。

3.2 数据管理系统

数据管理系统用于对数据采集系统采集到的传感器数据进行管理。

3.2.1 需求分析

自动驾驶数据管理系统主要包含系统管理员、数据管理员、普通用户三种角色。具体如下:

系统管理员:系统管理员主要负责维护数据管理员和普通用户的用户信息和权限等。

数据管理员:数据管理员主要负责管理数据库中各类传感器数据,包括数据维护以及审批普通用户的数据下载申请等。

普通用户:普通用户可以利用管理系统进行数据查询和数据下载申请等。

3.2.2 功能性需求分析

功能性需求是系统必须要完成实现某些具体的软件功能,来满足系统的业务需求[17]。自动驾驶数据管理系统的功能主要分为用户注册登录、权限管理、传感器数据维护、数据下载申请与审批。

用户权限管理:负责对用户的权限进行管理,主要包括用户查阅菜单权限和用户查询及下载传感器数据的权限。

传感器数据管理:负责对系统数据库中的数据预览表进行维护,增添数据预览表记录以及更新数据保密等级。

数据下载申请与审批:包括普通用户对需要的数据进行下载使用申请和数据管理员对普通用户的申请进行审批。

3.2.3 非功能性需求分析

为了使自动驾驶数据管理系统更好地服务用户,系统必须满足以下要求:

(1)系统友好性。

系统在设计开发时需要考虑用户使用时的易操作需求[18],用户界面及字体需要简洁统一。

(2)系统安全性。

由于自动驾驶数据管理系统的特殊性,需要充分考虑数据的安全性。首先,需要设计合理的系统结构和模式;其次,严格限制不同角色的权限,避免用户直接对传感器数据进行增加、修改和删除;最后,系统需要考虑用户账户信息安全。

(3)系统稳定性。

严格执行系统的单元测试,保证系统的稳定性。当系统出现故障时,能够保证数据完整性,同时迅速恢复正常状态。

3.2.4 功能模块详细设计

本小节对数据管理系统的功能模块进行详细设计。

(1)系统首页。

用户登录数据管理系统后,根据用户角色的不同展示不同功能菜单,系统管理员可以使用用户管理功能。数据管理员可以使用数据维护、数据下载审批功能。普通用户可以进行用户基本信息(如密码、年龄、性别等)的修改;在数据信息预览页面可以查询当前用户可以下载的所有数据的描述信息;在对应的传感器数据页面可以下载数据或者申请下载数据。

(2)用户管理。

用户管理负责对系统用户进行统一管理。系统管理员可以进行用户新增和删除,以及对用户等级和用户角色等关键信息的修改,普通用户和数据管理员仅能修改自己的基本信息以及对系统用户进行查询操作。

(3)数据管理。

数据管理负责数据信息预览表中信息管理和数据库中传感器数据管理。

数据信息预览页面中,所有用户都可以查询数据预览信息,根据用户不同权限等级,将查询到不同的数据预览信息。数据管理员可以新增、修改和删除数据信息预览记录,主要包括对新采集的数据进行数据信息预览新增。在新增操作时需要填写数据名称、数据表名称、数据类型、数据保密等级、数据采集时间和数据信息描述等信息。

鉴于自动驾驶数据结构复杂、来源多样、数据特殊的特点,数据库中传感器数据直接通过数据采集子系统采集存入数据库中,通常情况不对其进行维护。特殊情况由专业技术人员进行维护操作,保证了自动驾驶数据的安全完整。

(4)数据下载申请与审批。

数据下载申请与审批是数据管理子系统的核心模块。负责为系统用户提供下载各类数据的功能。

数据下载申请可以由普通用户发起数据下载申请,由数据管理员在申请列表中查看并审批,申请通过之后用户可以在数据下载界面进行相应数据的下载。具体流程为:用户登录数据预览界面查询需要下载的数据是否为公开数据。公开数据可以直接下载,非公开数据根据当前用户权限等级判断是否允许直接下载。当前用户权限等级允许下载时,直接在数据下载界面下载数据。当前用户权限等级不够时需要在数据下载申请界面申请下载所需数据,由数据管理员审核通过后,可以在数据下载界面下载数据。

(5)操作记录。

操作记录由系统自动负责记录系统中所有用户的操作,每当用户进行数据下载、数据下载申请、数据下载申请审批、数据维护等操作时,系统自动将操作信息添加进操作记录表。操作记录模块保证了系统中所有的数据操作可追踪、可溯源,保证了系统的数据安全问题。操作记录信息对系统管理员和数据管理员可见。在操作记录页面中可以查看所有用户对数据的操作信息记录,同时可以在操作记录上添加操作描述信息。

3.2.5 数据库设计

数据库开发作为系统开发中的重要一环,数据库的设计直接影响了整个系统的运行效率。结合系统功能需求,需要对所有车载传感器采集到的数据、系统中所有的用户信息、数据下载请求记录、申请审批记录、数据维护记录、数据信息预览记录等进行存储。系统根据用户不同业务需求从数据库获取对应数据返回给客户端。

用户信息为系统中基础信息,主要包括使用系统中所有用户的信息,包括用户名、用户编号、密码、职业、用户权限等级、年龄、性别、用户角色等相关信息;数据下载申请表主要用来记录普通用户对需要的数据申请的信息和数据管理员对于用户申请的审批信息;数据信息预览表根据当前用户的角色和权限展示数据库中存储的传感器数据的信息,包括数据名称、数据类型、数据采集时间、数据描述信息等数据详细信息;数据操作记录表用来记录用户对系统中传感器数据操作的信息,包括用户名、用户编号、操作时间、数据类型、数据名称、操作类型、操作描述等。系统E-R图如图5所示。

图5 系统E-R图

考虑到传感器采集到的自动驾驶数据的存储性能、安全、效率问题,本系统将系统数据和传感器数据分开存储在不同的数据库,采用MySQL数据库存储用户信息、数据预览信息、数据下载申请审批信息和数据操作记录等系统功能性数据,采用TDengine时序数据库来存储所有传感器数据。自动驾驶数据采集与管理系统数据库结构如表2所示。

表2 自动驾驶数据采集与管理系统数据库结构

4 系统测试

本设计经过接口测试和实车测试两部分,接口测试通过接口测试工具分别对数据接口进行了1 000、2 000、5 000次压力测试,结果如表3所示;实车测试通过车辆在长安大学网联与智能汽车试验场进行数据采集测试,记录了1 000 s数据采集上传HTTP接口的响应时间,如图6所示。

表3 压力测试结果

图6 数据上传接口响应时间

测试结果表明,数据接口响应时间为8 ms左右,受网络质量影响会产生小幅度波动,且数据接口在高频率的请求下仍可以保持稳定运行,能够有效采集到自动驾驶车辆运行过程中的车辆数据和传感器数据。

基于系统需求与设计,实现了自动驾驶数据采集与管理系统Web客户端。

5 结束语

为获取自动驾驶车辆实时状态与环境数据,提高自动驾驶技术开发和测试的效率,设计并实现了一种自动驾驶数据采集与管理系统,对于系统的整体架构以及硬件结构、软件功能模块、数据库的详细设计做了详细阐述,基于此完成了整个采集与管理系统的建设。经过试验测试,自动驾驶数据采集与管理系统的数据接口在不同条件压力测试下接口响应成功率为100%,实车测试数据接口响应时间为8 ms左右,系统功能模块完整、运行稳定、数据传输时延低,能够达到稳定、实时采集自动驾驶车辆数据的目的。此外,系统采用模块化设计,易于系统开发和后期运行过程中添加配置传感器。为自动驾驶技术的开发和测试提供了数据,也能为其他数据采集系统提供参考和借鉴。

猜你喜欢
工控机管理系统自动
基于James的院内邮件管理系统的实现
自动捕盗机
定制工控机在老旧线路计算机联锁设备中的应用
中压电子束焊工控机Windows NT系统文件丢失故障的修复方法
基于LED联动显示的违停管理系统
海盾压载水管理系统
让小鸭子自动转身
自动摇摆的“跷跷板”
关于自动驾驶
基于RFID的仓储管理系统实现