一种检测视觉系统的健康状态的方法及装置转让专利

申请号 : CN201910668155.5

文献号 : CN110381310B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘永光

申请人 : 北京猎户星空科技有限公司

摘要 :

本申请公开一种检测视觉系统的健康状态的方法及装置,属于人工智能技术领域,该方法包括:当满足设定的对视觉系统的健康状态进行检测的条件时,对视觉系统中的每个摄像头,循环执行:向该摄像头发送用于获取一帧图像的指令,根据指令的响应结果和预设的健康状态打分规则对该摄像头的健康状态进行打分,确定循环次数达到N时,综合该摄像头的N次得分确定该摄像头的健康状态,这样,向每个摄像头发送N次图像获取指令,根据每次指令的响应结果对该摄像头进行打分,进而根据N次打分来综合确定该摄像头的健康状态,能更准确地反映出该摄像头当前的健康状态,因此,检测的准确率较高。

权利要求 :

1.一种检测视觉系统的健康状态的方法,其特征在于,所述视觉系统包括主摄像头和次摄像头,所述方法包括:当满足设定的对视觉系统的健康状态进行检测的条件时,对所述视觉系统中的每个摄像头N次执行:向摄像头发送用于获取一帧图像的指令,根据所述指令的响应结果和预设的健康状态打分规则对摄像头的健康状态进行打分,其中,N为大于1的整数;

针对所述视觉系统中的每个摄像头,根据摄像头的N次得分确定摄像头的健康得分,根据摄像头的健康得分和摄像头的健康阈值确定摄像头的健康状态;

其中,所述次摄像头的健康阈值是根据所述主摄像头的健康阈值、所述主摄像头的图像采集帧数和所述次摄像头的图像采集帧数计算的,且所述次摄像头的健康阈值与所述次摄像头的图像采集帧数正相关,其中,针对所述主摄像头和所述次摄像头中的每个摄像头,每采集一帧图像则其图像采集帧数加1,摄像头的所述图像采集帧数能够直观反映出摄像头的使用频率。

2.如权利要求1所述的方法,其特征在于,所述指令的响应结果包括未获取到图像、获取到图像且图像正常或获取到图像且图像不正常。

3.如权利要求1所述的方法,其特征在于,根据摄像头的N次得分确定摄像头的健康得分,包括:步骤a:根据摄像头的第i次得分、摄像头的第i-1次得分和设定的遗忘因子,对摄像头的第i次得分进行更新,得到摄像头更新后的第i次得分,其中,初始时i=1,且摄像头的初始得分预先设定;

步骤b:若确定i小于N,则将i的值更新为i+1,执行所述步骤a的操作;若确定i等于N,则将摄像头更新后的第N次得分确定为摄像头的健康得分。

4.如权利要求3所述的方法,其特征在于,根据以下公式得到摄像头更新后的第i次得分:摄像头更新后的第i次得分=摄像头的第i-1次得分*(1-λ)+摄像头的第i次得分*λ;

其中,λ为设定的遗忘因子,0<λ<1。

5.如权利要求1所述的方法,其特征在于,根据摄像头的健康得分和摄像头的健康阈值确定摄像头的健康状态,包括:若确定摄像头的健康得分大于摄像头的健康阈值,则确定摄像头可用;

若确定摄像头的健康得分不大于摄像头的健康阈值,则确定摄像头不可用。

6.如权利要求1所述的方法,其特征在于,针对所述视觉系统中的每个摄像头,在首次向摄像头发送用于获取一帧图像的指令之前,还包括:确定成功打开摄像头、且成功打开用于从摄像头获取图像的通道。

7.如权利要求6所述的方法,其特征在于,若确定未成功打开摄像头或者未成功打开用于从摄像头获取图像的通道,则还包括:确定摄像头不可用。

8.如权利要求5或7所述的方法,其特征在于,确定摄像头不可用之后,还包括:若摄像头为主摄像头,则指示所述视觉系统进行重置;

若摄像头为次摄像头,则发送用于表示所述次摄像头存在异常的信息。

9.如权利要求1所述的方法,其特征在于,所述次摄像头的健康阈值小于所述主摄像头的健康阈值。

10.如权利要求1所述的方法,其特征在于,根据以下公式计算所述次摄像头的健康阈值threshold2:其中,threshold1为所述主摄像头的健康阈值;odom1为所述主摄像头的图像采集帧数;

odom2为所述次摄像头的图像采集帧数。

11.一种检测视觉系统的健康状态的装置,其特征在于,所述视觉系统包括主摄像头和次摄像头,所述装置包括:打分模块,用于当满足设定的对视觉系统的健康状态进行检测的条件时,对所述视觉系统中的每个摄像头N次执行:向摄像头发送用于获取一帧图像的指令,根据所述指令的响应结果和预设的健康状态打分规则对摄像头的健康状态进行打分,其中,N为大于1的整数;

