Skip to content

Latest commit

 

History

History
98 lines (47 loc) · 4.4 KB

06_error_code_intro_CN.md

File metadata and controls

98 lines (47 loc) · 4.4 KB

6 错误码介绍

6.1 概述

rs_driver在内部发生某些事件时,会通过回调函数通知调用者。

这些事件定义在rs_driver工程文件common/error_code.hpp中。

这些事件有三个级别:通知、警告和错误。每个事件有一个错误码,这里介绍错误码的含义。

6.2 错误码

  • ERRCODE_SUCCESS

​ 正常状态。rs_driver不会通知这个事件。

  • ERRCODE_PCAPEXIT

​ 播放PCAP文件时,rs_driver在每次解析到文件结束时,通知调用者。

​ 通过选项RSInputParam.pcap_repeat,可以指定是否循环播放文件。如果是循环播放,rs_driver报告事件ERRCODE_PCAPREPEAT;如果不是,则报告事件ERRCODE_PCAPEXIT。

  • ERRCODE_PCAPREPEAT

​ 请参考ERRCODE_PCAPEXIT的说明。

  • ERRCODE_MSOPTIMEOUT

rs_driver持续等待和接收MSOP Packet,如果在1秒内没有收到MSOP Packet,rs_driver报告事件ERRCODE_MSOPTIMEOUT。

  • ERRCODE_NODIFOPRECV

​ 对于机械式雷达,DIFOP Packet中包含垂直角标定参数。如果缺少这些参数,则点云是扁平的。

​ 收到MSOP Packet时,会检查这些参数是否可用。如果在1秒内不可用,rs_driver报告事件ERRCODE_NODIFOPRECV。

​ 对于MEMS雷达,标定工作在雷达内部已经完成,DIFOP Packet不是必要的,所以rs_driver不会报告这个事件。

  • ERRCODE_WRONGMSOPLEN

​ 每一种雷达的MSOP Packet的包长是确定的,且包头开始位置包括若干标志字节。

rs_driver接收到MSOP Packet后,先检查包长是否匹配,如果不匹配,则报告错误ERRCODE_WRONGMSOPLEN,然后再检查标志字节,如果不匹配,则报告错误ERRCODE_MSOPID。

  • ERRCODE_WRONGMSOPID

​ 请参考ERRCODE_WRONGMSOPLEN的说明。

  • ERRCODE_WRONGMSOPBLKID

​ 对于机械式雷达,MSOP Packet中,一组点组成一个Block,每个Block也有标志字节。rs_driver检查Block的标志字节是否匹配,如果不匹配,则报告错误ERRCODE_WRONGMSOPBLKID。

  • ERRCODE_WRONGDIFOPLEN

​ 每一种雷达的DIFOP Packet的包长是确定的,且包头的开始位置包括若干标志字节。

rs_driver接收到DIFOP Packet后,会先检查包长是否匹配,如果不匹配,则报告错误ERRCODE_WRONGDIFOPLEN,然后再检查标志字节,如果不匹配,则报告错误ERRCODE_DIFOPID。

  • ERRCODE_WRONGDIFOPID

​ 请参考ERRCODE_WRONGDIFOPLEN的说明。

  • ERRCODE_ZEROPOINTS

rs_driver构建好点云后,通过回调函数返还给调用者。返还前,它检查点云是否为空(即一个点都没有),如果为空,则报告错误ERRCODE_ZEROPOINTS。

  • ERRCODE_PKTBUFOVERFLOW

rs_driver有两个线程:接收线程和处理线程。为了让接收线程尽快接收,防止丢包,两个线程之间有一个MSOP/DIFOP Packet队列,接收线程将Packet放入队列,处理线程从队列中取出Packet。

​ 如果处理线程太忙,来不及读出Packet,则这个队列的长度会超过指定的阈值,这时rs_driver会清空队列,并报告错误ERRCODE_PKTBUFOVERFLOW。

  • ERRCODE_CLOUDOVERFLOW

rs_driver从MSOP Packet解析点,并将它们分割成点云帧。

​ 对于机械式雷达,按照Block的水平角分帧;对于MEMS雷达,根据Packet的序列号分帧。

​ 如果Packet中的数据有问题,不能触发分帧,则rs_driver将在当前点云实例中持续累积点,并持续消耗内存。为了避免这个问题,rs_driver在收到解析MSOP Packet时,检查当前点云实例中点的数量,如果超过了指定的阈值,则报告错误ERRCODE_CLOUDOVERFLOW。

  • ERRCODE_STARTBEFOREINIT

​ 使用rs_driver包括三个步骤:创建实例、初始化Init()、和启动Start()。使用者调用Start()之前必须先调用Init(),如果没有遵循这个次序,则rs_driver报告错误ERRCODE_STARTBEFOREINIT。

  • ERRCODE_PCAPWRONGPATH

​ 解析PCAP文件时,rs_driver从读取RSInputParam.pcap_path指定的文件路径读取PCAP数据。如果这个文件打开失败,则rs_driver报告错误ERRCODE_PCAPWRONGPATH。

  • ERRCODE_POINTCLOUDNULL

rs_driver不负责分配点云实例,它通过回调函数从调用者获得空闲的点云实例,填充它,然后通过回调函数返还给调用者。

​ 如果从调用者获得的点云实例无效,则rs_driver报告错误ERRCODE_POINTCLOUDNULL。