本發明涉及機器人領域,具體涉及一種用于機器人的交互輸出方法以及機器人。
背景技術:
隨著機器人技術的不斷發展,智能機器人的越來越多的被應用到人類日常的生產生活中。隨著智能機器人硬件設備的不斷升級,機器人的功能也越來越復雜,對應的機器人運行時數據處理量也不斷加大。最直接的一個體現就是,在機器人運行過程中,機器人系統內部單位時間內生成并傳輸的指令量不斷增加。尤其的,在具備上位機以及下位機結構的機器人系統中,在上位機與下位機的交互過程中,單位時間內上位機需要發送到下位機執行的下位機指令不斷增加。
隨著機器人系統處理能力的不斷升級,在某些較復雜的功能應用的實現過程中,機器人面對的執行動作較多,很難有條理的實現每一個動作的執行,這就最終導致了機器人應用功能不能完美的實現,從而大大影響了用戶體驗。
技術實現要素:
本發明提供了一種用于機器人的交互輸出方法,所述方法包括:
獲取多模態輸入信息并解析,生成對應多模態交互輸出的下位機指令;
為所述下位機指令匹配對應的執行優先級,根據所述執行優先級對當前所有未發送的所述下位機指令進行排序;
按照對所有未發送的所述下位機指令的排序結果依次輸出所述下位機指令到機器人系統下位機;
下位機執行所述下位機指令進行對應的多模態輸出。
在一實施例中,根據所述執行優先級對當前所有未發送的所述下位機指令進行排序,其中:
將當前生成的所述下位機指令加入下位機指令集;
對所述指令集中所有的下位機指令進行優先級排序。
當輸出優先級最高的下位機指令后將該下位機指令從所述指令集中刪除。
在一實施例中,根據所述執行優先級對當前所有未發送的所述下位機指令進行排序,其中,以所述執行優先級為基礎,根據所述下位機指令的生成時間以及所述下位機指令的執行前提進行排序,包括:
在兩個所述下位機指令中,當其中一個下位機指令為另一個下位機指令的執行前提時,將作為執行前提的下位機指令排在靠前的序列中;
在不存在執行前提關系的兩個所述下位機指令中,當所述執行優先級相同時,按照所述下位機指令生成時間的先后順序進行排序。
在一實施例中,為所述下位機指令匹配對應的執行優先級,其中:
根據所述多模態輸入信息確定當前的機器人的交互狀態和/或用戶的交互需求;
基于所述交互狀態和/或所述交互需求確定所述下位機指令的執行優先級。
在一實施例中,為所述下位機指令匹配對應的執行優先級,其中:
根據系統中預設的下位機指令對應的執行優先級級別列表,對所述下位機指令匹配對應的執行優先級。
本發明還提出了一種智能機器人,所述機器人包括:
輸入采集模塊,其配置為獲取多模態輸入信息;
指令生成模塊,其配置為解析所述多模態輸入信息,生成對應多模態交互輸出的下位機指令;
優先級匹配模塊,其配置為為所述下位機指令匹配對應的執行優先級;
指令排序模塊,其配置為根據所述執行優先級對當前所有未發送的所述下位機指令進行排序;
指令輸出模塊,其配置為按照對所有未發送的所述下位機指令的排序結果依次輸出所述下位機指令;
下位機,其配置為執行所述指令輸出模塊輸出的下位機指令進行對應的多模態輸出。
在一實施例中,所述指令排序模塊包括:
指令集存儲單元,其配置為保存指令集并將當前生成的所述下位機指令加入下位機指令集,并且,當輸出優先級最高的下位機指令后將該下位機指令從所述指令集中刪除;
指令集排序單元,其配置為對所述指令集中所有的下位機指令進行優先級排序。
在一實施例中,所述指令排序模塊還配置為以所述執行優先級為基礎,根據所述下位機指令的生成時間以及所述下位機指令的執行前提進行排序,其中:
在兩個所述下位機指令中,當其中一個下位機指令為另一個下位機指令的執行前提時,將作為執行前提的下位機指令排在靠前的序列中;
在不存在執行前提關系的兩個所述下位機指令中,當所述執行優先級相同時,按照所述下位機指令生成時間的先后順序進行排序。
在一實施例中,所述優先級匹配模塊包括:
交互信息采集單元,其配置為根據所述多模態輸入信息確定當前的機器人的交互狀態和/或用戶的交互需求;
優先級確定單元,其配置為基于所述交互狀態和/或所述交互需求確定所述下位機指令的執行優先級。
在一實施例中,所述優先級匹配模塊包括:
優先級列表保存單元,其配置為保存系統中預設的下位機指令對應的執行優先級級別列表;
優先級確定單元,其配置為根據所述執行優先級級別列表對所述下位機指令匹配對應的執行優先級。
根據本發明的方法,可以根據實際交互情況合理安排下位機指令的發送次序,從而保證執行優先級高的下位機指令可以優先發送到下位機并盡快被執行。這樣就有效保證了下位機執行的條理性,從而保證機器人應用功能的完美實現,進而提高機器人的用戶體驗。
本發明的其它特征或優點將在隨后的說明書中闡述。并且,本發明的部分特征或優點將通過說明書而變得顯而易見,或者通過實施本發明而被了解。本發明的目的和部分優點可通過在說明書、權利要求書以及附圖中所特別指出的步驟來實現或獲得。
附圖說明
附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,與本發明的實施例共同用于解釋本發明,并不構成對本發明的限制。在附圖中:
圖1是根據本發明一實施例的方法流程圖;
圖2~圖5是根據本發明實施例的方法的部分流程圖;
圖6以及圖7是根據本發明實施例的機器人系統結構簡圖;
圖8以及圖9是根據本發明實施例的機器人系統部分結構簡圖。
具體實施方式
以下將結合附圖及實施例來詳細說明本發明的實施方式,借此本發明的實施人員可以充分理解本發明如何應用技術手段來解決技術問題,并達成技術效果的實現過程并依據上述實現過程具體實施本發明。需要說明的是,只要不構成沖突,本發明中的各個實施例以及各實施例中的各個特征可以相互結合,所形成的技術方案均在本發明的保護范圍之內。
隨著機器人技術的不斷發展,智能機器人的越來越多的被應用到人類日常的生產生活中。隨著智能機器人硬件設備的不斷升級,機器人的功能也越來越復雜,對應的機器人運行時數據處理量也不斷加大。最直接的一個體現就是,在機器人運行過程中,機器人系統內部單位時間內生成并傳輸的指令量不斷增加。尤其的,在具備上位機以及下位機結構的機器人系統中,在上位機與下位機的交互過程中,單位時間內上位機需要發送到下位機執行的下位機指令不斷增加。
隨著機器人系統處理能力的不斷升級,在某些較復雜的功能應用的實現過程中,機器人面對的執行動作較多,很難有條理的實現每一個動作的執行,這就最終導致了機器人應用功能不能完美的實現,從而大大影響了用戶體驗。
針對上述問題,本發明提出了一種用于機器人的交互輸出方法。
在機器人的實際運行過程中,機器人無法有條理的實現每一個動作的執行的主要原因在于:機器人的上位機同時或在短時間內生成了大量需要下位機執行的下位機指令,由于下位機指令通常是順次發送(每次發送一條)并順次執行的(每次執行一條),因此當上位機發送下位機指令的發送次序出現邏輯異常(例如急需馬上執行的下位機指令被安排到需要較長等待時間可以暫緩執行的下位機指令之后發送)時,其必然導致下位機的執行異常。
基于上述分析,在本發明一實施例中,當同時存在多條待發送的下位機指令時,上位機并不是按照其生成的先后順序(或者按照隨機順序)進行發送,而是先對其進行基于執行優先級的排序,按照排序結果進行發送,使得執行優先級較高(急需馬上執行)的下位機指令可以首先到達下位機并被執行,從而保證下位機執行的條理性,進而保證機器人應用功能的完美實現,提高機器人的用戶體驗。
接下來基于附圖詳細描述根據本發明實施例的方法的詳細流程,附圖的流程圖中示出的步驟可以在包含諸如一組計算機可執行指令的計算機系統中執行。雖然在流程圖中示出了各步驟的邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。
如圖1所示,在一實施例中,機器人(機器人系統的上位機)首先獲取多模態輸入信息(步驟S100);然后解析該多模態輸入信息確定響應該多模態輸入信息的多模態交互輸出(步驟S110);最后生成對應該多模態交互輸出的下位機指令(步驟S120)。
接下來,上位機并不是立即直接將生成的下位機指令發送到下位機執行,而是為下位機指令匹配對應的執行優先級(步驟S130),根據執行優先級對當前所有未發送的下位機指令進行排序(步驟S140);然后按照對所有未發送的下位機指令的排序結果依次輸出下位機指令到機器人系統下位機(步驟S150);最后下位機執行下位機指令進行對應的多模態輸出(步驟S160)。
在上述過程中,在發送下位機指令之前將下位機指令按照執行優先級進行排序,這樣就能保證執行優先級高的下位機指令(需要立即執行的下位機指令)可以優先發送到下位機并盡快被執行。這樣就有效保證了下位機執行的條理性,從而保證機器人應用功能的完美實現,進而提高機器人的用戶體驗。
進一步的,在本發明一實施例中,采用指令集排序的方式對所有未發送的下位機指令進行排序。具體的,在一實施例中,當生成新的下位機指令后首先將當前生成的下位機指令加入下位機指令集(該指令集中已保存有之前生成的所有未發送的下位機指令);然后對指令集中所有的下位機指令進行優先級排序。
在輸出下位機指令到下位機時輸出指令集中序位最靠前(優先級最高)的下位機指令,并且,當該指令被輸出后將該下位機指令從指令集中刪除。
在一實施例中,下位機指令的生成發送過程可以分為兩個相對獨立的流程。
首先是下位機指令的生成過程,如圖2所示,在一實施例中,機器人系統的上位機首先獲取多模態輸入信息(步驟S200);然后解析該多模態輸入信息確定響應該多模態輸入信息的多模態交互輸出(步驟S210);接著生成對應該多模態交互輸出的下位機指令(步驟S220);對新生成的下位機指令匹配對應的優先級(步驟S230)并將該下位機指令加入指令集(步驟S240);最后對指令集中的下位機指令進行基于執行優先級的排序。
以一具體的應用為例,假設存在A1~A10的執行優先級(A1的執行優先級最高,優先級級別設定為降序)。在一個交互周期中,機器人上位機根據多模態輸入信息生成了下位機指令B1,并為其匹配執行優先級A4,將其加入到指令集中。假設此時并沒有其他的未發送下位機指令,則指令集可表示為(B1(A4))。接下來,在下一個交互周期中,機器人上位機根據多模態輸入信息生成了下位機指令B2,并為其匹配執行優先級A5,將其加入到指令集中。假設此時下位機指令B1并沒有被發送出去,則指令集可表示為(B1(A4),B2(A5))。接下來,在下一個交互周期中,機器人上位機根據多模態輸入信息生成了下位機指令B3,并為其匹配執行優先級A1,將其加入到指令集中。假設此時下位機指令B1并沒有被發送出去,則指令集可表示為(B3(A4),B1(A4),B2(A5))。對應當前的指令集,下位機指令的發送順序就應該為B3、B1、B2。
接下來是下位機指令的發送過程。如圖3所示,當需要發送下位機指令時,機器人系統的上位機首先提取指令集中排位最靠前(執行優先級最高)的下位機指令(步驟S300);然后將提取出的指令發送到下位機(步驟S310);接著判斷當前的指令發送操作是否成功(步驟S320);如果不成功,則返回步驟S300,再次發送該指令;如果成功,則刪除指令集中排位最靠前的下位機指令(已經成功發送的指令)(步驟S330)。
進一步的,為了防止在下位機尚未執行完成當前的下位機指令時上位機不斷的發送新下位機指令而造成的下位機指令擁堵。在一實施例中,上位機發送下位機指令之前需要驗證下位機狀態。
具體的,如圖4所示,機器人系統的上位機首先判斷當前是否可以發送下位機指令(下位機是否處于可接受新指令的空閑狀態)(步驟S400);如果不可以發送(下位機忙碌)則繼續等待并返回步驟S400;如果可以發送,提取指令集中排位最靠前(執行優先級最高)的下位機指令(步驟S410);然后將提取出的指令發送到下位機(步驟S420);接著判斷當前的指令發送操作是否成功(步驟S430);如果不成功,則返回步驟S410,再次發送該指令;如果成功,則刪除指令集中排位最靠前的下位機指令(已經成功發送的指令)(步驟S440)并返回步驟S400判斷是否可以繼續發送下一條下位機指令。
對應的,在一實施例中,如圖5所示,機器人系統的下位機判斷自身的狀態是否可以執行新的下位機指令(步驟S500);當當前暫時無法接收新的下位機指令時,回饋上位機自身的忙碌狀態(步驟S550)并返回步驟S500重復判斷自身狀態(固定時間間隔后或者當前正在執行下位機指令執行完成后)。
當當前可以接收新的下位機指令時,回饋上位機自身的空閑狀態(步驟S510);上位機接收到該回饋后確定下位機可以接收新指令(圖4所示的步驟400),發送新的下位機指令(圖4所示的步驟410、420)。下位機接收新的下位機指令(步驟520),并在接收完畢后回饋上位機接收成功(步驟S530)。接著下位機執行接收到的下位機指令(步驟S540),并在執行完畢后返回步驟S500判斷自身是否可以接受新的下位機指令。
進一步的,在步驟S530中,下位機接收完畢新的下位機指令后回饋上位機接收成功。上位機根據下位機的回饋判斷當前的指令發送操作執行成功(圖4所示步驟430)。如果下位機沒有接收到下位機指令或沒有接收到完整的下位機指令,則不執行步驟S530(不發出回饋)。上位機在發出下位機指令固定時間間隔內沒有接收到下位機的回饋則說明當前的指令發送操作執行失敗。
進一步的,在本發明中,保證下位機執行的條理性的關鍵點之一在于對待發送下位機指令的排序,具體的,即為待發送的下位機指令匹配正確的執行優先級。具體的,在一實施例中,首先根據多模態輸入信息確定當前的機器人的交互狀態和/或用戶的交互需求;然后基于交互狀態和/或交互需求確定所述下位機指令的執行優先級。
例如,假設在某一機器人的應用場合中,機器人在空閑狀態下隨機自主活動。在此場景中,具體的,其需要執行的下位機指令包括:
用于進行隨機自主活動的操作指令(例如實現四處張望、四處移動行為的指令);
采集用戶行為信息,監控用戶新交互指示的指令(例如采集用戶面部信息、攝像頭跟蹤用戶面部移動)。
考慮到當前機器人是在空閑狀態下的自主行為,那么及時回應用戶的新指令是最優先的選項,因此在上述需要執行的下位機指令中,采集用戶行為信息,監控用戶新交互指示的指令具有最高的執行優先級。也就是說,當實現四處張望的指令在指令集中時,如果新生成了攝像頭跟蹤用戶面部移動的指令,則優先執行攝像頭跟蹤用戶面部移動的指令。
由于在實際的人機交互場景下,機器人的交互狀態以及交互需求是相當復雜多變的,通過對交互狀態以及交互需求的分析確定下位機指令的執行優先級勢必需要大量的數據處理操作。在處理器性能不足時就有可能導致機器人反應的遲鈍。甚至,在數據采集分析失誤時還會導致執行優先級匹配錯誤從而最終導致下位機執行混亂。
針對上述情況,在本發明一實施例中,預先構造優先級級別列表,針對不同的下位機操作指令預先定義其執行優先級。在為下位機指令匹配對應的執行優先級時,根據系統中預設的下位機指令對應的執行優先級級別列表,對下位機指令匹配對應的執行優先級。
進一步的,由于在實際的人機交互場景下,機器人的交互狀態以及交互需求是相當復雜多變的,因此在某些交互場景中,固定的執行優先級并不能準確反映下位機指令執行的合理先后順序。
因此,在一實施例中,在根據執行優先級對當前所有未發送的下位機指令進行排序時,以執行優先級為基礎,根據下位機指令的生成時間以及下位機指令的執行前提進行排序。具體的,其包括:
在兩個下位機指令中,當其中一個下位機指令為另一個下位機指令的執行前提時,將作為執行前提的下位機指令排在靠前的序列中;
在不存在執行前提關系的兩個下位機指令中,當執行優先級相同時,按照下位機指令生成時間的先后順序進行排序。
綜上,根據本發明的方法,可以根據實際交互情況合理安排下位機指令的發送次序,從而保證執行優先級高的下位機指令(需要立即執行的下位機指令)可以優先發送到下位機并盡快被執行。這樣就有效保證了下位機執行的條理性,從而保證機器人應用功能的完美實現,進而提高機器人的用戶體驗。
進一步的,根據本發明的方法,本發明還提出了一種智能機器人。如圖6所示,在一實施例中,機器人包括:
輸入采集模塊610,其配置為獲取多模態輸入信息;
指令生成模塊620,其配置為解析多模態輸入信息,生成對應多模態交互輸出的下位機指令,其中多模態交互輸出匹配響應多模態輸入信息;
優先級匹配模塊630,其配置為為下位機指令匹配對應的執行優先級;
指令排序模塊640,其配置為根據執行優先級對當前所有未發送的下位機指令進行排序;
指令輸出模塊650,其配置為按照對所有未發送的下位機指令的排序結果依次輸出下位機指令;
下位機602,其配置為執行指令輸出模塊650輸出的下位機指令進行對應的多模態輸出。
進一步的,在一實施例中,輸入采集模塊610、指令生成模塊620、優先級匹配模塊630、指令排序模塊640以及指令輸出模塊650從屬于機器人系統的上位機601。
進一步的,如圖7所示,在一實施例中,指令排序模塊740包括指令集存儲單元741以及指令集排序單元742。具體的:輸入采集模塊710獲取多模態輸入信息;指令生成模塊720生成下位機指令;優先級匹配模塊730為下位機指令匹配對應的執行優先級;指令集存儲單元741保存指令集并將當前生成的下位機指令加入下位機指令集;指令集排序單元742對指令集中所有的下位機指令進行優先級排序;指令輸出模塊750將指令集中排位最靠前的下位機指令輸出到下位機702;指令集存儲單元741在指令輸出模塊750輸出下位機指令后從指令集中刪除該指令;下位機702執行接收到的下位機指令。
進一步的,在一實施例中,優先級匹配模塊通過當前的交互狀態和/或交互需求確定下位機指令的執行優先級。具體的,如圖8所示,優先級匹配模塊830包含交互信息采集單元831以及優先級確認單元832。
其中:輸入采集模塊810獲取多模態輸入信息;指令生成模塊820生成下位機指令;交互信息采集單元831根據多模態輸入信息(在本實施例中,采用輸入采集模塊810獲取到的多模態輸入信息)確定當前的機器人的交互狀態和/或用戶的交互需求;優先級確定單元832基于交互信息采集單元831確認的交互狀態和/或交互需求確定指令生成模塊820生成的下位機指令的執行優先級。
進一步的,在一實施例中,優先級匹配模塊通過預先設定的執行優先級級別列表確定下位機指令的執行優先級。具體的,如圖9所示,優先級匹配模塊930包含優先級列表保存單元931以及優先級確定單元932。
其中:輸入采集模塊910獲取多模態輸入信息;指令生成模塊920生成下位機指令;優先級列表保存單元931保存系統中預設的下位機指令對應的執行優先級級別列表;優先級確定單元932基于優先級列表保存單元931保存的執行優先級級別列表確定指令生成模塊920生成的下位機指令的執行優先級。
進一步的,在一實施例中,指令排序模塊還配置為以執行優先級為基礎,根據下位機指令的生成時間以及下位機指令的執行前提進行排序,其中:
在兩個下位機指令中,當其中一個下位機指令為另一個下位機指令的執行前提時,將作為執行前提的下位機指令排在靠前的序列中;
在不存在執行前提關系的兩個所述下位機指令中,當執行優先級相同時,按照下位機指令生成時間的先后順序進行排序。
雖然本發明所公開的實施方式如上,但所述的內容只是為了便于理解本發明而采用的實施方式,并非用以限定本發明。本發明所述的方法還可有其他多種實施例。在不背離本發明實質的情況下,熟悉本領域的技術人員當可根據本發明做出各種相應的改變或變形,但這些相應的改變或變形都應屬于本發明的權利要求的保護范圍。