确定模块,用于针对所述视觉系统中的每个摄像头,根据摄像头的N次得分确定摄像头的健康得分,根据摄像头的健康得分和摄像头的健康阈值确定摄像头的健康状态;

计算模块,用于根据所述主摄像头的健康阈值、所述主摄像头的图像采集帧数和所述次摄像头的图像采集帧数计算所述次摄像头的健康阈值,所述次摄像头的健康阈值与所述次摄像头的图像采集帧数正相关,其中,针对所述主摄像头和所述次摄像头中的每个摄像头,每采集一帧图像则其图像采集帧数加1,摄像头的所述图像采集帧数能够直观反映出摄像头的使用频率。

12.如权利要求11所述的装置,其特征在于,所述指令的响应结果包括未获取到图像、获取到图像且图像正常或获取到图像且图像不正常。

13.如权利要求11所述的装置,其特征在于,所述确定模块具体根据以下步骤确定摄像头的健康得分:步骤a:根据摄像头的第i次得分、摄像头的第i-1次得分和设定的遗忘因子,对摄像头的第i次得分进行更新,得到摄像头更新后的第i次得分,其中,初始时i=1,且摄像头的初始得分预先设定;

步骤b:若确定i小于N,则将i的值更新为i+1,执行所述步骤a的操作;若确定i等于N,则将摄像头更新后的第N次得分确定为摄像头的健康得分。

14.如权利要求13所述的装置,其特征在于,所述确定模块具体根据以下公式得到摄像头更新后的第i次得分:摄像头更新后的第i次得分=摄像头的第i-1次得分*(1-λ)+摄像头的第i次得分*λ;

其中,λ为设定的遗忘因子,0<λ<1。

15.如权利要求11所述的装置,其特征在于,所述确定模块根据摄像头的健康得分和摄像头的健康阈值确定摄像头的健康状态具体为:若确定摄像头的健康得分大于摄像头的健康阈值,则确定摄像头可用;

若确定摄像头的健康得分不大于摄像头的健康阈值,则确定摄像头不可用。

16.如权利要求11所述的装置,其特征在于,所述打分模块还用于:针对所述视觉系统中的每个摄像头,在首次向摄像头发送用于获取一帧图像的指令之前,确定成功打开摄像头、且成功打开用于从摄像头获取图像的通道。

17.如权利要求16所述的装置,其特征在于,所述确定模块还用于:若确定未成功打开摄像头或者未成功打开用于从摄像头获取图像的通道,则确定摄像头不可用。

18.如权利要求15或17所述的装置,其特征在于,还包括故障处理模块,用于:若摄像头为主摄像头,则在确定摄像头不可用之后,指示所述视觉系统进行重置;

若摄像头为次摄像头,则在确定摄像头不可用之后,发送用于表示所述次摄像头存在异常的信息。

19.如权利要求11所述的装置,其特征在于,所述次摄像头的健康阈值小于所述主摄像头的健康阈值。

20.如权利要求11所述的装置,其特征在于,所述计算模块具体用于根据以下公式计算所述次摄像头的健康阈值threshold2:其中,threshold1为所述主摄像头的健康阈值;odom1为所述主摄像头的图像采集帧数;

odom2为所述次摄像头的图像采集帧数。

21.一种电子设备,其特征在于,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至10任一权利要求所述的方法。

22.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于执行如权利要求1至10任一权利要求所述的方法。

说明书 :

一种检测视觉系统的健康状态的方法及装置

技术领域

[0001] 本申请涉及人工智能技术领域,尤其涉及一种检测视觉系统的健康状态的方法及装置。

背景技术

[0002] 随着人工智能技术的快速发展,出现了越来越多的机器人,一般地,机器人的视觉系统主要包括一个前置广角摄像头和一个后置广角摄像头,视觉系统与人脸识别、人脸跟随、人物引领等多种应用场景都密不可分,对机器人可否正常工作起着至关重要的作用,因此,一般会在特定时刻比如开机自检时对视觉系统的健康状态进行检测,以判断其是否可用。
[0003] 现有技术中,对视觉系统的健康状态进行检测的方法是,切换到前置广角摄像头,从前置广角摄像头读取一帧图像,检查读取结果是否正常,其中,如果读取到图像则确定前置广角摄像头可用,如果未读取到图像则确定前置广角摄像头不可用;切换到后置广角摄像头,从后置广角摄像头读取一帧图像,检查读取结果是否正常,类似地,如果读取到图像则确定后置广角摄像头可用,如果未读取到图像则确定后置广角摄像头不可用。如果确定前置广角摄像头或后置广角摄像头任意一个摄像头不可用,则判定视觉系统不可用,实际上,一次未获取到图像并不代表下一次也获取不到图像,所以这样仅凭一帧图像的获取情况决定摄像头是否可用的做法比较武断,容易出现检测不准确的情况。

发明内容

