一种用于机器人的指令处理方法及机器人与流程

文档序号:11143603阅读:517来源:国知局
一种用于机器人的指令处理方法及机器人与制造工艺

本发明涉及机器人领域,具体涉及一种用于机器人的指令处理方法及机器人。



背景技术:

随着机器人技术的不断发展,智能机器人的越来越多的被应用到人类日常的生产生活中。随着智能机器人硬件设备的不断升级,机器人的功能也越来越复杂,对应的机器人运行时数据处理量也不断加大。最直接的一个体现就是,在机器人运行过程中,机器人系统内部单位时间内生成并传输的指令量不断增加。尤其的,在具备上位机以及下位机结构的机器人系统中,在上位机与下位机的交互过程中,单位时间内上位机需要发送到下位机执行的下位机指令不断增加。

随着机器人系统处理能力的不断升级,在某些较复杂的功能应用的实现过程中,机器人面对的执行动作较多,很难有条理的实现每一个动作的执行,这就最终导致了机器人应用功能不能完美的实现,从而大大影响了用户体验。



技术实现要素:

本发明提供了一种用于机器人的指令处理方法,所述方法包括:

控制上位机接收多模态输入数据并解析;

控制上位机基于所述解析后的多模态输入数据生成待输出的多模态输出数据对应的下位机执行指令,将所述下位机执行指令保存到指令集中;

控制上位机从所述指令集中逐一调出下位机执行指令并输出给下位机;

控制下位机执行所述下位机执行指令进行多模态输出。

在一实施例中,所述方法还包括:

控制下位机在接收到每条下位机执行指令后,进行指令正确性判断;

控制下位机在确定接收到的下位机执行指令正确后,发送指令正确反馈给上位机;

控制上位机在发送每条下位机执行指令后,直至接收到所述指令正确反馈,再将该条下位机执行指令从所述指令集中删除,并继续从所述指令集中调出一条下位机执行指令输出给下位机。

在一实施例中,控制上位机从所述指令集中逐一调出下位机执行指令并输出给下位机,其中,启动独立的指令调用线程执行从所述指令集中逐一调出指令的操作;

当所述指令集为空时令所述指令调用线程进入睡眠状态;

当所述指令调用线程进入睡眠状态经过预设的特定时长后唤醒所述指令调用线程。

在一实施例中,所述控制上位机从所述指令集中逐一调出下位机执行指令并输出给下位机,其中:

所述指令集中的指令按先进先出的顺序输出给下位机。

在一实施例中,所述上位机及下位机之间的通信基于Modbus协议执行。

本发明还提出了一种机器人,所述机器人包括上位机以及下位机,所述机器人还包括:

构造在所述上位机中的输入数据解析模块,其配置为接收多模态输入数据并解析;

构造在所述上位机中的下位机指令生成模块,其配置为基于所述解析后的多模态输入数据生成待输出的多模态输出数据对应的下位机执行指令;

构造在所述上位机中的指令保存模块,其配置为保存所述下位机执行指令;

构造在所述上位机中的指令输出模块,其配置为从所述指令保存模块中逐一调出下位机执行指令并输出给所述下位机;

构造在所述下位机中的指令执行机构,其配置为执行所述下位机执行指令进行多模态输出。

在一实施例中:

所述指令执行机构包括指令验证单元,其配置为在接收到每条下位机执行指令后进行指令正确性判断,并且在确定接收到的下位机执行指令正确后发送指令正确反馈给所述上位机;

所述指令输出模块配置为在发送每条下位机执行指令后,直至接收到所述指令正确反馈,再将该条下位机执行指令从所述指令保存模块中删除,并继续从所述指令保存模块中调出一条下位机执行指令输出给下位机。

在一实施例中,所述指令输出模块配置为启动独立的指令调用线程执行从所述指令保存模块中逐一调出指令的操作,其中:

当所述指令保存模块为空时令所述指令调用线程进入睡眠状态;

当所述指令调用线程进入睡眠状态经过预设的特定时长后唤醒所述指令调用线程。

在一实施例中,所述指令输出模块配置为将所述指令保存模块中的指令按先进先出的顺序输出给下位机。

在一实施例中,所述上位机及所述下位机之间的通信基于Modbus协议执行。

根据本发明的方法,可以保证机器人上位机所生成的下位机执行指令有序的发送到下位机执行,从而大大提高机器人的运行可靠性,保证机器人输出的正确性,维护机器人的用户体验。

本发明的其它特征或优点将在随后的说明书中阐述。并且,本发明的部分特征或优点将通过说明书而变得显而易见,或者通过实施本发明而被了解。本发明的目的和部分优点可通过在说明书、权利要求书以及附图中所特别指出的步骤来实现或获得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:

图1是根据本发明一实施例的方法流程图;

图2~图5是根据本发明实施例的方法的部分流程图;

图6和图7是根据本发明实施例的机器人系统结构简图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此本发明的实施人员可以充分理解本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程并依据上述实现过程具体实施本发明。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

随着机器人系统处理能力的不断升级,在某些较复杂的功能应用的实现过程中,机器人面对的执行动作较多,很难有条理的实现每一个动作的执行,这就最终导致了机器人应用功能不能完美的实现,从而大大影响了用户体验。

针对上述问题,本发明提出了一种用于机器人的指令处理方法。在本发明一实施例中,在机器人的上位机生成需要下位机执行的指令后,并不是立刻直接将该指令发送到下位机执行,而是现将该指令保存到指令集中,然后将指令集中的指令顺次发送到下位机指令。这样在同时存在多个需要执行的下位机指令时,就不会出现由于指令同时发送而造成的指令通信拥堵以及下位机指令执行混乱。从而保证了机器人下位机输出的完美执行,大大提高了机器人的用户体验。

具体的,在本发明一实施例中,机器人系统的上下位机之间基于用于工业现场的总线协议(Modbus协议)进行通信。

接下来基于附图详细描述根据本发明实施例的方法的详细流程,附图的流程图中示出的步骤可以在包含诸如一组计算机可执行指令的计算机系统中执行。虽然在流程图中示出了各步骤的逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

如图1所示,在一实施例中,首先机器人控制上位机接收多模态输入数据(步骤S100);然后控制上位机解析接收到的多模态输入数据(步骤S110);接着控制上位机基于解析后的多模态输入数据生成待输出的多模态输出数据对应的下位机执行指令(步骤S120),并将生成的下位机执行指令保存到指令集中(步骤S130);接下来,控制上位机从指令集中逐一调出下位机执行指令并输出给下位机(步骤S140);最后控制下位机执行下位机执行指令进行多模态输出。

以一具体的应用场景为例,假设机器人为了响应当前的交互输入数据需要下位机执行下位机执行指令A、B、C。在现有技术中,当下位机执行指令A、B、C同时(或在一个较短时间内依次)生成并同时(或在一个较短时间内依次)输出到下位机,势必造成通信拥堵(一般的,上下位机之间的通信通道只支持同时传输一个指令),并且造成下位机执行混乱(下位机同时接收到多个待执行指令,其并不能确认该先执行哪一个)。而在本发明一实施例中,当上位机生成下位机执行指令A、B、C后先将其保存入指令集(A,B,C),然后将指令集中的指令依次调出并输出给下位机,也就是说,下位机会依次接收到指令A,B,C(每次一条指令)。这样,不仅避免了指令传输的拥堵,而且避免了下位机指令执行混乱。

根据本发明的方法,可以保证上位机所生成的下位机执行指令有序的发送到下位机执行,从而大大提高机器人的运行可靠性,保证机器人输出的正确性,维护机器人的用户体验。

进一步的,在步骤S140中,上位机从指令集中逐一调出下位机执行指令并输出给下位机,具体的,在一实施例中,指令集中的指令按先进先出的顺序输出给下位机。例如,如果上位机按照A、B、C的顺序依次生成下位机执行指令A、B、C,那么将下位机执行指令A、B、C保存到指令集后,按照A、B、C的顺序依次调用并输出。如果上位机按照A、C、B的顺序依次生成下位机执行指令A、C、B,那么将下位机执行指令A、C、B保存到指令集后,按照A、C、B的顺序依次调用并输出。

在图1所示实施例中,在步骤S140中,上位机从指令集中逐一调出下位机执行指令并输出给下位机,在此过程中,在某一下位机执行指令的输出出现错误的情况下,如果继续按照原定顺序输出下一条下位机执行指令,那么势必会影响到下位机整体的多模态输出。例如,正常的指令发送执行顺序为A,B,C。如果指令B的输出出现错误,那么实际上下位机接收到的指令就为A,B1,C(B1为错误指令)。这样,不仅造成了需要执行的输出的缺失(少执行了指令B),而且还会造成下位机指令执行混乱(错误指令B1的无法执行或者执行结果混乱势必打乱正常的输出结果)。

针对上述问题,在一实施例中,采用了下位机指令验证反馈的方法。具体的,控制下位机在接收到每条下位机执行指令后,进行指令正确性判断;控制下位机在确定接收到的下位机执行指令正确后,发送指令正确反馈给上位机;控制上位机在发送每条下位机执行指令后,直至接收到所述指令正确反馈,再将该条下位机执行指令从所述指令集中删除,并继续从所述指令集中调出一条下位机执行指令输出给下位机。

