两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種用于機(jī)器人的指令處理方法及機(jī)器人與流程

文檔序號(hào):11143603閱讀:525來源:國知局
一種用于機(jī)器人的指令處理方法及機(jī)器人與制造工藝

本發(fā)明涉及機(jī)器人領(lǐng)域,具體涉及一種用于機(jī)器人的指令處理方法及機(jī)器人。



背景技術(shù):

隨著機(jī)器人技術(shù)的不斷發(fā)展,智能機(jī)器人的越來越多的被應(yīng)用到人類日常的生產(chǎn)生活中。隨著智能機(jī)器人硬件設(shè)備的不斷升級(jí),機(jī)器人的功能也越來越復(fù)雜,對(duì)應(yīng)的機(jī)器人運(yùn)行時(shí)數(shù)據(jù)處理量也不斷加大。最直接的一個(gè)體現(xiàn)就是,在機(jī)器人運(yùn)行過程中,機(jī)器人系統(tǒng)內(nèi)部單位時(shí)間內(nèi)生成并傳輸?shù)闹噶盍坎粩嘣黾?。尤其的,在具備上位機(jī)以及下位機(jī)結(jié)構(gòu)的機(jī)器人系統(tǒng)中,在上位機(jī)與下位機(jī)的交互過程中,單位時(shí)間內(nèi)上位機(jī)需要發(fā)送到下位機(jī)執(zhí)行的下位機(jī)指令不斷增加。

隨著機(jī)器人系統(tǒng)處理能力的不斷升級(jí),在某些較復(fù)雜的功能應(yīng)用的實(shí)現(xiàn)過程中,機(jī)器人面對(duì)的執(zhí)行動(dòng)作較多,很難有條理的實(shí)現(xiàn)每一個(gè)動(dòng)作的執(zhí)行,這就最終導(dǎo)致了機(jī)器人應(yīng)用功能不能完美的實(shí)現(xiàn),從而大大影響了用戶體驗(yàn)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供了一種用于機(jī)器人的指令處理方法,所述方法包括:

控制上位機(jī)接收多模態(tài)輸入數(shù)據(jù)并解析;

控制上位機(jī)基于所述解析后的多模態(tài)輸入數(shù)據(jù)生成待輸出的多模態(tài)輸出數(shù)據(jù)對(duì)應(yīng)的下位機(jī)執(zhí)行指令,將所述下位機(jī)執(zhí)行指令保存到指令集中;

控制上位機(jī)從所述指令集中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī);

控制下位機(jī)執(zhí)行所述下位機(jī)執(zhí)行指令進(jìn)行多模態(tài)輸出。

在一實(shí)施例中,所述方法還包括:

控制下位機(jī)在接收到每條下位機(jī)執(zhí)行指令后,進(jìn)行指令正確性判斷;

控制下位機(jī)在確定接收到的下位機(jī)執(zhí)行指令正確后,發(fā)送指令正確反饋給上位機(jī);

控制上位機(jī)在發(fā)送每條下位機(jī)執(zhí)行指令后,直至接收到所述指令正確反饋,再將該條下位機(jī)執(zhí)行指令從所述指令集中刪除,并繼續(xù)從所述指令集中調(diào)出一條下位機(jī)執(zhí)行指令輸出給下位機(jī)。

在一實(shí)施例中,控制上位機(jī)從所述指令集中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī),其中,啟動(dòng)獨(dú)立的指令調(diào)用線程執(zhí)行從所述指令集中逐一調(diào)出指令的操作;

當(dāng)所述指令集為空時(shí)令所述指令調(diào)用線程進(jìn)入睡眠狀態(tài);

當(dāng)所述指令調(diào)用線程進(jìn)入睡眠狀態(tài)經(jīng)過預(yù)設(shè)的特定時(shí)長后喚醒所述指令調(diào)用線程。

在一實(shí)施例中,所述控制上位機(jī)從所述指令集中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī),其中:

所述指令集中的指令按先進(jìn)先出的順序輸出給下位機(jī)。

在一實(shí)施例中,所述上位機(jī)及下位機(jī)之間的通信基于Modbus協(xié)議執(zhí)行。

本發(fā)明還提出了一種機(jī)器人,所述機(jī)器人包括上位機(jī)以及下位機(jī),所述機(jī)器人還包括:

構(gòu)造在所述上位機(jī)中的輸入數(shù)據(jù)解析模塊,其配置為接收多模態(tài)輸入數(shù)據(jù)并解析;

構(gòu)造在所述上位機(jī)中的下位機(jī)指令生成模塊,其配置為基于所述解析后的多模態(tài)輸入數(shù)據(jù)生成待輸出的多模態(tài)輸出數(shù)據(jù)對(duì)應(yīng)的下位機(jī)執(zhí)行指令;

構(gòu)造在所述上位機(jī)中的指令保存模塊,其配置為保存所述下位機(jī)執(zhí)行指令;

構(gòu)造在所述上位機(jī)中的指令輸出模塊,其配置為從所述指令保存模塊中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給所述下位機(jī);

構(gòu)造在所述下位機(jī)中的指令執(zhí)行機(jī)構(gòu),其配置為執(zhí)行所述下位機(jī)執(zhí)行指令進(jìn)行多模態(tài)輸出。

在一實(shí)施例中:

所述指令執(zhí)行機(jī)構(gòu)包括指令驗(yàn)證單元,其配置為在接收到每條下位機(jī)執(zhí)行指令后進(jìn)行指令正確性判斷,并且在確定接收到的下位機(jī)執(zhí)行指令正確后發(fā)送指令正確反饋給所述上位機(jī);

所述指令輸出模塊配置為在發(fā)送每條下位機(jī)執(zhí)行指令后,直至接收到所述指令正確反饋,再將該條下位機(jī)執(zhí)行指令從所述指令保存模塊中刪除,并繼續(xù)從所述指令保存模塊中調(diào)出一條下位機(jī)執(zhí)行指令輸出給下位機(jī)。

在一實(shí)施例中,所述指令輸出模塊配置為啟動(dòng)獨(dú)立的指令調(diào)用線程執(zhí)行從所述指令保存模塊中逐一調(diào)出指令的操作,其中:

當(dāng)所述指令保存模塊為空時(shí)令所述指令調(diào)用線程進(jìn)入睡眠狀態(tài);

當(dāng)所述指令調(diào)用線程進(jìn)入睡眠狀態(tài)經(jīng)過預(yù)設(shè)的特定時(shí)長后喚醒所述指令調(diào)用線程。

在一實(shí)施例中,所述指令輸出模塊配置為將所述指令保存模塊中的指令按先進(jìn)先出的順序輸出給下位機(jī)。

在一實(shí)施例中,所述上位機(jī)及所述下位機(jī)之間的通信基于Modbus協(xié)議執(zhí)行。

根據(jù)本發(fā)明的方法,可以保證機(jī)器人上位機(jī)所生成的下位機(jī)執(zhí)行指令有序的發(fā)送到下位機(jī)執(zhí)行,從而大大提高機(jī)器人的運(yùn)行可靠性,保證機(jī)器人輸出的正確性,維護(hù)機(jī)器人的用戶體驗(yàn)。

本發(fā)明的其它特征或優(yōu)點(diǎn)將在隨后的說明書中闡述。并且,本發(fā)明的部分特征或優(yōu)點(diǎn)將通過說明書而變得顯而易見,或者通過實(shí)施本發(fā)明而被了解。本發(fā)明的目的和部分優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的步驟來實(shí)現(xiàn)或獲得。

附圖說明

附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例共同用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:

圖1是根據(jù)本發(fā)明一實(shí)施例的方法流程圖;

圖2~圖5是根據(jù)本發(fā)明實(shí)施例的方法的部分流程圖;