[0004] 本申请实施例提供一种检测视觉系统的健康状态的方法及装置,用以解决现有技术中存在的对视觉系统的健康状态进行检测的方式不准确的问题。
[0005] 第一方面,本申请实施例提供的一种检测视觉系统的健康状态的方法,包括:
[0006] 当满足设定的对视觉系统的健康状态进行检测的条件时,对所述视觉系统中的每个摄像头N次执行:向该摄像头发送用于获取一帧图像的指令,根据所述指令的响应结果和预设的健康状态打分规则对该摄像头的健康状态进行打分,其中,N为大于1的整数;
[0007] 根据该摄像头的N次得分确定该摄像头的健康状态。
[0008] 本申请实施例中,当满足设定的对视觉系统的健康状态进行检测的条件时,对视觉系统中的每个摄像头,循环执行:向该摄像头发送用于获取一帧图像的指令,根据指令的响应结果和预设的健康状态打分规则对该摄像头的健康状态进行打分,确定循环次数达到N时,综合该摄像头的N次得分确定该摄像头的健康状态,这样,向每个摄像头发送N次图像获取指令,根据每次指令的响应结果对该摄像头进行打分,进而根据N次打分来综合确定该摄像头的健康状态,能更准确地反映出该摄像头当前的健康状态,因此,检测的准确率较高。
[0009] 可选地,所述指令的响应结果包括未获取到图像、获取到图像且图像正常或获取到图像且图像不正常。
[0010] 可选地,根据该摄像头的N次得分确定该摄像头的健康状态,包括:
[0011] 根据该摄像头的N次得分确定该摄像头的健康得分;
[0012] 根据该摄像头的健康得分和该摄像头的健康阈值确定该摄像头的健康状态。
[0013] 可选地,根据该摄像头的N次得分确定该摄像头的健康得分,包括:
[0014] 步骤a:根据该摄像头的第i次得分、该摄像头的第i-1次得分和设定的遗忘因子,对该摄像头的第i次得分进行更新,初始时i=1,且该摄像头的初始得分预先设定;
[0015] 步骤b:若确定i小于N,则将i的值更新为i+1,执行所述步骤a的操作;若确定i等于N,确定该摄像头更新后的第N次得分为该摄像头的健康得分。
[0016] 可选地,根据以下公式确定该摄像头更新后的第i次得分:
[0017] 该摄像头更新后的第i次得分=该摄像头的第i-1次得分*(1-λ)+该摄像头的第i次得分*λ;
[0018] 其中,λ为设定的遗忘因子,0<λ<1。
[0019] 可选地,根据该摄像头的健康得分和该摄像头的健康阈值确定该摄像头的健康状态,包括:
[0020] 若确定该摄像头的健康得分大于该摄像头的健康阈值,则确定该摄像头可用;
[0021] 若确定该摄像头的健康得分不大于该摄像头的健康阈值,则确定该摄像头不可用。
[0022] 可选地,在首次向该摄像头发送用于获取一帧图像的指令之前,还包括:
[0023] 确定成功打开该摄像头、且成功打开用于从该摄像头获取图像的通道。
[0024] 可选地,若确定未成功打开该摄像头或者未成功打开用于从该摄像头获取图像的通道,则还包括:
[0025] 确定该摄像头不可用。
[0026] 可选地,确定该摄像头不可用之后,还包括:
[0027] 若该摄像头为主摄像头,则指示所述视觉系统进行重置;
[0028] 若该摄像头为次摄像头,则发送用于表示所述次摄像头存在异常的信息。
[0029] 可选地,该摄像头为次摄像头,所述次摄像头的健康阈值小于主摄像头的健康阈值。
[0030] 可选地,当满足设定的对视觉系统的健康状态进行检测的条件时,还包括:
[0031] 根据所述主摄像头的健康阈值、所述主摄像头的图像采集帧数和所述次摄像头的图像采集帧数,计算所述次摄像头的健康阈值。
[0032] 可选地,根据以下公式计算所述次摄像头的健康阈值threshold2:
[0033]
[0034] 其中,threshold1为所述主摄像头的健康阈值;odom1为所述主摄像头的图像采集帧数;odom2为所述次摄像头的图像采集帧数。
[0035] 第二方面,本申请实施例提供的一种检测视觉系统的健康状态的装置,包括:
[0036] 打分模块,用于当满足设定的对视觉系统的健康状态进行检测的条件时,对所述视觉系统中的每个摄像头N次执行:向该摄像头发送用于获取一帧图像的指令,根据所述指令的响应结果和预设的健康状态打分规则对该摄像头的健康状态进行打分,其中,N为大于1的整数;
[0037] 确定模块,用于根据该摄像头的N次得分确定该摄像头的健康状态。
[0038] 可选地,所述指令的响应结果包括未获取到图像、获取到图像且图像正常或获取到图像且图像不正常。
[0039] 可选地,所述确定模块具体用于:
[0040] 根据该摄像头的N次得分确定该摄像头的健康得分;
[0041] 根据该摄像头的健康得分和该摄像头的健康阈值确定该摄像头的健康状态。
[0042] 可选地,所述确定模块具体用于:
[0043] 步骤a:根据该摄像头的第i次得分、该摄像头的第i-1次得分和设定的遗忘因子,对该摄像头的第i次得分进行更新,初始时i=1,且该摄像头的初始得分预先设定;
[0044] 步骤b:若确定i小于N,则将i的值更新为i+1,执行所述步骤a的操作;若确定i等于N,确定该摄像头更新后的第N次得分为该摄像头的健康得分。
[0045] 可选地,所述确定模块具体用于根据以下公式确定该摄像头更新后的第i次得分:
[0046] 该摄像头更新后的第i次得分=该摄像头的第i-1次得分*(1-λ)+该摄像头的第i次得分*λ;
[0047] 其中,λ为设定的遗忘因子,0<λ<1。
[0048] 可选地,所述确定模块具体用于:
[0049] 若确定该摄像头的健康得分大于该摄像头的健康阈值,则确定该摄像头可用;
[0050] 若确定该摄像头的健康得分不大于该摄像头的健康阈值,则确定该摄像头不可用。
[0051] 可选地,所述打分模块还用于:
[0052] 在首次向该摄像头发送用于获取一帧图像的指令之前,确定成功打开该摄像头、且成功打开用于从该摄像头获取图像的通道。
[0053] 可选地,所述确定模块还用于:
[0054] 若确定未成功打开该摄像头或者未成功打开用于从该摄像头获取图像的通道,则确定该摄像头不可用。
[0055] 可选地,还包括故障处理模块,用于:
[0056] 若该摄像头为主摄像头,则在确定该摄像头不可用之后,指示所述视觉系统进行重置;
[0057] 若该摄像头为次摄像头,则在确定该摄像头不可用之后,发送用于表示所述次摄像头存在异常的信息。
[0058] 可选地,该摄像头为次摄像头,所述次摄像头的健康阈值小于主摄像头的健康阈值。
[0059] 可选地,当满足设定的对视觉系统的健康状态进行检测的条件时,还包括计算模块,用于:
[0060] 根据所述主摄像头的健康阈值、所述主摄像头的图像采集帧数和所述次摄像头的图像采集帧数,计算所述次摄像头的健康阈值。
[0061] 可选地,所述计算模块具体用于根据以下公式计算所述次摄像头的健康阈值threshold2:
[0062]
[0063] 其中,threshold1为所述主摄像头的健康阈值;odom1为所述主摄像头的图像采集帧数;odom2为所述次摄像头的图像采集帧数。
[0064] 第三方面,本申请实施例提供的一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
[0065] 存储器存储有可被至少一个处理器执行的指令,该指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述检测视觉系统的健康状态的方法。
[0066] 第四方面,本申请实施例提供的一种计算机可读介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述检测视觉系统的健康状态的方法。
[0067] 另外,第二方面至第四方面中任一种设计方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
[0068] 本申请的这些方面或其它方面在以下实施例的描述中会更加简明易懂。

