CN114367983A - 异常处理方法、机器人、搬运系统、程序产品及存储介质 - Google Patents

异常处理方法、机器人、搬运系统、程序产品及存储介质 Download PDF

Info

Publication number
CN114367983A
CN114367983A CN202111643037.2A CN202111643037A CN114367983A CN 114367983 A CN114367983 A CN 114367983A CN 202111643037 A CN202111643037 A CN 202111643037A CN 114367983 A CN114367983 A CN 114367983A
Authority
CN
China
Prior art keywords
exception
code
module
list
abnormal
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.)
Granted
Application number
CN202111643037.2A
Other languages
English (en)
Other versions
CN114367983B (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.)
Beijing Kuangshi Robot Technology Co Ltd
Original Assignee
Beijing Kuangshi Robot Technology 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 Beijing Kuangshi Robot Technology Co Ltd filed Critical Beijing Kuangshi Robot Technology Co Ltd
Priority to CN202111643037.2A priority Critical patent/CN114367983B/zh
Publication of CN114367983A publication Critical patent/CN114367983A/zh
Application granted granted Critical
Publication of CN114367983B publication Critical patent/CN114367983B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J11/00Manipulators not otherwise provided for
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65GTRANSPORT OR STORAGE DEVICES, e.g. CONVEYORS FOR LOADING OR TIPPING, SHOP CONVEYOR SYSTEMS OR PNEUMATIC TUBE CONVEYORS
    • B65G43/00Control devices, e.g. for safety, warning or fault-correcting

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Numerical Control (AREA)
  • Manipulator (AREA)

Abstract

本申请涉及机器人技术领域,提供一种异常处理方法、机器人、搬运系统、程序产品及存储介质。其中,异常处理方法应用于机器人,其步骤包括:从发生异常的模块接收与异常对应的异常码;根据异常码确定异常的异常属性;根据异常属性执行异常的处理流程。该方法逻辑简单,处理异常效率较高;并且,该方法可以由一个异常管理模块统一执行,使得对于异常的管理是集中的,方便了异常的统一处理。

Description