圖6和圖7是根據(jù)本發(fā)明實(shí)施例的機(jī)器人系統(tǒng)結(jié)構(gòu)簡圖。

具體實(shí)施方式

以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此本發(fā)明的實(shí)施人員可以充分理解本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程并依據(jù)上述實(shí)現(xiàn)過程具體實(shí)施本發(fā)明。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。

隨著機(jī)器人系統(tǒng)處理能力的不斷升級(jí),在某些較復(fù)雜的功能應(yīng)用的實(shí)現(xiàn)過程中,機(jī)器人面對(duì)的執(zhí)行動(dòng)作較多,很難有條理的實(shí)現(xiàn)每一個(gè)動(dòng)作的執(zhí)行,這就最終導(dǎo)致了機(jī)器人應(yīng)用功能不能完美的實(shí)現(xiàn),從而大大影響了用戶體驗(yàn)。

針對(duì)上述問題,本發(fā)明提出了一種用于機(jī)器人的指令處理方法。在本發(fā)明一實(shí)施例中,在機(jī)器人的上位機(jī)生成需要下位機(jī)執(zhí)行的指令后,并不是立刻直接將該指令發(fā)送到下位機(jī)執(zhí)行,而是現(xiàn)將該指令保存到指令集中,然后將指令集中的指令順次發(fā)送到下位機(jī)指令。這樣在同時(shí)存在多個(gè)需要執(zhí)行的下位機(jī)指令時(shí),就不會(huì)出現(xiàn)由于指令同時(shí)發(fā)送而造成的指令通信擁堵以及下位機(jī)指令執(zhí)行混亂。從而保證了機(jī)器人下位機(jī)輸出的完美執(zhí)行,大大提高了機(jī)器人的用戶體驗(yàn)。

具體的,在本發(fā)明一實(shí)施例中,機(jī)器人系統(tǒng)的上下位機(jī)之間基于用于工業(yè)現(xiàn)場的總線協(xié)議(Modbus協(xié)議)進(jìn)行通信。

接下來基于附圖詳細(xì)描述根據(jù)本發(fā)明實(shí)施例的方法的詳細(xì)流程,附圖的流程圖中示出的步驟可以在包含諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。雖然在流程圖中示出了各步驟的邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

如圖1所示,在一實(shí)施例中,首先機(jī)器人控制上位機(jī)接收多模態(tài)輸入數(shù)據(jù)(步驟S100);然后控制上位機(jī)解析接收到的多模態(tài)輸入數(shù)據(jù)(步驟S110);接著控制上位機(jī)基于解析后的多模態(tài)輸入數(shù)據(jù)生成待輸出的多模態(tài)輸出數(shù)據(jù)對(duì)應(yīng)的下位機(jī)執(zhí)行指令(步驟S120),并將生成的下位機(jī)執(zhí)行指令保存到指令集中(步驟S130);接下來,控制上位機(jī)從指令集中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī)(步驟S140);最后控制下位機(jī)執(zhí)行下位機(jī)執(zhí)行指令進(jìn)行多模態(tài)輸出。

以一具體的應(yīng)用場景為例,假設(shè)機(jī)器人為了響應(yīng)當(dāng)前的交互輸入數(shù)據(jù)需要下位機(jī)執(zhí)行下位機(jī)執(zhí)行指令A(yù)、B、C。在現(xiàn)有技術(shù)中,當(dāng)下位機(jī)執(zhí)行指令A(yù)、B、C同時(shí)(或在一個(gè)較短時(shí)間內(nèi)依次)生成并同時(shí)(或在一個(gè)較短時(shí)間內(nèi)依次)輸出到下位機(jī),勢必造成通信擁堵(一般的,上下位機(jī)之間的通信通道只支持同時(shí)傳輸一個(gè)指令),并且造成下位機(jī)執(zhí)行混亂(下位機(jī)同時(shí)接收到多個(gè)待執(zhí)行指令,其并不能確認(rèn)該先執(zhí)行哪一個(gè))。而在本發(fā)明一實(shí)施例中,當(dāng)上位機(jī)生成下位機(jī)執(zhí)行指令A(yù)、B、C后先將其保存入指令集(A,B,C),然后將指令集中的指令依次調(diào)出并輸出給下位機(jī),也就是說,下位機(jī)會(huì)依次接收到指令A(yù),B,C(每次一條指令)。這樣,不僅避免了指令傳輸?shù)膿矶拢冶苊饬讼挛粰C(jī)指令執(zhí)行混亂。

