張樂(lè)天 張博聞
摘? ?要:搬運(yùn)機(jī)器人以中國(guó)工程機(jī)器人大賽暨國(guó)際公開賽光電搬運(yùn)車型賽的設(shè)計(jì)要求為依據(jù)設(shè)計(jì),模擬實(shí)際工業(yè)生產(chǎn)中搬運(yùn)機(jī)器人(AGV)通過(guò)識(shí)別標(biāo)志物、顏色、形狀等特征,按照指定路線搬運(yùn)物體到指定區(qū)域的過(guò)程。文章介紹了這款機(jī)器人各模塊的設(shè)計(jì)與工作原理,給出了程序設(shè)計(jì)思想,進(jìn)行了系統(tǒng)測(cè)試并得出最終結(jié)論。
關(guān)鍵詞:機(jī)器人;搬運(yùn);模塊化;單片機(jī)
世界科技水平飛速提高,工業(yè)自動(dòng)化進(jìn)程加快,工業(yè)生產(chǎn)對(duì)搬運(yùn)機(jī)器人(Automated Guided Vehicle,AGV)的需求也隨之增加,為適應(yīng)各種不同的工作環(huán)境,模塊化AGV將越來(lái)越受歡迎。AGV的模塊化將大幅降低行業(yè)開發(fā)成本,縮短新項(xiàng)目的研發(fā)周期。
1? ? 模塊化智能圖像識(shí)別分揀搬運(yùn)機(jī)器人方案設(shè)計(jì)
本設(shè)計(jì)方案是基于STM32H7的模塊化智能圖像識(shí)別分揀搬運(yùn)機(jī)器人,通過(guò)攝像頭模塊識(shí)別路線、物體,從單片機(jī)輸出控制信號(hào)給電機(jī)、舵機(jī)的驅(qū)動(dòng)模塊,以控制機(jī)器人的行為。電機(jī)、舵機(jī)等動(dòng)力模塊和攝像頭模塊根據(jù)實(shí)際需求選擇規(guī)格型號(hào)。因本款機(jī)器人以中國(guó)工程機(jī)器人大賽暨國(guó)際公開賽光電搬運(yùn)車型賽的設(shè)計(jì)要求為依據(jù)設(shè)計(jì),故各零件均以滿足比賽規(guī)則要求為標(biāo)準(zhǔn)進(jìn)行選擇。
2? ? 機(jī)械結(jié)構(gòu)設(shè)計(jì)
(1)底盤模塊設(shè)計(jì)。根據(jù)比賽規(guī)則中尺寸和功能的要求,出于對(duì)成本、加工工藝以及材料強(qiáng)度等方面的考慮,選擇用數(shù)控切割亞克力板作為底盤,實(shí)際工業(yè)生產(chǎn)的模塊化智能圖像識(shí)別分揀搬運(yùn)機(jī)器人還要根據(jù)工作環(huán)境、后期維護(hù)等方面考慮材料的選擇。底盤模塊設(shè)計(jì)應(yīng)兼顧通用性與特征性,即通過(guò)改變幾種通用設(shè)計(jì)的組合數(shù)量與方式針對(duì)性地滿足特征需求。
(2)抓取模塊設(shè)計(jì)。根據(jù)比賽規(guī)則中物料的尺寸和形狀,選擇使用數(shù)控切割的亞克力板作為抓取模塊的零件,通過(guò)對(duì)兩個(gè)不同的零件進(jìn)行巧妙的組合,制作出了貼合比賽用的模塊機(jī)械爪,控制簡(jiǎn)單,易于拆卸,方便作為模塊加裝到各種不同車體上。該抓取模塊將兩種零件通過(guò)螺柱和各種墊圈連接,可以輕松做出各種尺寸的抓取機(jī)構(gòu),如圖1所示。
(3)可調(diào)攝像頭支架模塊設(shè)計(jì)。攝像頭作為傳感器,其工作狀況直接影響機(jī)器人的運(yùn)作。為使攝像頭保持最佳工作姿態(tài),攝像頭支架既要保證穩(wěn)定不晃動(dòng),又要靈活便于調(diào)整角度高度。為此,本團(tuán)隊(duì)設(shè)計(jì)了模塊化攝像頭支架,具有堅(jiān)固、穩(wěn)定、可調(diào)節(jié)特征。
(4)整車布局。根據(jù)場(chǎng)地規(guī)則要求,攝像頭與抓取機(jī)構(gòu)安排在整個(gè)車體前部,電池與供電的穩(wěn)壓板安放于車架偏前部,保證重心稍往前傾,保證輪胎抓地力。單片機(jī)安放于頂部,方便調(diào)試與檢查接線,后部安裝萬(wàn)向輪,保證車身水平。
3? ? 電控設(shè)計(jì)
(1)控制器模塊。針對(duì)該比賽,選擇了openmv作為控制器模塊。使用STM32H743VI ARM Cortex M7處理器,480 MHz,1 MB RAM,2 MB flash。一個(gè)串行外設(shè)接口(Serial Peripheral Interface,SPI)總線高達(dá)54 Mbs速度,方便把圖像流數(shù)據(jù)傳給液晶顯示器( Liquid Crystal Display,LCD)擴(kuò)展板、WiFi擴(kuò)展板或者其他控制器。一個(gè)I2C總線、控制器局域網(wǎng)絡(luò)(Controller Area Network,CAN)總線和一個(gè)異步串口總線(TX/RX),用來(lái)鏈接其他控制器或者傳感器。一個(gè)12-bit ADC和一個(gè)12-bit DAC。3個(gè)I/O引腳用于舵機(jī)控制,所有的IO口都可以用于中斷和脈沖寬度調(diào)制(Pulse Width Modulation,PWM)(板子上有10個(gè)I/O引腳)。一個(gè)RGB LED(三色),兩個(gè)高亮的850 nm IR LED(紅外),可拆卸的攝像頭模塊系統(tǒng)。
(2)電源模塊。為了給多個(gè)舵機(jī)同時(shí)穩(wěn)定供電,選擇用LM2596S穩(wěn)壓板搭配3S鋰電池給舵機(jī)供電,用充電寶給單片機(jī)供電的方案。
(3)舵機(jī)模塊。為了保證機(jī)器人動(dòng)作的精準(zhǔn)度,對(duì)步進(jìn)電機(jī)、伺服電機(jī)、圓周舵機(jī)進(jìn)行了測(cè)試,最終根據(jù)測(cè)試結(jié)果確定了使用較便宜且應(yīng)用廣泛的MG996R舵機(jī)。MG996R舵機(jī)在6.0 V時(shí)的轉(zhuǎn)速為0.13 s/60°。
(4)攝像頭模塊。攝像頭的工作狀況直接影響機(jī)器人的運(yùn)作。它主要負(fù)責(zé)尋跡、標(biāo)志和物塊的識(shí)別,要識(shí)別顏色就必須具有識(shí)別彩色的電荷耦合器件圖像傳感器(Charge Coupled Device,CCD)或互補(bǔ)金屬氧化物半導(dǎo)體(Complementary Metal Oxide Semiconductor,CMOS),且因?yàn)镾TM32H7系列單片機(jī)的處理速度有限,攝像頭最好擁有自己的數(shù)據(jù)儲(chǔ)存區(qū)。為控制成本,選用OV7725攝像頭。
4? ? 軟件設(shè)計(jì)及系統(tǒng)開發(fā)和調(diào)試
(1)尋跡,采用邊緣檢測(cè)的方法進(jìn)行循跡。先把攝像頭獲取的圖像進(jìn)行二值化并分割圖像,對(duì)二值化圖像進(jìn)行腐蝕膨脹。然后利用PID控制原理,對(duì)循跡行為進(jìn)行修改。
PID算法可以用下式表示:
(2)顏色識(shí)別。由于傳統(tǒng)RGB顏色識(shí)別并不準(zhǔn)確,可采用HSL的方式進(jìn)行顏色識(shí)別,進(jìn)行RGB轉(zhuǎn)HSL轉(zhuǎn)換之前,需要在屏幕中尋找腐蝕中心,得到腐蝕中心后,需要進(jìn)行一個(gè)腐蝕膨脹算法來(lái)判斷整個(gè)色塊的顏色,代碼如下:
static int Corrode(unsigned int oldx, unsigned int oldy, const TARGET_CONDI* Condition, RESULT* Resu)
{
unsigned int Xmin, Xmax, Ymin, Ymax, i, FailCount = 0;
COLOR_RGB Rgb;
COLOR_HSL Hsl;
for (i = oldx; i > IMG_X; i--)
{
ReadColor(i, oldy, &Rgb);
RGBtoHSL(&Rgb, &Hsl);
if (!ColorMatch(&Hsl, Condition))
FailCount++;
if (FailCount > (((Condition->WIDTH_MIN + Condition->WIDTH_MAX) >> 2) >> ALLOW_FAIL_PER))
break;
}
Xmin = i;
FailCount = 0;
for (i = oldx; i < IMG_X + IMG_W; i++)
{
ReadColor(i, oldy, &Rgb);
RGBtoHSL(&Rgb, &Hsl);
if (!ColorMatch(&Hsl, Condition))
FailCount++;
if (FailCount > (((Condition->WIDTH_MIN + Condition->WIDTH_MAX) >> 2) >> ALLOW_FAIL_PER))
break;
}
Xmax = i;
FailCount = 0;
for (i = oldy; i > IMG_Y; i--)
{
ReadColor(oldx, i, &Rgb);
RGBtoHSL(&Rgb, &Hsl);
if (!ColorMatch(&Hsl, Condition))
FailCount++;
if (FailCount > (((Condition->HIGHT_MIN + Condition->HIGHT_MAX) >> 2) >> ALLOW_FAIL_PER))
break;
}
Ymin = i;
FailCount = 0;
for (i = oldy; i < IMG_Y + IMG_H; i++)
{
ReadColor(oldx, i, &Rgb);
RGBtoHSL(&Rgb, &Hsl);
if (!ColorMatch(&Hsl, Condition))
FailCount++;
if (FailCount > (((Condition->HIGHT_MIN + Condition->HIGHT_MAX) >> 2) >> ALLOW_FAIL_PER))
break;
}
Ymax = i;
FailCount = 0;
Resu->x = (Xmin + Xmax) / 2;
Resu->y = (Ymin + Ymax) / 2;
Resu->w = Xmax - Xmin;
Resu->h = Ymax - Ymin;
if (((Xmax - Xmin) > (Condition->WIDTH_MIN)) && ((Ymax - Ymin) > (Condition->HIGHT_MIN)) && \
((Xmax - Xmin) < (Condition->WIDTH_MAX)) && ((Ymax - Ymin) < (Condition->HIGHT_MAX)))
return 1;
else
return 0;
}
然后由給定的顏色數(shù)值進(jìn)行依次比對(duì)。
5? ? 結(jié)語(yǔ)
該搬運(yùn)機(jī)器人綜合了成本、制作難度、泛用性以及維護(hù)難度等多方面而設(shè)計(jì),設(shè)計(jì)目的不僅是贏得比賽,更是對(duì)模塊化智能搬運(yùn)機(jī)器人的嘗試和探索,其可調(diào)節(jié)、模塊化、低成本、通用性高等特點(diǎn)展現(xiàn)了獨(dú)特的價(jià)值,并對(duì)實(shí)際工業(yè)生產(chǎn)的搬運(yùn)機(jī)器人技術(shù)有一定的啟發(fā)。