异常处理方法、机器人、搬运系统、程序产品及存储介质
技术领域
本发明涉及机器人技术领域,具体而言,涉及一种异常处理方法、机器人、搬运系统、程序产品及存储介质。
背景技术
目前,搬运机器人越来越多应用到制造工厂、智能电商等领域,以替代大量简单重复的人工劳动。机器人长时间负载运行难免会出现各种异常问题,此时对异常的处理方式显得尤为重要。然而,现有的异常处理方法流程过于复杂,处理效率低下。
发明内容
本申请实施例的目的在于提供一种异常处理方法、机器人、搬运系统、程序产品及存储介质,以改善上述技术问题。
为实现上述目的,本申请提供如下技术方案:
第一方面,本申请实施例提供一种异常处理方法,应用于机器人,所述方法包括:从发生异常的模块接收与所述异常对应的异常码;根据所述异常码确定所述异常的异常属性;根据所述异常属性执行所述异常的处理流程。
首先,上述异常处理方法逻辑简单,处理异常效率较高。其次,该方法可以由一个异常管理模块统一执行,使得对于异常的管理是集中的,方便了异常的统一处理。
在第一方面的一种实现方式中,在所述从发生异常的模块接收与所述异常对应的异常码之后,以及在所述根据所述异常码确定所述异常的异常属性之前,所述方法还包括:将所述异常码写入异常列表;所述根据所述异常码确定所述异常的异常属性,包括:从所述异常列表中读取所述异常码,并从已注册异常的异常属性中查找与所述异常码匹配的所述异常的异常属性。
在上述实现方式中,先利用异常列表缓存异常再处理异常,不会导致异常遗漏;并且,异常采用注册机制,只要注册了异常码和异常属性的异常就可以处理,极大地提高了异常处理的可扩展性。
在第一方面的一种实现方式中,所述方法还包括:注册待处理异常的异常码和异常属性。
在上述实现方式中,可以根据需求注册需要处理的异常,可以非常方便地实现异常处理逻辑的扩展。
在第一方面的一种实现方式中,所述将所述异常码写入异常列表,包括:检查所述异常码是否有效;若所述异常码有效,则检查所述异常码是否已经存在于所述异常列表中;若所述异常码不存在于所述异常列表中,则将所述异常码写入所述异常列表。
在上述实现方式中,会在写入异常码之前进行校验。其中前一项校验旨在确保异常码的格式符合规范,后一项校验旨在确保异常不会重复处理。
在第一方面的一种实现方式中,从所述异常列表中读取的所述异常码为多个,所述根据所述异常属性执行所述异常的处理流程,包括:根据与读取出的多个异常码匹配的异常属性中的处理级别,对所述多个异常码对应的异常按照从高优先级到低优先级的顺序依次执行对应的处理流程;其中,同优先级的异常按照其对应的异常码写入所述异常列表的先后顺序依次执行对应的处理流程。
高优先级异常往往涉及机器人的基础功能,低优先级异常很可能是某个高优先级异常所引发的,所以一旦高优先级的异常消失(指恢复)后,低优先级的异常也随之消失,这时就不必再进行处理了,因此上述实现方式可以减少异常处理次数、节约异常处理资源。
在第一方面的一种实现方式中,在开始执行较高优先级的异常对应的处理流程后,暂不执行较低优先级的异常对应的处理流程,直至在满足异常处理条件时,继续执行所述较低优先级的异常对应的处理流程;其中,所述异常处理条件为:所述较高优先级的异常的异常码已经从所述异常列表中删除,而所述较低优先级的异常的异常码仍然未从所述异常列表中删除。
若较低优先级的异常是较高优先级的异常所引发的,则在较高优先级的异常消失后,较低优先级的异常很可能也就随之消失了,发生较低优先级异常的模块检测到较低优先级的异常消失,可以主动清理较低优先级的异常(例如,通知异常管理模块将较低优先级的异常的异常码从异常列表中删除),既然异常码已经删除,那么也就表明较低优先级的异常不用再进一步处理了。从而,在上述实现方式中暂缓处理较低优先级的异常可以减少异常的处理量,节约处理资源。
在第一方面的一种实现方式中,所述异常属性包括异常释义,所述异常释义包括所述异常的描述信息以及所述异常的显示信息,所述根据所述异常属性执行所述异常的处理流程,包括:向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长;其中,所述描述用于在所述显示设备上进行显示,所述显示时长用于指示所述描述信息要显示的时间。
在上述实现方式中,通过显示异常的描述信息,便于用户及时获知异常状况。并且,可选的,还可以设置显示时长以提高异常显示的灵活性,避免了一直显示异常信息而阻碍显示设备显示其他内容。
在第一方面的一种实现方式中,所述描述信息包括多种语言类型的描述信息,所述向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长,包括:查询所述显示设备所支持的语言类型,并向所述显示设备发送对应语言类型的描述信息,或者对应语言类型的描述信息以及所述显示时长。
在上述实现方式中,通过支持不同语言的描述信息,使得异常信息的显示够适配于不同国家的项目,或者适配于不同的显示设备。
在第一方面的一种实现方式中,所述向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长,包括:查询所述显示设备是否存在;若所述显示设备存在,则查询所述显示设备配置的参数是否允许其显示所述描述信息;若允许显示所述描述信息,则向所述显示设备发送所述描述信息,或者所述描述信息以及所述显示时长。
在上述实现方式中,会在发送描述信息之前进行校验。其中前一项校验旨在应对注册异常时指定的显示设备和真实的显示设备不符合的情况,后一项校验旨在应对一些显示设备会对所显示的内容进行限制的情况。
在第一方面的一种实现方式中,所述异常属性包括处理模块信息,所述根据所述异常属性执行所述异常的处理流程,包括:通知所述处理模块信息中指定的功能模块处理所述异常。
在上述实现方式中,异常被统一地分对此异常感兴趣的功能模块,改善了由各个模块自行处理异常所导致的逻辑混乱的问题,简化了各个功能模块在异常处理逻辑方面的设计负担。
在第一方面的一种实现方式中,所述处理模块信息还包括每个功能模块对应的异常处理操作,所述通知所述处理模块信息中指定的功能模块处理所述异常,包括:通知所述处理模块信息中指定的功能模块执行对应的异常处理操作处理所述异常。
在上述实现方式中,直接将异常处理操作通知对此异常感兴趣的功能模块,使之直接执行指定的操作处理异常即可,简化了相关模块在异常处理逻辑方面的设计负担。
在第一方面的一种实现方式中,所述根据所述异常属性执行所述异常的处理流程,包括:根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码。
在上述实现方式中,通过清理异常,有利于确保异常处理资源不会被长期占用,维持异常处理机制的正常运转。另外,对于那些不会主动报告异常消失的模块,清理异常还有利于确认异常是否已经消失。
在第一方面的一种实现方式中,所述清理属性的取值包括以下之一:自主清理:响应发生所述异常的模块的请求,从所述异常列表中删除所述异常码;无延时清理:在从所述异常列表中读取所述异常码时删除所述异常码;自定义时长清理:按照自定的周期从所述异常列表中删除所述异常码;按键清理:响应所述机器人的按键被按下的信号,从所述异常列表中删除所述异常码;命令清理:响应从服务器接收到的清理指令,从所述异常列表中删除所述异常码。
在上述实现方式中,提供了清理属性的多种可能的取值,使得异常清理具有极高的灵活性。
在第一方面的一种实现方式中,在所述根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之后,所述方法还包括:若所述异常码对应的所述异常已经通知对应的功能模块处理,则通知所述功能模块所述异常已经被清理。
在第一方面的一种实现方式中,在所述根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之前,所述方法还包括:根据所述异常属性中的状态标记信息将与所述异常对应的全局标记设置为第一取值,所述第一取值用于指示所述异常已经发生;在所述根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之后,所述方法还包括:根据所述异常属性中的状态标记信息将与所述异常对应的全局标记设置为第二取值,所述第二取值用于指示所述异常已经被清理。
有一些模块,由于其设计上的原因,并不会从外部接收异常发生或清理的通知,对于这些模块,可以通过设置全局标记(可以是一个或多个全局变量,也可以是一个全局变量的一个或多个bit)的方式来代替通知的作用,关注异常的模块通过检测全局标记的取值,就可以判断当前处于异常发生或者异常清理状态。
在第一方面的一种实现方式中,所述异常码中包括异常来源、异常级别、异常类别、异常恢复方式以及子异常码中的至少一种信息。
在上述实现方式中,可以在异常码中包含与异常相关的信息,从而通过异常码就可以获知异常的基本情况,这些信息的编码方式可以形成统一的规范并对外发布,从而机器人的各模块在生成异常码时都可以按照该规范生成,便于异常的统一处理。
第二方面,本申请实施例提供一种异常处理装置,配置于机器人,所述装置包括:异常获取单元,用于从发生异常的模块接收与所述异常对应的异常码,异常匹配单元,用于根据所述异常码确定所述异常的异常属性;异常处理单元,用于根据所述异常属性执行所述异常的处理流程。
第三方面,本申请实施例提供一种机器人,包括存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第四方面,本申请实施例提供一种搬运系统,包括:服务器,用于对机器人进行调度;搬运机器人,用于根据所述服务器的调度进行货物搬运,所述搬运机器人在搬运货物的过程中执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的搬运系统的一种可能的结构;
图2示出了本申请实施例提供的机器人的一种可能的结构;
图3示出了本申请实施例提供的机器人内部可能包含的功能模块;
图4示出了本申请实施例提供的异常的一种可能的数据结构;
图5示出了本申请实施例提供的异常处理方法的一种可能的流程;
图6示出了本申请实施例提供的异常处理方法的一种可能的工作原理;
图7示出了本申请实施例提供的异常处理装置的一种可能的结构。
具体实施方式
随着物联网、人工智能、大数据等智能化技术的发展,利用这些智能化技术对传统物流业进行转型升级的需求愈加强劲,智慧物流(Intelligent Logistics System,简称ILS)成为物流领域的研究热点。智慧物流利用人工智能、大数据以及各种信息传感器、射频识别技术、全球定位系统(Global Positioning System,简称GPS)等物联网装置和技术,广泛应用于物料的运输、仓储、配送、包装、装卸和信息服务等基本活动环节,实现物料管理过程的智能化分析决策、自动化运作和高效率优化管理。物联网技术包括传感设备、射频识别(Radio Frequency Identification,简称RFID)、激光红外扫描、红外感应识别等,物联网能够将物流中的物料与网络实现有效连接,并可实时监控物料,还可感知仓库的湿度、温度等环境数据,保障物料的储存环境。通过大数据技术可感知、采集物流中所有数据,上传至信息平台数据层,对数据进行过滤、挖掘、分析等作业,最终对业务流程(如运输、入库、存取、拣选、包装、分拣、出库、盘点、配送等环节)提供精准的数据支持。人工智能在物流中的应用方向可以大致分为两种:
(1)以人工智能(Artificial Intelligence,简称AI)技术赋能的如无人卡车、自动引导车(Automated Guided Vehicle,简称AGV)、自主移动机器人(Autonomous MobileRobots,简称AMR)、叉车、穿梭车、堆垛机、无人配送车、无人机、服务机器人、机械臂、智能终端等智能设备代替部分人工。
(2)通过计算机视觉、机器学习、运筹优化等技术或算法驱动的如运输设备管理系统、仓储管理、设备调度系统、订单分配系统等软件系统提高人工效率。随着智慧物流的研究和进步,该项技术在众多领域展开了应用,例如零售及电商、电子产品、烟草、医药、工业制造、鞋服、纺织、食品等领域。
本申请实施例提出的有关异常处理的相关方案也可视为人工智能在物流领域的一种应用,当然该方法的应用场景并不限于物流领域。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
图1示出了本申请实施例提供的搬运系统100的一种可能的结构。参照图1,搬运系统100包括搬运机器人110以及服务器120,二者之间可以进行数据交互,搬运系统100可在仓库、工厂等场合部署。下面分别介绍搬运系统100的各个组件:
搬运机器人110用于在服务器120的调度下搬运货物,除了货物运输能力外,一些搬运机器人110还具有一定的导航能力。例如,搬运机器人110可以是AGV、AMR等设备。在搬运系统100中,搬运机器人110可以为一台或多台,若搬运机器人110为多台,这些机器人可以具有不同的型号。
图2示出了搬运机器人110的一种可能的结构。参照图2,搬运机器人110包括:处理器111、存储器112、传感器113、执行机构114以及通信接口115,这些组件通过通信总线116和/或其他形式的连接机构(未示出)互连并相互通讯。
其中,处理器111包括一个或多个,其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器111可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(NetworkProcessor,简称NP)或者其他常规处理器;还可以是专用处理器,包括图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network Processing Unit,简称NPU)、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuits,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器111为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
存储器112包括一个或多个,其可以是随机存取存储器(Random Access Memory,简称RAM)、只读存储器(Read Only Memory,简称ROM)、可编程只读存储器(ProgrammableRead-Only Memory,简称PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM)、电可擦除可编程只读存储器(Electric ErasableProgrammable Read-Only Memory,简称EEPROM)等。存储器112中可以存储数据和/或计算机程序指令。
处理器111以及其他可能的组件可对存储器112进行访问,读和/或写其中的数据和/或指令。例如,在存储器112中可以存储一个或多个计算机程序指令,处理器111可以读取并运行这些计算机程序指令,以实现本申请实施例提供的异常处理方法及其他必要的功能(例如装卸货、导航、充电等功能)。
传感器113包括一个或多个,传感器113用于采集搬运机器人110导航所需的数据,具体要设置哪些传感器取决于搬运机器人110所支持的导航模式。例如,若要支持二维码导航,传感器113至少应包括二维码识别单元,还可以包括惯性测量单元(InertialMeasurement Unit,简称IMU)、里程计(Odometry,简称Odom)等;若要支持同步定位与地图构建(Simultaneous Localization and Mapping,简称SLAM)导航,传感器113至少应包括激光雷达(对应激光SLAM)和/或摄像头(对应视觉SLAM),还可以包括IMU、Odom等。
执行机构114包括一个或多个,搬运机器人110通过执行机构114执行必要的动作,例如位置移动、姿态调整、装卸货等,例如,执行机构114可以是搬运机器人110的电机、举升机构、货叉、机械臂、载具等。
通信接口115包括一个或多个,用于和其他设备(例如,服务器120等)进行直接或间接地通信,以便进行必要的数据交互。通信接口115可以包括有线和/或无线通信的接口。
可以理解,图2所示的结构仅为示意,搬运机器人110还可以包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。例如,若搬运系统100的部署环境中设置有大量传感器,则搬运机器人110上也可以不设置传感器113。
图3示出了本申请实施例提供的搬运机器人110内部可能包含的功能模块。参照图3,这些模块包括:电源模块111a、底盘模块112a、动作模块113a、导航模块114a以及定位模块115a。和图2不同,图3主要是从功能层面对搬运机器人110所作的一种划分,图3中的模块涵盖了搬运机器人110完成货物搬运任务所需要具有的一些基本功能,这些模块可以视为相应硬件设备,也可以视为硬件设备在软件层面的一种抽象表示,或者说其具有硬件和软件层面的双重含义,这些模块可以和后文提到的异常管理模块进行交互。下面简单介绍每个模块的功能:
电源模块111a:负责搬运机器人110的充放电、供电等与电源相关的功能;
底盘模块112a:负责搬运机器人110的行驶功能,例如,制动、加速、转弯等;
动作模块113a:负责搬运机器人110的与货物搬运相关的功能,例如装货、卸货、理货等;
导航模块114a:负责搬运机器人110的与导航相关的功能,例如,位姿计算、规划路线、执行特定导航动作等;
定位模块115a:负责搬运机器人110的与定位相关的功能,例如,定位数据的收集与转发。
显然,搬运机器人110也可能包含比上述五个模块更多或更少的模块。
服务器120可以对搬运机器人110进行调度(例如,通过下发调度指令的方式),以使搬运机器人110按照高效合理的方式完成货物搬运任务。当然,服务器120还可以接收搬运机器人110上传的数据(例如,状态信息、位置信息),并将这些数据用于不同的用途,例如,显示搬运机器人110的状态和位置、规划搬运机器人110的路径、指示搬运机器人110进行充电等等。
在一些实现方式中,搬运机器人110的部分数据可以通过心跳的方式上传给服务器120,即每隔固定的周期向服务器120发送少量数据(称为心跳包),这些数据一方面向服务器120表明搬运机器人110处于可用状态,一方面也携带服务器所关心的信息。对于存在大量搬运机器人110的场景,带宽资源往往是有限的,每个搬运机器人110每次向服务器120发送的心跳包大小受到严格限制,例如,只有几个或几十个字节的数据,心跳包中的每个bit都被赋予一定的含义(例如,表示一种状态,表示一种异常等)。
需要指出,服务器120不限于单台服务器,也可以是多台服务器的组合或者大量服务器构成的集群,并且也不限于物理服务器,也可以是虚拟服务器。
在图1中,还示出了终端设备200,终端设备200可以从远程对服务器120进行访问,以便对服务器120上的信息进行查看,或者对服务器进行管理以及配置等。例如,搬运机器人110上传给服务器120的状态信息除了可以在服务器120本地进行显示以外(比如服务器120连接有显示设备的情况),也可以在服务器120提供的页面上进行显示,终端设备130可以通过浏览器访问这些页面,从而实时查看每台搬运机器人110的状态。可选的,这些页面也可以替换为应用程序界面,终端设备200通过运行应用程序的客户端可以查看到这些界面。
终端设备200可以但不限于是用户使用的手机、PC机、笔记本电脑、平板电脑等设备。
应当理解,虽然图1中的搬运机器人110可以执行本申请实施例提供的异常处理方法,并且在后文的例子中也主要是考虑机器人是搬运机器人110的情况,但不代表本申请实施例提供的异常处理方法仅适用于搬运机器人110,例如,该方法也可能用于无人机、无人船、扫地机器人、工业机器人、仿生机器人等其他类型的机器人,另外该异常处理方法的至少部分实现方式是不依赖于服务器的,也就是说即使某个机器人并不与服务器进行交互,也可以在该机器人上部署该异常处理方法。
在介绍本申请实施例提供的异常处理方法之前,先介绍一下本申请实施例中的对异常的表示。异常,即机器人在运行过程中遇到的一些非正常情况,严重的异常可能导致机器人无法继续工作,即使是轻微些的异常也可能导致机器人产生错误的数据或者做出意料之外的行为,因此,异常的及时发现和及时有效处理对于维持机器人系统(例如,搬运系统100)的稳定运行是十分重要的。例如,机器人电量不足、摄像头故障等都是异常。
在本申请实施例的方案中,将异常在逻辑上表示为两部分:异常码和异常属性,按此表示,异常可以具有如图4所示的数据结构。
参照图4,异常码可以是与异常对应的唯一ID,即每种异常都为其分配一个不同的异常码,例如,异常码可以实现为4字节、8字节的一个字串。
在一些实现方式中,异常码内部还携带有与异常相关的信息,例如可以包括异常来源(异常来自哪种机器人的哪个模块)、异常级别(表示异常的严重性,例如包括严重、错误、警告、提示、测试等级别)、异常类别(例如,电量异常、电压异常等)、异常恢复方式(自动恢复、按键恢复、重启恢复等)以及子异常码中的至少一种信息,通过这些相关信息可以更深入地了解某个异常。
其中,子异常码用于标识具体的异常,例如,对于一个4字节(32bit)的异常码,其中前16bit对应异常来源、异常级别、异常类别等信息,通过这些信息可以将异常定位到电源模块,并获知异常的总体信息,但尚不清楚具体的异常到底是什么,例如可能是电压过低、电压不稳定、电流过大等,这些具体的异常可以通过异常码的后16bit来标识,这16bit也就是子异常码。
异常码在生成时可以遵循统一的规范,例如,第1-8个bit表示异常来源,这样生成的异常码将具有良好的通用性,可以兼容各类已有或新制造的机器人设备。该统一的规范可以对外发布,从而机器人的各模块在生成异常码时都可以按照该规范生成,便于异常的统一处理。
异常属性是一些与异常相关的信息,但不同于上面介绍的异常码中包含的与异常相关的信息:后者主要是和异常本身相关的一些信息,而前者则主要包含与如何处理该异常相关的信息。异常属性可以包括异常释义、异常级别、清理属性、处理模块信息以及状态标记信息中的一种或几种。下面以图4为例,简单介绍异常属性中各个字段的含义,可以理解,异常属性中也可能包含比图4示出的更多、更少或者完全不同的字段。
异常释义:主要用于异常的显示,异常释义可以进一步包括异常的描述信息以及异常的显示信息。异常的描述信息即对该异常的说明,例如,异常的名称,异常的恢复方式等。异常的显示信息至少包括该异常要显示到哪些设备,例如,显示到机器人的液晶显示屏(Liquid Crystal Display,简称LCD),显示到前端页面(即在终端设备上显示)等。异常的显示信息还可能包括显示时长,即该异常的描述信息要在某个显示设备上显示多长时间。
在一些实现方式中,异常释义支持多种语言类型,例如异常释义可以进一步包括中文释义和英文释义,中文释义可以在中文环境中显示,英文释义可以在英文环境中显示,以便使得异常处理方法能够适配于不同国家的项目,或者适配于不同的显示设备(例如,有的显示设备只支持显示英文字符,无法显示中文)。
处理级别:表示异常在处理时的优先级,在有多个异常要处理时,该字段决定这些异常的处理顺序。注意,处理级别和异常码中的异常级别含义不同,处理级别描述的是异常的处理顺序,异常级别描述的是异常本身的严重性。
清理属性:用于指定清理异常的方式。异常管理模块(详见后文阐述,这里可以暂时理解为机器人中用于统一处理异常的模块)处理异常的能力是有限的,已经处理的异常要及时清理,不能一直缓存在异常管理模块中,否则会导致异常管理模块的资源被占用。应理解,已经处理的异常并不代表该异常已经消失,例如该异常经过处理之后仍然存在,这种情况表明该异常的自动处理无效,此时可以通知工作人员手动处理该异常。例如,清理方式可以包括自主清理、按键清理等等,其中自主清理可以是由发生异常的模块主动进行清理,按键清理可以是由工作人员按下机器人表面的按键,异常管理模块响应于该按键被按下进行异常清理。
处理模块信息:用于指定对当前异常感兴趣的功能模块,在发生异常时,异常管理模块会根据该字段通知这些功能模块进行异常处理。例如,处理模块信息中可以指定电源模块、底盘模块等。
状态标记信息:用于指定当前异常与全局标记的对应关系。全局标记可以是一个或多个全局变量,也可以是一个全局变量内的一个或多个bit。在发生异常及清理异常时,异常管理模块会根据该字段对全局标记的取值进行设置,关注当前异常的模块通过检测全局标记的取值,就可以获知异常已经发生或者异常已经被清理的信息。
关于异常属性中各个字段的具体用途,在后文阐述异常处理方法时,还会进行更深入的介绍,这里暂不展开。图5示出了本申请实施例提供的异常处理方法的一种可能的流程,在阐述该方法时将主要结合图6中的例子。图5中的异常处理方法可以由一机器人执行,包括但不限于图1中的搬运机器人110。在一些实现方式中,机器人上可以实现一个异常管理模块,由该异常管理模块来负责执行异常处理方法,如图6所示(有的步骤可能会用到图6中的显示模块),后文也主要以方法由异常管理模块执行的情况为例,方法具有其他执行主体的情况是类似的。需要指出,第一,异常管理模块只是一个名称,该名称不应构成对本申请保护范围的限制,该模块由其所实现的功能定义;第二,本申请实施例中提到的模块,如无特别说明的,可以理解为软件模块,可以理解为硬件模块,也可以理解兼有软件和硬件的双重意义。参照图5,该方法包括:
步骤S310:从发生异常的模块接收与异常对应的异常码。
机器人中的某个模块一旦发生异常,就会生成对应的异常码,发生异常的模块可将异常码发送给异常管理模块(例如,通过调用异常管理模块提供的异常上报接口)。在一种实现方式中,异常管理模块可以在接收到异常码后立即进行后续处理,提高异常处理的及时性。在另一种实现方式中,异常管理模块收到异常码后,先将其写入异常列表中缓存,等待后续处理。此种主动上报异常并缓存的机制,可确保异常处理不存在遗漏。或者,发生异常的模块也可以自己先缓存异常码,等待异常管理模块定期从缓存中取走异常码并写入异常列表。
下面重点介绍使用了异常列表的实现方式:
异常列表中至少包含异常码,但也不排除包含其他信息。应当理解,异常列表只是一个逻辑概念,意为一种缓存异常码的数据结构,但该数据结构在实现上不一定是线性表,但为简单起见,可以将其理解为一个线性表。参照图6,异常列表中已经写入了7个异常码。
在一些实现方式中,异常管理模块在收到异常码后,可以将其直接写入异常列表。在另一些实现方式中,异常管理模块在收到异常码后,可以进行适当的校验,校验通过后才将其写入异常列表。根据需求,所设置的校验项目可以包括以下一项或几项:
(1)异常码是否有效,有效则本项校验通过,否则不通过。例如,异常码的长度、格式是否符合规定等。设置本项目旨在确保异常码的格式符合规范。
(2)异常码是否已经存在于异常列表中,不存在则本项校验通过,否则不通过。例如,对于图6,异常列表中已经存在异常码2,现在某模块又上报了异常码2,则无法通过本项校验。设置本项目旨在确保异常不会重复处理。注意,由于异常码中可以对异常来源进行区分,因此即使在不同模块中发生了类似的异常,其异常码也是不同的,并不会因为校验本项目导致异常遗漏的情况。
如果设置了多个以上的校验项目,则可以按照一定的顺序进行校验,例如,先校验项目(1),通过后再校验项目(2),通过才将异常码写入异常列表。
步骤S320:根据异常码确定异常的异常属性。
根据图4可知,异常的数据结构中本来就包括异常码和异常属性两部分,并且异常码和异常属性之间具有绑定关系,只要事先以某种形式在搬运机器人本地保存好这种绑定关系,就可以快速地根据异常码查找到与之匹配(即相对应)的异常属性。
在一种实现方式中,异常可以采用注册机制,对于某个待处理异常,如果希望将其纳入到异常管理模块的处理范畴,只需要将其在异常管理模块中注册(例如,通过异常管理模块提供的注册接口,或者,通过配置异常管理模块使用的配置文件)即可。所谓注册,可以指将待处理异常的异常码和异常属性提交到异常管理模块中,由异常管理模块将其保存为数据库(或数据文件)中的一条记录;或者,也可以指直接对异常管理模块使用的数据库(或数据文件)进行编辑,在其中增加待处理处异常对应的一条记录,其中包括待处理异常的异常码和异常属性。已经注册的异常在逻辑上可以形成一个列表,表中每一项对应一个异常的异常码和异常属性,从而步骤S320中利用异常码可以从该列表中查询到与之匹配的异常属性。
进一步的,如果异常管理模块在接收到某个异常的异常码后,将异常码写入异常列表缓存,则可以在适当的时机将其从异常列表中读取出来,并从已注册异常的异常属性中查找与该异常码匹配的该异常的异常属性,如图6所示。例如,异常管理模块定期扫描异常列表,将异常列表中当前存在的异常码全部读取并处理;又例如,异常管理模块定期从异常列表中读取指定数量的异常码进行处理,等等。当然,如果异常管理模块接收到异常码后立即进行处理,可能就不涉及从异常列表中读取异常码的步骤了。
如果步骤S320中能够成功找到与异常码匹配的异常属性(例如,该异常码对应的异常已注册过),则执行步骤S330,如果未能找到与异常码匹配的异常属性(例如,该异常码对应的异常未注册过),表明当前异常是异常管理模块未知的,此时异常管理模块可以输出告警信息,该告警信息可以在机器人的显示设备(如LCD)或者前端页面等位置进行显示,可选的,此时还可以刹停机器人并提示人工介入处理,避免未知异常造成意料之外的后果。在后文中将主要阐述查询异常属性成功的情况。
步骤S330:根据异常属性执行异常的处理流程。前面在阐述图4时已经提到,异常属性中主要包含与如何处理该异常相关的信息,例如,包括如何对异常进行显示(异常释义)、按照何种顺序处理异常(处理级别)、如何清理异常(清理属性)、由哪些模块具体处理异常(处理模块信息)、如何对异常进行标记(状态标记信息)等等。从而,异常管理模块可以根据异常属性中的信息执行异常的处理流程。注意,这里的异常处理流程指代较广的范围,既可能是异常管理模块自身对异常进行的某些处理,也可能是异常管理模块通知其他对此异常感兴趣的功能模块进行某些处理,或者同时包括这两类方式。
对于有多个异常的情况,例如,异常管理模块一次性从异常列表中读取了多个异常码,在执行这些异常的处理流程时,可以是串行执行也可以是并行执行,如果异常管理模块本身并不执行太多实质性的异常处理操作(例如,刹停机器人),而只是通知关注此异常的模块执行实质性的异常处理操作(例如,只是通知底盘模块刹停机器人),则串行执行的效率也足够高并且逻辑相较于并行更为简单。
关于如何利用异常属性处理异常,稍后再详细阐述,这里先总结一下图5中异常处理方法的一些优势:
其一,该方法处理逻辑简单,处理异常效率较高;
其二,在一种实现方式中,该方法先利用异常列表缓存异常再处理异常,不会导致异常遗漏;
其三,该方法可以由一个异常管理模块负责执行,使得对于异常的管理是集中的,方便了异常的统一处理,在此之前,可能是由机器人的各个模块自己去获取异常自己处理,管理逻辑混乱,该方法相当于在发生异常的模块和关注异常的模块之间设置了一个中介(异常管理模块);
其四,在一种实现方式汇总,该方法中的异常采用注册机制,极大地提高了异常处理的可扩展性,在需要增加一种新的异常的处理逻辑时,只需进行简单地按照规范定义异常码、设置异常属性,进行异常注册即可,非常灵活方便;
其五,该方法从异常码的设计到异常处理步骤的设计都具有较好的兼容性,基本上对于各类型机器人的异常都能够有效处理。
下面,在以上实施例的基础上,按照图4中异常属性所包含的各个字段,介绍异常的处理流程:
A.处理级别
若在步骤S320中,异常管理模块从异常列表中读取到多个异常码的情况(例如,扫描异常列表,读取当前列表中所有的异常码),与这些异常码匹配的异常属性中的处理级别字段,将决定这些异常码对应的异常的处理顺序,具体如下:
对多个异常按照从高优先级到低优先级的顺序依次执行对应的处理流程,同优先级的异常则按照其对应的异常码写入异常列表的先后顺序依次执行对应的处理流程,如图6所示。其中,异常的优先级定义在处理级别中,所谓处理流程包括后面提到的显示、处理、清理、状态标记等流程。
这样设计处理顺序的原因在于:高优先级异常往往涉及机器人的基础功能,低优先级异常很可能是某个高优先级异常所引发的,所以一旦高优先级的异常消失(指恢复)后,低优先级的异常也随之消失,这时就不必再进行处理了,此举可以减少异常处理次数、节约异常处理资源。
例如,对于一个较高优先级的异常和两个较低优先级的异常,异常管理模块可以采取如下处理逻辑:
先执行较高优先级的异常对应的处理流程,开始执行后,暂不继续执行较低优先级的异常对应的处理流程,直至在满足如下异常处理条件时,继续执行较低优先级的异常对应的处理流程。其中,异常处理条件为:较高优先级的异常的异常码已经从异常列表中删除,而较低优先级的异常的异常码仍然未从异常列表中删除。
简单解释一下其原理:假设发生三个异常的模块均为模块A,较高优先级的异常恢复后,模块A会指示异常管理模块将较高优先级的异常的异常码从异常列表中删除(此操作称为异常清理,详见后文阐述)。若较低优先级的异常是较高优先级的异常所引发的,则在较高优先级的异常消失后,较低优先级的异常很可能也就随之消失了,模块A检测到较低优先级的异常消失,同样会指示异常管理模块将较低优先级的异常的异常码从异常列表中删除,既然异常码已经删除,那么也就表明较低优先级的异常不用再进一步处理了。若较低优先级的异常不是较高优先级的异常所引发的,则在较高优先级的异常消失后,较低优先级的异常很可能并不会随之消失,从而其对应的异常码会继续保留在异常列表中,表明较低优先级的异常需要继续处理。从而,对较低优先级的异常暂缓处理,在一定程度上可以减少异常的处理量,节约处理资源。
在一些实现方式中,还可以针对高优先级的异常设置一些强制处理策略,这些强制处理策略可由异常管理模块执行,或者驱动相应的模块执行。例如,强制处理策略可以包括:刹停机器人、声光报警、强制保存日志等策略中的一种或多种。
在一些实现方式中,还可以定期对日志进行分析,统计不同处理级别的异常(或者统计异常级别也可以),以便了解机器人的整体性能。比如,某个模块在统计周期内发生高优先级异常的次数超过了阈值,表明该模块已经老化,可能需要维护或更换。
B.异常释义
异常处理流程中的一项为异常的显示,即将异常显示到指定的设备上,以使用户获知,该项流程主要依赖于异常释义字段实现。异常管理模块可以自己根据异常释义进行异常的显示,或者,机器人也可以实现一个显示模块专门负责异常的显示,异常管理模块可以将异常释义发送到显示模块,由显示模块根据异常释义进行异常的显示,如图6所示。采用显示模块的方式可以实现功能解耦,减轻异常管理模块的负担,因此下面主要介绍此种方式,对于不采用显示模块的方式,无非就是少了一个发送异常释义的步骤,在实现上是类似的。
如前所述,异常释义可以进一步包括异常的描述信息以及异常的显示信息,其中显示信息至少包括要显示异常的设备,还有可能包括显示时长。如图6所示,显示设备可以包括前端页面(终端设备)、机器人的LCD、机器人的声音设备(如喇叭)、机器人的光电设备(如指示灯)等,注意,这里的显示应理解为一种泛指,不仅仅指视觉上的呈现,还包括听觉上的呈现等,即包括使得异常的描述信息能够被用户感知到的各种方式。
显示模块接收到异常释义以后,会向显示信息中指定的显示设备发送描述信息,显示设备在接收到描述信息后会进行显示。其中,对于显示设备是前端页面(终端设备)的情况,显示模块应将描述信息发送给服务器,之后再由服务器将描述信息发送给终端设备。描述信息也可以针对不同的显示设备进行差异化的设置。
如果显示信息中还包括显示时长,则显示模块会将描述信息和显示时长都发送给显示信息中指定的显示设备,显示设备会按照显示时长所指示的时间对描述信息进行显示。显示时长也可以针对不同的显示设备进行差异化的设置。通过提供显示时长,可以满足用户多样化的显示需求,例如,在没有设置显示时长时,异常的描述信息可能会一直显示,但有的异常并不严重,一直显示这些信息可能会阻碍显示设备显示其他内容。
如果异常释义支持多种语言类型(例如,图4中包括中文释义和英文释义),则异常释义中的描述信息也具有不同的语言类型(例如,中文描述和英文描述),显示模块可以先查询显示设备所支持的语言类型,然后向显示设备发送对应语言类型的描述信息(还可能会发送显示时长)。例如,某LCD只能显示英文字符,则向其发送英文描述;又例如,某LCD支持中英文显示,机器人的工作地点为中国,则向其发送中文描述。通过设置多语言类型的释义,使得异常的显示能够适应于不同的语言环境和不同类型的显示设备,因此具有良好的通用性。
进一步的,显示模块在接收到异常释义以后,还可以进行适当的校验,校验通过后才会向显示设备发送描述信息(还可能会发送显示时长)。根据需求,所设置的校验项目可以包括以下一项或几项:
(1)查询显示信息中指定的显示设备是否存在,存在则本项校验通过,否则不通过。设置本项目的原因是注册异常时指定的显示设备和真实的显示设备不一定吻合。
(2)查询显示设备配置的参数是否允许其显示描述信息,允许则本项校验通过,否则不通过。设置本项目的原因是有的显示设备会对一些异常信息进行过滤,不予显示。
如果设置了多个以上的校验项目,则可以按照一定的顺序进行校验,例如,先校验项目(1),通过后再校验项目(2),通过才将描述信息发送给显示模块。这些校验项目可以针对每个显示设备分别执行。
C.处理模块信息
如前文所述,处理模块信息字段中记录了对当前异常感兴趣的功能模块,如图6所示的电源模块、底盘模块、动作模块、导航模块以及定位模块中的一个或几个功能模块。所谓“感兴趣”,可以是该功能模块要对当前异常进行执行某种处理操作,也可能仅仅是该功能模块想要获取到当前异常的一些信息。例如,可以将能够处理当前异常的功能模块都添加到该字段中,这些模块执行相应的处理操作后,当前异常有望被消除或者至少采取妥善的处理措施。
在发生异常时,异常管理模块会通知该字段中记录的一个或多个功能模块进行异常处理,通知时相应模块时,可以将处理异常所必需的信息(例如,异常码、异常属性、异常级别等)也一并发送给这些模块。例如:
电源模块:电源模块收到异常通知后,会依据异常类型和/或异常级别采取不同措施,如断开与充电桩的连接、降压等操作。
底盘模块:底盘模块收到异常通知后,会依据异常类型和/或异常级别采取不同措施,如切换命令控制权、重新初始化、紧急制动等操作。简单解释一下切换命令控制权的含义:有的机器人具有多种控制方式,例如,通过手机APP人为控制、通过服务器自动控制,在通过手机APP控制时,可能将机器人加速到4m/s,但某仓库中机器人的限速为3m/s,这将导致机器人的底盘模块上报异常,对此异常的处理方式就是将机器人的控制权交还给服务器。
动作模块:动作模块收到异常通知后,会依据异常类型和/或异常级别采取不同措施,如清理已经缓存的未执行的动作、动作重试、动作异常结束等。
导航模块:导航模块收到异常通知后,会依据异常类型和/或异常级别采取不同措施,如主动停止机器人、控制机器人完成特定导航动作、清理缓存的导航任务等。
定位模块:定位模块收到异常通知后,会依据异常类型和/或异常级别采取不同措施,如重新尝试自主定位、通知其他关联模块因异常无法上传定位数据等(因为很多模块会使用定位数据)。
可见,在发生异常的模块和关注异常的模块之间,异常管理模块起到了桥梁的作用,通过设置异常管理模块,异常被统一地收集和分发,结束了各个模块自行处理异常时的混乱局面,简化了各个模块在异常处理逻辑方面的设计负担。
进一步的,在处理模块信息中除了包括需要通知的功能模块之外,还可以包括每个功能模块对应的异常处理操作。例如,电源模块←→断开与充电桩连接,导航模块←→清理缓存的导航任务,等等。从而也可以在异常管理模块一侧根据异常类型和/或异常级别确定每个功能模块需要执行的异常处理操作,并直接将异常处理操作发送给对应的功能模块,这些模块在接收到异常处理操作后直接执行操作的内容就可以了,此举可以简化各模块的异常处理逻辑。例如,判断为充电异常,则异常管理模块可以为电源模块选择“断开与充电桩连接”的操作,并将该操作发送给电源模块,使之断开与充电桩的连接。注意,如果处理模块信息中指定了多个功能模块,某个功能模块都可能对应不同的异常处理操作。
D.清理属性
若异常管理模块利用异常列表缓存异常码,异常清理,对于异常管理模块说来就是将异常码从异常列表中删除的操作,及时地清理异常可以确保异常管理模块的资源不会被长期占用,异常清理是异常处理流程中的一项。清理异常存在多种方式,由清理属性字段负责说明当前异常的清理方式,这些方式可以根据各个模块产生的异常的特点进行设置。下面具体介绍:
(1)自主清理:异常管理模块响应发生异常的模块的请求,从异常列表中删除异常码。
自主清理中的“自主”,意思是由发生异常的模块自己主动请求清理异常(例如,可以在该模块自己检测到异常已经消失的情况下发起请求),请求的形式可以是调用异常管理模块提供的异常清理接口。前文在阐述处理级别时,曾经提到的异常清理步骤采用的就是自主清理。
(2)无延时清理:异常管理模块在从异常列表中读取异常码时删除异常码。
无延时清理中的“无延时”并不是严格意义上的零延时,而是指异常管理模块在读取异常码之后的紧接着就将异常码删除。例如,对于一些低级别的异常,如告警信息,这些异常只需要在日志中记录下来就可以了,并不会为其设置专门的处理策略,因此可以将其清理属性设置为无延时清理。
(3)自定义时长清理:异常管理模块按照自定的周期从异常列表中删除异常码。
有一些模块在异常恢复之前会不停地上报异常,并且这些模块只在异常发生时进行上报,异常消失时则不上报任何消息。例如,模块A每隔200ms上报一次异常,直至异常消失时停止上报。
这也是需要异常清理的一个重要原因:如果不清理,则难以获知模块A中的该异常到底消失没有,因为其异常码会一直留在异常列表中,而如果能够及时地清理掉模块A上报的异常(比如,每隔200ms清理一次异常,但可与模块A上报异常的时间错开),则一旦在某次清理之后,等待一段时间发现该异常的异常码不再写入,就可以确认该异常已经从模块A中消失了。
对于上述这类异常,可以将其清理属性设置为自定义时长清理,并设置相应的清理周期,清理周期可以和上报异常的周期匹配。
(4)按键清理:异常管理模块响应机器人的按键被按下的信号,从异常列表中删除异常码。
这类异常需要人工确认,确认无问题后,通过按键(例如,机器人上的启动键、停止键等)的方式触发异常管理模块进行清理。
(5)命令清理:异常管理模块响应从服务器接收到的清理指令,从异常列表中删除异常码。
这类异常需要人工或者上层逻辑确认,确认无问题后,通过服务器下发清理指令的方式触发异常管理模块进行清理。注意,服务器下发的清理指令有两类来源,一类是服务器根据自身逻辑下发的指令,一类是用户在终端设备上下发的指令(通过服务器中转给机器人)。
需要指出,异常清理是异常管理模块的一种行为,一个异常被清理了,只代表对应的异常码从异常列表中被删除,但并不代表异常已经消失。例如,对于上面自定义时长清理中提到的例子,删除了异常码之后,若异常未消失,很快会有同样的异常码再次写入一长列表。
根据前文对处理模块信息的介绍可知,异常发生时会通知对该异常感兴趣的功能模块进行处理。可选的,若某个异常发生时曾经通知过某些功能模块进行处理,则在该异常的异常码被清理时,可以再次通知这些模块进行处理(当然,处理逻辑可能和前一次通知有所区别),以实现异常的完整处理逻辑。反之,若某个异常发生时未曾通知过某些功能模块进行处理,则在该异常的异常码被清理时,也没有必要通知这些功能模块进行处理。
例如,前文在介绍处理级别时提到的较低优先级的异常,这类异常由于被暂缓处理,所以并没有通知相关模块,从而在这些异常的异常码被清理时,也无需通知相关模块。
为实现上述两次通知的机制,可以对执行过一次通知的异常码进行标记,在异常码清理时,通过检测标记就可以确定相应的异常是否已经通知过对此异常感兴趣的功能模块。
可选的,对于第一次通知,前面提到,可以将异常处理操作发送给对应的功能模块,对于第二次通知同样可以采取此种做法。例如,第一次通知底盘模块时发送的操作可以是“刹停机器人--true”,第二次通知底盘模块时发送的操作可以是“刹停机器人--false”,通过在固定的操作之后追加一个参数来形成不同的操作,前者是在遇到异常时将机器人刹停,后者是在异常消失后将机器人启动起来,这样底盘模块对该异常的完整处理逻辑就形成了。
E.状态标记信息
有一些模块,由于其设计上的原因,并不会从外部接收异常发生或清理的通知,对于这些模块,可以通过设置全局变量的方式来代替通知的作用,这里为简单起见,不妨以一个全局变量的情况为例,设置多个全局变量的情况也是类似的。该全局变量具有多个bit,每个异常对应其中的一个或几个bit,这些bit可以被设置成不同的取值,从而代表异常发生、异常清理等不同的状态。因此,关注异常的模块通过检测这些bit的取值,就可以判断当前处于异常发生或者异常清理状态。
例如,电量不足异常对应全局变量的第3个bit,该bit被置为1表示电量不足异常发生了,该bit被置为0表示电量不足异常已经被清理。电源模块通过检测全局变量中第3个bit的取值,就可以判断当前是否存在电量不足异常。
将异常在全局变量中对应的bit称为异常对应的全局标记,这种对应关系记录在异常属性的状态标记信息字段中。若异常管理模块利用异常列表缓存异常码,在异常管理模块查找到与异常码对应的异常属性之后,可以根据异常属性中的状态标记信息将与异常对应的全局标记设置为第一取值,第一取值用于指示异常已经发生;而在异常管理模块删除异常列表中的异常码之后,可以根据异常属性中的状态标记信息将与异常对应的全局标记设置为第二取值,第二取值用于指示异常已经被清理。显然,第一次设置全局标记的行为应当在进行异常清理之前完成。关注异常的模块通过检测全局标记,判断其取值为第一取值或第二取值,就可以了解当前是刚刚发生异常还是异常已经被清理,从而采取相应的异常处理策略。
可选的,上述全局变量中,除了包含异常的全局标记外,还可能包含机器人的其他状态信息,即该全局变量从整体上反映了机器人的状态(是否存在异常也属于机器人的状态),不妨称为全局状态。全局状态可以在机器人本地进行显示,也可以在前端页面上进行显示,方便用户随时查看。
为了在前端页面上显示机器人的状态,当然更重要的是向服务器实时汇报机器人的状态信息,机器人可以将全局状态(或其中服务器所关心的部分)通过心跳包的方式上传给服务器,由于在全局状态中,每种异常只对应一个或几个bit,所以上传心跳包对带宽的占用并不高。
需要指出,上述的字段A~E,既可以全部实现,也可以只实现其中的一部分,还可以增加新的字段,其配置方式灵活。
图7示出了本申请实施例提供的异常处理装置400的一种可能的结构,该装置可以配置在机器人上。参照图7,异常处理装置400包括:
异常获取单元410,用于从发生异常的模块接收与所述异常对应的异常码;
异常匹配单元420,用于根据所述异常码确定所述异常的异常属性;
异常处理单元430,用于根据所述异常属性执行所述异常的处理流程。
在第一方面的一种实现方式中,异常获取单元410还用于:在从发生异常的模块接收与所述异常对应的异常码之后,以及在异常匹配单元420根据所述异常码确定所述异常的异常属性之前,将所述异常码写入异常列表;异常匹配单元420根据所述异常码确定所述异常的异常属性,包括:从所述异常列表中读取所述异常码,并从已注册异常的异常属性中查找与所述异常码匹配的所述异常的异常属性。
在异常处理装置400的一种实现方式中,所述装置还包括:异常注册模块,用于注册待处理异常的异常码和异常属性。
在异常处理装置400的一种实现方式中,异常获取单元410将所述异常码写入异常列表,包括:检查所述异常码是否有效;若所述异常码有效,则检查所述异常码是否已经存在于所述异常列表中;若所述异常码不存在于所述异常列表中,则将所述异常码写入所述异常列表。
在异常处理装置400的一种实现方式中,从所述异常列表中读取的所述异常码为多个,异常处理单元430根据所述异常属性执行所述异常的处理流程,包括:根据与读取出的多个异常码匹配的异常属性中的处理级别,对所述多个异常码对应的异常按照从高优先级到低优先级的顺序依次执行对应的处理流程;其中,同优先级的异常按照其对应的异常码写入所述异常列表的先后顺序依次执行对应的处理流程。
在异常处理装置400的一种实现方式中,异常处理单元430在开始执行较高优先级的异常对应的处理流程后,暂不执行较低优先级的异常对应的处理流程,直至在满足异常处理条件时,继续执行所述较低优先级的异常对应的处理流程;其中,所述异常处理条件为:所述较高优先级的异常的异常码已经从所述异常列表中删除,而所述较低优先级的异常的异常码仍然未从所述异常列表中删除。
在异常处理装置400的一种实现方式中,所述异常属性包括异常释义,所述异常释义包括所述异常的描述信息以及所述异常的显示信息,异常处理单元430根据所述异常属性执行所述异常的处理流程,包括:向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长;其中,所述描述用于在所述显示设备上进行显示,所述显示时长用于指示所述描述信息要显示的时间。
在异常处理装置400的一种实现方式中,所述描述信息包括多种语言类型的描述信息,异常处理单元430向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长,包括:查询所述显示设备所支持的语言类型,并向所述显示设备发送对应语言类型的描述信息,或者对应语言类型的描述信息以及所述显示时长。
在异常处理装置400的一种实现方式中,异常处理单元430向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长,包括:查询所述显示设备是否存在;若所述显示设备存在,则查询所述显示设备配置的参数是否允许其显示所述描述信息;若允许显示所述描述信息,则向所述显示设备发送所述描述信息,或者所述描述信息以及所述显示时长。
在异常处理装置400的一种实现方式中,所述异常属性包括处理模块信息,异常处理单元430根据所述异常属性执行所述异常的处理流程,包括:通知所述处理模块信息中指定的功能模块处理所述异常。
在异常处理装置400的一种实现方式中,所述处理模块信息还包括每个功能模块对应的异常处理操作,异常处理单元430通知所述处理模块信息中指定的功能模块处理所述异常,包括:通知所述处理模块信息中指定的功能模块执行对应的异常处理操作处理所述异常。
在异常处理装置400的一种实现方式中,异常处理单元430根据所述异常属性执行所述异常的处理流程,包括:根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码。
在异常处理装置400的一种实现方式中,所述清理属性的取值包括以下之一:自主清理:响应发生所述异常的模块的请求,从所述异常列表中删除所述异常码;无延时清理:在从所述异常列表中读取所述异常码时删除所述异常码;自定义时长清理:按照自定的周期从所述异常列表中删除所述异常码;按键清理:响应所述机器人的按键被按下的信号,从所述异常列表中删除所述异常码;命令清理:响应从服务器接收到的清理指令,从所述异常列表中删除所述异常码。
在异常处理装置400的一种实现方式中,异常处理单元430还用于:在根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之后,若判断出所述异常码对应的所述异常已经通知对应的功能模块处理,则通知所述功能模块所述异常已经被清理。
在异常处理装置400的一种实现方式中,异常处理单元430还用于:在根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之前,根据所述异常属性中的状态标记信息将与所述异常对应的全局标记设置为第一取值,所述第一取值用于指示所述异常已经发生;在根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之后,根据所述异常属性中的状态标记信息将与所述异常对应的全局标记设置为第二取值,所述第二取值用于指示所述异常已经被清理。
在异常处理装置400的一种实现方式中,所述异常码中包括异常来源、异常级别、异常类别、异常恢复方式以及子异常码中的至少一种信息。
本申请实施例提供的异常处理装置400,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
本申请实施例还一种计算机程序产品,该计算机程序产品包括计算机程序指令,这些计算机程序指令被处理器读取并运行时,执行本申请实施例提供的异常处理方法,该计算机程序产品可以被部署到机器人上。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,这些计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的异常处理方法。例如,计算机可读存储介质可以实现为图2的搬运机器人110中的存储器112。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (17)

