《《AIRobot培訓教程》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《AIRobot培訓教程》PPT課件.ppt(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、AIRobot機器人培訓教程,,13003521055,AIRobot平臺簡介,AI-CODE 是一套虛擬機器人平臺。其中包括機器人運行平臺Airobot,代碼編輯器CodeCanvas等組件。您可以在AI-CODE中創(chuàng)建自己的機器人,用編程的方式控制它。把它放到戰(zhàn)場上同其他開發(fā)者創(chuàng)建的機器人對手拼死戰(zhàn)斗到底。在戰(zhàn)斗中感受到學習所帶到的快樂。 AI-CODE 是一種教育軟件,以寓教于樂的方式。打破了傳統(tǒng)教育的模式,讓大家在非壓迫的競爭中極大的提高自己的學習水平。 AI-CODE 參與者可以用不同的語言編寫自己的機器人,目前支持的語言包括java,c,c++。使用不同語言的程序員在這里可以同場競
2、技。,,,,,AIRobot機器人平臺是一個虛擬平臺,參賽者只要把自己的機器人封裝好放在平臺的指定位置,即可參加戰(zhàn)斗,比賽結(jié)束后存活者為勝。,,,平臺使用,13003521055,AIRobot平臺安裝及配置,1、我們使用的是AIRobot平臺3.0版本,首先到網(wǎng)站上下載AIRobot安裝程序,運行安裝程序,一般安裝在D盤。 2、使用自己熟悉的程序編寫機器人,并生成可執(zhí)行程序,然后把可執(zhí)行程序復制到 D:AIROBOTrobots,即程序的安裝目錄。 3、新建比賽,熟悉平臺的運行方式。,13003521055,新建比賽的方法,第一步:運行AIROBOT。通過AIROBOT目錄中的run.bat
3、來運行AIROBOT?;螂p擊AIrobot的圖標。 第二步:點擊“Match”菜單下的“New”,如下圖:,13003521055,新建比賽的方法,第三步,彈出新建比賽對話框,在機器人選擇頁上,先選擇機器人所在的包Samples.java,然后選擇機器人Circle,這是一個作圓周運動的機器人,然后按add按鈕,讓Circle參加這場比賽。如圖:,13003521055,新建比賽的方法,第四步,按照同樣的方法添加例子機器人MoveLine,然后按finish按鈕,這樣就開始了一場新的比賽,參加比賽的選手就是我們剛剛選擇的機器人Circle和MoveLine。,13003521055,編寫自己的
4、機器人,Tool-Create Robot Project創(chuàng)建一個新的機器人,選擇該菜單項后將出現(xiàn)創(chuàng)建機器人對話框。在第一個頁面中可以指定項目類型(編程語言),項目名字等信息。,13003521055,編寫自己的機器人,Project Name: 項目名。每個機器人項目都擁有若干機器人文件(包括源程序文件,配置文件等),該名字也用作這些文件的文件名的前綴。必須用英文,并且符合所用語言的命名規(guī)范。 Project Type: 機器人類型。目前支持的類型有java, c++,c。,13003521055,編寫自己的機器人,Project Package: 項目所在的包。實際上對應(yīng)存放機器人文件的目
5、錄。如果是多級目錄,可以用”.”將目錄名分開,如abc.def,則機器人的文件將存放在開發(fā)目錄下的abcedf子目錄中。必須用英文,并且符合目錄命名的規(guī)范,如果是java機器人,還必須符合java語言中包命名的規(guī)范。,13003521055,編寫自己的機器人,Developing dire: 機器人的開發(fā)目錄。存放機器人項目的目錄,默認的開發(fā)目錄是airobot安裝目錄下的robots子目錄。Airobot啟動的時候會到這些開發(fā)目錄中裝載機器人,開發(fā)目錄可以通過Tool-Developing Dir進行管理。,13003521055,編寫自己的機器人,例如創(chuàng)建一個java機器人項目,項目名為M
6、yRobot,包名為myPackage,選擇默認開發(fā)目錄。與項目名和包名相對應(yīng),機器人源文件為MyRobot.java,該文件存放在開發(fā)目錄下的myPackage子目錄中。這個機器人項目的全名為myPackage.MyRobot,一個機器人項目的全名由包名和項目名定義(中間用”.”分隔),在同一個開發(fā)目錄中不可以創(chuàng)建兩個同名的項目。,13003521055,編寫自己的機器人,項目創(chuàng)建完后將打開代碼編輯器(CodeCanvas),在這里可以直接編輯機器人程序和編譯機器人。關(guān)于代碼編輯器的使用請參考相關(guān)的文檔。,13003521055,編寫自己的機器人,點擊next,在接下來的頁面中可以指定機器人
7、的描述信息。,13003521055,編寫自己的機器人,name: 機器人的名字,該名字和前面輸入的項目名沒有關(guān)系,可以任意制定,可以用中文。(默認與項目名相同) Package: 機器人的包名,該名字和前面輸入的項目的包名沒有關(guān)系,可以任意制定,可以用中文。(默認與項目所在的包相同) Version: 機器人的版本,可以不輸入。 Description: 機器人的描述信息,可以不輸入。,13003521055,編寫自己的機器人,這里輸入的信息是用于對外顯示的,例如在新建一場比賽的時候?qū)C器人進行分類和選擇,以及在比賽過程中對機器人進行區(qū)分。例如輸入機器人的名字為FirstRobot,包為my
8、Robots,機器人的全名為myRobots. FirstRobot,一個機器人的全名由包名和機器人名定義(中間用”.”分隔)。,13003521055,編寫自己的機器人,點擊next,在接下來的頁面中可以指定機器人的外觀。機器人的外觀可以在以后通過機器人管理對話框進行修改。,13003521055,控制策略及算法設(shè)計-運動策略,1、運動是機器人在戰(zhàn)斗過程中最重要的事件之一,關(guān)系到射擊敵方機器人,躲避對方機器人等。 2、移動時可以以各種各樣的形式進行,如直線運動,弧線運動,曲線運動,隨機運動等。 3、優(yōu)秀的運動策略應(yīng)該是既可以方便的打擊對手,又可以快速的躲避敵人且不容易被對手分析出自己的運動軌
9、跡。,13003521055,控制策略及算法設(shè)計-迭代算法,1、用迭代的方法控制機器人的移動 ,在onTick函數(shù)中,迭代之前將bearing初始化為0,迭代在一個循環(huán)中執(zhí)行,首先計算得到一個目標點,該點的物理意義如圖所示。,13003521055,控制策略及算法設(shè)計-迭代算法,然后用isValid函數(shù)判斷這個點是否是一個合理的目標點,isValid主要是檢查這個點與四面墻的距離,保證目標點落在一定的范圍內(nèi),機器人不至于撞倒墻。如果這不是一個合理的目標點,讓bearing加上一個弧度值GAP,然后進入下一次迭代,對bearing的遞增將導致下一次迭代的時候得到一個不同的目標點。如果找到一個合理
10、的點,那么迭代結(jié)束,朝這個目標點移動(moveTo)。,13003521055,控制策略及算法設(shè)計-迭代算法,迭代算法還可以打擊走直線的機器人 ,要打擊走直線的機器人,就不能朝機器人的原始位置開火,因為當你的子彈到達機器人的原始位置的時候,他早已經(jīng)離開那里了。所以必須計算機器人在將來某個時刻所出現(xiàn)的點,向這個點開炮才有可能擊中他。,13003521055,控制策略及算法設(shè)計-迭代算法,假設(shè)機器人在經(jīng)過t個單位時間后到達位置p, 如果子彈能在t個單位時間后到達p,那么向p開炮就可以擊中這個機器人。根據(jù)機器人編程接口所提供的函數(shù)可以很容易知道機器人的坐標,方向,移動的速度等信息,利用這些信息我們可
11、以得到一個關(guān)于t的方程,解出t以后就可以計算出p點,向這個點開炮就可以打中敵人。,13003521055,控制策略及算法設(shè)計-迭代算法,利用解方程確實可以達到預期的效果,幸好這只是一個簡單的方程,但在很多情況下,計算機器人將來出現(xiàn)的位置是很難用解方程求出來的。用迭代的方法可以達到同樣的效果,而且要簡單得多。例子機器人FireLine演示了這種方法。,13003521055,控制策略及算法設(shè)計-迭代算法,無論是用解方程還是迭代,目的都是找出一個子彈和對手相遇的點。利用迭代算法,并不是一下就找到這個點,而是一步步逼近這個點,隨著time的增加,離這個相遇點就越來越近,因為子彈的速度比機器人的運動速
12、度要快,所以子彈總是可以追上機器人并擊中他。這種方法并不是一下就找到問題的解,所以看上去這個迭代過程有點“苯”,而正是這個原因才使這種方法變得簡單有效。,13003521055,控制策略及算法設(shè)計-迭代算法,總結(jié) 通過這兩個例子,我們可以看到迭代算法是一種簡單有效的方法。一般情況下,迭代算法都有一個循環(huán)體,一個疊加模塊(bearing+=Gap, time++),還必須有一個結(jié)束迭代的條件。迭代算法并不是直接求解問題的解,而是逐步逼近問題的解,所以他的適應(yīng)性很強,在編寫機器人的時候很多地方都可以用到他。,13003521055,控制策略及算法設(shè)計-隨機運動,BaseWrap實現(xiàn)了一個繞對手做來
13、回運動的移動策略,經(jīng)過WrapKeepDis和WrapAvoidWall的擴展它還可以與對手保持一定的距離,而且不會撞墻。它在做來回運動的時候每隔一定的時間就變換移動的方向,這樣的移動規(guī)律是非常明顯的,為了避免這樣的情況發(fā)生,在控制移動的時候加入隨機性,對手就不能輕易的將你擊中了。,13003521055,控制策略及算法設(shè)計-隨機運動,在BaseWrap中,在一個方向上的運動時間是固定的,這是移動規(guī)律明顯的主要因素。WrapRandom從對setDirection函數(shù)進行了改進,在每次改變運動方向的時候,它隨機生成在這個方向上移動的時間,這樣一來機器人的運動就變得“亂”多了,連作者也不知道機器
14、人將會怎么移動,敵人也不可能輕易的分析出機器人的運動規(guī)律。,13003521055,控制策略及算法設(shè)計-圍繞運動,BaseWrap 圍繞運動 想要圍繞著對手,最簡單的辦法就是在這樣一個圓的軌跡上運動:圓心為對手當前的坐標,半徑為機器人到對手的距離。只要一直保持機器人的車身方向與機器人到對手連線方向的夾角為90度,就可以在這樣的一個圓周軌跡上運動。,13003521055,控制策略及算法設(shè)計-模擬匹配瞄準,模擬匹配瞄準的思想是假設(shè)敵人的運動總是存在一個規(guī)律,未來的運動總是歷史的重復。在歷史記錄中尋找與最近一段時間的運動(當前狀態(tài)段)最相似的一段歷史記錄,根據(jù)這一段記錄之后的運動規(guī)律就可以確定對手
15、將會以什么樣的方式運動。,13003521055,控制策略及算法設(shè)計-統(tǒng)計學瞄準,在一般的情況下,對手不會一動不動的在原地讓你打。發(fā)彈的時候如果朝對手當前的位置開火,當你的子彈到達對手原來的位置時,對手可能早已經(jīng)離開了,如圖。,13003521055,控制策略及算法設(shè)計-統(tǒng)計學瞄準,對手當前的位置為P,經(jīng)過一段時間后,對手移動到P,這時如果直接朝P點開炮是打不中對手的,如果選擇一個夾角向敵人開火(圖中的阿法角),就可以在P打中對手。從數(shù)學上說這個夾角是具有一定統(tǒng)計規(guī)律的,所以我們就可以選擇命中率最高的夾角來發(fā)彈。,13003521055,控制策略及算法設(shè)計-躲避子彈,如果我們能夠分析出對手子彈
16、的情況,就可以根據(jù)這些信息來指導機器人的運動,針對性的躲避對手的子彈。這種運動方式與隨機運動不同,這種運動方式主動的分析對手發(fā)彈的情況,分析得越準,這種運動方式的效果就越好。隨機運動是被動的,機器人只是迷惑對手,不讓對手掌握自己的運動規(guī)律。,13003521055,控制策略及算法設(shè)計-躲避子彈,當對手發(fā)彈的時候,機器人的Action處理函數(shù)onFire將得到調(diào)用。這時根據(jù)FireAction提供的信息我們可以知道對手開火的位置,子彈的能量等信息,不過我們并不知道這顆子彈是朝哪個方向發(fā)射的。子彈發(fā)射的方向?qū)⑹俏覀兎治龅闹攸c,只要把這個發(fā)射的方向分析出來,我們就可以完全掌握子彈的情況了。,13003521055,控制策略及算法設(shè)計-躲避子彈,在分析出對手發(fā)彈情況的基礎(chǔ)上,還必須有一個算法來指導機器人躲避對手的子彈。因為機器人的最大移動速度(8)并不比能量為3的子彈速度(11)小多少,如果控制得好的話,機器人可以多避開絕大部分的子彈。,13003521055,AIRobt機器人平臺,以上只是AIRobot機器人的基本使用方法及其常用的策略,具體的實現(xiàn)還要大家進行摸索。AIRobot平臺是展示大家智慧和能力的平臺,希望大家能在學習的過程中體會到學習的樂趣!,13003521055,AIRobt機器人平臺,謝謝大家!,