前期準(zhǔn)備
基本要求
改平臺(tái)由C++語(yǔ)言編寫, 所以要完成這個(gè)任務(wù)一定的C++基礎(chǔ)是必須的. 我也是因?yàn)榇瞬疟慌笥淹扑]過(guò)來(lái)的.系統(tǒng)安裝
根據(jù)平臺(tái)要求需要使用ubuntu系統(tǒng), 還好我以前搗鼓過(guò)這些東西, 這個(gè)對(duì)我來(lái)說(shuō)就相對(duì)簡(jiǎn)單了. 相關(guān)教程直接百度就有了, 注意一下分引導(dǎo)安裝位置就行了, 一般在主硬盤就行, ubuntu會(huì)提供進(jìn)windows系統(tǒng)的選項(xiàng).平臺(tái)安裝
整個(gè)安裝過(guò)程完全依照中科大提供的教程. 該平臺(tái)依賴boost庫(kù), 該庫(kù)安裝好在修改一下配置文件就可以了.調(diào)試
平臺(tái)中提供一份模板源碼, 通過(guò)cmake預(yù)編譯 在通過(guò)make編譯后可以運(yùn)行就說(shuō)明平臺(tái)安裝成功了. 起初有不同的教程說(shuō)需要python3的環(huán)境, 這個(gè)和大平臺(tái)基本沒太大關(guān)系, 它主要是為了運(yùn)行測(cè)試提供的python的腳本用.
任務(wù)分析
初來(lái)乍到
剛來(lái)第一天真的是一臉蒙蔽, 學(xué)長(zhǎng)給了我一份被稱為底層代碼的東西讓拿回去看. 實(shí)話我是一點(diǎn)都看不懂, 上來(lái)就看這東西, 感覺是有點(diǎn)唐突. 對(duì)于平臺(tái)基本的操作都不明白的我如何看得懂它這一句句是在干什么... 于是就帶這一頭霧水開始擼文檔. 經(jīng)過(guò)兩天時(shí)間算是對(duì)平臺(tái)有了初步的了解, 但還是不太明白. 這時(shí)指導(dǎo)老師放大招了, 把XX學(xué)校的高手請(qǐng)來(lái)了, 指導(dǎo)了我們大半天的時(shí)間, 終于算是對(duì)平臺(tái)運(yùn)行機(jī)制, 任務(wù)需求有了一定的了解.運(yùn)行機(jī)制
在一次完整的測(cè)試中, 平臺(tái)會(huì)為我們提供一個(gè)初始的場(chǎng)景, 根據(jù)這個(gè)初始場(chǎng)景, 平臺(tái)又會(huì)給我們分配一定量的任務(wù). 我們需要做的就是收集平臺(tái)提供的信息, 完成相應(yīng)的任務(wù).任務(wù)需求
信息收集
根據(jù)平臺(tái)運(yùn)行機(jī)制, 我們需要做的第一步那就是對(duì)信息的收集. 上來(lái)就談什么策略分析算法什么的那都很空, 而且真的能用到那些聽起來(lái)很高大上的東西嗎. 反正我陸陸續(xù)續(xù)寫了有一個(gè)半月了, 到現(xiàn)在已經(jīng)基本完成了也沒用到什么算法(畢竟我也不會(huì) 哈哈). 對(duì)于指令語(yǔ)言因?yàn)槊枋龅亩急容^清晰結(jié)構(gòu)也很單一收集起來(lái)還是比較方便的. 自然語(yǔ)言就相對(duì)麻煩點(diǎn)了, 也沒有那么的精確. 在我近一個(gè)星期的努力下也算是完成了. 在任務(wù)收集上我的想法就是最大化的還原真實(shí)場(chǎng)景, 盡量排除干擾 錯(cuò)誤信息.任務(wù)處理
平臺(tái)給我們的任務(wù)也就那么幾種, 映射到機(jī)器人的行為上就是獲取物體, 把物體放到規(guī)定位置. 因此我在處理上建了一個(gè)公用的方法getObject
用于獲取物體, 該方法在正確場(chǎng)景下可以百分百獲得物體. 對(duì)于無(wú)法獲取物體的情況, 我構(gòu)建了一個(gè)errortask
方法去處理. 為了平衡, 這里處理成功的概率我只讓它達(dá)到60%.線路規(guī)劃
怎么可能一點(diǎn)都不規(guī)劃呢. 不過(guò)這里我也沒有用什么算法 PS: 其實(shí)我很想用, 不會(huì)咋辦呢~~~ 心塞. 對(duì)此我只能簡(jiǎn)單的規(guī)劃了下, 效果也還行吧, 提高個(gè)一二十分還是有的. 在收集信息的時(shí)候?qū)γ總€(gè)任務(wù)設(shè)置優(yōu)先級(jí), 在所有任務(wù)收集完成后對(duì)任務(wù)進(jìn)行了一次重排序. 就這樣簡(jiǎn)單處理了下. 自己感覺很low... 后期也想到了更好的方法,介于時(shí)間就沒有去實(shí)現(xiàn)了.不斷完善
在基本完成后, 那就拿題庫(kù)跑吧. 就在跑分, 還被室友說(shuō)我這不就是寫了個(gè)魯大師跑分嗎~~~ 測(cè)試每一題, 尋找不合理的地方慢慢改, 這里才是最磨人的, 一題一題的看, 一行一行的排查. 昨天下午還找到一堆bug.
小結(jié)
實(shí)話這是我寫的最久代碼量最大的一次. 在這之前一直在學(xué)web相關(guān)知識(shí), 為了這個(gè)比賽也是不得不放慢了進(jìn)度. 不過(guò)收獲還是挺多的, 在C++上學(xué)到啥, boost庫(kù), 這個(gè)東西挺好用的. 最主要的是邏輯思維能力的提高, 這是個(gè)無(wú)形的財(cái)富. 當(dāng)然作為我校該比賽項(xiàng)目的開國(guó)元老還是比較有成就感的.
嘿嘿, 第一次用簡(jiǎn)書, 不知道寫點(diǎn)啥, 就隨便記了記最近做的事. 相關(guān)源碼在比賽后整理整理在上傳吧, 希望取得個(gè)好成績(jī)~~