1.一种异常处理方法,其特征在于,应用于机器人,所述方法包括:
从发生异常的模块接收与所述异常对应的异常码;
根据所述异常码确定所述异常的异常属性;
根据所述异常属性执行所述异常的处理流程。
2.根据权利要求1所述的异常处理方法,其特征在于,在所述从发生异常的模块接收与所述异常对应的异常码之后,以及在所述根据所述异常码确定所述异常的异常属性之前,所述方法还包括:
将所述异常码写入异常列表;
所述根据所述异常码确定所述异常的异常属性,包括:
从所述异常列表中读取所述异常码,并从已注册异常的异常属性中查找与所述异常码匹配的所述异常的异常属性。
3.根据权利要求2所述的异常处理方法,其特征在于,所述将所述异常码写入异常列表,包括:
检查所述异常码是否有效;
若所述异常码有效,则检查所述异常码是否已经存在于所述异常列表中;
若所述异常码不存在于所述异常列表中,则将所述异常码写入所述异常列表。
4.根据权利要求2或3所述的异常处理方法,其特征在于,从所述异常列表中读取的所述异常码为多个,所述根据所述异常属性执行所述异常的处理流程,包括:
根据与读取出的多个异常码匹配的异常属性中的处理级别,对所述多个异常码对应的异常按照从高优先级到低优先级的顺序依次执行对应的处理流程;其中,同优先级的异常按照其对应的异常码写入所述异常列表的先后顺序依次执行对应的处理流程。
5.根据权利要求4所述的异常处理方法,其特征在于,在开始执行较高优先级的异常对应的处理流程后,暂不执行较低优先级的异常对应的处理流程,直至在满足异常处理条件时,继续执行所述较低优先级的异常对应的处理流程;
其中,所述异常处理条件为:所述较高优先级的异常的异常码已经从所述异常列表中删除,而所述较低优先级的异常的异常码仍然未从所述异常列表中删除。
6.根据权利要求1-5中任一项所述的异常处理方法,其特征在于,所述异常属性包括异常释义,所述异常释义包括所述异常的描述信息以及所述异常的显示信息,
所述根据所述异常属性执行所述异常的处理流程,包括:
向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长;其中,所述描述信息用于在所述显示设备上进行显示,所述显示时长用于指示所述描述信息要显示的时间。
7.根据权利要求6所述的异常处理方法,其特征在于,所述向所述显示信息中指定的显示设备发送所述描述信息,或者所述描述信息以及所述显示信息中指定的显示时长,包括:
查询所述显示设备是否存在;
若所述显示设备存在,则查询所述显示设备配置的参数是否允许其显示所述描述信息;
若允许显示所述描述信息,则向所述显示设备发送所述描述信息,或者所述描述信息以及所述显示时长。
8.根据权利要求1-7中任一项所述的异常处理方法,其特征在于,所述异常属性包括处理模块信息,所述根据所述异常属性执行所述异常的处理流程,包括:
通知所述处理模块信息中指定的功能模块处理所述异常。
9.根据权利要求8所述的异常处理方法,其特征在于,所述处理模块信息还包括每个功能模块对应的异常处理操作,
所述通知所述处理模块信息中指定的功能模块处理所述异常,包括:
通知所述处理模块信息中指定的功能模块执行对应的异常处理操作处理所述异常。
10.根据权利要求2-5中任一项所述的异常处理方法,其特征在于,所述根据所述异常属性执行所述异常的处理流程,包括:
根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码;
其中,所述清理属性的取值包括以下之一:
自主清理:响应发生所述异常的模块的请求,从所述异常列表中删除所述异常码;
无延时清理:在从所述异常列表中读取所述异常码时删除所述异常码;
自定义时长清理:按照自定的周期从所述异常列表中删除所述异常码;
按键清理:响应所述机器人的按键被按下的信号,从所述异常列表中删除所述异常码;
命令清理:响应从服务器接收到的清理指令,从所述异常列表中删除所述异常码。
11.根据权利要求10所述的异常处理方法,其特征在于,在所述根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之后,所述方法还包括:
若所述异常码对应的所述异常已经通知对应的功能模块处理,则通知所述功能模块所述异常已经被清理。
12.根据权利要求10或11所述的异常处理方法,其特征在于,在所述根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之前,所述方法还包括:
根据所述异常属性中的状态标记信息将与所述异常对应的全局标记设置为第一取值,所述第一取值用于指示所述异常已经发生;
在所述根据所述异常属性中的清理属性所指示的方式删除所述异常列表中的所述异常码之后,所述方法还包括:
根据所述异常属性中的状态标记信息将与所述异常对应的全局标记设置为第二取值,所述第二取值用于指示所述异常已经被清理。
13.根据权利要求1-12中任一项所述的异常处理方法,其特征在于,所述异常码中包括异常来源、异常级别、异常类别、异常恢复方式以及子异常码中的至少一种信息。
14.一种机器人,其特征在于,包括存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行权利要求1-13中任一项所述的方法。
15.一种搬运系统,其特征在于,包括:
服务器,用于对机器人进行调度;
搬运机器人,用于根据所述服务器的调度进行货物搬运,所述搬运机器人在搬运货物的过程中执行权利要求1-13中任一项所述的方法。
16.一种计算机程序产品,其特征在于,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如权利要求1-13中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如权利要求1-13中任一项所述的方法。
CN202111643037.2A 2021-12-29 2021-12-29 异常处理方法、机器人、搬运系统、程序产品及存储介质 Active CN114367983B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111643037.2A CN114367983B (zh) 2021-12-29 2021-12-29 异常处理方法、机器人、搬运系统、程序产品及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111643037.2A CN114367983B (zh) 2021-12-29 2021-12-29 异常处理方法、机器人、搬运系统、程序产品及存储介质

