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