根據(jù)本發(fā)明的方法,可以保證上位機(jī)所生成的下位機(jī)執(zhí)行指令有序的發(fā)送到下位機(jī)執(zhí)行,從而大大提高機(jī)器人的運(yùn)行可靠性,保證機(jī)器人輸出的正確性,維護(hù)機(jī)器人的用戶體驗(yàn)。

進(jìn)一步的,在步驟S140中,上位機(jī)從指令集中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī),具體的,在一實(shí)施例中,指令集中的指令按先進(jìn)先出的順序輸出給下位機(jī)。例如,如果上位機(jī)按照A、B、C的順序依次生成下位機(jī)執(zhí)行指令A(yù)、B、C,那么將下位機(jī)執(zhí)行指令A(yù)、B、C保存到指令集后,按照A、B、C的順序依次調(diào)用并輸出。如果上位機(jī)按照A、C、B的順序依次生成下位機(jī)執(zhí)行指令A(yù)、C、B,那么將下位機(jī)執(zhí)行指令A(yù)、C、B保存到指令集后,按照A、C、B的順序依次調(diào)用并輸出。

在圖1所示實(shí)施例中,在步驟S140中,上位機(jī)從指令集中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī),在此過程中,在某一下位機(jī)執(zhí)行指令的輸出出現(xiàn)錯(cuò)誤的情況下,如果繼續(xù)按照原定順序輸出下一條下位機(jī)執(zhí)行指令,那么勢必會(huì)影響到下位機(jī)整體的多模態(tài)輸出。例如,正常的指令發(fā)送執(zhí)行順序?yàn)锳,B,C。如果指令B的輸出出現(xiàn)錯(cuò)誤,那么實(shí)際上下位機(jī)接收到的指令就為A,B1,C(B1為錯(cuò)誤指令)。這樣,不僅造成了需要執(zhí)行的輸出的缺失(少執(zhí)行了指令B),而且還會(huì)造成下位機(jī)指令執(zhí)行混亂(錯(cuò)誤指令B1的無法執(zhí)行或者執(zhí)行結(jié)果混亂勢必打亂正常的輸出結(jié)果)。

針對(duì)上述問題,在一實(shí)施例中,采用了下位機(jī)指令驗(yàn)證反饋的方法。具體的,控制下位機(jī)在接收到每條下位機(jī)執(zhí)行指令后,進(jìn)行指令正確性判斷;控制下位機(jī)在確定接收到的下位機(jī)執(zhí)行指令正確后,發(fā)送指令正確反饋給上位機(jī);控制上位機(jī)在發(fā)送每條下位機(jī)執(zhí)行指令后,直至接收到所述指令正確反饋,再將該條下位機(jī)執(zhí)行指令從所述指令集中刪除,并繼續(xù)從所述指令集中調(diào)出一條下位機(jī)執(zhí)行指令輸出給下位機(jī)。

具體的,如圖2所示,在一實(shí)施例中,上位機(jī)從指令集中調(diào)出第一條下位機(jī)執(zhí)行指令(輸出次序最靠前的下位機(jī)執(zhí)行指令)并輸出到下位機(jī)(步驟S200);下位機(jī)接收到該指令后,首先驗(yàn)證該指令(步驟S210),判斷該指令是否正確(步驟S220)。

如果下位機(jī)判斷接收到的下位機(jī)執(zhí)行指令是正確的,那么就發(fā)送指令正確反饋到上位機(jī)(步驟S230)。上位機(jī)接收到指令正確反饋后從指令集中刪除第一條下位機(jī)執(zhí)行指令(已被輸出的下位機(jī)執(zhí)行指令)(步驟S240);然后返回步驟S200,調(diào)用當(dāng)前的第一條下位機(jī)執(zhí)行指令(當(dāng)前輸出次序最靠前的下位機(jī)執(zhí)行指令)并輸出到下位機(jī)。

如果下位機(jī)判斷接收到的下位機(jī)執(zhí)行指令是錯(cuò)誤的,那么就發(fā)送指令錯(cuò)誤反饋到上位機(jī)(步驟S250)。上位機(jī)接收到指令錯(cuò)誤反饋后直接返回步驟S200(跳過步驟S240),調(diào)用第一條下位機(jī)執(zhí)行指令并輸出到下位機(jī)(將已輸出的指令再次輸出)。

這樣,就可以在指令輸出錯(cuò)誤時(shí)再次重復(fù)輸出發(fā)生錯(cuò)誤的指令,從而保證按照次序正確的輸出全部的指令到下位機(jī)。

進(jìn)一步的,在某些指令傳輸場景中,指令的輸出錯(cuò)誤造成的結(jié)果并不僅僅是下位機(jī)接收到錯(cuò)誤的指令,也可能是指令完全沒有發(fā)送到下位機(jī)。例如,正常的指令發(fā)送執(zhí)行順序?yàn)锳,B,C。如果指令B的輸出出現(xiàn)錯(cuò)誤,那么實(shí)際上下位機(jī)接收到的指令就為A,C(B1為錯(cuò)誤指令)。這樣,不僅造成了需要執(zhí)行的輸出的缺失(少執(zhí)行了指令B),而且還會(huì)造成下位機(jī)指令執(zhí)行混亂(指令執(zhí)行的缺失必然會(huì)打亂正常的指令執(zhí)行順序)。

針對(duì)這一情況,在本發(fā)明一實(shí)施例中,上位機(jī)在輸出指令后會(huì)判斷在預(yù)設(shè)時(shí)長內(nèi)下位機(jī)是否回饋的指令是否正確,如果沒有回饋,則說明下位機(jī)并沒有接收到指令(無論是正確的還是錯(cuò)誤的)。此時(shí)需要重新進(jìn)行指令的輸出。

具體的,如圖3所示,在一實(shí)施例中,機(jī)器人的上位機(jī)將指令集中的第一條下位機(jī)執(zhí)行指令輸出給下位機(jī)(步驟S300),然后開啟計(jì)時(shí)(步驟S301)。

在計(jì)時(shí)過程中,判斷是否接收到下位機(jī)反饋的輸出指令是否正確的反饋結(jié)果(步驟S310)。如果沒有接收到,則判斷當(dāng)前的計(jì)時(shí)結(jié)果是否達(dá)到了預(yù)設(shè)時(shí)長,如果沒有達(dá)到預(yù)設(shè)時(shí)長,則繼續(xù)進(jìn)行計(jì)時(shí)并返回步驟S310,繼續(xù)判斷是否接收到下位機(jī)反饋的輸出指令是否正確的反饋結(jié)果。如果當(dāng)前的計(jì)時(shí)結(jié)果達(dá)到了預(yù)設(shè)時(shí)長(輸出指令后在預(yù)設(shè)時(shí)長內(nèi)并沒得到下位機(jī)的反饋),則說明下位機(jī)并沒有接收到上位機(jī)發(fā)送來的指令,此時(shí)返回步驟S300,調(diào)用第一條下位機(jī)執(zhí)行指令并輸出到下位機(jī)(將已輸出的指令再次輸出)。

在步驟S310中,如果上位機(jī)接收到了下位機(jī)反饋的輸出指令是否正確的反饋結(jié)果,則停止計(jì)時(shí)(步驟S311),并進(jìn)一步指令是否被正確輸出(下位機(jī)反饋的是指令正確還是指令錯(cuò)誤)(步驟S320)。如果指令輸出正確,則從指令集中刪除第一條下位機(jī)執(zhí)行指令(已被輸出的下位機(jī)執(zhí)行指令)(步驟S321);然后返回步驟S300,調(diào)用當(dāng)前的第一條下位機(jī)執(zhí)行指令(當(dāng)前輸出次序最靠前的下位機(jī)執(zhí)行指令)并輸出到下位機(jī)。如果指令輸出錯(cuò)誤,則直接返回步驟S300,調(diào)用第一條下位機(jī)執(zhí)行指令并輸出到下位機(jī)(將已輸出的指令再次輸出)。

進(jìn)一步的,在某些指令執(zhí)行場景中,下位機(jī)執(zhí)行指令的速度遠(yuǎn)遠(yuǎn)小于上位機(jī)生成并輸出新指令的速度。這就會(huì)導(dǎo)致大量尚未執(zhí)行的下位機(jī)執(zhí)行指令堆積在下位機(jī)處,從而造成下位機(jī)處的指令堆積,影響下位機(jī)指令的順利進(jìn)行。

針對(duì)上述情況,在一實(shí)施例中,在發(fā)送下位機(jī)執(zhí)行指令之前,上位機(jī)首先判斷下位機(jī)當(dāng)前的狀態(tài),只有在下位機(jī)狀態(tài)為空閑時(shí)才會(huì)將指令集中的第一條下位機(jī)執(zhí)行指令發(fā)送給下位機(jī)。

如圖4所示,在一實(shí)施例中,機(jī)器人的上位機(jī)將指令集中的第一條下位機(jī)執(zhí)行指令輸出給下位機(jī)(步驟S400),然后判斷當(dāng)前的指令輸出是否成功(正確)(步驟S410)。具體的,在步驟S410中,判斷下位機(jī)是否接收到了指令(在預(yù)設(shè)時(shí)長內(nèi)是否有下位機(jī)的反饋)以及下位機(jī)接收到的指令是否正確(下位機(jī)反饋的信息是指令正確還是指令錯(cuò)誤)。當(dāng)上位機(jī)判斷當(dāng)前指令輸出錯(cuò)誤時(shí),其直接返回步驟S300,調(diào)用第一條下位機(jī)執(zhí)行指令并輸出到下位機(jī)(將已輸出的指令再次輸出)。

當(dāng)上位機(jī)判斷當(dāng)前指令輸出正確時(shí),從指令集中刪除第一條下位機(jī)執(zhí)行指令(已被輸出的下位機(jī)執(zhí)行指令)(步驟S420);然后判斷下位機(jī)是否處于空閑狀態(tài)(是否可以接收新的下位機(jī)執(zhí)行指令)(步驟S430)。如果下位機(jī)處于空閑狀態(tài),則返回步驟S400,調(diào)用當(dāng)前的第一條下位機(jī)執(zhí)行指令(當(dāng)前輸出次序最靠前的下位機(jī)執(zhí)行指令)并輸出到下位機(jī)。如果下位機(jī)不處于空閑狀態(tài),則進(jìn)行等待(具體的,在本實(shí)施例中,上位機(jī)等待一個(gè)預(yù)設(shè)的固定時(shí)長),并返回步驟S430,繼續(xù)再次判斷下位機(jī)是否處于空閑狀態(tài)。

進(jìn)一步的,為了保證上位機(jī)的指令輸出能夠順利進(jìn)行,在本發(fā)明一實(shí)施例中,上位機(jī)啟動(dòng)獨(dú)立的指令調(diào)用線程執(zhí)行從指令集中逐一調(diào)出指令的操作。這樣,就將指令的生成過程與指令的發(fā)送過程相互間獨(dú)立開來。使得指令的生成過程不會(huì)干擾到指令的發(fā)送,及時(shí)同時(shí)(或短時(shí)間內(nèi))有大量的指令生成,也不會(huì)發(fā)生指令發(fā)送堆積以及指令通信堵塞的情況。

具體的,如圖5所示,在一實(shí)施例中,上位機(jī)首先判斷存放下位機(jī)執(zhí)行指令的指令集是否為空(步驟S500),如果不為空,即說明當(dāng)前存在需要發(fā)送到下位機(jī)的下位機(jī)執(zhí)行指令,此時(shí)應(yīng)用指令調(diào)用線程調(diào)用指令集中的第一條下位機(jī)執(zhí)行指令并發(fā)送到下位機(jī)(步驟S550)。

如果指令集為空,則說明當(dāng)前沒有需要發(fā)送到下位機(jī)的下位機(jī)執(zhí)行指令,此時(shí)令指令調(diào)用線程進(jìn)入睡眠狀態(tài)以降低系統(tǒng)資源消耗(步驟S510)。

為了避免指令調(diào)用線程過長時(shí)間處于睡眠狀態(tài)而遺漏指令的發(fā)送,在一實(shí)施例中,當(dāng)指令調(diào)用線程進(jìn)入睡眠狀態(tài)經(jīng)過預(yù)設(shè)的特定時(shí)長后喚醒指令調(diào)用線程。具體的,在指令調(diào)用線程進(jìn)入睡眠狀態(tài)的同時(shí)開始計(jì)時(shí)(步驟S520),并判斷計(jì)時(shí)是否達(dá)到預(yù)設(shè)時(shí)長(步驟S530)。如果沒有達(dá)到預(yù)設(shè)時(shí)長,則繼續(xù)指令調(diào)用線程的睡眠狀態(tài),繼續(xù)計(jì)時(shí)。如果達(dá)到預(yù)設(shè)時(shí)長,則喚醒指令調(diào)用線程(步驟S540),返回步驟S500,判斷當(dāng)前的指令集是否為空。

綜上,根據(jù)本發(fā)明的方法,可以保證上位機(jī)所生成的下位機(jī)執(zhí)行指令有序的發(fā)送到下位機(jī)執(zhí)行,避免指令堆積、指令錯(cuò)誤以及指令遺失等情況的發(fā)生。從而大大提高機(jī)器人下位機(jī)指令執(zhí)行的正確率,提高機(jī)器人的運(yùn)行可靠性,保證機(jī)器人輸出的正確性,維護(hù)機(jī)器人的用戶體驗(yàn)。

基于本發(fā)明的方法,本發(fā)明還提出了一種機(jī)器人。如圖6所示,在一實(shí)施例中,機(jī)器人包括上位機(jī)601以及下位機(jī)602,機(jī)器人還包括:

構(gòu)造在上位機(jī)601中的輸入數(shù)據(jù)解析模塊610,其配置為接收多模態(tài)輸入數(shù)據(jù)并解析;

構(gòu)造在上位機(jī)601中的下位機(jī)指令生成模塊620,其配置為基于輸入數(shù)據(jù)解析模塊610解析后的多模態(tài)輸入數(shù)據(jù)生成待輸出的多模態(tài)輸出數(shù)據(jù)對(duì)應(yīng)的下位機(jī)執(zhí)行指令;

構(gòu)造在上位機(jī)601中的指令保存模塊630,其配置為保存下位機(jī)指令生成模塊620生成的下位機(jī)執(zhí)行指令;

構(gòu)造在上位機(jī)601中的指令輸出模塊640,其配置為從指令保存模塊630中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī)602;

構(gòu)造在下位機(jī)602中的指令執(zhí)行機(jī)構(gòu),其配置為執(zhí)行接收到的下位機(jī)執(zhí)行指令進(jìn)行多模態(tài)輸出。

具體的,在一實(shí)施例中,指令輸出模塊640配置為將指令保存模塊630中的指令按先進(jìn)先出的順序輸出給下位機(jī)602。

進(jìn)一步的,在一實(shí)施例中,上位機(jī)601及下位機(jī)602之間的通信基于Modbus協(xié)議執(zhí)行。

進(jìn)一步的,在一實(shí)施例中,下位機(jī)上的指令執(zhí)行機(jī)構(gòu)包括指令驗(yàn)證單元,其配置為在接收到每條下位機(jī)執(zhí)行指令后進(jìn)行指令正確性判斷,并且在確定接收到的下位機(jī)執(zhí)行指令正確后發(fā)送指令正確反饋給所述上位機(jī);對(duì)應(yīng)的,上位機(jī)上的指令輸出模塊配置為在發(fā)送每條下位機(jī)執(zhí)行指令后,直至接收到指令正確反饋,再將該條下位機(jī)執(zhí)行指令從所述指令保存模塊中刪除,并繼續(xù)從指令保存模塊中調(diào)出一條下位機(jī)執(zhí)行指令輸出給下位機(jī)。

如圖7所示,在一實(shí)施例中,上位機(jī)701中構(gòu)造有輸入數(shù)據(jù)解析模塊710、下位機(jī)指令生成模塊720、指令保存模塊730以及指令輸出模塊740。

輸入數(shù)據(jù)解析模塊710接收多模態(tài)輸入數(shù)據(jù)并解析;下位機(jī)指令生成模塊720基于輸入數(shù)據(jù)解析模塊710解析后的多模態(tài)輸入數(shù)據(jù)生成待輸出的多模態(tài)輸出數(shù)據(jù)對(duì)應(yīng)的下位機(jī)執(zhí)行指令;指令保存模塊730保存下位機(jī)指令生成模塊720生成的下位機(jī)執(zhí)行指令;指令輸出模塊740從指令保存模塊730中逐一調(diào)出下位機(jī)執(zhí)行指令并輸出給下位機(jī)702。

下位機(jī)702中構(gòu)造有指令執(zhí)行機(jī)構(gòu)750,。指令驗(yàn)證單元751在指令執(zhí)行機(jī)構(gòu)750接收到每條下位機(jī)執(zhí)行指令后進(jìn)行指令正確性判斷,并且在確定接收到的下位機(jī)執(zhí)行指令正確后發(fā)送指令正確反饋給上位機(jī)701的指令輸出模塊740。對(duì)應(yīng)的,指令輸出模塊740在發(fā)送每條下位機(jī)執(zhí)行指令后,直至接收到來自指令驗(yàn)證單元751指令正確反饋,再將該條下位機(jī)執(zhí)行指令從指令保存模塊730中刪除,并繼續(xù)從指令保存模塊730中調(diào)出一條下位機(jī)執(zhí)行指令輸出給下位機(jī)702。

進(jìn)一步的,在一實(shí)施例中,指令輸出模塊配置為啟動(dòng)獨(dú)立的指令調(diào)用線程執(zhí)行從指令保存模塊中逐一調(diào)出指令的操作,其中:

當(dāng)指令保存模塊為空時(shí)令指令調(diào)用線程進(jìn)入睡眠狀態(tài);

當(dāng)指令調(diào)用線程進(jìn)入睡眠狀態(tài)經(jīng)過預(yù)設(shè)的特定時(shí)長后喚醒指令調(diào)用線程。

雖然本發(fā)明所公開的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。本發(fā)明所述的方法還可有其他多種實(shí)施例。在不背離本發(fā)明實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明做出各種相應(yīng)的改變或變形,但這些相應(yīng)的改變或變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
湛江市| 大同县| 徐闻县| 淅川县| 疏附县| 西畴县| 双牌县| 中超| 嘉黎县| 当雄县| 荣成市| 河间市| 德化县| 沙雅县| 青阳县| 达州市| 林州市| 中卫市| 广水市| 磴口县| 乌什县| 新乡县| 神木县| 东乌珠穆沁旗| 清苑县| 昌平区| 两当县| 镶黄旗| 壤塘县| 克什克腾旗| 陇南市| 台南县| 陵川县| 台北市| 汉源县| 湖南省| 神农架林区| 利辛县| 浠水县| 永胜县| 衡东县|