Publications (2)

Publication Number Publication Date
CN114367983A true CN114367983A (zh) 2022-04-19
CN114367983B CN114367983B (zh) 2024-07-26

Family

ID=81142777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111643037.2A Active CN114367983B (zh) 2021-12-29 2021-12-29 异常处理方法、机器人、搬运系统、程序产品及存储介质

Country Status (1)

Country Link
CN (1) CN114367983B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114619906A (zh) * 2022-04-22 2022-06-14 北京海舶无人船科技有限公司 一种无人船自动充电装置、充电控制方法及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10300605A1 (de) * 2002-08-02 2004-02-26 Bosch Rexroth Ag Ablaufsteuerung mit definierter Behebung von Ausnahmezuständen
US20120277909A1 (en) * 2011-04-28 2012-11-01 Seiko Epson Corporation Robot control system, robot system and program
CN107479528A (zh) * 2017-06-19 2017-12-15 中国烟草总公司广东省公司 农用智能装置的故障告警系统及故障处理方法
CN108748263A (zh) * 2018-06-05 2018-11-06 上海木木机器人技术有限公司 一种机器人异常状态处理方法及系统
CN109213123A (zh) * 2012-07-26 2019-01-15 苏州宝时得电动工具有限公司 机器人的控制方法及机器人系统
CN111427739A (zh) * 2019-12-20 2020-07-17 上海有个机器人有限公司 一种机器人实时监控方法、介质、终端和装置
CN111844029A (zh) * 2020-07-09 2020-10-30 上海有个机器人有限公司 机器人预警监控方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10300605A1 (de) * 2002-08-02 2004-02-26 Bosch Rexroth Ag Ablaufsteuerung mit definierter Behebung von Ausnahmezuständen
US20120277909A1 (en) * 2011-04-28 2012-11-01 Seiko Epson Corporation Robot control system, robot system and program
CN109213123A (zh) * 2012-07-26 2019-01-15 苏州宝时得电动工具有限公司 机器人的控制方法及机器人系统
CN107479528A (zh) * 2017-06-19 2017-12-15 中国烟草总公司广东省公司 农用智能装置的故障告警系统及故障处理方法
CN108748263A (zh) * 2018-06-05 2018-11-06 上海木木机器人技术有限公司 一种机器人异常状态处理方法及系统
CN111427739A (zh) * 2019-12-20 2020-07-17 上海有个机器人有限公司 一种机器人实时监控方法、介质、终端和装置
CN111844029A (zh) * 2020-07-09 2020-10-30 上海有个机器人有限公司 机器人预警监控方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114619906A (zh) * 2022-04-22 2022-06-14 北京海舶无人船科技有限公司 一种无人船自动充电装置、充电控制方法及系统

