CN114896168B - 用于自动驾驶算法开发的快速调试系统、方法以及存储器 - Google Patents

用于自动驾驶算法开发的快速调试系统、方法以及存储器 Download PDF

Info

Publication number
CN114896168B
CN114896168B CN202210672933.XA CN202210672933A CN114896168B CN 114896168 B CN114896168 B CN 114896168B CN 202210672933 A CN202210672933 A CN 202210672933A CN 114896168 B CN114896168 B CN 114896168B
Authority
CN
China
Prior art keywords
node
data
calibration
algorithm
user interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210672933.XA
Other languages
English (en)
Other versions
CN114896168A (zh
Inventor
李超群
陈远龙
隨记魁
李勇
罗风梅
李林丰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hozon New Energy Automobile Co Ltd
Original Assignee
Hozon New Energy Automobile Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hozon New Energy Automobile Co Ltd filed Critical Hozon New Energy Automobile Co Ltd
Priority to CN202210672933.XA priority Critical patent/CN114896168B/zh
Publication of CN114896168A publication Critical patent/CN114896168A/zh
Application granted granted Critical
Publication of CN114896168B publication Critical patent/CN114896168B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Abstract

本发明提供了用于自动驾驶算法开发的快速调试系统、方法以及存储器。该系统运行于PC,包括外部通信接口、控制器节点、数据观测节点、数据标定节点、用户界面显示节点。外部通信接口采集道路图像数据、整车CAN信号、感知信号、地图EHR信息。控制器节点调用自动驾驶算法,输出控制信号至执行器,将自动驾驶算法运行过程中的观测量发布出去用于用户界面显示和标定,并接收数据标定节点的标定请求,根据标定请求在线修改内存区域中指定变量的值。数据观测节点接收到观测量并对其匹配处理以便通过用户界面显示节点以曲线或者图像的形式展现出来。数据标定节点读取算法中的可供标定的变量名称,并将该变量名称和期望修改的值打包为消息包作为标定请求。

Description

用于自动驾驶算法开发的快速调试系统、方法以及存储器
技术领域
本发明涉及自动驾驶领域,尤其涉及高级驾驶辅助算法(ADAS)开发的测试、观测和标定。
背景技术
目前在高级驾驶辅助系统(ADAS)算法开发过程中,一般的会以speedGoat,AutoBox等快速原型设备进行测试,通常还会涉及到CANApe和CANOE等设备进行观测和标定,这些设备一般都比较昂贵。另外,对于自动驾驶算法开发而言,需要一个好的用户界面(UI)显示实时的感知信息,如车道线信息,目标信息等,同时显示内部处理之后的规划轨迹形状,而上述测试设备并不能很好的支持此需求。
发明内容
基于以上考虑,本发明提供一种用于自动驾驶算法开发的基于PC的快速调试系统及方法,并具备数据观测标定、用户界面(UI)显示、数据录取和数据回放等功能,通常一台中等配置的笔记本(PC)即可满足性能需求,另外只需要相应的CAN卡采集信号和USB摄像头显示道路图像即可。
本发明提供了一种用于自动驾驶算法开发的基于PC的快速调试系统,所述系统运行于PC,所述系统包括:外部通信接口、控制器节点、数据观测节点、数据标定节点、用户界面显示节点。
所述外部通信接口采集道路图像数据、整车CAN信号、感知信号、地图EHR信息。
所述控制器节点基于所述外部通信接口发送的道路图像数据、整车CAN信号、感知信号以及地图EHR信息,调用并运行自动驾驶算法,输出控制信号至对应的执行器,同时,所述控制器节点将所述自动驾驶算法运行过程中的观测量整合成一个消息包发布出去用于用户界面显示和标定,并接收所述数据标定节点的标定请求,根据所述标定请求在所述自动驾驶算法运行过程中在线修改内存区域中指定变量的值。
所述数据观测节点接收控制器节点发出的观测量并对所述观测量进行匹配处理以便通过所述用户界面显示节点以曲线或者图像的形式展现出来。
所述数据标定节点读取自动驾驶算法中的可供标定的变量名称,并将该变量名称和期望修改的值打包为消息包,向所述控制器节点发送所述标定请求。
在一个实施例中,所述数据标定节点通过c语言头文件.h读取所述可供标定的变量名称或者直接读取a2l文件获得所述可供标定的变量名称。
在一个实施例中,所述控制器节点被配置成将c++或者c语言实现的所述自动驾驶算法打包为动态链接库,然后使用python语言调用动态链接库接口;同时为了能够支持随后的观测和标定,所述控制器节点将所述观测量做成一份单独的.c和.h文件作为通信接口,利用python语言通过cffi库直接读取所述动态链接库运行过程中产生的所述观测量。
在一个实施例中,所述观测量为运行所述自动驾驶算法中所产生的内部变量。
在一个实施例中,所述外部通信接口包括:
EHR节点,用于获取地图EHR信息;
CAN节点,用于获取整车CAN信号和感知信号,其中,所述感知信号包括车道线和目标信号;以及
摄像头节点,用于采集道路图像数据。
在一个实施例中,所述系统还包括数据记录节点,用于订阅所有其他节点发布的消息包,并根据相应的配置选择将指定的消息包保存为二进制文件或者其他数据格式,供开发测试人员离线分析数据,以优化所述自动驾驶算法。
在一个实施例中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点均为在PC上运行的进程。
在一个实施例中,所述用户界面显示节点作为人机接口的交互界面,用于将自动驾驶算法开发测试人员感兴趣的原始输入数据以及所述控制器节点发布的观测量以曲线或者图像的形式展现出来,便于在线评估所述自动驾驶算法的优劣以及查找所述自动驾驶算法的程序错误并确定所述期望修改的值。
在一个实施例中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点之间的通信采用ZMQ消息队列中的Publish-Subscribe模型。
在一个实施例中,所述快速调试系统通过对不同节点指定不同优先级来优化所述快速调试系统的实时性,其中,所述控制器节点优先级最高,所述外部通信接口次之,所述数据观测节点、所述数据标定节点以及所述用户界面显示节点最次。
在一个实施例中,所述系统按以下逻辑监测任务实时运行状态:
计算出任务运行时间,若所述任务运行时间小于任务调用周期,则任务运行后令所述系统进行休眠状态;
判断当前开始运行任务的时刻和期望运行任务的时刻是否匹配,若所述当前开始运行任务的时刻晚于所述期望运行任务的时刻,则所述系统打印相关的延迟日志或者以报警的形式通知开发测试人员。
在一个实施例中,所述自动驾驶算法为高级驾驶辅助系统算法。
本发明还提供了一种用于自动驾驶算法开发的快速调试方法,所述方法基于PC执行,所述方法包括:
提供外部通信接口、控制器节点、数据观测节点、数据标定节点、用户界面显示节点;
所述外部通信接口采集道路图像数据、整车CAN信号、感知信号、地图EHR信息;
所述控制器节点基于所述外部通信接口发送的道路图像数据、整车CAN信号、感知信号以及地图EHR信息,调用并运行自动驾驶算法,输出控制信号至对应的执行器,同时,所述控制器节点将所述自动驾驶算法运行过程中的观测量整合成一个消息包发布出去用于用户界面显示和标定,并接收所述数据标定节点的标定请求,根据所述标定请求在所述自动驾驶算法运行过程中在线修改内存区域中指定变量的值;
所述数据观测节点接收控制器节点发出的观测量并对所述观测量进行匹配处理以便通过所述用户界面显示节点以曲线或者图像的形式展现出来;
所述数据标定节点读取自动驾驶算法中的可供标定的变量名称,并将该变量名称和期望修改的值打包为消息包,向所述控制器节点发送所述标定请求。
在一个实施例中,所述数据标定节点读取自动驾驶算法中的可供标定的变量名称的步骤包括:所述数据标定节点通过c语言头文件.h读取所述可供标定的变量名称或者直接读取生成的a2l文件获得所述可供标定的变量名称。
在一个实施例中,所述方法还包括:所述控制器节点将c++或者c语言实现的所述自动驾驶算法打包为动态链接库,然后使用python语言调用动态链接库接口;同时为了能够支持随后的观测和标定,所述控制器节点将所述观测量做成一份单独的.c和.h文件作为通信接口,利用python语言通过cffi库直接读取所述动态链接库运行过程中产生的所述观测量。
在一个实施例中,所述观测量为运行所述自动驾驶算法中所产生的内部变量。
在一个实施例中,所述方法还包括:提供数据记录节点,用于订阅所有其它节点发布的消息包,并根据相应的配置选择将指定的消息包保存为二进制文件或者其他数据格式,供开发测试人员离线分析数据,以优化所述自动驾驶算法。
在一个实施例中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点均为在PC上运行的进程。
在一个实施例中,所述用户界面显示节点作为人机接口的交互界面,用于将自动驾驶算法开发测试人员感兴趣的原始输入数据以及所述控制器节点发布的观测量以曲线或者图像的形式展现出来,便于在线评估所述自动驾驶算法的优劣以及查找所述自动驾驶算法的程序错误并确定所述期望修改的值。
在一个实施例中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点之间的通信采用ZMQ消息队列中的Publish-Subscribe模型。
在一个实施例中,所述方法还包括:对不同节点指定不同优先级来优化所述快速调试系统的实时性,其中,所述控制器节点优先级最高,所述外部通信接口次之,所述数据观测节点、所述数据标定节点以及所述用户界面显示节点最次。
在一个实施例中,所述方法还包括按以下逻辑监测任务实时运行状态:
计算出任务运行时间,若所述任务运行时间小于任务调用周期,则任务运行后令所述系统进行休眠状态;
判断当前开始运行任务的时刻和期望运行任务的时刻是否匹配,若所述开始运行任务的时刻晚于所述期望运行任务的时刻,则所述系统打印相关的延迟日志或者以报警的形式通知开发测试人员。
在一个实施例中,所述自动驾驶算法为高级驾驶辅助系统算法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述用于自动驾驶算法开发的快速调试方法。
与现有技术方案相比,本发明技术方案优点和有益效果如下:
首先,本发明的快速调试系统成本低,不依赖AutoBox,SpeedGoat和CANApe等硬件设备,仅需要一台中等配置的PC,且不限于操作系统平台,windows和linux均可。
其次,本发明的快速调试系统测试效率高,不需要先生成a2l文件,编译代码,刷写控制器,连接硬件设备,算法开发好后,在PC上编译为动态链接库即可,插上普通的usbcan和usbcamera即可开始测试标定。
再次,本发明的快速调试系统可视化程度高,开发人员可以通过UI显示的车道线,目标状态和内部量,实时查看软件内部状态,可视化在线分析数据,尤其是对于自动驾驶决策和轨迹规划,实时查看规划的曲线,可以更方便地在线确认问题,避免了数据录取然后离线分析数据确认问题。
附图说明
本发明的以上发明内容以及下面的具体实施方式在结合附图阅读时会得到更好的理解。需要说明的是,附图仅作为所请求保护的发明的示例。在附图中,相同的附图标记代表相同或类似的元素。
图1示出根据本发明一实施例的用于自动驾驶算法开发的快速调试系统;
图2示出根据本发明一实施例的监测任务实时运行状态的逻辑;
图3示出根据本发明一实施例的用于自动驾驶算法开发的快速调试方法流程图。
具体实施方式
以下在具体实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员了解本发明的技术内容并据以实施,且根据本说明书所揭露的说明书、权利要求及附图,本领域技术人员可轻易地理解本发明相关的目的及优点。
图1示出根据本发明一实施例的用于自动驾驶算法开发的快速调试系统。该系统包括:外部通信接口101、控制器节点102、数据观测节点103、数据标定节点104、用户界面显示节点105和数据记录节点106。该系统能在线对自动驾驶算法的内部变量进行观测和标定,并优化自动驾驶算法。
在一个实施例中,自动驾驶算法为ADAS算法。
在一个实施例中,上述节点均为运行在PC上的进程。
外部通信接口101用于采集道路图像数据、整车CAN信号、感知信号、地图HER信号。在一个实施例中,感知信号可包括车道线和目标信号。需要指出的是,感知信号可以是通过CAN协议传输,也可以通过UDP协议传输。
在一个实施例中,外部通信接口101包括EHR节点、CAN节点以及摄像头节点。摄像头节点用于采集道路图像数据。EHR节点用于获取地图EHR信息。CAN节点用于获取整车CAN信号或感知的车道线和目标信号。
一旦系统正确的采集到上述信息后,将会以zmq-publish message的形式发布出去。在一个实施例中,CAN信号发布消息的频率为100Hz;道路图像数据发布频率为25Hz;EHR信号的发布频率的10Hz。
控制器节点102接收到CAN节点发送的整车CAN信号、感知信号后,调用并运行自动驾驶算法(ADAS算法)的主算法模块(Step Function),输出控制信号以CAN信号格式发送给对应的执行器(例如,EPS,ESP,ECM和HMI等)。同时,控制器节点会将内部的观测量(例如,观测到的自动驾驶算法运行过程中的内部变量)整合成一个消息包(message packer)发布出去,便于用户界面显示和标定。另外,控制器节点会接收标定节点的标定请求,在线(即,在自动驾驶算法运行过程中)修改内存区域中指定变量的值。
在一个实施例中,为了提高编程效率,控制器节点可以把c++或者c语言实现的ADAS算法打包为动态链接库(通常在windows下为dll文件,linux下为so文件),然后使用python语言调用动态链接库接口即可。同时为了能够支持随后的测量和标定,需要将一些内部变量(即观测量)做成一份单独的.c和.h文件,作为通信接口,python可以通过cffi等库直接读取动态链接库运行过程中的这些内部变量。
数据观测节点103对控制器节点102发出的观测量消息包(即,自动驾驶算法运行过程中的内部变量)进行观测,经过匹配处理(即,将不同观测量匹配于具体的物理含义,这是因为用户界面需要知道内部变量对应的是道路图像、车道线、目标,还是规划的轨迹等)后,可以通过用户界面显示,例如显示道路图像、车道线、目标、规划的轨迹等。
数据标定节点104读取自动驾驶算法中的可供标定的变量名称,并将该变量名称和期望修改的值打包为消息包(message packet),请求控制器节点响应。在一个实施例中,数据标定节点104可以通过c语言头文件.h读取可供标定的变量名称或者直接读取生成的a2l文件获得可供标定的变量名称。数据标定节点104根据标定工程师在标定列表中所选择的变量,将该变量名称和期望修改的值打包为消息包,请求控制器节点响应。
在传统的汽车ECU算法开发过程中,有一套成熟的基于XCP协议的观测标定协议,通过CAN网络或者以太网来读取或者修改指定ECU地址中变量,这通常需要CANAPE和A2L文件的配合。本发明的上述系统架构不依赖于XCP协议,也不需要额外的测试设备(例如CANAPE设备),由于没有硬件上的外部通讯,可以直接读取和修改编译好的代码块堆栈中指定全局变量名称的值,实现在线标定。开发人员只需要将需要观测和标定的变量做成全局变量,在.c文件和.h文件中进行声明和定义。此过程可以人工完成,也可以通过Matlab/Simulink软件自动生成。
用户界面显示节点105作为人机接口(HMI)的交互界面,可将自动驾驶算法开发测试人员感兴趣的原始输入数据(例如,车速)以及控制器节点的内部变量(即观测量)以曲线或者图像的形式展现出来,便于在线评估自动驾驶算法的优劣以及查找自动驾驶算法的程序错误,并由此确定需要将内部变量进行怎样调节。现有技术中由于采用工控机进行自动驾驶算法调试,所以用户界面需要自己设计,而本发明由于基于PC来进行自动驾驶算法测试和标定,所以可直接利用用户界面显示节点105在PC显示屏上显示车道线、目标状态和内部量,实时查看软件内部状态,可视化在线分析数据,尤其是对于自动驾驶决策和轨迹规划,实时查看规划的曲线,可以更方便地在线确认问题,避免了数据录取然后离线分析数据确认问题。
数据记录节点106通常会订阅所有其他节点发布的消息包(message packet),根据相应的配置(例如,通过配置文件),选择将指定的消息保存为二进制文件或者其他数据格式,便于后续开发测试人员离线分析数据,一旦根据采集到的数据优化或更新好自动驾驶算法后,重新编译生成新的控制器程序(即自动驾驶算法),进行算法的迭代测试。相比现有技术中更新算法费劲、环节众多,本发明采用上述系统架构,能简单、高效地实现数据闭环(即,自动驾驶算法运行之后产生数据、分析数据中的问题、优化算法,再重新生成新控制器程序这一个闭环)。
在一个实施例中,数据记录节点106可以是日志数据库。
在一个实施例中,本发明的快速调试系统的网络通信采用ZMQ消息队列中的Publish-Subscribe模型,即,一个节点发布消息包(message packet)后,订阅此消息的节点都将会收到该消息包,得到最新的消息值。
此外,由于本发明的技术方案在PC上实现,故需要考虑实时性的问题,实时性主要包括两个方面:一个是算法的主程序(step function)是否能在规定的任务调用周期(taskloop time)内跑完,例如有一个路径规划算法,其任务调用周期为10ms,那么从进入算法的主程序(step function)开始,到完成算法的主程序(step function)结束后,这段时间的长度需要小于10ms,通常不超过调用周期的50%;另一方面,实时性体现在能否在规定的时刻运行主算法(step function),这意味着在指定的任务调度时刻到来时,CPU需要放弃其他的任务,来执行指定的任务(例如,ADAS算法里面的主程序)。
图2示出根据本发明一实施例的监测任务实时运行状态的逻辑。程序开始后,计算出运行每一次任务(task)的时间点或第N次运行任务时期望的时间点,例如10ms,20ms,30ms,...。
首先,系统需要计算出任务运行时间(delta_t),若任务运行时间(delta_t)小于任务调用周期(例如,10ms),则任务运行(do_step_function)后系统进行休眠状态(sleep_function),另外系统还需要知道当前开始运行任务的时间和期望运行任务的时间是否匹配,假如任务运行时间(delta_t)比较大,导致开始运行第N个任务的时间大于期望的时间(例如,N*10ms),则系统应该打印相关的延迟(lagging)日志或者以报警的形式通知开发测试人员。由于操作系统的限制,通常Windows和Linux操作系统并非实时操作系统,因此本质上的实时性并不能完全保证,但是可以通过指定不同进程(即节点)的优先级和实时监测运行状态来优化控制器的实时性。本方案中,控制器节点优先级最高,其次是外部通信节点。数据观测节点、数据标定节点和用户界面显示节点最次。
图3示出根据本发明一实施例的用于自动驾驶算法开发的快速调试方法流程图。该方法包括,但不限于,以下步骤。
步骤301:提供外部通信接口、控制器节点、数据观测节点、数据标定节点、用户界面显示节点。
步骤302:所述外部通信接口采集道路图像数据、整车CAN信号、感知信号、地图EHR信息。
步骤303:所述控制器节点基于所述外部通信接口发送的道路图像数据、整车CAN信号、感知信号以及地图EHR信息,调用并运行自动驾驶算法,输出控制信号至对应的执行器,同时,所述控制器节点将所述自动驾驶算法运行过程中的观测量整合成一个消息包发布出去用于用户界面显示和标定,并接收所述数据标定节点的标定请求,根据所述标定请求在所述自动驾驶算法运行过程中在线修改内存区域中指定变量的值。
步骤304:所述数据观测节点接收控制器节点发出的观测量并对所述观测量进行匹配处理以便通过所述用户界面显示节点以曲线或者图像的形式展现出来。
步骤305:所述数据标定节点读取自动驾驶算法中的可供标定的变量名称,并将该变量名称和期望修改的值打包为消息包,向所述控制器节点发送所述标定请求。
在一个实施例中,所述数据标定节点读取自动驾驶算法中的可供标定的变量名称的步骤包括:所述数据标定节点通过c语言头文件.h读取所述可供标定的变量名称或者直接读取生成的a2l文件获得所述可供标定的变量名称。
在一个实施例中,所述方法还包括:所述控制器节点将c++或者c语言实现的所述自动驾驶算法打包为动态链接库,然后使用python语言调用动态链接库接口;同时为了能够支持随后的观测和标定,所述控制器节点将所述观测量做成一份单独的.c和.h文件作为通信接口,利用python语言通过cffi库直接读取所述动态链接库运行过程中产生的所述观测量。
在一个实施例中,所述观测量为运行所述自动驾驶算法中所产生的内部变量。
在一个实施例中,所述方法还包括:提供数据记录节点,用于订阅所有其它节点发布的消息包,并根据相应的配置选择将指定的消息包保存为二进制文件或者其他数据格式,供开发测试人员离线分析数据,以优化所述自动驾驶算法。
在一个实施例中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点均为在PC上运行的进程。
在一个实施例中,所述用户界面显示节点作为人机接口的交互界面,用于将自动驾驶算法开发测试人员感兴趣的原始输入数据以及所述控制器节点发布的观测量以曲线或者图像的形式展现出来,便于在线评估所述自动驾驶算法的优劣以及查找所述自动驾驶算法的程序错误并确定所述期望修改的值。
在一个实施例中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点之间的通信采用ZMQ消息队列中的Publish-Subscribe模型。
在一个实施例中,所述方法还包括:对不同节点指定不同优先级来优化所述快速调试系统的实时性,其中,所述控制器节点优先级最高,所述外部通信接口次之,所述数据观测节点、所述数据标定节点以及所述用户界面显示节点最次。
在一个实施例中,所述方法还包括按以下逻辑监测任务实时运行状态:
计算出任务运行时间,若所述任务运行时间小于任务调用周期,则任务运行后令所述系统进行休眠状态;
判断当前开始运行任务的时刻和期望运行任务的时刻是否匹配,若所述开始运行任务的时刻晚于所述期望运行任务的时刻,则所述系统打印相关的延迟日志或者以报警的形式通知开发测试人员。
在一个实施例中,所述自动驾驶算法为高级驾驶辅助系统算法。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机可读信号介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读信号介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质、或任何上述介质的组合。
本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
这里采用的术语和表述方式只是用于描述,本发明并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
同样,需要指出的是,虽然本发明已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,在没有脱离本发明精神的情况下还可做出各种等效的变化或替换,因此,只要在本发明的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。

Claims (20)

1.一种用于自动驾驶算法开发的快速调试系统,其特征在于,所述系统运行于PC,所述系统包括:
外部通信接口、控制器节点、数据观测节点、数据标定节点、用户界面显示节点;
所述外部通信接口采集道路图像数据、整车CAN信号、感知信号、地图EHR信息;
所述控制器节点基于所述外部通信接口发送的道路图像数据、整车CAN信号、感知信号以及地图EHR信息,调用并运行自动驾驶算法,输出控制信号至对应的执行器,同时,所述控制器节点将所述自动驾驶算法运行过程中的观测量整合成一个消息包发布出去用于用户界面显示和标定,并接收所述数据标定节点的标定请求,根据所述标定请求在所述自动驾驶算法运行过程中在线修改内存区域中指定变量的值;
所述数据观测节点接收控制器节点发出的观测量并对所述观测量进行匹配处理以便通过所述用户界面显示节点以曲线或者图像的形式展现出来;
所述数据标定节点读取自动驾驶算法中的可供标定的变量名称,并将该变量名称和期望修改的值打包为消息包,向所述控制器节点发送所述标定请求;
其中,所述系统还包括数据记录节点,用于订阅所有其他节点发布的消息包,并根据相应的配置选择将指定的消息包保存为二进制文件或者其他数据格式,供开发测试人员离线分析数据,以优化所述自动驾驶算法;
其中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点均为在PC上运行的进程。
2.如权利要求1所述的快速调试系统,其特征在于,所述数据标定节点通过c语言头文件.h读取所述可供标定的变量名称或者直接读取a2l文件获得所述可供标定的变量名称。
3.如权利要求1所述的快速调试系统,其特征在于,所述控制器节点被配置成将c++或者c语言实现的所述自动驾驶算法打包为动态链接库,然后使用python语言调用动态链接库接口;同时为了能够支持随后的观测和标定,所述控制器节点将所述观测量做成一份单独的.c和.h文件作为通信接口,利用python语言通过cffi库直接读取所述动态链接库运行过程中产生的所述观测量。
4.如权利要求1所述的快速调试系统,其特征在于,所述观测量为运行所述自动驾驶算法中所产生的内部变量。
5.如权利要求1所述的快速调试系统,其特征在于,所述外部通信接口包括:
EHR节点,用于获取地图EHR信息;
CAN节点,用于获取整车CAN信号和感知信号,其中,所述感知信号包括车道线和目标信号;以及
摄像头节点,用于采集道路图像数据。
6.如权利要求1所述的快速调试系统,其特征在于,所述用户界面显示节点作为人机接口的交互界面,用于将自动驾驶算法开发测试人员感兴趣的原始输入数据以及所述控制器节点发布的观测量以曲线或者图像的形式展现出来,便于在线评估所述自动驾驶算法的优劣以及查找所述自动驾驶算法的程序错误并确定所述期望修改的值。
7.如权利要求1所述的快速调试系统,其特征在于,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点之间的通信采用ZMQ消息队列中的Publish-Subscribe模型。
8.如权利要求1所述的快速调试系统,其特征在于,所述快速调试系统通过对不同节点指定不同优先级来优化所述快速调试系统的实时性,其中,所述控制器节点优先级最高,所述外部通信接口次之,所述数据观测节点、所述数据标定节点以及所述用户界面显示节点最次。
9.如权利要求1所述的快速调试系统,其特征在于,所述系统按以下逻辑监测任务实时运行状态:
计算出任务运行时间,若所述任务运行时间小于任务调用周期,则任务运行后令所述系统进行休眠状态;
判断当前开始运行任务的时刻和期望运行任务的时刻是否匹配,若所述当前开始运行任务的时刻晚于所述期望运行任务的时刻,则所述系统打印相关的延迟日志或者以报警的形式通知开发测试人员。
10.如权利要求1所述的快速调试系统,其特征在于,所述自动驾驶算法为高级驾驶辅助系统算法。
11.一种用于自动驾驶算法开发的快速调试方法,其特征在于,所述方法基于PC执行,所述方法包括:
提供外部通信接口、控制器节点、数据观测节点、数据标定节点、用户界面显示节点;
所述外部通信接口采集道路图像数据、整车CAN信号、感知信号、地图EHR信息;
所述控制器节点基于所述外部通信接口发送的道路图像数据、整车CAN信号、感知信号以及地图EHR信息,调用并运行自动驾驶算法,输出控制信号至对应的执行器,同时,所述控制器节点将所述自动驾驶算法运行过程中的观测量整合成一个消息包发布出去用于用户界面显示和标定,并接收所述数据标定节点的标定请求,根据所述标定请求在所述自动驾驶算法运行过程中在线修改内存区域中指定变量的值;
所述数据观测节点接收控制器节点发出的观测量并对所述观测量进行匹配处理以便通过所述用户界面显示节点以曲线或者图像的形式展现出来;
所述数据标定节点读取自动驾驶算法中的可供标定的变量名称,并将该变量名称和期望修改的值打包为消息包,向所述控制器节点发送所述标定请求;
其中,所述方法还包括:
提供数据记录节点,用于订阅所有其它节点发布的消息包,并根据相应的配置选择将指定的消息包保存为二进制文件或者其他数据格式,供开发测试人员离线分析数据,以优化所述自动驾驶算法;
其中,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点均为在PC上运行的进程。
12.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,所述数据标定节点读取自动驾驶算法中的可供标定的变量名称的步骤包括:
所述数据标定节点通过c语言头文件.h读取所述可供标定的变量名称或者直接读取生成的a2l文件获得所述可供标定的变量名称。
13.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,还包括:
所述控制器节点还将c++或者c语言实现的所述自动驾驶算法打包为动态链接库,然后使用python语言调用动态链接库接口;同时为了能够支持随后的观测和标定,所述控制器节点将所述观测量做成一份单独的.c和.h文件作为通信接口,利用python语言通过cffi库直接读取所述动态链接库运行过程中产生的所述观测量。
14.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,所述观测量为运行所述自动驾驶算法中所产生的内部变量。
15.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,所述用户界面显示节点作为人机接口的交互界面,用于将自动驾驶算法开发测试人员感兴趣的原始输入数据以及所述控制器节点发布的观测量以曲线或者图像的形式展现出来,便于在线评估所述自动驾驶算法的优劣以及查找所述自动驾驶算法的程序错误并确定所述期望修改的值。
16.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,所述外部通信接口、所述控制器节点、所述数据观测节点、所述数据标定节点、所述用户界面显示节点以及所述数据记录节点之间的通信采用ZMQ消息队列中的Publish-Subscribe模型。
17.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,还包括:
对不同节点指定不同优先级来优化实时性,其中,所述控制器节点优先级最高,所述外部通信接口次之,所述数据观测节点、所述数据标定节点以及所述用户界面显示节点最次。
18.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,还包括按以下逻辑监测任务实时运行状态:
计算出任务运行时间,若所述任务运行时间小于任务调用周期,则任务运行后进行休眠状态;
判断当前开始运行任务的时刻和期望运行任务的时刻是否匹配,若所述开始运行任务的时刻晚于所述期望运行任务的时刻,则打印相关的延迟日志或者以报警的形式通知开发测试人员。
19.如权利要求11所述的用于自动驾驶算法开发的快速调试方法,其特征在于,所述自动驾驶算法为高级驾驶辅助系统算法。
20.一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行如权利要求11至19任一项所述的用于自动驾驶算法开发的快速调试方法。
CN202210672933.XA 2022-06-14 2022-06-14 用于自动驾驶算法开发的快速调试系统、方法以及存储器 Active CN114896168B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210672933.XA CN114896168B (zh) 2022-06-14 2022-06-14 用于自动驾驶算法开发的快速调试系统、方法以及存储器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210672933.XA CN114896168B (zh) 2022-06-14 2022-06-14 用于自动驾驶算法开发的快速调试系统、方法以及存储器

Publications (2)

Publication Number Publication Date
CN114896168A CN114896168A (zh) 2022-08-12
CN114896168B true CN114896168B (zh) 2024-04-30

Family

ID=82728205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210672933.XA Active CN114896168B (zh) 2022-06-14 2022-06-14 用于自动驾驶算法开发的快速调试系统、方法以及存储器

Country Status (1)

Country Link
CN (1) CN114896168B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225925B (zh) * 2023-02-21 2023-11-21 东南大学 一种计算机软件在线实时可视化调试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN200993741Y (zh) * 2006-12-13 2007-12-19 北京交通大学 一种基于串行通信的混合动力电动汽车匹配标定装置
CN105741635A (zh) * 2016-03-01 2016-07-06 武汉理工大学 一种多功能道路实验车平台
CN110562170A (zh) * 2019-09-26 2019-12-13 陕西重型汽车有限公司 一种无人车3d场景显示数据记录与模块调试系统及方法
CN113552861A (zh) * 2021-07-28 2021-10-26 东风悦享科技有限公司 一种自动驾驶车辆mcu在线调参系统及其方法
CN114489007A (zh) * 2022-01-18 2022-05-13 上汽通用五菱汽车股份有限公司 整车在环测试方法、系统、设备及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN200993741Y (zh) * 2006-12-13 2007-12-19 北京交通大学 一种基于串行通信的混合动力电动汽车匹配标定装置
CN105741635A (zh) * 2016-03-01 2016-07-06 武汉理工大学 一种多功能道路实验车平台
CN110562170A (zh) * 2019-09-26 2019-12-13 陕西重型汽车有限公司 一种无人车3d场景显示数据记录与模块调试系统及方法
CN113552861A (zh) * 2021-07-28 2021-10-26 东风悦享科技有限公司 一种自动驾驶车辆mcu在线调参系统及其方法
CN114489007A (zh) * 2022-01-18 2022-05-13 上汽通用五菱汽车股份有限公司 整车在环测试方法、系统、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN114896168A (zh) 2022-08-12

Similar Documents

Publication Publication Date Title
CN108563214B (zh) 车辆诊断方法、装置及设备
US20200073712A1 (en) Method, apparatus, device and medium for processing topological relation of tasks
US10579453B2 (en) Stream-processing data
CN112596972B (zh) 车载设备的测试方法、装置、系统、计算机设备
US9507374B1 (en) Selecting most compatible synchronization strategy to synchronize data streams generated by two devices
US10816951B2 (en) Emulation of a control system and control method for abnormality detection parameter verification
US10503146B2 (en) Control system, control device, and control method
CN109523752B (zh) 一种设备故障预警方法、装置、电子设备和介质
US10127093B1 (en) Method and apparatus for monitoring a message transmission frequency in a robot operating system
US11789854B2 (en) Hybrid interface testing
CN115437339A (zh) 远程诊断方法及装置、电子设备和存储介质
CN114896168B (zh) 用于自动驾驶算法开发的快速调试系统、方法以及存储器
KR20120133711A (ko) 제품 테스트용 차량 데이터 제공 장치 및 방법
CN110266774B (zh) 车联网数据质量的检验方法、装置、设备及存储介质
CN111736951A (zh) 自动驾驶的仿真方法、计算机设备、及存储介质
CN111857103B (zh) 一种车辆诊断方法、装置、设备及存储介质
CN116450511A (zh) 信息更新方法、装置、电子设备和计算机可读介质
CN113326113B (zh) 任务处理方法及装置、电子设备和存储介质
CN116257422A (zh) 自测用例生成方法、装置及电子设备
CN110084298B (zh) 用于检测图像相似度的方法及装置
US20160275002A1 (en) Image capture in application lifecycle management for documentation and support
EP4270121A1 (en) Method and system for seamless transition of runtime system from controller device to digitalization platform
RU131883U1 (ru) Устройство управления качеством программно-аппаратного комплекса
CN116954957A (zh) 信息获取方法、装置、设备及存储介质
CN116955126A (zh) 操作系统的稳定性测试方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 314500 988 Tong Tong Road, Wu Tong Street, Tongxiang, Jiaxing, Zhejiang

Applicant after: United New Energy Automobile Co.,Ltd.

Address before: 314500 988 Tong Tong Road, Wu Tong Street, Tongxiang, Jiaxing, Zhejiang

Applicant before: Hezhong New Energy Vehicle Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant