一種在預(yù)設(shè)嵌入式系統(tǒng)中實(shí)現(xiàn)腳本操作的系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種在預(yù)設(shè)嵌入式系統(tǒng)中實(shí)現(xiàn)腳本操作的系統(tǒng),應(yīng)用于智能機(jī)器人,所述系統(tǒng)包括:虛擬機(jī),用以解釋腳本并執(zhí)行;線程池,用以存儲與關(guān)聯(lián)腳本任務(wù)的所述虛擬機(jī)的實(shí)例;管理單元,連接線程池和所述虛擬機(jī),用以將所述虛擬機(jī)根據(jù)接收到的所述腳本任務(wù)實(shí)例化后存儲入所述線程池,并根據(jù)預(yù)設(shè)策略對所述線程池中的線程進(jìn)行相應(yīng)的調(diào)度;全局表,連接所述線程池,用以存儲因所述管理單元調(diào)度而打斷的腳本任務(wù)對應(yīng)的所述線程的識別信息;匹配單元,連接所述管理單元和所述全局表,用以本局腳本任務(wù)于所述全局表中查詢是否存在匹配的記錄,如存在時(shí)通知所述管理單元調(diào)度所述記錄中相應(yīng)的線程執(zhí)行。采用全局表解決了機(jī)器人在交互中的上下文問題。
【專利說明】
一種在預(yù)設(shè)嵌入式系統(tǒng)中實(shí)現(xiàn)腳本操作的系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種在預(yù)設(shè)嵌入式系統(tǒng)中實(shí)現(xiàn)腳本操作的系 統(tǒng)。
【背景技術(shù)】
[0002] 隨著機(jī)器人的應(yīng)用領(lǐng)域的擴(kuò)大和電子技術(shù)的高速發(fā)展,機(jī)器人在人們生活中的應(yīng) 用逐漸增多,傳統(tǒng)的機(jī)器人普遍采用面向過程的編程思想進(jìn)行編程。所謂面向過程指的是 一種以過程為中心的編程思想。面向過程就是分析出解決問題所需要的步驟,然后用函數(shù) 把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用。
[0003]目前應(yīng)用程序已經(jīng)從命令行界面發(fā)展到窗口界面。因?yàn)閼?yīng)用程序是基于面向過程 開發(fā)的,所以存在靈活性差以及不易維護(hù)等問題,就像傳統(tǒng)的圖形交互方式,窗口的前進(jìn)和 后退是有限并且一定的。由于程序運(yùn)行時(shí)存在上下文關(guān)聯(lián)性(所謂上下文關(guān)聯(lián)性指的是交 互時(shí),用戶的指令是存在上下文的),程序編寫者需要編寫大量的if…else…判斷上下文 來改變程序流,且相同的交互方式可能在不同的上下文中對應(yīng)不同的結(jié)果。如果采用傳統(tǒng) 編程思想,這些上下文將引發(fā)大量的對象耦合,會(huì)毀滅掉面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)勢。而且 傳統(tǒng)的嵌入式開發(fā)流程較長,程序編寫完成后需要經(jīng)過編譯,部署,燒寫等過程才能驗(yàn)證功 能,如果系統(tǒng)復(fù)雜,則這個(gè)過程將消耗大量的時(shí)間和金錢。
[0004] 綜上所述,傳統(tǒng)可執(zhí)行特定任務(wù)的可編程多功能專用機(jī)器人功能局限、靈活性差 且不易維護(hù),已經(jīng)無法滿足人們?nèi)找嬖鲩L的需求。
【發(fā)明內(nèi)容】
[0005] 針對傳統(tǒng)的嵌入式開發(fā)流程存在的上述問題,現(xiàn)提供一種旨在實(shí)現(xiàn)可直調(diào)用功能 單元,靈活性強(qiáng)、獨(dú)占性強(qiáng)且容易維護(hù)的智能機(jī)器人。
[0006] 具體技術(shù)方案如下:
[0007] -種在預(yù)設(shè)嵌入式系統(tǒng)中實(shí)現(xiàn)腳本操作的系統(tǒng),應(yīng)用于智能機(jī)器人,包括:
[0008] 虛擬機(jī),用以解釋腳本并執(zhí)行;
[0009] 線程池,用以存儲與關(guān)聯(lián)腳本任務(wù)的所述虛擬機(jī)的實(shí)例;
[0010] 管理單元,連接所述線程池和所述虛擬機(jī),用以將所述虛擬機(jī)根據(jù)接收到的所述 腳本任務(wù)實(shí)例化后存儲入所述線程池,并根據(jù)預(yù)設(shè)策略對所述線程池中的線程進(jìn)行相應(yīng)的 調(diào)度;
[0011] 全局表,連接所述線程池,用以存儲因所述管理單元調(diào)度而打斷的腳本任務(wù)對應(yīng) 的所述線程的識別信息;
[0012] 匹配單元,連接所述管理單元和所述全局表,用以本局腳本任務(wù)于所述全局表中 查詢是否存在匹配的記錄,如存在時(shí)通知所述管理單元調(diào)度所述記錄中相應(yīng)的線程執(zhí)行。
[0013] 優(yōu)選的,還包括:
[0014] 執(zhí)行單元,連接所述線程池,用以根據(jù)所述管理單元的調(diào)度執(zhí)行所述線程池中相 應(yīng)的所述線程。
[0015] 優(yōu)選的,還包括:
[0016] 腳本運(yùn)行單元,用以執(zhí)行接收到的腳本任務(wù);
[0017] 接口單元,連接所述腳本運(yùn)行單元和所述管理單元,用以將所述腳本任務(wù)發(fā)送至 所述管理單元。
[0018] 優(yōu)選的,所述腳本運(yùn)行單元和所述接口單元由運(yùn)行于JAVA虛擬機(jī)的JAVA原生接 口形成。
[0019] 優(yōu)選的,所述預(yù)設(shè)策略包括先進(jìn)先出策略和先進(jìn)后出策略。
[0020] 優(yōu)選的,所述全局表采用哈希表。
[0021] 優(yōu)選的,還包括通訊單元,連接所述執(zhí)行單元,所述通訊單元讀取所述執(zhí)行單元執(zhí) 行所述線程的任務(wù)信息和/或執(zhí)行結(jié)果,并發(fā)送至一遠(yuǎn)程服務(wù)器。
[0022] 上述技術(shù)方案的有益效果:
[0023] 通過線程池可提高智能機(jī)器人在復(fù)雜環(huán)境下針對突發(fā)狀況的完備性;采用全局表 解決了機(jī)器人在交互中的上下文問題,可根據(jù)用戶的上下文軌跡執(zhí)行相應(yīng)的操作,采用管 理單元可以維護(hù)機(jī)器人的獨(dú)占性硬件,從而保證腳本任務(wù)執(zhí)行的正確性,且可直調(diào)用功能 單元,靈活性強(qiáng)且容易維護(hù)。
【附圖說明】
[0024] 圖1為本發(fā)明所述智能機(jī)器人的一種實(shí)施例的模塊圖。
【具體實(shí)施方式】
[0025] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其 他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0026] 需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相 互組合。
[0027] 下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,但不作為本發(fā)明的限定。
[0028] 如圖1所示,一種在預(yù)設(shè)嵌入式系統(tǒng)中實(shí)現(xiàn)腳本操作的系統(tǒng),應(yīng)用于智能機(jī)器人, 包括:
[0029] 虛擬機(jī)7,用以解釋腳本并執(zhí)行;
[0030] 線程池6,用以存儲與關(guān)聯(lián)腳本任務(wù)的虛擬機(jī)7的實(shí)例;
[0031] 管理單元5,連接線程池6和虛擬機(jī)7,用以將虛擬機(jī)7根據(jù)接收到的腳本任務(wù)實(shí) 例化后存儲入線程池6,并根據(jù)預(yù)設(shè)策略對線程池6中的線程進(jìn)行相應(yīng)的調(diào)度;
[0032] 全局表3,連接線程池6,用以存儲因管理單元5調(diào)度而打斷的腳本任務(wù)對應(yīng)的線 程的識別?目息;
[0033] 匹配單元2,連接管理單元5和全局表3,用以本局腳本任務(wù)于全局表3中查詢是 否存在匹配的記錄,如存在時(shí)通知管理單元5調(diào)度記錄中相應(yīng)的線程執(zhí)行。
[0034] 管理單元5接收到一條腳本任務(wù)后,需將該條腳本任務(wù)實(shí)例化后存儲入線程池6 中,根據(jù)預(yù)設(shè)策略對線程池6中的線程進(jìn)行相應(yīng)的調(diào)度,存在如下情況:
[0035] 若當(dāng)前腳本任務(wù)的優(yōu)先級高于線程池6中其他任務(wù)的優(yōu)先級時(shí),則打斷正在執(zhí)行 的腳本任務(wù)對應(yīng)的線程,將該線程的狀態(tài)存入線程池6中,且將該線程的識別信息存入全 局表3中,同時(shí)管理單元5存儲被打斷的腳本任務(wù),執(zhí)行優(yōu)先級高的線程;
[0036] 在預(yù)設(shè)的時(shí)間間隔判斷管理單元5是否接收到預(yù)設(shè)系統(tǒng)消息,預(yù)設(shè)系統(tǒng)消息為系 統(tǒng)預(yù)設(shè)的若干個(gè)具有優(yōu)先級的系統(tǒng)消息,該系統(tǒng)消息的優(yōu)先級高于正在執(zhí)行線程的優(yōu)先 級,當(dāng)管理單元5接收到系統(tǒng)消息后,需打斷正在執(zhí)行的腳本任務(wù)對應(yīng)的線程,將該線程的 狀態(tài)存入線程池6中,且將線程的識別信息存入全局表3中,同時(shí)管理單元5存儲被打斷的 腳本任務(wù),執(zhí)行系統(tǒng)消息;
[0037] 當(dāng)被打斷的腳本任務(wù)再次發(fā)送至管理單元5后,通過匹配單元2對在全局表3中 查詢是否存在于本局腳本任務(wù)匹配的記錄,如存在則通知管理單元5調(diào)度記錄中相應(yīng)的線 程執(zhí)行,即恢復(fù)上次一被打斷時(shí)的狀態(tài)繼續(xù)執(zhí)行。
[0038] 管理單元5可以用來維護(hù)智能機(jī)器人的硬件功能,因?yàn)樵谥悄軝C(jī)器人中硬件具有 獨(dú)占性的特點(diǎn)。例如機(jī)械機(jī)構(gòu),這類硬件不允許多個(gè)腳本任務(wù)同時(shí)調(diào)用。為了防止這種行 為的發(fā)生,管理單元5會(huì)對程序流的執(zhí)行進(jìn)行調(diào)度。采用管理單元5可以維護(hù)智能機(jī)器人 的獨(dú)占性硬件,保證程序執(zhí)行的正確性。
[0039] 在本實(shí)施例中通過線程池6可提高智能機(jī)器人在復(fù)雜環(huán)境下針對突發(fā)狀況的完 備性;采用全局表3解決了機(jī)器人在交互中的上下文問題,可根據(jù)用戶的上下文軌跡執(zhí)行 相應(yīng)的操作,采用管理單元5可以維護(hù)機(jī)器人的獨(dú)占性硬件,從而保證腳本任務(wù)執(zhí)行的正 確性,且可直調(diào)用功能單元。
[0040] 在優(yōu)選的實(shí)施例中,還包括:
[0041] 執(zhí)行單元8,連接線程池6,用以根據(jù)管理單元5的調(diào)度執(zhí)行線程池6中相應(yīng)的線 程。
[0042] 在本實(shí)施例中執(zhí)行單元8可根據(jù)管理單元5的調(diào)度執(zhí)行的相應(yīng)的線程,以保證腳 本任務(wù)執(zhí)行的正確性。
[0043] 在優(yōu)選的實(shí)施例中,還包括:
[0044] 腳本運(yùn)行單元1,用以執(zhí)行接收到的腳本任務(wù);
[0045] 接口單元4,連接腳本運(yùn)行單元1和管理單元5,用以將腳本任務(wù)發(fā)送至管理單元 5〇
[0046] 在優(yōu)選的實(shí)施例中,腳本運(yùn)行單元1和接口單元4由運(yùn)行于JAVA虛擬機(jī)7的JAVA 原生接口(Java Native Interface,JNI,JNI標(biāo)準(zhǔn)成為JAVA平臺的一部分,它允許JAVA代 碼和其他語言寫的代碼進(jìn)行交互)形成。
[0047] 在本實(shí)施例中JAVA引擎可作為腳本運(yùn)行單元1,可通過JAVA原生接口運(yùn)行腳本, 加載二進(jìn)制可執(zhí)行文件,惰性讀取腳本任務(wù)以注冊進(jìn)管理單元5中,創(chuàng)建一個(gè)新的場景,以 管理和調(diào)度腳本任務(wù)的執(zhí)行流程。
[0048] 在優(yōu)選的實(shí)施例中,預(yù)設(shè)策略包括先進(jìn)先出策略和先進(jìn)后出策略。
[0049] 在本實(shí)施例中的先進(jìn)先出策略實(shí)際就是允許先來先服務(wù)(First-in First-service)如:采用排隊(duì)的方式排列,先進(jìn)后出策略實(shí)際就是允許先來后服務(wù) (First-in Last-service)如:采用堆載的方式排列。腳本任務(wù)可通過標(biāo)簽設(shè)計(jì)保存和恢 復(fù)點(diǎn),在發(fā)生調(diào)度時(shí),腳本任務(wù)會(huì)無條件跳轉(zhuǎn)到標(biāo)簽中對程序流進(jìn)行保存和恢復(fù)操作,這樣 可以提高智能機(jī)器人在復(fù)雜環(huán)境下針對突發(fā)狀況的完備性。
[0050] 在優(yōu)選的實(shí)施例中,全局表3米用哈希表。
[0051] 在本實(shí)施例中哈希表是一個(gè)數(shù)據(jù)結(jié)構(gòu)用來記錄用戶運(yùn)行的軌跡,程序可根據(jù)軌跡 選擇最接近的上下文。所有被打斷的腳本任務(wù)的識別信息都會(huì)記錄到該哈希表中,如果用 戶調(diào)用了一個(gè)存在于多個(gè)功能中的函數(shù),那么該次調(diào)用會(huì)根據(jù)當(dāng)前哈希表的識別信息來決 定具體調(diào)用哪一個(gè)功能中的函數(shù)。
[0052] 在優(yōu)選的實(shí)施例中,還包括通訊單元9,連接執(zhí)行單元8,通訊單元9讀取執(zhí)行單元 8執(zhí)行線程的任務(wù)信息和/或執(zhí)行結(jié)果,并發(fā)送至一遠(yuǎn)程服務(wù)器。用以將執(zhí)行當(dāng)前線程的任 務(wù)信息和/或執(zhí)行結(jié)果反饋至遠(yuǎn)程服務(wù)器。
[0053] 在本實(shí)施例中腳本任務(wù)采用腳本編程語言編寫,腳本編程語言是一種基于堆棧式 虛擬機(jī)7的解釋型腳本語言,腳本編程語言不需要編譯,經(jīng)過解釋器解釋后對熱點(diǎn)代碼生 成本地機(jī)器碼后可直接運(yùn)行在智能機(jī)器人的嵌入式操作系統(tǒng)上。腳本編程語言是圖靈完備 的(所謂圖靈完備是指該語言可以完全模擬出圖靈機(jī)能做的所有事情,可以解決目前所有 的可計(jì)算問題,在編程思想上支持傳統(tǒng)面向過程軟件開發(fā)技術(shù)和面向?qū)ο筌浖_發(fā)技術(shù)), 該語言面向智能機(jī)器人的交互環(huán)境采用面向功能的開發(fā)方式。面向功能即語言內(nèi)的基本單 元是功能,這些功能之間互相獨(dú)立,可利用這些獨(dú)立的基礎(chǔ)功能單元來進(jìn)行具體復(fù)雜場景 設(shè)計(jì)。例如:用戶可能會(huì)隨機(jī)使用機(jī)器人的多個(gè)不相關(guān)功能,這些功能之間毫無聯(lián)系。比如 用戶可能先讓機(jī)器人幫忙放音樂,接下來又突然讓機(jī)器人報(bào)告當(dāng)前的天氣。
[0054] 現(xiàn)已某具有開燈,音樂播放,語言交互,電影播放,機(jī)械運(yùn)動(dòng)功能的智能機(jī)器人為 例:
[0055] 機(jī)器人的操作系統(tǒng)采用安卓(Android)智能操作系統(tǒng)。腳本運(yùn)行單元1負(fù)責(zé)打通 腳本任務(wù)和安卓系統(tǒng)之間的聯(lián)系。管理單元5負(fù)責(zé)管理和調(diào)度腳本任務(wù)執(zhí)行流。執(zhí)行單元 8根據(jù)管理單元5的調(diào)度執(zhí)行線程池6中相應(yīng)的線程。下面代碼給出了一個(gè)具體應(yīng)用的邏 輯,該應(yīng)用是一個(gè)播放音樂邏輯。其中"http://"為注釋符號,"http://"后的數(shù)據(jù)不會(huì)出現(xiàn)在程序當(dāng) 中。
[0056] //Itart enter(music,light) //進(jìn)入音樂和燈光功能 on //在音樂和燈光上下文中,同時(shí)打開音樂和燈光 while (1) { var ret = waitForCmd //等待用戶命令 ifend〇ret) //判斷是否結(jié)束該應(yīng)用 play (ret) //播放用戶需要的音樂,Ught功能中的函數(shù)同樣會(huì)被調(diào)用,隨 著音樂一起變化燈光 } <onPause> save //保存上下文,ici住剛才的音樂 off//被其他程序打斷,暫時(shí)關(guān)掉音樂和燈光
[0057] exit(music, light) //結(jié)束音樂和燈光功能 <onResurae> entef〇ii:us_ie, light) //進(jìn)入音樂和燈光功能 resume//恢復(fù)上下文,重新加載剛才的音樂 on//恢復(fù)音樂
[0058] 在本實(shí)施例中采用腳本任務(wù)解決了使用傳統(tǒng)高級語言編譯,部署,燒寫漫長的問 題。只需要將腳本任務(wù)的源代碼放到智能機(jī)器人的文件系統(tǒng)后,即可直接運(yùn)行進(jìn)行功能驗(yàn) 證;通過腳本任務(wù)可將系統(tǒng)的功能直接暴露給程序編寫者,減少了應(yīng)用程序開發(fā)者的負(fù)擔(dān), 提高了針對智能機(jī)器人程序的開發(fā)效率;通過一隨時(shí)變化的全局表3解決如交互中的上下 文問題,編寫者不需要像傳統(tǒng)語言那樣編寫大量的if…else…判斷上下文來改變程序流, 而是直接調(diào)用功能單元,這些功能內(nèi)部會(huì)根據(jù)全局表3來判斷執(zhí)行哪一個(gè)程序流。操作簡 單方便。
[0059] 將本實(shí)施例應(yīng)用于智能機(jī)器人上,可使機(jī)器人成為在感知、思維和效應(yīng)方面完全 模擬人的機(jī)器系統(tǒng),它不僅是高效智能系統(tǒng)也是人工智能技術(shù)的綜合體現(xiàn)。
【主權(quán)項(xiàng)】
1. 一種在預(yù)設(shè)嵌入式系統(tǒng)中實(shí)現(xiàn)腳本操作的系統(tǒng),應(yīng)用于智能機(jī)器人,其特征在于,包 括: 虛擬機(jī),用以解釋腳本并執(zhí)行; 線程池,用以存儲與關(guān)聯(lián)腳本任務(wù)的所述虛擬機(jī)的實(shí)例; 管理單元,連接所述線程池和所述虛擬機(jī),用以將所述虛擬機(jī)根據(jù)接收到的所述腳本 任務(wù)實(shí)例化后存儲入所述線程池,并根據(jù)預(yù)設(shè)策略對所述線程池中的線程進(jìn)行相應(yīng)的調(diào) 度; 全局表,連接所述線程池,用以存儲因所述管理單元調(diào)度而打斷的腳本任務(wù)對應(yīng)的所 述線程的識別信息; 匹配單元,連接所述管理單元和所述全局表,用以本局腳本任務(wù)于所述全局表中查詢 是否存在匹配的記錄,如存在時(shí)通知所述管理單元調(diào)度所述記錄中相應(yīng)的線程執(zhí)行。2. 如權(quán)利要求1所述系統(tǒng),其特征在于,還包括: 執(zhí)行單元,連接所述線程池,用以根據(jù)所述管理單元的調(diào)度執(zhí)行所述線程池中相應(yīng)的 所述線程。3. 如權(quán)利要求1所述系統(tǒng),其特征在于,還包括: 腳本運(yùn)行單元,用以執(zhí)行接收到的腳本任務(wù); 接口單元,連接所述腳本運(yùn)行單元和所述管理單元,用以將所述腳本任務(wù)發(fā)送至所述 管理單元。4. 如權(quán)利要求3所述系統(tǒng),其特征在于,所述腳本運(yùn)行單元和所述接口單元由運(yùn)行于 JAVA虛擬機(jī)的JAVA原生接口形成。5. 如權(quán)利要求1所述系統(tǒng),其特征在于,所述預(yù)設(shè)策略包括先進(jìn)先出策略和先進(jìn)后出 策略。6. 如權(quán)利要求1所述系統(tǒng),其特征在于,所述全局表采用哈希表。7. 如權(quán)利要求2所述系統(tǒng),其特征在于,還包括通訊單元,連接所述執(zhí)行單元,所述通 訊單元讀取所述執(zhí)行單元執(zhí)行所述線程的任務(wù)信息和/或執(zhí)行結(jié)果,并發(fā)送至一遠(yuǎn)程服務(wù) 器。
【文檔編號】G06F9/44GK105843592SQ201510014270
【公開日】2016年8月10日
【申請日】2015年1月12日
【發(fā)明人】施家琪
【申請人】芋頭科技(杭州)有限公司