專利名稱:嵌入式環(huán)境下的RoboCup平臺球員智能控制方法及其系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機智能控制技術領域,尤其是涉及一種嵌入式環(huán)境下的RoboCup 平臺球員智能控制方法及其系統(tǒng)。
背景技術:
智能體的設計是一個非常復雜的過程,涉及各種各樣的技術,包括智能體的設計 準則、多主體合作、策略獲取、實時推理、機器人學以及感知信息融合等。對于一個比賽的球 隊來說,智能機器人的每一次動作選擇都是在動態(tài)環(huán)境下進行的。因此,針對智能機器人的 設計這一難題,當前人們都做出了許多的努力。例如建立RoboCup聯(lián)盟、提供RoboCup仿真 平臺、通過舉辦機器人足球比賽等方式來促進人工智能和智能機器人的研究。其中葡萄牙 的FC Portugal球隊和UVA Trilearn球隊等都提出了許多非常出色的動作決策算法。葡 萄牙的FC Portugal球隊的高層決策模型不僅決定了球員動作,而且決定了戰(zhàn)術、陣型、站 位和每一時刻的球員類型。此外,F(xiàn)C Portugal球隊還提出了一種針對陣型和跑位做出的基 于形勢的策略定位方法SBSP。其中,每個球員通過計算其起始位置(一般由陣型決定)和 球所在位置的加權值來確定其策略站位。而UVA Trilearn球隊的動作選擇策略則是一個 不斷改進的過程。其初期是由用于檢測低水平的表現(xiàn)及其基本技能的簡單選擇過程組成, 其后通過不斷比較增添該動作或不增添動作的效果,進行選擇,不斷引進更高級的技能和 策略。同時,UVA球隊還引入了體力模型,對球員的體力進行了一定的估計和管理。但是這 些現(xiàn)有技術對于智能足球機器人的設計和動作推理都是基于PC機的,并且算法比較復雜, 占用系統(tǒng)計算資源和內(nèi)存資源過多,不適用于嵌入式環(huán)境。
發(fā)明內(nèi)容
本發(fā)明致力于在開發(fā)過程中遷移到Android嵌入式操作系統(tǒng)上,以實現(xiàn)嵌入式環(huán) 境下的智能體的設計,同時實現(xiàn)對系統(tǒng)計算資源和存儲資源的合理占用。為達到上述目的,本發(fā)明提供了如下所述的技術方案。一種嵌入式環(huán)境下的 RoboCup平臺球員智能控制方法,包括如下步驟1)從服務器端接收各種信息;2)根據(jù)接收到的信息類型進行相應處理后整合給客戶端的世界模型模塊;3)根據(jù)所述世界模型模塊獲取的當前球員的局部感知情況,由當前球員的高層決 策模塊負責球員之間的分工協(xié)作;4)根據(jù)所述高層決策模塊的規(guī)劃來選擇每個球員的動作;5)發(fā)送動作命令給服務器端。在本發(fā)明的一個實施例中,所述步驟1)中的各種信息包括,命令響應信息、視覺 信息、身體感知信息和聽覺信息。在本發(fā)明的另一個實施例中,所述步驟2)的具體處理過程為對于命令響應信息,所述接收信息處理模塊立即直接對其進行解析處理,將命令執(zhí)行的結(jié)果根據(jù)需要更新到所述世界模型模塊中;對于視覺信息和身體感知信息,所述接收信息處理模塊不進行解析和更新,而是 將其保存到共享數(shù)據(jù)區(qū)中;對于聽覺信息,所述接收信息處理模塊根據(jù)不同的發(fā)送者來選擇不同的處理方 式,當發(fā)送者是自己,則不進行任何處理,當發(fā)送者是裁判員,則直接通知所述世界模型模 塊更新當前的比賽模式,當發(fā)送者是在線教練或其他球員且其消息內(nèi)容中包含發(fā)送者所通 報的物體運動信息,即等同于視覺信息,則保存并發(fā)送給所述世界模型模塊統(tǒng)一進行解析 與更新。在本發(fā)明的另一個實施例中,所述步驟(3)中的局部感知情況包括當前球員在規(guī) 定范圍內(nèi)可以看到和聽到的球場情況,其中包括周圍雙方球員的位置、速度和加速度、喊話 聲,以及球在可視范圍內(nèi)的位置和速度和當前球員感受到自身的體力、速度和加速度。在本發(fā)明的又一個實施例中,所述世界模型模塊針對當前球場狀態(tài)進行預測包括 對球進行的預測以及對球員進行的預測。在本發(fā)明的又一個實施例中,所述對球進行的預測包括情況1 本周期內(nèi)沒有視覺信息,或者視覺信息中并不含任何球的信息,而且上個 周期沒有執(zhí)行踢球命令,則假設沒有任何球員碰到球,然后不對球的運動信息進行計算并 將其更新到所述世界模型模塊中;情況2 本周期內(nèi)有視覺信息,但是視覺信息中只有球的位置信息,則還需要得到 其速度信息;這種情況說明,球位于球員鄰域內(nèi),但是不在球員視野范圍內(nèi);如果連續(xù)兩個 周期內(nèi)得到球的位置,則球在上一周期中的速度就可由上周期兩個位置之差得到,然后計 算當前周期的球速;情況3 本周期內(nèi)有身體感知信息,球員發(fā)送的踢球命令得到了執(zhí)行,則計算出有 效踢球力量,進而計算出加速度,然后根據(jù)當前球的位置、速度計算出下一周期的位置與速 度;如果要對未來n個周期中球的運動狀態(tài)進行預測,其方法為第1周期按上述方法 預測,而對于從第2個周期到第n個周期的運動情況,都按照上面的情況1進行處理。在本發(fā)明的又一個實施例中,所述高層決策模塊是通過球隊陣型、跑位和動作選 擇算法來實現(xiàn)。在本發(fā)明的又一個實施例中,所述動作命令包括身體控制命令、通訊命令、數(shù)據(jù)請 求命令。一種嵌入式環(huán)境下的RoboCup平臺球員智能控制系統(tǒng),包括服務器端用于執(zhí)行 客戶端發(fā)來的命令以及給參與比賽的客戶端發(fā)送信息,以及至少兩個客戶端,每個客戶端 對應于一個球隊,所述客戶端包括接收信息處理模塊,用于接收所述服務器端發(fā)送的消息,并且按照預定協(xié)議對所 接收的信息進行解析和分類,并將特定類型的信息發(fā)送給世界模型;世界模型模塊,用于接收所述接收信息處理模塊發(fā)送的信息,并進行更新、合并以 及存儲;高層決策模塊,用于根據(jù)世界模型中存儲的信息,進行球員之間的分工協(xié)作的高 層決策,并將所述決策發(fā)送給球員技術模塊;
6
球員技術模塊,用于根據(jù)世界模型中存儲的信息以及高層決策模塊所 作出的決策 對球員的基本動作進行選擇;動作命令發(fā)送模塊,根據(jù)預定的動作指令協(xié)議,向服務器端發(fā)送動作指令。在本發(fā)明的又一個實施例中,所述接收信息處理模塊將接收到的信息進行解析和 分類對于命令響應信息,所述接收信息處理模塊立即直接對其進行解析處理,將命令 執(zhí)行的結(jié)果根據(jù)需要更新到所述世界模型模塊中;對于視覺信息和身體感知信息,所述接收信息處理模塊不進行解析和更新,而是 將其保存到共享數(shù)據(jù)區(qū)中;對于聽覺信息,所述接收信息處理模塊根據(jù)不同的發(fā)送者來選擇不同的處理方 式,當發(fā)送者是自己,則不進行任何處理,當發(fā)送者是裁判員,則直接通知所述世界模型模 塊更新當前的比賽模式,當發(fā)送者是在線教練或其他球員且其消息內(nèi)容中包含發(fā)送者所通 報的物體運動信息,即等同于視覺信息,則保存并發(fā)送給所述世界模型模塊統(tǒng)一進行解析 與更新。在本發(fā)明的又一個實施例中,所述動作命令發(fā)送模塊發(fā)送與連接相關的命令和球 員自身的控制命令,其中所述與連接相關的命令包括初始化命令、球員參數(shù)命令、重新連接 命令、結(jié)束連接命令,所述球員自身的控制命令包括身體控制命令、通訊命令、數(shù)據(jù)請求命 令。在本發(fā)明的又一個實施例中,所述身體控制命令包括轉(zhuǎn)身、撲球、加速、踢球、移動。在本發(fā)明的又一個實施例中,所述世界模型模塊針對當前球場狀態(tài)進行預測包括 對球進行的預測以及對球員進行的預測。在本發(fā)明的又一個實施例中,所述對球進行的預測包括情況1 本周期內(nèi)沒有視覺信息,或者視覺信息中并不合任何球的信息,而且上個 周期沒有執(zhí)行踢球命令,則假設沒有任何球員碰到球,然后不對球的運動信息進行計算并 將其更新到所述世界模型模塊中;情況2 本周期內(nèi)有視覺信息,但是視覺信息中只有球的位置信息,則還需要得到 其速度信息;這種情況說明,球位于球員鄰域內(nèi),但是不在球員視野范圍內(nèi);如果連續(xù)兩個 周期內(nèi)得到球的位置,則球在上一周期中的速度就可由上周期兩個位置之差得到,然后計 算當前周期的球速;情況3 本周期內(nèi)有身體感知信息,球員發(fā)送的踢球命令得到了執(zhí)行,則計算出有 效踢球力量,進而計算出加速度,然后根據(jù)當前球的位置、速度計算出下一周期的位置與速 度;如果要對未來n個周期中球的運動狀態(tài)進行預測,其方法為第1周期按上述方法 預測,而對于從第2個周期到第n個周期的運動情況,都按照上面的情況1進行處理。在本發(fā)明的又一個實施例中,所述高層決策模塊是通過球隊陣型、跑位和動作選 擇算法來實現(xiàn)。在本發(fā)明的又一個實施例中,所述球隊陣型算法是將不同陣型的信息存儲在配置 文件中,每個球員啟動時都讀取同樣的陣型配置文件,從而可以獲知整個球隊所采用的陣型及其它隊友的策略位置信息;將球員在比賽中根據(jù)戰(zhàn)術需要而應當前往的位置定義為策 略位置,每個球員通過計算其在陣型中的基本位置和球的當前周期的所在位置的加權值來 確定其策略位置。在本發(fā)明的又一個實施例中,所述動作選擇算法是球員根據(jù)預先給定的“條 件_行動”規(guī)則,匹配當前場景條件適合的規(guī)則,選擇相應的行動。在本發(fā)明的又一個實施例中,所述“條件_行動”規(guī)則分為非守門員球員的決策算 法與守門員球員的決策算法。本發(fā)明采用Android Activity的進程模型開發(fā),實現(xiàn)了相應的方法確保在生命周 期不同階段之間相互切換時保持正確性和數(shù)據(jù)的一致性,確保了本發(fā)明系統(tǒng)的可靠性。同 時,在本發(fā)明中,由于需要在將本程序切換到后臺時球員仍然正常進行踢球的活動,同時還 有大量的線程同時進行網(wǎng)絡通訊,在本發(fā)明系統(tǒng)中使用了 Service來實際完成球隊策略控 制和底層網(wǎng)絡通訊的功能。
圖1是根據(jù)本發(fā)明的嵌入式環(huán)境下的RoboCup平臺球員智能控制方法的流程圖;圖2是根據(jù)本發(fā)明的嵌入式環(huán)境下的RoboCup平臺球員智能控制方法的步驟2) 的詳細流程圖;圖3是根據(jù)本發(fā)明的利用視覺信息更新世界模型的流程圖;圖4是在PC機上RoboCup的體系結(jié)構(gòu)圖;圖5是本發(fā)明在Android環(huán)境下的RoboCup的體系結(jié)構(gòu)圖;圖6是根據(jù)本發(fā)明的嵌入式環(huán)境下的RoboCup平臺球員智能控制系統(tǒng)的結(jié)構(gòu)圖;圖7是根據(jù)本發(fā)明的嵌入式環(huán)境下的RoboCup平臺球員智能控制方法中對非守門 員球員的決策算法流程圖;圖8是根據(jù)本發(fā)明的嵌入式環(huán)境下的RoboCup平臺球員智能控制系統(tǒng)對球場進攻 區(qū)域的劃分示意圖;以及圖9根據(jù)本發(fā)明的嵌入式環(huán)境下的RoboCup平臺球員智能控制方法中對守門員球 員的決策算法流程圖。
具體實施例方式下面將參照附圖更加詳細地描述根據(jù)本發(fā)明的嵌入式環(huán)境下的RoboCup平臺球 員智能控制方法及其系統(tǒng)的具體實施例。一種嵌入式環(huán)境下的RoboCup平臺球員智能控制方法,如圖1所示,包括如下步驟1)從服務器端接收各種信息;2)根據(jù)接收到的信息類型進行相應處理后整合給客戶端的世界模型模塊;3)根據(jù)所述世界模型模塊獲取的當前球員的局部感知情況,由當前球員的高層決 策模塊負責球員之間的分工協(xié)作;4)根據(jù)所述高層決策模塊的規(guī)劃來選擇每個球員的動作;5)發(fā)送動作命令給服務器端。
其中,上述步驟1)中的各種信息包括,命令響應信息、視覺信息、身體感知信息和 聽覺信息。如圖2所示,上述步驟2)的具體處理過程如下A)球員根據(jù)讀取的配置文件開球;B)將消息發(fā)送給服務器端;C)判斷上述消息是否與物體動作信息有關,如果是,則立即對該消息進行解析處 理后更新給世界模型模塊,否則進入步驟D);D)服務器保存信息到共享數(shù)據(jù)區(qū)中,并發(fā)送信息給球員;E)判斷消息是否為身體感知信息,如果是,則進入步驟F),否則進入步驟G);F)保存身體感知信息;G)保存視覺信息;H)更新世界模型模塊;I)由世界模型模塊發(fā)送消息給動作決策模塊;J)通過動作決策模塊轉(zhuǎn)入步驟B)。其中,配置文件是在系統(tǒng)啟動前按照需要,設計的一些球員的初始位置、隊形以及 個人能力的信息。系統(tǒng)啟動時就會讀取這個文件,并按照文件中的內(nèi)容設置開球時各個球 員的狀態(tài)。對于視覺信息和身體感知信息,將其保存到共享數(shù)據(jù)區(qū)中;對于聽覺信息的處理,要根據(jù)發(fā)送者的不同來選擇處理的具體方式。如果發(fā)送者 是自己,則不進行任何處理;如果發(fā)送者是裁判員,則可以直接處理,通知更新當前的比賽 模式;如果發(fā)送者是在線教練或其他球員,則其消息內(nèi)容中可能包含發(fā)送者所通報的物體 運動信息,即等同于視覺信息,需要將其保存并交由所述世界模型模塊統(tǒng)一進行解析與更 新。世界模型中的信息主要是從服務器接收到的視覺信息和身體感知信息,因此根據(jù) 視覺信息和身體感知信息來對世界模型進行更新。視覺信息實際上是物體相對于接收該視 覺信息的球員的一個相對信息,要維護世界模型中的物體全局信息,只需將其視覺信息中 各個相對信息值還原出全局信息值。具體過程請參照圖3所示。視覺信息,即表示球員可以在自己視覺范圍內(nèi)看到的情況,服務器每隔150ms發(fā) 送一次;感知信息,即表示隊員感知自己的方向、當前速度、體力等信息,服務器每隔100ms 發(fā)送一次。而RoboCup規(guī)定每隔100ms,客戶端可以向服務器端發(fā)送一個動作。如果100ms 內(nèi)發(fā)送多于一個動作,則其中隨機的一條被執(zhí)行;如果100ms內(nèi)沒有發(fā)生動作,則讓球員保 持靜止或者慣性運動。發(fā)出動作是由決策線程來決定的,而決定的依據(jù)很大程度上依賴于 視覺感知信息。但是由于視覺信息每150ms才能收到一次,這樣每隔3個周期就會沒有視 覺信息。一個周期是100ms。即使有視覺信息,由于視野范圍的影響,可能會存在信息缺失, 比如只有位置,沒有速度等。此時必須通過世界模型的預測來盡可能的估計當前球場上的 狀態(tài)。比如根據(jù)上一周期的球的方向和速度,當前周期應該飛到身后去,就應該立刻轉(zhuǎn)身。 同時由于視覺信息具有不完整性,收到的視覺信息可能有一些未知球員的視覺信息,因此 需要對這些未知球員與最近幾個周期沒有明確看到的球員進行匹配。即,從中選出位置信 息可信度較好且比較未知球員當前位置的距離,將未知球員匹配為距該位置最近的球員。
9
雖然采用視覺信息對世界模型進行更新最為準確,但是并不是每個時鐘周期都有 視覺信息到達,此時通過本周期接收到身體感知信息對場上物體的狀態(tài)進行預測和必要的 更新。但是由于身體感知信息僅僅包含對自己狀態(tài)的感知(體力、加速度和視覺模式),感 受不到周圍的球員,所以這種預測僅能對球和球員自身的運動狀態(tài)進行預測。世界模型模塊針對當前球場狀態(tài)進行預測包括對球進行的預測以及對球員進行 的預測。其中,對球進行的預測包括情況1 本周期內(nèi)沒有視覺信息,或者視覺信息中并不含任何球的信息,而且上個 周期沒有執(zhí)行踢球命令,則假設沒有任何球員碰到球,然后不對球的運動信息進行計算并 將其更新到所述世界模型中;情況2 本周期內(nèi)有視覺信息,但是視覺信息中只有球的位置信息,則還需要得到 其速度信息;這種情況說明,球位于球員鄰域內(nèi),但是不在球員視野范圍內(nèi);如果連續(xù)兩個 周期內(nèi)得到球的位置,則球在上一周期中的速度就可由上周期兩個位置之差得到,然后計 算當前周期的球速;情況3 本周期內(nèi)有身體感知信息,球員發(fā)送的踢球命令得到了執(zhí)行,則計算出有 效踢球力量,進而計算出加速度,然后根據(jù)當前球的位置、速度計算出下一周期的位置與速 度;如果要對未來n個周期中球的運動狀態(tài)進行預測,其方法為第1周期按上述方法 預測,而對于從第2個周期到第n個周期的運動情況,都按照上面的情況1進行處理。對球員運動進行預測時,在身體感知信息中,直接包括有體力參數(shù)、球員自身相對 于頭部的速度以及頭部相對于身體的角度??砂凑找韵虏襟E對新周期開始時的球員自身的 運動狀態(tài)進行更新a)更新全局加速度和體力信息。體力信息即身體感知信息中的體力,而全局加速 度為0,只在執(zhí)行沖撞命令的周期末短暫地改變?yōu)榉橇阒?。b)更新全局身體朝向。具體來說就是,如果沒有上個周期沒有執(zhí)行轉(zhuǎn)向命令,則全 局身體朝向不變;否則,需要根據(jù)轉(zhuǎn)向模型計算實際的身體轉(zhuǎn)向角度,然后將其加到上一周 期的全局身體朝向上即可得到本周期的全局身體朝向。c)更新全局頭部朝向。根據(jù)身體感知信息中的頭部相對于身體的角度和上一步得 到的全局身體朝向,可以計算出全局頭部朝向。d)更新全局速度。根據(jù)速度的數(shù)值、速度的方向和上一步驟求得的全局頭部朝向, 可以計算出球員的全局速度。e)更新全局位置。由于已知上一周期的全局位置,因此還需要知道上個周期末的 速度和本周期的全局速度的速率,可獲得上周期末的全局速度大小;全局速度方向角度改 變量為上述b)中計算的實際轉(zhuǎn)向角度,由此即可得出上一周期末的全局速度,從而確定本 周期的全局位置。接下來介紹如何對未來多個周期內(nèi)球員的運動情況進行預測。由于無法提前獲取 相應的身體感知信息,預測方法同上述預測方法有很大區(qū)別1)對未來周期球員運動狀態(tài)的預測,需要假設所發(fā)送的動作命令一定被執(zhí)行,然 后按照各種基本行為模型進行計算;
10
2)預測下一周期的全局身體朝向,要根據(jù)轉(zhuǎn)向模型來預測,與上述b)相同;3)預測下一周期的全局頭部朝向,需要根據(jù)上一步得到的全局身體朝向和轉(zhuǎn)身模 型共同來預測,而不能由身體感知信息中的頭部相對于身體的角度得到;4)預測本周期末的全局加速度和下一周期的體力值,需要根據(jù)沖撞模型及體力模 型算法來計算出實際加速度和下一周期的體力值;5)預測下一周期開始時的全局速度,根據(jù)運動模型利用上一步求出的本周期末的 加速度進行預測,而無法由身體感知信息中的速度直接獲取。預測下一周期的全局位置,根據(jù)運動模型利用當前周期全局位置和當前周期末的 全局速度,預測方法同前面的相同。在為PC機開發(fā)的RoboCup客戶端,其體系結(jié)構(gòu)如圖4所示。每一個球員用一個進 程來實現(xiàn)。每個進程中運行著3個線程,分別是決策線程,消息處理線程和命令發(fā)送線程。 其中消息處理線程和消息發(fā)送線程直接建立Socket與RoboCup服務器進行通訊。這種實 現(xiàn)是本發(fā)明系統(tǒng)在PC機上的實現(xiàn)方式。但是,在Android環(huán)境下,其進程模型與普通PC機的進程模型不同,它采用 Activity Task來封裝進程。同時由于Activity的代價極為昂貴,因此不能像在PC機上那 樣為每一個球員創(chuàng)建一個Activity,而是為每一個球隊創(chuàng)建若干共享的Activities,分別 用于控制球隊啟動和停止、配置球隊參數(shù)以及查看運行時輸出。此外,Activities僅用于 和用戶交互,而實際的核心則由Service來實現(xiàn),這樣可以避免由于Activity被切換到后 臺后停止工作。每一個RoboCup客戶端的三個線程作為一個線程組(Thread Group)來完 成一個隊員的工作。Activity和Service之間通過Intent來進行通訊,整個體系結(jié)構(gòu)如圖 5所示。當RoboCup平臺球員智能控制系統(tǒng)啟動時,Activity首先被創(chuàng)建和加載。當用戶 完成配置后,啟動連接過程時,Activity會發(fā)送Intent使得Service開始工作。如果此時 Service還沒有被創(chuàng)建,就會首先進行創(chuàng)建過程。Service會創(chuàng)建相應的線程來完成實際的 決策和命令收發(fā)的工作。從圖中還可以看到將每個隊員直接和服務器進行UDP通訊改為了 由一個線程統(tǒng)一執(zhí)行UDP通訊。Android操作系統(tǒng)的用戶界面實現(xiàn)方案與常規(guī)RoboCup客戶端不同。常規(guī)的客戶 端可以沒有圖形化用戶界面,直接采用命令行+參數(shù)+配置文件的方式運行。而在Android 環(huán)境下,應用程序默認的界面必須是圖形界面。并且與常規(guī)Java環(huán)境下Swing或AWT圖形 界面方式不同,Android采用運行時加載XML格式的圖形界面配置文件的形式實現(xiàn)用戶界 面。在JJSD中按照Android的開發(fā)形式,實現(xiàn)了圖形界面,用以配置隊員名稱、運行時的各 種關鍵參數(shù)和閾值等。在典型的桌面服務器環(huán)境下一般會有一個公用的文件系統(tǒng),不同的應用程序可以 共享同一個文件系統(tǒng),并能自由對其中的文件進行訪問。在Android下,數(shù)據(jù)存儲模型與此 不同,每個Android上的應用程序都存在一個私有存儲空間。不同應用程序的存儲空間相 互獨立。為此,Android提供了 Content Provider機制來進行數(shù)據(jù)讀寫的訪問。在JJSD 中,需要對配置文件以及運行時日志文件進行讀寫。因此,分別利用兩種不同的Content Provider進行這個工作。其中,Preferences用于配置的讀寫。具體方案是采用Android 應用程序上下文提供的接口 Context. getSharedPreferences ();利用Files來讀寫當前的 日志。具體實現(xiàn)方案是采用Android應用程序上下文提供的接口 Context. getFilelnput ()和Context. getFileOutput ()。一種嵌入式環(huán)境下的RoboCup平臺球員智能控制系統(tǒng),如圖6所示,包括服務器 端,用于執(zhí)行客戶端發(fā)來的命令以及給參與比賽的客戶端發(fā)送信息;以及至少兩個客戶端, 每個客戶端對應于一個球隊,所述客戶端包括接收信息處理模塊,用于接收所述服務器端發(fā)送的消息,并且按照預定協(xié)議對所 接收的信息進行解析和分類,并將特定類型的信息發(fā)送給世界模型;世界模型,用于接收所述接收信息處理模塊發(fā)送的信息,并進行更新、合并以及存 儲;高層決策模塊,用于根據(jù)世界模型中存儲的信息,進行球員之間的分工協(xié)作的高 層決策,并將所述決策發(fā)送給球員技術模塊;球員技術模塊,用于根據(jù)世界模型中存儲的信息以及高層決策模塊所作出的決策 對球員的基本動作進行選擇;動作命令發(fā)送模塊,根據(jù)預定的動作指令協(xié)議,向服務器端發(fā)送動作指令。其中,接收信息處理模塊具體的分類處理方法如下對于各種命令響應信息,接收信息處理模塊可以立即直接對其進行解析處理,將 命令執(zhí)行的結(jié)果根據(jù)需要更新到世界模型中;對于視覺信息和身體感知信息,將其直接保 存到共享數(shù)據(jù)區(qū)中;對于聽覺信息的處理,要根據(jù)發(fā)送者的不同來選擇處理的具體方式;如果發(fā)送者 是自己,則不進行任何處理,如果發(fā)送者是裁判員,則可以像命令響應消息那樣直接處理, 通知更新當前的比賽模式;如果發(fā)送者是在線教練或其他球員,則其消息內(nèi)容中可能包含 發(fā)送者所通報的視覺信息,則需要保存并交由所述世界模型統(tǒng)一進行解析與更新。世界模型中的信息主要是從服務器接收到的視覺信息和身體感知信息,因此根據(jù) 視覺信息和身體感知信息來對世界模型進行更新。視覺信息實際上是物體相對于接收該視 覺信息的球員的一個相對信息,要維護世界模型中的物體全局信息,只需將其視覺信息中 各個相對信息值還原出全局信息值。同時由于視覺信息具有不完整性,收到的視覺信息可能有一些未知球員的視覺信 息,因此需要對這些未知球員與最近幾個周期沒有明確看到的球員進行匹配。方法為從中 選出位置信息可信度較好且比較未知球員當前位置的距離,將未知球員匹配為距該位置最 近的球員。雖然采用視覺信息對世界模型進行更新最為準確,但是并不是每個時鐘周期都有 視覺信息到達,此時我們通過本周期接收到身體感知信息對場上物體的狀態(tài)進行預測和必 要的更新。但由于通過身體感知信息并不能包含其他球員的動作命令,所以這種預測是悠 閑地,僅能對球和球員自身的運動狀態(tài)進行預測。而對于物體的運動采取對每個仿真周期進行逐步仿真。同時針對每個能夠改變球 員或球的運動狀態(tài)的行為,例如撲球、沖撞、踢球、跑動、轉(zhuǎn)變方向、轉(zhuǎn)身等動作都建立相應 的動作模型來獲得相對應的變量。對球的運動狀態(tài)的預測,主要通過球的運動模型和踢球 模型進行預測。而對于球員運動狀態(tài)的預測則是先以根據(jù)身體感知信息對世界模型中的信 息進行更新,再對未來周期的球員運動信息的預測。高層決策模塊則主要負責不同球員根據(jù)當前場上的情況進行推理,進行協(xié)作,選擇恰當?shù)募夹g而采取相應的動作。在此我們是通過球隊陣型與跑位和動作選擇算法來實現(xiàn) 的??紤]到嵌入式環(huán)境下對資源的限制,本發(fā)明采用一種更為簡化的方法來確定球員 的陣型及策略跑位的位置。將不同陣型的信息存儲在配置文件中。每個球員啟動時都讀取 同樣的陣型配置文件,從而可以獲知整個球隊所采用的陣型及其它隊友的策略位置信息。 將球員在比賽中根據(jù)戰(zhàn)術需要而應當前往的位置定義為策略位置。每個球員通過計算其在 陣型中的基本位置和球的當前周期的所在位置的加權值來確定其策略位置。而在動作選擇方面,本發(fā)明是球員根據(jù)預先給定的“條件-行動”規(guī)則,匹配當前 場景條件適合的規(guī)則,選擇相應行動。這種實現(xiàn)方法決策速度快,占用系統(tǒng)資源少,有利于 在嵌入式平臺上進行運行。但是由于環(huán)境改變的高度動態(tài)性,每次循環(huán)只根據(jù)當時的世界 模型狀態(tài)確定一個動作,而不是一系列動作??紤]到球員和守門員擔當?shù)氖莾煞N完全不同 的角色,采用的動作也有所不同,在進行動作選擇的時候我們將兩者區(qū)分開來,分別設計了 非守門員球員的決策算法與守門員球員的決策算法。對于非守門員球員來說,其動作選擇采取“能踢則踢,不能則守”的算法,其流程如 圖7所示A1)判斷球是否看得見,如果是,則進入步驟A2),否則搜索球的位置后結(jié)束;A2)判斷球是否可以踢,如果是,則進入步驟A3),否則進入步驟A4);A3)選擇傳球或者射門后結(jié)束;A4)判斷是否是本隊離球最近的球員,如果是,則進入步驟A5),否則進入步驟 A6);A5)嘗試搶斷球后結(jié)束;A6)判斷是否距離策略位置比較遠,如果是,則進入步驟A7),否則進入步驟A8);A7)跑向策略位置后結(jié)束;A8)球員身體轉(zhuǎn)向球的方向后結(jié)束。其中,策略位置就是根據(jù)策略要跑到的目標位置。在執(zhí)行此算法時,球場被分為了如圖8所示的七個區(qū)域(假設本方從左往右攻)。 圖中的黑色箭頭表示了各區(qū)域之間在傳球方向的選擇,該選擇存在一個偏序關系,即兩個 相鄰的區(qū)域之間只存在一種傳球線路關系。這種偏序的原則是球只可以由靠后的區(qū)域傳 向靠前的區(qū)域,如1區(qū)可以傳向2、5a或5b區(qū),而2區(qū)只可以傳向3、4a或4b區(qū);同一縱深 的相鄰區(qū)域,只可以由靠邊的區(qū)域傳到中間的區(qū)域,而不可以由中間傳到兩邊,例如5a區(qū) 只可以傳向2區(qū),而2區(qū)不可以傳向兩側(cè)的5區(qū)。以上的限定,可以使場地分區(qū)后的決策中,減少無效率的傳球。如果不這樣限定傳 球線路,由于球員的決策都只是單周期決策,因而有可能出現(xiàn)球在兩個區(qū)域之間來回傳遞 卻始終無法接近對方球門并形成射門。當球可踢的情況下,對于任意位置的球員,如果當前周期面向本方球門方向且沒 有對方球員近身,則帶球轉(zhuǎn)向?qū)Ψ角蜷T。否則,位于不同的區(qū)域的球員對球應當采取不同的 處理。處理方法如下(傳球時如果相應區(qū)域無隊友,則表示相應條件不滿足,這里為了表 述的簡潔,就不將其寫入條件)。1區(qū)1.如果沒有對方隊員近身,則將球傳給2、5區(qū)最自由的隊友;
2.否則,向前方大腳破壞球。2區(qū)1.如果沒有對方球員近身,則將球傳給3、4區(qū)最自由的隊友;2.否則,向前方大腳破壞球。3區(qū)以最大力量將球踢向球門。
4區(qū)(a或b) 1.如果沒有對方球員近身,則將球傳給3區(qū)最自由的隊友;2.否則,如果沒有對方球員近身,則帶球進入3區(qū)。3.否則將球大力踢向球門。5區(qū)(a或b) 1.如果沒有對方球員近身,則將球傳給2、3或4區(qū)最自由的隊友。2.否則,如果沒有對方球員近身,則帶球進入同側(cè)的4區(qū)。3.否則將球大力踢向球門。通過以上策略的改進,在性能沒有太大損失的情況下,取得了比DeMeerf更好的 比賽效果。而考慮到守門員特殊職責和具有撲球這一特殊技能,我們單獨設計了守門員球員 的決策算法,主要流程如圖9所示S1)判斷球是否看得見,如果是,則進入步驟S2),否則搜索球的位置后結(jié)束;S2)判斷球是否為我方門球,如果是,則進入步驟S3),否則進入步驟S4);S3)判斷是否已經(jīng)移動到門球開球位置,如果是,則進入步驟S5),否則進入步驟 S6);S4)判斷球是否可撲,如果是,則進入步驟S7),否則進入步驟S8);S5)將球踢向中場偏左或者偏右的一側(cè)后結(jié)束;S6)將球移動到開球門球的位置后結(jié)束;S7)撲球后結(jié)束;S8)判斷球是否可踢,如果是,則進入步驟S5),否則進入步驟S9);S9)判斷球在禁區(qū)內(nèi)并且是否是本隊離球最近的球員,如果是,則進入S10),否則 進入S11);S10)嘗試搶斷球后結(jié)束;S11)球員身體轉(zhuǎn)向球的方向后結(jié)束。針對球員技術的層次性,本發(fā)明將其按照復雜程度分為高層、中層、低層技術方 案。每個周期,世界模型更新之后,就要決定這個周期應當執(zhí)行什么動作。當前世界模型首 先被送到高層技術模塊,有高層技術模塊得到當前應當實施的高層技術方案。此高層方案 被繼而被發(fā)送到中層技術模塊。中層技術模塊將高層技術方案分解寫一系列中層技術。例 如,高層得到的策略是搶奪,那么轉(zhuǎn)換為中層技術后就變?yōu)椤白非?截球”。然后再根據(jù)當前 球員與持球球員的相對位置和速度決定到底是“追擊”還是“截球”。中層技術被進一步發(fā) 送到底層技術模塊,將上面得到的中層技術方案轉(zhuǎn)變成RoboCup服務器可識別的基本動作 命令。如中層技術采用追擊的話,將會被轉(zhuǎn)變成RoboCup的移動命令和踢球命令。從此可 以看出,低層技術對應于簡單的單個動作,用服務器端已知的基本動作命令的形式直接表 示。而中層技術基于低層技術,并不需要以RoboCup協(xié)議中的命令格式來表示,而是通過低 層技術來組合得到。同理,高層技術基于中層技術組合得到。以上層次中每個技術的具體 執(zhí)行的方式要取決于提供給它的各種參數(shù)。例如“追擊”命令要求指定追擊的目標球員是誰;移動命令要制定目標的坐標位置。每個周期,都要經(jīng)過以上的步驟,根據(jù)當前最新的世 界模型得到要執(zhí)行的控制命令,并發(fā)送給RoboCup服務器。動作命令發(fā)送模塊主要是發(fā)送與連接相關的命令和球員自身的控制命令。其中與 連接相關的命令只是在球員程序進行連接、重連接或斷開連接時發(fā)送。重要的是球員的控 制命令包括身體控制命令、通訊命令、數(shù)據(jù)請求命令三類。在此,將球員身體控制命令簡單 抽取為轉(zhuǎn)身、撲球、加速、踢球、移動五種主命令,按照某種格式不斷發(fā)送給服務器。但是在 服務器端的每個仿真周期中,每個球員只能執(zhí)行以上五個命令中的一個命令。如果同一周 期內(nèi)一個球員有多條以上的命令到達服務器端,服務器端將隨機選擇其中一條來執(zhí)行。由于服務器端和客戶端使用不同的時鐘時間,服務器端發(fā)送感知信息和球員執(zhí)行 動作兩者是異步的,即視覺信息的發(fā)送周期與仿真時鐘周期是不同的,每個時鐘周期內(nèi)客 戶端都被迫要在獲取使用最新環(huán)境信息和不浪費執(zhí)行機會兩者中達到最佳平衡。這就要求 客戶端必須采取某種機制,根據(jù)有限的信息同服務器保持同步,以保證在正確的周期發(fā)送 信息到服務器端。在此我們對接收信息、決策、動作命令三個獨立線程采用互斥鎖的方式實 現(xiàn)同步。運行時三者相互獨立,對于共享數(shù)據(jù),則利用互斥鎖進實現(xiàn)同步。本發(fā)明在開發(fā)過程中遷移到Android嵌入式操作系統(tǒng)上,以實現(xiàn)嵌入式環(huán)境下的 智能體的設計,同時實現(xiàn)對系統(tǒng)計算資源和存儲資源的合理占用。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以 是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模 塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如 果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機 可讀取存儲介質(zhì)中。上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應 視為本發(fā)明的保護范圍。
1權利要求
一種嵌入式環(huán)境下的RoboCup平臺球員智能控制方法,其特征在于,包括如下步驟1)從服務器端接收各種信息;2)根據(jù)接收到的信息類型進行相應處理后整合給客戶端的世界模型模塊;3)根據(jù)所述世界模型模塊獲取的當前球員的局部感知情況,由當前球員的高層決策模塊負責球員之間的分工協(xié)作;4)根據(jù)所述高層決策模塊的規(guī)劃來選擇每個球員的動作;5)發(fā)送動作命令給服務器端。
2.如權利要求1所述的RoboCup平臺球員智能控制方法,其特征在于,所述步驟1)中 的各種信息包括,命令響應信息、視覺信息、身體感知信息和聽覺信息。
3.如權利要求1或2所述的RoboCup平臺球員智能控制方法,其特征在于,所述步驟 2)的具體處理過程為對于命令響應信息,所述接收信息處理模塊立即直接對其進行解析處理,將命令執(zhí)行 的結(jié)果根據(jù)需要更新到所述世界模型模塊中;對于視覺信息和身體感知信息,所述接收信息處理模塊不進行解析和更新,而是將其 保存到共享數(shù)據(jù)區(qū)中;對于聽覺信息,所述接收信息處理模塊根據(jù)不同的發(fā)送者來選擇不同的處理方式,當 發(fā)送者是自己,則不進行任何處理,當發(fā)送者是裁判員,則直接通知所述世界模型模塊更新 當前的比賽模式,當發(fā)送者是在線教練或其他球員且其消息內(nèi)容中包含發(fā)送者所通報的物 體運動信息,即等同于視覺信息,則保存并發(fā)送給所述世界模型模塊統(tǒng)一進行解析與更新。
4.如權利要求1所述的RoboCup平臺球員智能控制方法,其特征在于,所述步驟(3)中 的局部感知情況包括當前球員在規(guī)定范圍內(nèi)可以看到和聽到的球場情況,其中包括周圍雙 方球員的位置、速度和加速度、喊話聲,以及球在可視范圍內(nèi)的位置和速度和當前球員感受 到自身的體力、速度和加速度。
5.如權利要求1所述的RoboCup平臺球員智能控制方法,其特征在于,所述世界模型模 塊針對當前球場狀態(tài)進行預測包括對球進行的預測以及對球員進行的預測。
6.如權利要求5所述的RoboCup平臺球員智能控制方法,其特征在于,所述對球進行的 預測包括情況1 本周期內(nèi)沒有視覺信息,或者視覺信息中并不含任何球的信息,而且上個周期 沒有執(zhí)行踢球命令,則假設沒有任何球員碰到球,然后不對球的運動信息進行計算并將其 更新到所述世界模型模塊中;情況2 本周期內(nèi)有視覺信息,但是視覺信息中只有球的位置信息,則還需要得到其速 度信息;這種情況說明,球位于球員鄰域內(nèi),但是不在球員視野范圍內(nèi);如果連續(xù)兩個周期 內(nèi)得到球的位置,則球在上一周期中的速度就可由上周期兩個位置之差得到,然后計算當 前周期的球速;情況3 本周期內(nèi)有身體感知信息,球員發(fā)送的踢球命令得到了執(zhí)行,則計算出有效踢 球力量,進而計算出加速度,然后根據(jù)當前球的位置、速度計算出下一周期的位置與速度;如果要對未來n個周期中球的運動狀態(tài)進行預測,其方法為第1周期按上述方法預 測,而對于從第2個周期到第n個周期的運動情況,都按照上面的情況1進行處理。
7.如權利要求1所述的RoboCup平臺球員智能控制方法,其特征在于,所述高層決策模塊是通過球隊陣型、跑位和動作選擇算法來實現(xiàn)。
8.如權利要求1所述的RoboCup平臺球員智能控制方法,其特征在于,所述動作命令包 括身體控制命令、通訊命令、數(shù)據(jù)請求命令。
9.一種嵌入式環(huán)境下的RoboCup平臺球員智能控制系統(tǒng),包括服務器端用于執(zhí)行客 戶端發(fā)來的命令以及給參與比賽的客戶端發(fā)送信息,以及至少兩個客戶端,每個客戶端對 應于一個球隊,所述客戶端包括接收信息處理模塊,用于接收所述服務器端發(fā)送的消息,并且按照預定協(xié)議對所接收 的信息進行解析和分類,并將特定類型的信息發(fā)送給世界模型;世界模型模塊,用于接收所述接收信息處理模塊發(fā)送的信息,并進行更新、合并以及存儲;高層決策模塊,用于根據(jù)世界模型中存儲的信息,進行球員之間的分工協(xié)作的高層決 策,并將所述決策發(fā)送給球員技術模塊;球員技術模塊,用于根據(jù)世界模型中存儲的信息以及高層決策模塊所作出的決策對球 員的基本動作進行選擇;動作命令發(fā)送模塊,根據(jù)預定的動作指令協(xié)議,向服務器端發(fā)送動作指令。
10.如權利要求9所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述接收信息 處理模塊將接收到的信息進行解析和分類對于命令響應信息,所述接收信息處理模塊立即直接對其進行解析處理,將命令執(zhí)行 的結(jié)果根據(jù)需要更新到所述世界模型模塊中;對于視覺信息和身體感知信息,所述接收信息處理模塊不進行解析和更新,而是將其 保存到共享數(shù)據(jù)區(qū)中;對于聽覺信息,所述接收信息處理模塊根據(jù)不同的發(fā)送者來選擇不同的處理方式,當 發(fā)送者是自己,則不進行任何處理,當發(fā)送者是裁判員,則直接通知所述世界模型模塊更新 當前的比賽模式,當發(fā)送者是在線教練或其他球員且其消息內(nèi)容中包含所通報的物體運動 信息,即等同于視覺信息,則保存并發(fā)送給所述世界模型模塊統(tǒng)一進行解析與更新。
11.如權利要求9所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述動作命令 發(fā)送模塊發(fā)送與連接相關的命令和球員自身的控制命令,其中所述與連接相關的命令包括 初始化命令、球員參數(shù)命令、重新連接命令、結(jié)束連接命令,所述球員自身的控制命令包括 身體控制命令、通訊命令、數(shù)據(jù)請求命令。
12.如權利要求11所述的RoboCup平臺球員智能體系統(tǒng),其特征在于,所述身體控制命 令包括轉(zhuǎn)身、撲球、加速、踢球、移動。
13.如權利要求9或12所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述世界 模型模塊針對當前球場狀態(tài)進行預測包括對球進行的預測以及對球員進行的預測。
14.如權利要求13所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述對球進行 的預測包括情況1 本周期內(nèi)沒有視覺信息,或者視覺信息中并不含任何球的信息,而且上個周期 沒有執(zhí)行踢球命令,則假設沒有任何球員碰到球,然后不對球的運動信息進行計算并將其 更新到所述世界模型模塊中;情況2 本周期內(nèi)有視覺信息,但是視覺信息中只有球的位置信息,則還需要得到其速度信息;這種情況說明,球位于球員鄰域內(nèi),但是不在球員視野范圍內(nèi);如果連續(xù)兩個周期 內(nèi)得到球的位置,則球在上一周期中的速度就可由上周期兩個位置之差得到,然后計算當 前周期的球速;情況3 本周期內(nèi)有身體感知信息,球員發(fā)送的踢球命令得到了執(zhí)行,則計算出有效踢 球力量,進而計算出加速度,然后根據(jù)當前球的位置、速度計算出下一周期的位置與速度;如果要對未來n個周期中球的運動狀態(tài)進行預測,其方法為第1周期按上述方法預 測,而對于從第2個周期到第n個周期的運動情況,都按照上面的情況1進行處理。
15.如權利要求9所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述高層決策 模塊是通過球隊陣型、跑位和動作選擇算法來實現(xiàn)。
16.如權利要求15所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述球隊陣 型算法是將不同陣型的信息存儲在配置文件中,每個球員啟動時都讀取同樣的陣型配置文 件,從而可以獲知整個球隊所采用的陣型及其它隊友的策略位置信息;將球員在比賽中根 據(jù)戰(zhàn)術需要而應當前往的位置定義為策略位置,每個球員通過計算其在陣型中的基本位置 和球的當前周期的所在位置的加權值來確定其策略位置。
17.如權利要求15所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述動作選擇 算法是球員根據(jù)預先給定的“條件_行動”規(guī)則,匹配當前場景條件適合的規(guī)則,選擇相應 的行動。
18.如權利要求17所述的RoboCup平臺球員智能控制系統(tǒng),其特征在于,所述“條 件-行動”規(guī)則分為非守門員球員的決策算法與守門員球員的決策算法。
全文摘要
本發(fā)明提供了一種嵌入式環(huán)境下的RoboCup平臺球員智能控制方法,包括如下步驟1)從服務器端接收各種信息;2)根據(jù)接收到的信息類型進行相應處理后發(fā)送給世界模型模塊;3)根據(jù)所述世界模型模塊獲取的當前球員的局部感知情況,由當前球員的高層決策模塊負責球員之間的分工協(xié)作;4)根據(jù)高層決策的規(guī)劃來選擇每個球員的動作;5)發(fā)送動作命令給服務器端。嵌入式環(huán)境下的RoboCup平臺球員智能控制系統(tǒng)包括,接收信息處理模塊、世界模型、高層決策模塊、球員技術模塊、動作命令發(fā)送模塊。本發(fā)明致力于在開發(fā)過程中遷移到Android嵌入式操作系統(tǒng)上,實現(xiàn)嵌入式環(huán)境下的RoboCup平臺球員智能控制方法,同時實現(xiàn)對系統(tǒng)計算資源和存儲資源的合理占用。
文檔編號H04L29/06GK101834842SQ20101012542
公開日2010年9月15日 申請日期2010年3月16日 優(yōu)先權日2010年3月16日
發(fā)明者李鳳翔, 覃征, 邢劍寬, 陳晨 申請人:清華大學