具体的,如图2所示,在一实施例中,上位机从指令集中调出第一条下位机执行指令(输出次序最靠前的下位机执行指令)并输出到下位机(步骤S200);下位机接收到该指令后,首先验证该指令(步骤S210),判断该指令是否正确(步骤S220)。

如果下位机判断接收到的下位机执行指令是正确的,那么就发送指令正确反馈到上位机(步骤S230)。上位机接收到指令正确反馈后从指令集中删除第一条下位机执行指令(已被输出的下位机执行指令)(步骤S240);然后返回步骤S200,调用当前的第一条下位机执行指令(当前输出次序最靠前的下位机执行指令)并输出到下位机。

如果下位机判断接收到的下位机执行指令是错误的,那么就发送指令错误反馈到上位机(步骤S250)。上位机接收到指令错误反馈后直接返回步骤S200(跳过步骤S240),调用第一条下位机执行指令并输出到下位机(将已输出的指令再次输出)。

这样,就可以在指令输出错误时再次重复输出发生错误的指令,从而保证按照次序正确的输出全部的指令到下位机。

进一步的,在某些指令传输场景中,指令的输出错误造成的结果并不仅仅是下位机接收到错误的指令,也可能是指令完全没有发送到下位机。例如,正常的指令发送执行顺序为A,B,C。如果指令B的输出出现错误,那么实际上下位机接收到的指令就为A,C(B1为错误指令)。这样,不仅造成了需要执行的输出的缺失(少执行了指令B),而且还会造成下位机指令执行混乱(指令执行的缺失必然会打乱正常的指令执行顺序)。

针对这一情况,在本发明一实施例中,上位机在输出指令后会判断在预设时长内下位机是否回馈的指令是否正确,如果没有回馈,则说明下位机并没有接收到指令(无论是正确的还是错误的)。此时需要重新进行指令的输出。

具体的,如图3所示,在一实施例中,机器人的上位机将指令集中的第一条下位机执行指令输出给下位机(步骤S300),然后开启计时(步骤S301)。

在计时过程中,判断是否接收到下位机反馈的输出指令是否正确的反馈结果(步骤S310)。如果没有接收到,则判断当前的计时结果是否达到了预设时长,如果没有达到预设时长,则继续进行计时并返回步骤S310,继续判断是否接收到下位机反馈的输出指令是否正确的反馈结果。如果当前的计时结果达到了预设时长(输出指令后在预设时长内并没得到下位机的反馈),则说明下位机并没有接收到上位机发送来的指令,此时返回步骤S300,调用第一条下位机执行指令并输出到下位机(将已输出的指令再次输出)。

在步骤S310中,如果上位机接收到了下位机反馈的输出指令是否正确的反馈结果,则停止计时(步骤S311),并进一步指令是否被正确输出(下位机反馈的是指令正确还是指令错误)(步骤S320)。如果指令输出正确,则从指令集中删除第一条下位机执行指令(已被输出的下位机执行指令)(步骤S321);然后返回步骤S300,调用当前的第一条下位机执行指令(当前输出次序最靠前的下位机执行指令)并输出到下位机。如果指令输出错误,则直接返回步骤S300,调用第一条下位机执行指令并输出到下位机(将已输出的指令再次输出)。

进一步的,在某些指令执行场景中,下位机执行指令的速度远远小于上位机生成并输出新指令的速度。这就会导致大量尚未执行的下位机执行指令堆积在下位机处,从而造成下位机处的指令堆积,影响下位机指令的顺利进行。

针对上述情况,在一实施例中,在发送下位机执行指令之前,上位机首先判断下位机当前的状态,只有在下位机状态为空闲时才会将指令集中的第一条下位机执行指令发送给下位机。

如图4所示,在一实施例中,机器人的上位机将指令集中的第一条下位机执行指令输出给下位机(步骤S400),然后判断当前的指令输出是否成功(正确)(步骤S410)。具体的,在步骤S410中,判断下位机是否接收到了指令(在预设时长内是否有下位机的反馈)以及下位机接收到的指令是否正确(下位机反馈的信息是指令正确还是指令错误)。当上位机判断当前指令输出错误时,其直接返回步骤S300,调用第一条下位机执行指令并输出到下位机(将已输出的指令再次输出)。

当上位机判断当前指令输出正确时,从指令集中删除第一条下位机执行指令(已被输出的下位机执行指令)(步骤S420);然后判断下位机是否处于空闲状态(是否可以接收新的下位机执行指令)(步骤S430)。如果下位机处于空闲状态,则返回步骤S400,调用当前的第一条下位机执行指令(当前输出次序最靠前的下位机执行指令)并输出到下位机。如果下位机不处于空闲状态,则进行等待(具体的,在本实施例中,上位机等待一个预设的固定时长),并返回步骤S430,继续再次判断下位机是否处于空闲状态。

