发明内容
本公开的目的在于提供一种机器人控制方法及控制系统、计算机可读存储介质及电子设备,进而至少在一定程度上克服因管理、运动控制系统分离设计导致的计算资源浪费、通信效率低、生产成本高等问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供了一种机器人控制方法,包括:任务接收线程接收到任务信息,将所述任务信息加入接收队列;任务解析线程从所述接收队列中获取任务信息,将所述任务信息转换为待执行动作并将所述待执行动作加入任务队列中;动作配发线程从所述任务队列中获取待执行动作,将所述待执行动作转换为动作参数加入动作信息队列中,并将所述动作信息队列存储至共享内存模块;动作执行线程从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:结果接收线程获取机器人完成所述任务时的运行数据及运行结果,并加入存储于所述共享内存模块的动作信息队列中;所述动作配发线程从所述共享内存模块中获取所述运行数据及运行结果,根据所述运行结果判断任务执行结果,并将所述执行结果和所述运行数据加入待发送信息队列;消息发送线程从所述待发送信息队列中获取所述执行结果返回任务发布中心,并获取运行数据返回数据中心。
在本公开的一种示例性实施例中,基于前述方案,所述将所述任务信息转换为待执行动作,包括:对所述任务信息进行解析得到完成任务的系列动作;对所述系列动作进行拆解,得到待执行动作。
在本公开的一种示例性实施例中,基于前述方案,在所述任务解析线程对所述任务信息进行解析得到完成任务的系列动作之前,所述方法还包括:所述任务解析线程对所述任务信息进行合法性检验。
在本公开的一种示例性实施例中,基于前述方案,所述根据所述动作参数控制机器人完成所述任务信息对应的任务,包括:将所述动作参数转换为模型数据;将模型数据作为入参输入参数计算模型进行计算,得到轴控指令;将所述轴控指令下发至各轴控模块,以使各轴控模块执行轴控指令;收集轴控模块执行轴控指令的运行数据,将其作为入参输入至参数计算模型以获取更新后的轴控指令,根据更新后的轴控指令控制各个轴控模块,直至完成所述任务信息对应的任务。
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:若所述任务接收线程、所述任务解析线程、所述动作配发线程以及所述动作执行线程中至少一个发生异常状况,则向异常处理模块发送异常信号,以使所述异常处理模块根据所述异常信号处理异常状况。
在本公开的一种示例性实施例中,基于前述方案,所述异常处理模块根据所述异常信号处理异常状况,包括:响应于接收到的异常信号,判断所述异常信号的种类;根据所述异常信号的种类获取对应的异常数据;根据所述异常数据对所述异常状况进行对应的处理。
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:响应于配置指令,系统配置模块根据配置指令中的配置参数对所述任务接收线程、所述任务解析线程、所述动作配发线程以及所述动作执行线程中至少一个线程的模式和/或参数进行配置。
根据本公开的第二方面,提供了一种机器人控制系统,包括系统管理模块、共享内存模块、运动控制模块;所述系统管理模块对接收到的任务信息进行转换生成对应的动作参数,并发送至所述共享内存模块进行存储;所述运动控制模块从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
在本公开的一种示例性实施例中,基于前述方案,所述系统管理模块包括任务接收线程、任务解析线程以及动作配发线程;所述任务接收线程接收到任务信息,将所述任务信息加入接收队列;所述任务解析线程从所述接收队列中获取任务信息,将所述任务信息转换为待执行动作并将所述待执行动作加入任务队列中;所述动作配发线程从所述任务队列中获取待执行动作,将所述待执行动作转换为动作参数并加入动作信息队列中,并将所述动作信息队列存储至共享内存模块。
在本公开的一种示例性实施例中,基于前述方案,所述共享内存模块接收并存储所述动作参数。
在本公开的一种示例性实施例中,基于前述方案,所述运动控制模块包括动作执行线程,所述动作执行线程从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
在本公开的一种示例性实施例中,基于前述方案,所述控制系统还包括异常处理模块;所述异常处理模块在获取到所述系统管理模块、所述共享内存模块以及所述运动控制模块中至少一个发生异常状况时发送的异常信号时,根据所述异常信号处理异常状况。
在本公开的一种示例性实施例中,基于前述方案,所述控制系统还包括系统配置模块;所述系统配置模块响应于配置指令,根据所述配置指令中的配置参数对所述系统管理模块、所述共享内存模块以及所述运动控制模块中至少一个的模式和/或参数进行配置。
根据本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的机器人控制方法。
根据本公开实施例的第四方面,提供了一种电子设备,包括:
处理器;以及
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的机器人控制方法。
本公开实施例提供的技术方案可以包括以下有益效果:
本公开的一种实施例所提供的机器人控制方法中,任务接收线程接收到任务信息,将所述任务信息加入接收队列;任务解析线程从所述接收队列中获取任务信息,将所述任务信息转换为待执行动作并将所述待执行动作加入任务队列中;动作配发线程从所述任务队列中获取待执行动作,将所述待执行动作转换为动作参数并加入动作信息队列中,并将所述动作信息队列存储至共享内存模块;动作执行线程从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。上述的机器人控制方法通过多个线程间的通信和共享内存模块完成对机器人的管理和控制,将机器人的管理控制系统和运动控制系统的功能一体化,使得可以对一体化的控制系统设置统一的异常管理、系统配置等功能模块,无需对管理系统和控制系统分别进行异常管理和配置,减少了计算资源的浪费;同时,由于在上述机器人控制方法中,管理控制系统和运动控制系统无需通过总线进行数据传输,而是通过线程通信和共享内存进行数据交互,因此提高了通信效率也降低了连接失败的可能性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
具体实施方式
现在将参照附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
在本示例性实施例中,首先提供了一种机器人控制方法,可以应用于机器人的控制,例如,对于无人货舱中用于搬运货物的搬运机器人,或者用于执行焊接、切削等动作的用于生产的工业机器人等机器人的控制。所述机器人控制方法可以依赖机器人控制系统的终端实现,例如,可以由AGV小车控制系统终端呈现。参照图1中所示,上述的机器人控制方法可以包括以下步骤:
S11,任务接收线程接收到任务信息,将所述任务信息加入接收队列;
S12,任务解析线程从所述接收队列中获取任务信息,将所述任务信息转换为待执行动作并将所述待执行动作加入任务队列中;
S13,动作配发线程从所述任务队列中获取待执行动作,将所述待执行动作转换为动作参数并加入动作信息队列中,并将所述动作信息队列存储至共享内存模块;
S14,动作执行线程从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
根据本示例性实施例中所提供的机器人控制方法中,一方面,通过多个线程间的通信和共享内存模块完成对机器人的管理和控制,将机器人的管理控制系统和运动控制系统的功能一体化,使得可以对一体化的控制系统设置统一的异常管理、系统配置等功能模块,无需对管理系统和控制系统分别进行异常管理和配置,减少了计算资源的浪费;同时,由于在上述机器人控制方法中,管理控制系统和运动控制系统无需通过总线进行数据传输,而是通过线程通信和共享内存进行数据交互,因此提高了通信效率也降低了连接失败的可能性。
下面,将结合附图及实施例对本示例性实施例中的机器人控制方法的各个步骤进行更详细的说明。
在步骤S11中,任务接收线程接收到任务信息,将所述任务信息加入接收队列。
在本公开的一种示例实施例中,任务接收线程接收到任务发布中心下发的任务信息时,将任务信息加入到接收队列后,可以将接收到任务信息的消息加入待发送信息队列,以使消息发送线程可以将确认接收到该任务的信息返回至任务发布中心。通过设置确认接收消息的反馈,可以使得任务发布中心能够及时获知任务信息是否被接收,进而避免任务发布中心重复向机器人发送同一任务信息造成的资源浪费。
在步骤S12中,任务解析线程从所述接收队列中获取任务信息,将所述任务信息转换为待执行动作并将所述待执行动作加入任务队列中。
在本公开的一种示例实施例中,所述将所述任务信息转换为待执行动作,参照图2所示,包括步骤S121至步骤S122:
步骤S121,对所述任务信息进行解析得到完成任务的系列动作。
步骤S122,对所述系列动作进行拆解,得到待执行动作。
在本公开的一种示例实施例中,任务发布中心下发的任务信息需要通过系列动作完成,因此任务解析线程在获取到任务信息后,需要对任务信息进行解析,得到可以完成对应任务的系列动作。在得到系列动作后,需要将系列动作拆解,以使机器人能够一步一步完成整个系列动作。例如,AGV小车接收到将目标货物从A移动至B的任务信息,小车可能需要移动至A将目标货物放在小车上,再移动至B将货物放下等系列动作。为了使机器人能够执行,系列动作可以拆分为:移动至A、将目标货物抬起、将目标货物放在小车上,移动至B,将目标货物从小车上抬起,将目标货物放在B多个动作。
在本公开的一种示例实施例中,在任务解析线程对任务信息进行解析得到完成任务的系列动作之前,可以先对任务信息进行合法性检验。其中,所述合法性验证可以是验证任务信息是否任务发布中心下发的认证的任务信息,例如,可以通过任务发布中心在任务信息中添加合法标识,任务解析线程对任务信息上的合法标识进行验证的方式;所述合法性验证还可以是对任务信息是否分配至当前机器人进行验证,例如,任务发布中心可以在任务信息中添加机器人码,任务解析线程则根据机器人码判断任务信息是否属于当前机器人。通过对任务信息是否合法进行验证,防止不合法任务信息对应的任务被机器人执行或者任务信息下发至错误的机器人造成机器人的损伤或者其他损失。
在步骤S13中,动作配发线程从所述任务队列中获取待执行动作,将所述待执行动作转换为动作参数加入动作信息队列中,并将所述动作信息队列存储至共享内存模块。
在本公开的一种示例实施例中,动作配发线程从任务队列中获取到待执行动作,将待执行动作转换为对应的动作参数加入动作信息队列时,可以根据任务的优先级按照优先级顺序加入动作信息队列,以使机器人可以根据优先级执行对应的任务。同时,由于动作信息队列中的每一个动作均需要机器人分别执行,可能需要一定的时间。因此,将动作信息队列存储至共享内存模块,以使动作执行线程能够在需要时直接从存储于共享内存模块的动作信息队列中获取动作参数。
在步骤S14中,动作执行线程从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
在本公开的一种示例实施例中,根据所述动作参数控制机器人完成所述任务信息对应的任务,参照图3所示,包括步骤S141至步骤S144:
步骤S141,将所述动作参数转换为模型数据。
步骤S142,将模型数据作为入参输入参数计算模型进行计算,得到轴控指令。
步骤S143,将所述轴控指令下发至各轴控模块,以使各轴控模块执行轴控指令。
步骤S144,收集轴控模块执行轴控指令的运行数据,将其作为入参输入至参数计算模型以获取更新后的轴控指令,根据更新后的轴控指令控制各个轴控模块,直至完成所述任务信息对应的任务。
在本公开的一种示例实施例中,通过将任务参数转换为参数计算模型所需的模型参数并计算得出轴控指令,将轴控指令分别下发至各个轴控模块,以使轴控模块根据轴控指令进行运动;在轴控模块进行运动时,实时收集轴控模块的运行数据,并将运行数据反馈至参数计算模型中,进行进一步计算得到更新的轴控指令,最后根据更新后的轴控指令再一次控制各轴控模块进行运动,直至完成任务信息对应的任务。其中,所述参数计算模型包括导航参数计算模型、速度规划参数计算模型等多种参数计算模型。例如,在得到任务参数为行走时,可以根据速度规划参数计算模型计算出行走的加速、匀速、减速等各个阶段的速度以及各个阶段的时间,随后将指令下发至轴控模块进行执行,在执行过程中实时收集小车的位置、姿势等运行数据,并利用速度规划参数计算模型进一步计算出更合理的轴控指令控制各轴控模块执行。
在本公开的一种示例实施例中,为了方便管理机器人的状态,在机器人执行任务之后,参照图4所示,所述机器人控制方法还包括如下步骤S21至步骤S23:
步骤S21,结果接收线程获取机器人完成所述任务时的运行数据及运行结果,并加入存储于所述共享内存模块的动作信息队列中。
步骤S22,所述动作配发线程从所述共享内存模块中获取所述运行数据及运行结果,根据所述运行结果判断任务执行结果,并将所述执行结果和所述运行数据加入待发送信息队列。
步骤S23,消息发送线程从所述待发送信息队列中获取所述执行结果返回任务发布中心,并获取运行数据返回数据中心。
在本公开的一种示例实施例中,为了方便对机器人的管理以及对多个机器人任务的统筹,在机器人执行任务时,结果接收线程需要获取机器人各个轴控模块完成任务时的运行数据以及最终的运行结果,并且通过共享内存模块将运行数据和运行结果分享至动作配发线程;动作配发线程从共享内存模块中获取运行数据和运行结果,根据运行结果判断任务执行结果,将任务结果和运行数据加入待发送信息队列;消息发送线程在待发送消息队列中获取执行结果返回任务发布中心,以使任务发布中心进行进一步的调度,同时将运行数据返回数据中心以使数据中心对机器人的状态进行监督和管理。通过消息发布线程对执行结果和运行数据进行返回使得整个控制系统可以只用一套网络模块即可完成数据通信,节约了控制系统的生产成本,同时也能够输出统一时间的运行数据,方便后续对运行数据进行分析。
在本公开的一种示例实施例中,还可以通过异常处理模块对机器人控制过程中发生的异常状况进行处理。在所述任务接收线程、所述任务解析线程、所述动作配发线程以及所述动作执行线程中至少一个发生异常状况时,向异常处理模块发送异常信号,以使所述异常处理模块根据所述异常信号处理异常状况。参照图5所示,异常处理模块根据所述异常信号处理异常状况,包括如下步骤S31至步骤S33:
步骤S31,响应于接收到的异常信号,判断所述异常信号的种类。
步骤S32,根据所述异常信号的种类获取对应的异常数据。
步骤S33,根据所述异常数据对所述异常状况进行对应的处理。
在本公开的一种示例实施例中,异常处理模块在接收到异常信号后,判断异常信号的种类,根据异常信号的种类获取对应的异常数据,最后根据异常数据对异常状况进行处理。例如,异常处理模块接收到运动控制模块的异常信号,经判断确定异常信号为故障信号,此时获取故障出现的异常数据,根据异常数据判断轴控模块A发生故障,此时向任务中心发送故障信号,以使检修人员进行检修。异常处理模块的设置能够同时监控各个线程的异常状况,实现一个异常处理模块同时处理控制系统的异常状况,避免了因为管理控制系统和运动控制系统分离设计造成的计算资源浪费。
在本公开的一种示例实施例中,在对机器人进行控制之前还需要对各个线程的参数或者模式进行配置,因此,响应于配置指令,系统配置模块可以根据配置指令中的配置参数对所述任务接收线程、所述任务解析线程、所述动作配发线程以及所述动作执行线程中至少一个线程的模式和/或参数进行配置。通过系统配置模块能够直接控制多个线程,避免了分别为管理控制系统和运动控制系统设计系统配置模块,节约了计算资源,同时通过一个系统配置模块可以为多个线程进行配置也方便了对整个系统的配置。
以下结合图6,以AGV小车的控制为例,对本公开实施例的技术方案的实现细节进行详细阐述:
为了对整个控制方法中各个线程进行配置和异常管理,设置系统配置模块和异常管理模块。AGV小车的控制方法包括如下步骤:
步骤S601,任务接收线程将接收的任务信息进行合法验证后,加入接收队列;
步骤S602,任务解析线程从接收队列中获取任务信息,将任务信息转换为待执行动作并将所述待执行动作加入任务队列中;
步骤S603,动作配发线程将任务信息已经接收到的确认消息加入待发送消息队列以使消息发送线程向任务发布中心反馈;
步骤S604,动作配发线程从任务队列中获取待执行动作,将待执行动作转换为动作参数加入动作信息队列中,并通过共享内存模块共享至动作执行线程;
步骤S605,动作执行线程根据共享内存模块中动作信息队列中的动作参数控制AGV小车进行运动,结果接收线程接收AGV小车运动时的运行数据和运行结果并通过共享内存模块反馈至动作配发线程;
步骤S606,动作配发线程从共享内存模块中获取所述运行数据及运行结果,根据所述运行结果判断任务执行结果;
步骤S607,动作配发线程将执行结果和运行数据加入待发送信息队列,以使消息发送线程向任务发布中心和数据中心进行反馈。
基于上述机器人控制方法,对应的机器人的控制系统可以包括系统管理层、任务管理层、动作执行层以及硬件抽象层。系统管理层用于对控制系统内的软件和外设固件的版本进行检查升级,以及对系统的初始状态、就绪状态、运行状态以及挂起状态进行切换。任务管理层用于对任务信息进行合法性验证、解析、分配以及对任务进行实时监控收集任务数据;动作执行层则用于控制机器人各部件进行运动并且收集每个动作所产生的运行数据;硬件抽象层则对各个硬件单元进行结构化抽象,包括:伺服电机、网络通信设备、电池、安全传感器等;日志管理层则用于记录系统运行的运行数据以及异常数据等;异常管理层则用于对系统发生的各种异常进行处理。
其中,对任务信息进行合法性验证和解析、对任务进行分配、对消息进行返回等对实时性较低的任务可以通过任务解析线程、动作配发新城、消息发送线程来执行;而对于控制机器人各部件进行运动并且收集每个动作所产生的运行数据等对实时性要求较高的任务则可以通过动作执行线程和结果接收线程执行;对控制系统内的软件和外设固件的版本进行检查升级以及对系统发生的各种异常进行处理等任务则可以由系统配置模块和异常管理模块进行处理。
需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
此外,在本公开的示例性实施方式中,还提供了一种机器人控制系统。参照图7所示,所述机器人控制系统700包括:系统管理模块71,共享内存模块72和运动控制模块73。
其中,所述系统管理模块71可以用于对接收到的任务信息进行转换生成对应的动作参数,并发送至所述共享内存模块进行存储;所述共享内存模块72可以用于接收并存储所述动作参数;所述运动控制模块73可以用于从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
在本公开的一种示例性实施例中,基于前述方案,所述系统管理模块71包括:任务接收线程711、任务解析线程712和动作配发线程713。
其中,所述任务接收线程711可以用于接收到任务信息,将所述任务信息加入接收队列;任务解析线程712可以用于从所述接收队列中获取任务信息,将所述任务信息转换为待执行动作并将所述待执行动作加入任务队列中;动作配发线程713可以用于从所述任务队列中获取待执行动作,将所述待执行动作转换为动作参数并加入动作信息队列中,并将所述动作信息队列存储至共享内存模块。
在本公开的一种示例性实施例中,基于前述方案,所述任务解析线程712可以用于对所述任务信息进行解析得到完成任务的系列动作;对所述系列动作进行拆解,得到待执行动作。
在本公开的一种示例性实施例中,基于前述方案,所述任务解析线程712可以用于对所述任务信息进行合法性检验。
在本公开的一种示例性实施例中,基于前述方案,所述动作配发线程713还可以用于从所述共享内存模块中获取所述运行数据及运行结果,根据所述运行结果判断任务执行结果,并将所述执行结果和所述运行数据加入待发送信息队列。
在本公开的一种示例性实施例中,基于前述方案,所述系统管理模块71还可以包括:消息发送线程714。具体地,所述消息发送线程714可以用于从所述待发送信息队列中获取所述执行结果返回任务发布中心,并获取运行数据返回数据中心。
在本公开的一种示例性实施例中,基于前述方案,所述运动控制模块73包括:动作执行线程731,所述动作执行线程用于从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
在本公开的一种示例性实施例中,基于前述方案,所述动作执行线程731可以用于将所述任务参数转换为模型数据;将模型数据作为入参输入参数计算模型进行计算,得到轴控指令;将所述轴控指令下发至各轴控模块,以使各轴控模块执行轴控指令;收集轴控模块执行轴控指令的运行数据,将其作为入参输入至参数计算模型以获取更新后的轴控指令,根据更新后的轴控指令控制各个轴控模块,直至完成所述任务信息对应的任务。
在本公开的一种示例性实施例中,基于前述方案,所述运动控制模块73还可以包括:结果接收线程732。具体地,所述结果接收线程732可以用于获取机器人完成所述任务时的运行数据及运行结果,并加入存储于所述共享内存模块的动作信息队列中。
在本公开的另一种示例性实施例中,基于前述方案,所述机器人控制系统800还包括异常处理模块74,参照图8所示。异常处理模块74可以用于在获取到所述系统管理模块、所述共享内存模块以及所述运动控制模块中至少一个发生异常状况时发送的异常信号时,根据所述异常信号处理异常状况。
在本公开的另一种示例性实施例中,基于前述方案,所述机器人控制系统900还包括系统配置模块75,参照图9所示。系统配置模块75可以用于响应于配置指令,根据所述配置指令中的配置参数对所述系统管理模块、所述共享内存模块以及所述运动控制模块中至少一个的模式和/或参数进行配置。
由于本公开的示例实施例的机器人控制系统的各个功能模块与上述机器人控制方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的机器人控制方法的实施例。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,在本公开的示例性实施例中,还提供了一种能够实现上述机器人控制方法的电子设备。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。
下面参照图10来描述根据本公开的这种实施例的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1010执行,使得所述处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。例如,所述处理单元1010可以执行如图1中所示的步骤S110:任务接收线程接收到任务信息,将所述任务信息加入接收队列;S120:任务解析线程从所述接收队列中获取任务信息,将所述任务信息转换为待执行动作并将所述待执行动作加入任务队列中;S130:动作配发线程从所述任务队列中获取待执行动作,将所述待执行动作转换为动作参数加入动作信息队列中,并将所述动作信息队列存储至共享内存模块;S140:动作执行线程从所述共享内存模块中获取动作参数,并根据所述动作参数控制机器人完成所述任务信息对应的任务。
存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(ROM)1023。
存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1000也可以与一个或多个外部设备1070(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1060通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。
参照图11,描述了根据本公开的实施例的用于实现上述方法的程序产品1100,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。