Also Published As

Publication number Publication date
CN114367983B (zh) 2024-07-26

Similar Documents

Publication Publication Date Title
CN105357038B (zh) 监控虚拟机集群的方法和系统
CN112801579B (zh) 配送任务异常监控方法、装置、计算机设备以及存储介质
US10445816B2 (en) System, method, and non-transitory computer-readable storage media for allowing a customer to place orders remotely and for the order assembler to communicate directly with the customer
CN103049838B (zh) 基于有限状态机的包裹运输状态监控方法
US20060155818A1 (en) Sensor node management
Brusey et al. Effective RFID-based object tracking for manufacturing
CN111340424A (zh) 货物运输的预警方法和装置、存储介质及电子装置
US20210174039A1 (en) Systems and methods for identifying package properties in an automated industrial robotics system
Zhao et al. Location management of cloud forklifts in finished product warehouse
Mededjel et al. Towards a traceability system based on cloud and fog computing
CN114367983B (zh) 异常处理方法、机器人、搬运系统、程序产品及存储介质
US10915069B2 (en) Monitoring system for monitoring usage of uniquely identifiable machine components
JP5268589B2 (ja) 情報処理装置及び情報処理装置の運用方法
CN103971221A (zh) 基于复杂事件处理的rfid智能仓储管理系统
CN109829665B (zh) 物品拣选调度请求的处理方法及相关设备
US20220309604A1 (en) Computer Applications That Determine A Parcel Position Error
US20210365680A1 (en) Systems and methods for determining trailer status
CN112184108A (zh) 工具器管控方法及系统
US10685325B2 (en) Item return tracking systems and methods
Ollesch et al. Real-time event processing for smart logistics networks
CN115310893A (zh) 配送信息获取方法、装置及系统
CN114913627A (zh) 故障数据存储方法、装置、车辆及计算机可读存储介质
Neher Logistics management in an IoT world
CN110009420A (zh) 增值服务产品的出票系统以及出票方法
CN110865838A (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
GR01 Patent grant
GR01 Patent grant