进一步的,为了保证上位机的指令输出能够顺利进行,在本发明一实施例中,上位机启动独立的指令调用线程执行从指令集中逐一调出指令的操作。这样,就将指令的生成过程与指令的发送过程相互间独立开来。使得指令的生成过程不会干扰到指令的发送,及时同时(或短时间内)有大量的指令生成,也不会发生指令发送堆积以及指令通信堵塞的情况。

具体的,如图5所示,在一实施例中,上位机首先判断存放下位机执行指令的指令集是否为空(步骤S500),如果不为空,即说明当前存在需要发送到下位机的下位机执行指令,此时应用指令调用线程调用指令集中的第一条下位机执行指令并发送到下位机(步骤S550)。

如果指令集为空,则说明当前没有需要发送到下位机的下位机执行指令,此时令指令调用线程进入睡眠状态以降低系统资源消耗(步骤S510)。

为了避免指令调用线程过长时间处于睡眠状态而遗漏指令的发送,在一实施例中,当指令调用线程进入睡眠状态经过预设的特定时长后唤醒指令调用线程。具体的,在指令调用线程进入睡眠状态的同时开始计时(步骤S520),并判断计时是否达到预设时长(步骤S530)。如果没有达到预设时长,则继续指令调用线程的睡眠状态,继续计时。如果达到预设时长,则唤醒指令调用线程(步骤S540),返回步骤S500,判断当前的指令集是否为空。

综上,根据本发明的方法,可以保证上位机所生成的下位机执行指令有序的发送到下位机执行,避免指令堆积、指令错误以及指令遗失等情况的发生。从而大大提高机器人下位机指令执行的正确率,提高机器人的运行可靠性,保证机器人输出的正确性,维护机器人的用户体验。

基于本发明的方法,本发明还提出了一种机器人。如图6所示,在一实施例中,机器人包括上位机601以及下位机602,机器人还包括:

构造在上位机601中的输入数据解析模块610,其配置为接收多模态输入数据并解析;

构造在上位机601中的下位机指令生成模块620,其配置为基于输入数据解析模块610解析后的多模态输入数据生成待输出的多模态输出数据对应的下位机执行指令;

构造在上位机601中的指令保存模块630,其配置为保存下位机指令生成模块620生成的下位机执行指令;

构造在上位机601中的指令输出模块640,其配置为从指令保存模块630中逐一调出下位机执行指令并输出给下位机602;

构造在下位机602中的指令执行机构,其配置为执行接收到的下位机执行指令进行多模态输出。

具体的,在一实施例中,指令输出模块640配置为将指令保存模块630中的指令按先进先出的顺序输出给下位机602。

进一步的,在一实施例中,上位机601及下位机602之间的通信基于Modbus协议执行。

进一步的,在一实施例中,下位机上的指令执行机构包括指令验证单元,其配置为在接收到每条下位机执行指令后进行指令正确性判断,并且在确定接收到的下位机执行指令正确后发送指令正确反馈给所述上位机;对应的,上位机上的指令输出模块配置为在发送每条下位机执行指令后,直至接收到指令正确反馈,再将该条下位机执行指令从所述指令保存模块中删除,并继续从指令保存模块中调出一条下位机执行指令输出给下位机。

如图7所示,在一实施例中,上位机701中构造有输入数据解析模块710、下位机指令生成模块720、指令保存模块730以及指令输出模块740。

输入数据解析模块710接收多模态输入数据并解析;下位机指令生成模块720基于输入数据解析模块710解析后的多模态输入数据生成待输出的多模态输出数据对应的下位机执行指令;指令保存模块730保存下位机指令生成模块720生成的下位机执行指令;指令输出模块740从指令保存模块730中逐一调出下位机执行指令并输出给下位机702。

下位机702中构造有指令执行机构750,。指令验证单元751在指令执行机构750接收到每条下位机执行指令后进行指令正确性判断,并且在确定接收到的下位机执行指令正确后发送指令正确反馈给上位机701的指令输出模块740。对应的,指令输出模块740在发送每条下位机执行指令后,直至接收到来自指令验证单元751指令正确反馈,再将该条下位机执行指令从指令保存模块730中删除,并继续从指令保存模块730中调出一条下位机执行指令输出给下位机702。

进一步的,在一实施例中,指令输出模块配置为启动独立的指令调用线程执行从指令保存模块中逐一调出指令的操作,其中:

当指令保存模块为空时令指令调用线程进入睡眠状态;

当指令调用线程进入睡眠状态经过预设的特定时长后唤醒指令调用线程。

虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。本发明所述的方法还可有其他多种实施例。在不背离本发明实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变或变形,但这些相应的改变或变形都应属于本发明的权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1