附图说明

[0069] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0070] 图1为本申请实施例提供的一种次摄像头的健康阈值与次摄像头的图像采集帧数之间的关系示意图;
[0071] 图2为本申请实施例提供的一种检测视觉系统的健康状态的方法的流程图;
[0072] 图3为本申请实施例提供的一种根据摄像头的N次得分确定该摄像头的健康状态的方法的流程图;
[0073] 图4为本申请实施例提供的连续出现DqueueError类型故障时,图像帧数与得分之间的关系示意图;
[0074] 图5为本申请实施例提供的连续出现FrameHeaderError类型故障时,图像帧数与得分之间的关系示意图;
[0075] 图6为本申请实施例提供的在第10帧出现DqueueError类型故障、第30帧出现FrameHeaderError类型故障时,图像帧数与得分之间的关系示意图;
[0076] 图7为本申请实施例提供的又一种检测视觉系统的健康状态的方法的流程图;
[0077] 图8为本申请实施例提供的一种用于实现检测视觉系统的健康状态的方法的电子设备的硬件结构示意图;
[0078] 图9为本申请实施例提供的一种检测视觉系统的健康状态的装置的结构示意图。

具体实施方式

[0079] 为了解决现有技术中存在的对视觉系统的健康状态进行检测的方式不准确的问题,本申请实施例提供了一种检测视觉系统的健康状态的方法及装置。
[0080] 以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0081] 实际应用中,机器人视觉系统中包括的摄像头个数可根据实际需求确定,比如2个、3个、4个都可以。具体实施时,摄像头每采集一帧图像其图像采集帧数就会增1,即摄像头的图像采集帧数相当于摄像头的里程计计数,能够表征摄像头的工作量,可直观反映出摄像头的使用频率。例如,机器人的视觉系统包括2个摄像头,一个前置广角摄像头和一个后置广角摄像头,观察机器人视觉系统中各摄像头的图像采集帧数可知,前置广角摄像头的使用频率较高,后置广角摄像头的使用频率较低。一般地,如果后置广角摄像头没有出现严重问题是不影响视觉系统的正常使用的,因此,对视觉系统中的各摄像头适宜采用不同的检测标准,比如设定不同的健康阈值,而现有技术中对视觉系统中的各摄像头采用同样的检测标准,这样容易造成后置广角摄像头出现异常视觉系统即被判定为不可用而影响用户使用的情况。
[0082] 为此,在本申请实施例中,将视觉系统中常用的一个或多个摄像头作为主摄像头,即将视觉系统中使用频率最高的一个或使用频率较高的多个摄像头作为主摄像头,即可将视觉系统中图像采集帧数最多的一个或图像采集帧数较多的多个摄像头作为主摄像头,例如上述2个摄像头的视觉系统中的前置广角摄像头;将视觉系统中主摄像头以外的其它摄像头作为次摄像头,例如上述2个摄像头的视觉系统中的后置广角摄像头;为主摄像头设置较大的健康阈值、为次摄像头设置较小的健康阈值,以降低对次摄像头的健康检测标准。
[0083] 视觉系统中主摄像头的具体数量可以根据实际应用场景确定,本发明实施例不做具体限制。
[0084] 在一种可能的实施方式下,分别为主摄像头和次摄像头设置健康阈值,保证主摄像头的健康阈值大于次摄像头的健康阈值即可,比如直接将主摄像头的健康阈值设置为0.8,将次摄像头的健康阈值设置为0.6。
[0085] 在另一种可能的实施方式下,仅设置主摄像头的健康阈值,然后根据主摄像头的健康阈值、主摄像头的图像采集帧数和次摄像头的图像采集帧数,计算次摄像头的健康阈值。
[0086] 比如,根据以下公式计算次摄像头的健康阈值threshold2:
[0087]
[0088] 其中,threshold1为主摄像头的健康阈值;odom1为主摄像头的图像采集帧数;odom2为次摄像头的图像采集帧数。
[0089] 假设主摄像头的健康阈值threshold1=0.8,主摄像头的图像采集帧数odom1=100,则次摄像头的健康阈值threshold2与次摄像头的图像采集帧数odom2正相关,参见图
1,图1为次摄像头的健康阈值与次摄像头的图像采集帧数之间的关系示意图,其中,当odom1=10时,有threshold2=0.4;当odom2=100时,有threshold2=0.8。
[0090] 需要说明的是,当视觉系统中的主摄像头有多个时,上述公式中的threshold1可是任意选择的一个主摄像头的健康阈值,也可以是使用频率最高的一个主摄像头的健康阈值。
[0091] 另外,当视觉系统中的主摄像头有多个时,根据任意选择的一个主摄像头的健康阈值,例如使用频率最高的一个主摄像头的健康阈值,还可以根据以上公式计算视觉系统中其它各摄像头(包括其它主摄像头和次摄像头)的健康阈值。
[0092] 再比如,将主摄像头的健康阈值设置为0.8,然后计算次摄像头的图像采集帧数与主摄像头的图像采集帧数的比值,将该比值与0.8的乘积作为次摄像头的健康阈值。
[0093] 另外,在现有技术中,在对视觉系统的健康状态进行检测时,切换到前置广角摄像头,从前置广角摄像头读取一帧图像,检查读取结果是否正常;切换到后置广角摄像头,从后置广角摄像头读取一帧图像,检查读取结果是否正常,如果确定前置广角摄像头或后置广角摄像头任意一个摄像头出现读取结果异常,则判定视觉系统不可用,实际上,一次未获取到图像并不代表下一次也获取不到图像,所以这样仅凭一帧图像的获取情况决定摄像头是否可用的做法比较武断,容易出现检测不准确的情况。
[0094] 为了解决上述问题,本申请实施例中,当满足设定的对视觉系统的健康状态进行检测的条件时,对视觉系统中的每个摄像头,循环执行:向该摄像头发送用于获取一帧图像的指令,根据指令的响应结果和预设的健康状态打分规则对该摄像头的健康状态进行打分,确定循环次数达到N时,综合该摄像头的N次得分确定该摄像头的健康状态,这样,向每个摄像头发送N次图像获取指令,根据每次指令的响应结果对该摄像头进行打分,进而根据N次打分来综合确定该摄像头的健康状态,能更准确地反映出该摄像头当前的健康状态,因此,检测的准确率较高。
[0095] 下面以视觉系统中包括2个摄像头:一个前置广角摄像头(主摄像头)和一个后置广角摄像头(次摄像头)为例,对本申请实施例进行介绍。
[0096] 具体实施时,确定满足设定的对视觉系统的健康状态进行检测的条件时,比如机器人开机或者是开机后接收到对视觉系统的健康状态进行检测的指令,可对视觉系统中的每个摄像头分别进行检测,具体地,参见图2,图2为本申请实施例提供的一种检测视觉系统的健康状态的方法的流程图,包括以下步骤:
[0097] S201:打开视觉系统中的一个摄像头。
[0098] S202:判断该摄像头是否打开成功,若是,则进入S203;否则,进入S209。
[0099] S203:打开用于从该摄像头获取图像的通道。
[0100] S204:判断从该摄像头获取图像的通道是否打开成功,若是,则进入S205;否则,进入S209。
[0101] S205:向该摄像头发送用于获取一帧图像的指令。
[0102] S206:根据指令的响应结果和预设的健康状态打分规则对该摄像头的健康状态进行打分。
[0103] 其中,指令的响应结果包括未获取到图像(可标记为DqueueError)、获取到图像且图像正常(可标记为NiceShot)或获取到图像且图像不正常(可标记为FrameHeaderError)这里,图像正常是指图像的帧头为预设格式,图像不正常是指图像的帧头不为预设格式。
[0104] 具体实施时,对每种响应结果可对摄像头打不同的分数,比如,响应结果为DqueueError时打-10分,响应结果为NiceShot时打1分,响应结果为FrameHeaderError时打0分。
[0105] S207:判断对该摄像头的打分次数是否达到N次,若是,则进入S208;否则,进入S205。
[0106] 其中,N为大于1的整数。
[0107] S208:根据该摄像头的N次得分确定该摄像头的健康状态。
[0108] 具体地,参见图3,图3为本申请实施例提供的一种根据摄像头的N次得分确定该摄像头的健康状态的方法的流程图,包括以下步骤:
[0109] S301a:将i赋值为1,并设定摄像头的初始得分。
[0110] 其中,该摄像头的初始得分即第零次得分。
[0111] S302a:根据该摄像头的第i次得分、该摄像头的第i-1次得分和设定的遗忘因子,对该摄像头的第i次得分进行更新。
[0112] 具体实施时,可根据以下公式确定该摄像头更新后的第i次得分:
[0113] 该摄像头更新后的第i次得分=该摄像头的第i-1次得分*(1-λ)+该摄像头的第i次得分*λ;
[0114] 其中,λ为设定的遗忘因子,0<λ<1,代表该摄像头的历史得分与当前得分之间的加权比例。
[0115] 假设初始得分为1,图4为连续出现DqueueError类型故障时,图像帧数与得分之间的关系示意图;图5为连续出现FrameHeaderError类型故障时,图像帧数与得分之间的关系示意图;图6为在第10帧出现DqueueError类型故障、第30帧出现FrameHeaderError类型故障时,图像帧数与得分之间的关系示意图。
[0116] S303a:判断i是否达到N,若否,则进入S304a;若是,则进入S305a。
[0117] S304a:将i的值更新为i+1,返回S302a。
[0118] S305a:确定该摄像头更新后的第N次得分为该摄像头的健康得分。
[0119] S306a:根据该摄像头的健康得分和该摄像头的健康阈值确定该摄像头的健康状态。
[0120] 具体地,若确定该摄像头的健康得分大于该摄像头的健康阈值,则确定该摄像头可用;若确定该摄像头的健康得分不大于该摄像头的健康阈值,则确定该摄像头不可用。
[0121] 当然,在得到该摄像头的N次得分之后,也可以根据以下公式确定该摄像头的健康得分S:
[0122]
[0123] 其中,Si代表该摄像头的第i次得分,wi代表该摄像头的第i次得分的权重,N次得分的总权重为1。
[0124] 进一步地,根据该摄像头的健康得分和该摄像头的健康阈值确定该摄像头的健康状态,在此不再赘述。
[0125] 这样,综合考虑了该摄像头的历史得分与当前时刻的得分,对于刚刚发生的故障,需要等待稳定一段时间才可认为其正常可用,对于故障率较高的摄像头,相当于执行了更严格的检测标准。
[0126] S209:对视觉系统进行重置。
[0127] 实际应用中,视觉系统都具有重置功能,向视觉系统发送用于指示进行重置的指令即可对视觉系统进行重置。
[0128] 上述流程中,若该摄像头为次摄像头,则在确定满足设定的对视觉系统的健康状态进行检测的条件时,还可根据设定的主摄像头的健康阈值、主摄像头的图像采集帧数和次摄像头的图像采集帧数,计算次摄像头的健康阈值,因为主摄像头和次摄像头的图像采集帧数是实时变化的,所以次摄像头的健康阈值也是根据主摄像头和次摄像头的图像采集帧数自适应调整的,这样,便于灵活配置检测方案,减少次摄像头的硬件故障对用户体验造成的影响。
[0129] 另外,若该摄像头为主摄像头,则在确定该摄像头不可用之后,还可指示视觉系统进行重置,重置后可进行下一轮检测,若该摄像头为次摄像头,则在确定该摄像头不可用之后,可发送用于表示次摄像头存在异常的信息。
[0130] 下面以先检测次摄像头再检测主摄像头为例对本申请实施例进行介绍。
[0131] 具体地,参见图7,图7为本申请实施例提供的又一种检测视觉系统的健康状态的方法的流程图,包括以下步骤:
[0132] S701:确定满足设定的对视觉系统的健康状态进行检测的条件。
[0133] 其中,对视觉系统的健康状态进行检测的条件可以是机器人开机,也可以是开机后接收到对视觉系统的健康状态进行检测的指令。
[0134] S702:根据主摄像头的健康阈值、主摄像头的图像采集帧数和次摄像头的图像采集帧数,计算次摄像头的健康阈值。
[0135] 比如,可以根据以下公式计算次摄像头的健康阈值threshold2:
[0136]
[0137] 其中,threshold1为主摄像头的健康阈值,预先设定;odom1为主摄像头的图像采集帧数;odom2为次摄像头的图像采集帧数。
[0138] S703:打开次摄像头,并打开从次摄像头获取图像的通道。
[0139] 这里,如果打开次摄像头失败或者打开从次摄像头获取图像的通道失败,则说明次摄像头不可用,则可发送用于表示次摄像头存在异常的信息。
[0140] S704:向次摄像头发送用于获取一帧图像的指令,根据指令的响应结果和预设的健康状态打分规则对次摄像头的健康状态进行打分。
[0141] S705:判断对次摄像头的打分次数是否达到N,若是,则进入S706;否则,进入S704。
[0142] S706:根据次摄像头的N次得分确定次摄像头的健康状态。
[0143] 具体地,根据设定的初始得分、设定的遗忘因子和次摄像头的第1次得分,对次摄像头的第1次得分进行更新,进而根据次摄像头更新后的第1次得分、设定的遗忘因子和次摄像头的第2次得分,对次摄像头的第2次得分进行更新后,依次迭代,直至对次摄像头的第N次得分进行更新,将次摄像头更新后的第N次得分确定为次摄像头的健康得分,之后,可判断次摄像头的健康得分是否大于次摄像头的健康阈值,若是,则确定次摄像头可用;若否,则确定次摄像头不可用,此时,可发送用于表示次摄像头存在异常的信息,并继续执行后续对主摄像头进行检测的流程。
[0144] 可选地,次摄像头更新后的第i次得分=次摄像头的第i-1次得分*(1-λ)+次摄像头的第i次得分*λ;
[0145] 其中,λ为设定的遗忘因子,0<λ<1,代表次摄像头的历史得分与当前得分之间的加权比例。
[0146] S707:打开主摄像头,并打开从主摄像头获取图像的通道。
[0147] 这里,如果打开主摄像头失败或者打开从主摄像头获取图像的通道失败,则说明主摄像头发生了较严重的故障,此时,可对视觉系统进行重置,重置后可进行下一轮检测。
[0148] S708:向主摄像头发送用于获取一帧图像的指令,根据指令的响应结果和预设的健康状态打分规则对主摄像头的健康状态进行打分。
[0149] S709:判断对主摄像头的打分次数是否达到N,若是,则进入S710;否则,进入S708。
[0150] S710:根据主摄像头的N次得分确定主摄像头的健康状态。
[0151] 具体地,根据设定的初始得分、设定的遗忘因子和主摄像头的第1次得分,对主摄像头的第1次得分进行更新,进而根据主摄像头更新后的第1次得分、设定的遗忘因子和主摄像头的第2次得分,对主摄像头的第2次得分进行更新,依次迭代,直至对主摄像头的第N次得分进行更新,将主摄像头更新后的第N次得分确定为主摄像头的健康得分,之后,可判断主摄像头的健康得分是否大于主摄像头的健康阈值,若是,则确定主摄像头可用;若否,则确定主摄像头不可用,此时,可对视觉系统进行重置,重置后进入下一轮检测。
[0152] 可选地,主摄像头更新后的第i次得分=主摄像头的第i-1次得分*(1-λ)+主摄像头的第i次得分*λ;
[0153] 其中,λ为设定的遗忘因子,0<λ<1,代表主摄像头的历史得分与当前得分之间的加权比例。
[0154] 具体实施时,也可先检测主摄像头再检测次摄像,在此不再赘述。
[0155] 参见图8所示,为本申请实施例提供的一种电子设备的结构示意图,该电子设备包括收发器801以及处理器802等物理器件,其中,处理器802可以是一个中央处理单元(central processing unit,CPU)、微处理器、专用集成电路、可编程逻辑电路、大规模集成电路、或者为数字处理单元等等。收发器801用于电子设备和其他设备进行数据收发。
[0156] 该电子设备还可以包括存储器803用于存储处理器802执行的软件指令,当然还可以存储电子设备需要的一些其他数据,如电子设备的标识信息、电子设备的加密信息、用户数据等。存储器803可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器803也可以是非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器803是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器803可以是上述存储器的组合。
[0157] 本申请实施例中不限定上述处理器802、存储器803以及收发器801之间的具体连接介质。本申请实施例在图8中仅以存储器803、处理器802以及收发器801之间通过总线804连接为例进行说明,总线在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0158] 处理器802可以是专用硬件或运行软件的处理器,当处理器802可以运行软件时,处理器802读取存储器803存储的软件指令,并在所述软件指令的驱动下,执行前述实施例中涉及的检测视觉系统的健康状态的方法。
[0159] 当本申请实施例中提供的方法以软件或硬件或软硬件结合实现的时候,电子设备中可以包括多个功能模块,每个功能模块可以包括软件、硬件或其结合。具体的,参见图9所示,为本申请实施例提供的一种检测视觉系统的健康状态的装置的结构示意图,包括打分模块901、确定模块902。
[0160] 打分模块901,用于当满足设定的对视觉系统的健康状态进行检测的条件时,对所述视觉系统中的每个摄像头N次执行:向该摄像头发送用于获取一帧图像的指令,根据所述指令的响应结果和预设的健康状态打分规则对该摄像头的健康状态进行打分,其中,N为大于1的整数;
[0161] 确定模块902,用于根据该摄像头的N次得分确定该摄像头的健康状态。
[0162] 可选地,所述指令的响应结果包括未获取到图像、获取到图像且图像正常或获取到图像且图像不正常。
[0163] 可选地,所述确定模块902具体用于:
[0164] 根据该摄像头的N次得分确定该摄像头的健康得分;
[0165] 根据该摄像头的健康得分和该摄像头的健康阈值确定该摄像头的健康状态。
[0166] 可选地,所述确定模块902具体用于:
[0167] 步骤a:根据该摄像头的第i次得分、该摄像头的第i-1次得分和设定的遗忘因子,对该摄像头的第i次得分进行更新,初始时i=1,且该摄像头的初始得分预先设定;
[0168] 步骤b:若确定i小于N,则将i的值更新为i+1,执行所述步骤a的操作;若确定i等于N,则确定该摄像头更新后的第N次得分为该摄像头的健康得分。
[0169] 可选地,所述确定模块902具体用于根据以下公式确定该摄像头更新后的第i次得分:
[0170] 该摄像头更新后的第i次得分=该摄像头的第i-1次得分*(1-λ)+该摄像头的第i次得分*λ;
[0171] 其中,λ为设定的遗忘因子,0<λ<1。
[0172] 可选地,所述确定模块902具体用于:
[0173] 若确定该摄像头的健康得分大于该摄像头的健康阈值,则确定该摄像头可用;
[0174] 若确定该摄像头的健康得分不大于该摄像头的健康阈值,则确定该摄像头不可用。
[0175] 可选地,所述打分模块901还用于:
[0176] 在首次向该摄像头发送用于获取一帧图像的指令之前,确定成功打开该摄像头、且成功打开用于从该摄像头获取图像的通道。
[0177] 可选地,所述确定模块902还用于:
[0178] 若确定未成功打开该摄像头或者未成功打开用于从该摄像头获取图像的通道,则确定该摄像头不可用。
[0179] 可选地,还包括故障处理模块903,用于:
[0180] 若该摄像头为主摄像头,则在确定该摄像头不可用之后,指示所述视觉系统进行重置;
[0181] 若该摄像头为次摄像头,则在确定该摄像头不可用之后,发送用于表示所述次摄像头存在异常的信息。
[0182] 可选地,该摄像头为次摄像头,所述次摄像头的健康阈值小于主摄像头的健康阈值。
[0183] 可选地,当满足设定的对视觉系统的健康状态进行检测的条件时,还包括计算模块904,用于:
[0184] 根据所述主摄像头的健康阈值、所述主摄像头的图像采集帧数和所述次摄像头的图像采集帧数,计算所述次摄像头的健康阈值。
[0185] 可选地,所述计算模块904具体用于根据以下公式计算所述次摄像头的健康阈值threshold2:
[0186]
[0187] 其中,threshold1为所述主摄像头的健康阈值;odom1为所述主摄像头的图像采集帧数;odom2为所述次摄像头的图像采集帧数。
[0188] 本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。各个模块相互之间的耦合可以是通过一些接口实现,这些接口通常是电性通信接口,但是也不排除可能是机械接口或其它的形式接口。因此,作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方,也可以分布到同一个或不同设备的不同位置上。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0189] 本申请实施例还提供了一种计算机可读存储介质,存储为执行上述处理器所需执行的计算机可执行指令,其包含用于执行上述处理器所需执行的程序。
[0190] 在一些可能的实施方式中,本申请提供的检测视觉系统的健康状态的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行本说明书上述描述的根据本申请各种示例性实施方式的检测视觉系统的健康状态的方法中的步骤。
[0191] 所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0192] 本申请的实施方式的用于检测视觉系统的健康状态的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0193] 可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0194] 可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0195] 可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0196] 应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
[0197] 此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0198] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0199] 本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0200] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0201] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0202] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0203] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。