這是大學(xué)的時(shí)候參加的一個(gè)比賽。Robot杯全國(guó)機(jī)器人公開(kāi)賽蓄髓。做的是搬運(yùn)機(jī)器人糜颠。屬于光電組的。
大概有半個(gè)月都在準(zhǔn)備這個(gè)比賽锚国。我和儀器與電子學(xué)院的培松同學(xué)。信息與通信工程學(xué)院的彥宗同學(xué)共同完成玄坦,從硬件設(shè)計(jì)血筑,到軟件編寫(xiě)。
天波易謝 寸暑難留煎楣。今日重新把當(dāng)初的資料整理出來(lái):
比賽規(guī)則鏈接:http://download.csdn.net/detail/linkerist/9406066
硬件:
芯片用的是STM-32豺总。加上機(jī)器人的一個(gè)框架。
搬運(yùn)用的手臂是兩個(gè)舵機(jī)加上兩個(gè)鐵片择懂。這雖然有點(diǎn)簡(jiǎn)陋喻喳。但是確實(shí)可以將物塊有效的搬運(yùn)。
動(dòng)力是兩個(gè)步進(jìn)電機(jī)對(duì)應(yīng)后面兩個(gè)輪胎困曙。前面只有一個(gè)輪胎表伦。沒(méi)有設(shè)計(jì)讓前面輪胎轉(zhuǎn)向。而是通過(guò)后面兩個(gè)電機(jī)的速度差產(chǎn)生角度慷丽。
機(jī)器人的感官用的是前面一排四個(gè)激光傳感器蹦哼。場(chǎng)地上的線是黑色的。其余地方是白色的要糊。這樣可以激光循跡纲熏。
還有機(jī)器人最前面的一個(gè)顏色傳感器。要搬運(yùn)的物塊顏色不同锄俄。五個(gè)物塊是比賽現(xiàn)場(chǎng)抽簽決定的局劲。通過(guò)顏色傳感器返回值可以判斷她們。
硬件的大概樣子就是這樣了奶赠。說(shuō)機(jī)器人有點(diǎn)高大上了鱼填。
因?yàn)樗鋵?shí)就是一個(gè)小車〕的可以根據(jù)地上的線激光循跡剔氏。可以檢測(cè)物塊的顏色竹祷。把物塊搬運(yùn)到目的地。滿足比賽的所有要求羊苟。
我們甚至弄了一個(gè)用戶界面塑陵。是搭載在機(jī)器上的一塊12864,
主要顯示當(dāng)前識(shí)別的顏色蜡励。還有一些提示信息令花。后來(lái)因?yàn)橐4嫘畔⑦€引入了一個(gè)E2PROM阻桅。用的是IIC協(xié)議。
原理圖就不貼了兼都。因?yàn)楝F(xiàn)在靜靜躺在我硬盤(pán)里面的只有當(dāng)時(shí)寫(xiě)的軟件部分了嫂沉。。
軟件:
代碼在附件中也有扮碧。雖然現(xiàn)在看以前寫(xiě)過(guò)的代碼趟章。感覺(jué)目不忍視。耳不忍聞慎王。但還是原樣貼了出來(lái)蚓土。
工程代碼鏈接:http://download.csdn.net/detail/linkerist/9406061
在學(xué)校創(chuàng)新創(chuàng)業(yè)基地的數(shù)控機(jī)床上。培松實(shí)現(xiàn)了機(jī)器人的框架赖淤。和搬運(yùn)用的手臂蜀漆。和步進(jìn)電機(jī)的驅(qū)動(dòng)
彥宗同學(xué)主要負(fù)責(zé)激光傳感器的驅(qū)動(dòng)編寫(xiě)和激光循跡部分的程序調(diào)試。
我主要負(fù)責(zé)顏色傳感器咱旱、舵機(jī)和E2PROM的驅(qū)動(dòng)編寫(xiě)還有主程序搬運(yùn)算法的實(shí)現(xiàn)确丢。
機(jī)器人的拼裝和程序的調(diào)試由三個(gè)人共同完成。在五院的一個(gè)實(shí)驗(yàn)室里吐限。
各種驅(qū)動(dòng)在工程代碼的HARDWARE下鲜侥。各個(gè)文件夾的名字就說(shuō)明了他的作用。(比如IIC協(xié)議的實(shí)現(xiàn)在IIC目錄下毯盈,顏色傳感器的驅(qū)動(dòng)實(shí)現(xiàn)在COLOR目錄下)代碼中都有詳細(xì)的注釋剃毒。
在start目錄下。放的是Cortex-m3的啟動(dòng)引導(dǎo)代碼搂赋。當(dāng)然我們當(dāng)時(shí)的知識(shí)水平不足以寫(xiě)出這樣的代碼赘阀。這個(gè)用的是Cortex-m3自帶的。
在track_jg目錄下脑奠。放的是主驅(qū)動(dòng)函數(shù)main_test基公。可以看到其中只有兩行代碼宋欺。step0(); 還有 step1()轰豆。
當(dāng)時(shí)我把整個(gè)搬運(yùn)流程分成了兩個(gè)部分。還親切的稱為南半球和北半球齿诞。(因?yàn)楸荣惖膱?chǎng)地圖形怎么看都是一個(gè)地球酸休!哈哈)
關(guān)于具體代碼就不再展開(kāi)了。我寫(xiě)了很詳細(xì)的注釋祷杈。
到比賽現(xiàn)場(chǎng)之后斑司。我們才發(fā)現(xiàn)我們的硬件設(shè)計(jì)的真是不太對(duì)得起觀眾。
旁邊復(fù)旦大學(xué)的同學(xué)甚至將五個(gè)物塊堆疊在一起但汞。這節(jié)省很多時(shí)間宿刮。但是成功率比較低互站。
再旁邊一點(diǎn)的解放軍理工的同學(xué)都穿著軍裝。神情嚴(yán)肅僵缺。一絲不茍的調(diào)試這他們的機(jī)器胡桃。
賽場(chǎng)最南的一支隊(duì)伍讓我映像最深。因?yàn)樗麄兊臋C(jī)器人跑的實(shí)在是太快了磕潮。(導(dǎo)致他們調(diào)試都是把程序?qū)懰来湟取T谝欢〞r(shí)間內(nèi)系統(tǒng)自動(dòng)掛起。不然根本抓不住機(jī)器人揉抵。)
從外觀上看他們用的是灰度傳感器亡容。具體電機(jī)不知道用的是什么。穩(wěn)定性一般冤今,但是速度非彻刖ぃ快。
不得不說(shuō)戏罢。他們?cè)O(shè)計(jì)的硬件很系統(tǒng)屋谭。
后來(lái)交流知道。他們學(xué)校有多年的參賽經(jīng)驗(yàn)龟糕。很多東西得到了傳承桐磁。甚至有專門的實(shí)驗(yàn)室負(fù)責(zé)此類賽事〗菜辏基本不需要考慮預(yù)算我擂。
當(dāng)他們拿到比賽題目的時(shí)候。設(shè)計(jì)硬件時(shí)候很自然的自底而上缓艳。很多東西都有校摩。
回想我們是從最開(kāi)始的芯片開(kāi)始,發(fā)現(xiàn)缺少什么就在淘寶上買阶淘。(而且還要價(jià)格從低到高排一下~衙吩。~)。有點(diǎn)像OS中當(dāng)不得不分配子進(jìn)程內(nèi)存空間時(shí)溪窒,才拷貝數(shù)據(jù)那種意思在里面坤塞。
當(dāng)然這些都是沒(méi)有取得第一名的事后言論,總結(jié)下來(lái)這次比賽有幾點(diǎn)需要反思:
1. 這是一場(chǎng)機(jī)器人比賽澈蚌,可以在硬件上多加設(shè)計(jì)摹芙,要是認(rèn)真對(duì)待比賽,就無(wú)論如何應(yīng)該把這些因素考慮到宛瞄,把機(jī)器和這個(gè)片上系統(tǒng)的根基打牢瘫辩。而最終正如我們看到的那樣,這場(chǎng)激烈的特洛伊戰(zhàn)爭(zhēng)中的主角坛悉,如阿喀琉斯之踵伐厌,成為眾矢之的。
2. 預(yù)算裸影、準(zhǔn)備不足挣轨,硬件是瓶頸。當(dāng)程序燒錄到開(kāi)發(fā)板轩猩、基本跑通之后卷扮,我們就發(fā)現(xiàn)我們的硬件穩(wěn)定性不足、機(jī)器人整體效率不足均践,跑飛的場(chǎng)景很多晤锹。我們想到了從硬件上進(jìn)行優(yōu)化,但是賽程臨近彤委,不好大改硬件鞭铆,導(dǎo)致從那時(shí)到最終比賽,我們都在做軟件上的優(yōu)化焦影。
3.?比賽前夕车遂,電路燒毀,冷靜面對(duì)敗局斯辰,最終使用備用材料舶担,在場(chǎng)地就地重建系統(tǒng),力挽狂瀾彬呻。泰山崩于前而色不變衣陶、挽狂瀾于既倒可能算得上一種成就與收獲,但是我還是把這個(gè)事情列在不足里面闸氮,因?yàn)檫@歸因于硬件是瓶頸剪况,應(yīng)該從根本上避免問(wèn)題。
有一點(diǎn)值得學(xué)習(xí):
我們沒(méi)有一味地追求機(jī)器的速度湖苞,而是仔細(xì)分析了比賽規(guī)則拯欧。
比賽是相同時(shí)間比分?jǐn)?shù),而不是相同分?jǐn)?shù)比時(shí)間财骨,我看到旁邊的對(duì)手們大多都一味追求速度镐作,卻忽視了穩(wěn)定性,不少機(jī)器都沒(méi)拿到滿分隆箩。三分鐘對(duì)于機(jī)器來(lái)說(shuō)是足夠的该贾,只要確保在這個(gè)時(shí)間內(nèi)取得滿分,就肯定是一等獎(jiǎng)捌臊。
我們離第一只有一線之隔杨蛋。
==========================================
后來(lái)在洛陽(yáng)玩了兩天。正好下雨,好開(kāi)森逞力。
今天整理硬盤(pán)的時(shí)候發(fā)現(xiàn)這些曙寡。寫(xiě)下來(lái)。算作回憶寇荧。
***
Linkerist
2017年12月13日于北京酒仙橋