李奔 LI Ben;章曉敏 ZHANG Xiao-min;劉麗 LIU Li;馬勰 MA Xie
(寧波財(cái)經(jīng)學(xué)院數(shù)字技術(shù)與工程學(xué)院,寧波 315175)
人工智能不是人的智能,但能像人那樣思考、也可能超過人的智能?;谌斯ぶ悄艿臋C(jī)器人能代替許多人能做的事情節(jié)省了人力增加了勞動(dòng)效率,本文以購(gòu)物小車的智能化發(fā)展現(xiàn)狀作為基礎(chǔ)分析,進(jìn)一步結(jié)合了人工智能的發(fā)展,兩者結(jié)合對(duì)于智能機(jī)器人未來的發(fā)展趨勢(shì)進(jìn)行研究和分析[1-3]。
本文實(shí)現(xiàn)用于在各種情況下抗外來干擾來進(jìn)行自動(dòng)購(gòu)物的超市購(gòu)物機(jī)器人,該機(jī)器人主要使用電機(jī),灰度傳感器,舵機(jī)和紅外測(cè)距傳感器,識(shí)別功能連接電腦進(jìn)行拍照,通過已經(jīng)訓(xùn)練好的圖像識(shí)別庫來識(shí)別物品。也減少了人們的操作,簡(jiǎn)便了人的生活[4-6]。
本系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的功能需求主要有:①完成干擾物的識(shí)別,主要是樹莓派中使用Python的Tensorflow開源庫進(jìn)行圖像識(shí)別,將訓(xùn)練好的圖像識(shí)別庫放入樹莓派系統(tǒng)中,讓樹莓派調(diào)用庫。②完成Arduino控制板與樹莓派之間的通信,通過USB串口進(jìn)行實(shí)時(shí)的交互,用來實(shí)現(xiàn)數(shù)據(jù)準(zhǔn)確傳輸。③完成準(zhǔn)確路徑的功能,通過紅外線和arduino的調(diào)試來準(zhǔn)確使路徑統(tǒng)一,去抗干擾。④機(jī)械臂強(qiáng)度的實(shí)現(xiàn),通過調(diào)試機(jī)械臂舵機(jī)控制模塊來進(jìn)行功能的強(qiáng)化訓(xùn)練[7-9]。
Arduino端模塊接受傳感器的反饋值再進(jìn)行處理,處理后通過調(diào)節(jié)電機(jī)轉(zhuǎn)速機(jī)械臂動(dòng)作展現(xiàn)出來。
樹莓派端模塊主要功能是處理arduino端傳過來的數(shù)據(jù),處理后的數(shù)據(jù)一部分上傳云端數(shù)據(jù)庫,一部分返回arduino。
Tensorflow開源庫進(jìn)行圖像識(shí)別,運(yùn)用神經(jīng)網(wǎng)絡(luò)算法庫來進(jìn)行圖像訓(xùn)練,將訓(xùn)練完的圖像識(shí)別放入樹莓派。
主要包括系統(tǒng)總體框和硬件組成兩部分。
本系統(tǒng)按照功能模塊可劃分為:①坐標(biāo)移動(dòng)模塊:移動(dòng)坐標(biāo)的邏輯處理。②電機(jī)驅(qū)動(dòng)模塊:PWM控制電機(jī)轉(zhuǎn)速和順時(shí)針或者逆時(shí)針旋轉(zhuǎn)。③物品識(shí)別模塊:調(diào)用卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行圖像識(shí)別。④物品抓取模塊:通過舵機(jī)控制板來控制抓取動(dòng)作如圖1所示。
圖1 系統(tǒng)總體框圖
3.2.1 坐標(biāo)移動(dòng)模塊原理
機(jī)器人是通過紅外傳感器或灰度傳感器發(fā)射紅外光線進(jìn)行循跡,本設(shè)計(jì)采用TCRT5000紅外反射傳感器,灰度傳感器根據(jù)地面黑白反射光線的明暗程度不同導(dǎo)致的傳感器值不同來產(chǎn)生小車的循跡功能。有一個(gè)直徑3mm的孔用于固定。
坐標(biāo)移動(dòng)是超市機(jī)器人重中之重,只有循跡穩(wěn)定才能進(jìn)行坐標(biāo)的移動(dòng),本設(shè)計(jì)應(yīng)用了TCRT5000紅外反射傳感器面對(duì)黑白線0或1反饋值來實(shí)現(xiàn)模塊的功能,循跡檢測(cè)模塊的主要功能如表1所示。
表1 循跡檢測(cè)模塊功能描述
3.2.2 坐標(biāo)移動(dòng)設(shè)計(jì)與實(shí)現(xiàn)
TCRT5000紅外反射傳感器傳感器面對(duì)黑色時(shí),反饋信號(hào)為1,面對(duì)白色時(shí)反饋信號(hào)為0。只要固定好傳感器與地面的高度,傳感器會(huì)準(zhǔn)確檢測(cè)該位置下面是否在白線上,在白線上的傳感器會(huì)亮,接受信號(hào)為L(zhǎng)OW也就是0,根據(jù)傳感器返回的值可調(diào)節(jié)機(jī)器人的左右輪子轉(zhuǎn)速,從而達(dá)到小車平穩(wěn)在區(qū)域內(nèi)按照指定的坐標(biāo)行走,而不偏離軌道。圖2為循跡功能流程圖。
圖2 循跡功能流程圖
3.3.1 電機(jī)驅(qū)動(dòng)模塊原理
電機(jī)是傳動(dòng)和控制系統(tǒng)重要組成部分,主要以速度,精度,力矩的控制。使用直流減速電機(jī)作為搬運(yùn)機(jī)器人的驅(qū)動(dòng)電機(jī),以提高搬運(yùn)機(jī)器人的穩(wěn)定性,減少機(jī)器人在運(yùn)動(dòng)過程中因?yàn)閼T性導(dǎo)致重心偏移,電機(jī)根據(jù)不同的應(yīng)用會(huì)有不同的驅(qū)動(dòng)方式,本設(shè)計(jì)統(tǒng)一采用ZGA37RG減速直流電機(jī)。
電機(jī)驅(qū)動(dòng)模塊使用了L298N雙H橋,H橋控制電機(jī)順時(shí)針逆時(shí)針旋轉(zhuǎn)和速度的調(diào)節(jié)。
表2為電機(jī)驅(qū)動(dòng)模塊功能描述。
表2 電機(jī)驅(qū)動(dòng)模塊功能描述
3.3.2 電機(jī)驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)驅(qū)動(dòng)板采用L298N雙H橋,通過改變其輸出實(shí)現(xiàn)電機(jī)逆時(shí)針和順時(shí)針旋轉(zhuǎn),也可以通過PWM來調(diào)整轉(zhuǎn)速。H橋使用了8個(gè)腳。只要一邊導(dǎo)通電路就可以驅(qū)動(dòng)電機(jī)進(jìn)行轉(zhuǎn)動(dòng),通過輸入的電源正負(fù)極方向控制電機(jī)的正反轉(zhuǎn)。
該設(shè)計(jì)以使用了一個(gè)H橋來驅(qū)動(dòng)2個(gè)電機(jī),該芯片可以直接驅(qū)動(dòng)兩個(gè)電機(jī),每一邊接口接一個(gè)電機(jī)總共使用兩個(gè)H橋來控制四個(gè)電機(jī)的轉(zhuǎn)動(dòng)。
兩個(gè)H橋來控制四個(gè)電機(jī),其中IN1、IN2、IN3、IN4接Arduino Mega通過控制接口數(shù)字信號(hào)高低來達(dá)到電機(jī)順時(shí)針和逆時(shí)針的旋轉(zhuǎn)。H橋電機(jī)控制信號(hào)見表3。
表3 電機(jī)控制信號(hào)邏輯表
3.4.1 圖像模塊原理
卷積神經(jīng)網(wǎng)絡(luò)是包含卷積或經(jīng)過相關(guān)計(jì)算后具有較深結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)。它也是深度學(xué)習(xí)的代表性算法之一。卷積神經(jīng)網(wǎng)絡(luò)是通過模擬生物的視覺和感知而構(gòu)建的。監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)均適用。由于隱藏層中卷積核參數(shù)的共享以及層間連接的稀疏性,卷積神經(jīng)網(wǎng)絡(luò)可以使用少量計(jì)算來形成特征。
3.4.2 卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)
將數(shù)據(jù)集拆分為訓(xùn)練集和測(cè)試集,其中八成的圖像作為訓(xùn)練集圖像,剩余的二成的圖像作為測(cè)試集。訓(xùn)練前,對(duì)所有圖片進(jìn)行歸一化,并統(tǒng)一尺寸為100×100,并且將數(shù)據(jù)集進(jìn)行打亂。訓(xùn)練時(shí),為了得到最優(yōu)的結(jié)果,會(huì)在進(jìn)行多次卷積操作之后經(jīng)過3個(gè)全連接層。設(shè)置學(xué)習(xí)率為0.0001,批尺寸(batch size)為64,采用CNN卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法,迭代了16000次,大約8個(gè)周期,最終達(dá)到收斂。
從新拍攝的圖片中選擇一張圖片,同時(shí)的將圖片處理成100×100的格式,取出事先訓(xùn)練好的模型,并且還原出最后一次的checkpoint,載入這張圖片并獲得一個(gè)張量x,將該張量x放入模型進(jìn)行識(shí)別,然后獲得預(yù)測(cè)矩陣。接下去獲得預(yù)測(cè)矩陣每一行最大值的索引,該值所對(duì)應(yīng)的類,就是識(shí)別的最終結(jié)果,可以根據(jù)索引通過字典獲得對(duì)應(yīng)圖片的分類。流程如圖3所示。
圖3 驗(yàn)證結(jié)果的流程圖
3.5.1 物品抓取模塊功能設(shè)計(jì)
對(duì)機(jī)械臂的控制方法首先是對(duì)于舵機(jī)角度的調(diào)試,在該設(shè)計(jì)中Arduino因?yàn)闆]有足夠的工作電壓所以無法直接控制多個(gè)舵機(jī),導(dǎo)致的現(xiàn)狀是舵機(jī)抽搐無法正常工作,因此需要一塊舵機(jī)控制板和外接穩(wěn)定的6V電源才可以穩(wěn)定的控制控制舵機(jī),Arduino主控板和舵機(jī)控制板之間可以通過串口通訊發(fā)送指令,購(gòu)物機(jī)器人所有的抓取和放置動(dòng)作都是通過MG996R舵機(jī)實(shí)現(xiàn)[10]。
主要功能如表4所示。
表4 串口通信功能描述
抓取物品動(dòng)作模塊具體工作步驟如下:①用戶設(shè)置抓取動(dòng)作。②主控制板通過串行通訊將命令發(fā)送到舵機(jī)控制板。③舵機(jī)控制板向舵機(jī)發(fā)出信號(hào)以控制動(dòng)作。如圖4所示。
圖4 抓取物品動(dòng)作模塊工作時(shí)序圖
3.5.2 抓取物品串口通訊設(shè)計(jì)與實(shí)現(xiàn)
通過Arduino的RXTX串口向舵機(jī)控制板發(fā)送指令,串口通信是全雙工通訊,可以邊發(fā)邊收數(shù)據(jù)。如表5。
表5 串口通訊基本參數(shù)
在本模塊中需要在setup()中進(jìn)行初始化,設(shè)置波特率為9600。
主控模塊硬件包括Arduino Mega和驅(qū)動(dòng)電源12V,單片機(jī)和其他元器件通過導(dǎo)線進(jìn)行連接,圖5為系統(tǒng)硬件連接圖。
圖5 系統(tǒng)硬件連接圖
坐標(biāo)移動(dòng)的功能是使用了紅外反射傳感器,該設(shè)計(jì)使用了20個(gè)紅外反射傳感器,每個(gè)都需要單片機(jī)的5V和接地;電機(jī)驅(qū)動(dòng)模塊的實(shí)現(xiàn)是使用H橋與電機(jī)相連,通過H橋控制電機(jī)逆時(shí)針和順時(shí)針的旋轉(zhuǎn),每個(gè)都需要單片機(jī)的5V和接地;抓取物品模塊的實(shí)現(xiàn)是舵機(jī)控制板與舵機(jī)連接,TX連接RX,RX連接TX。
①購(gòu)物機(jī)器人循跡采用TCRT5000紅外反射傳感器,灰度傳感器根據(jù)地面黑線、白線反射光線的敏暗程度不同而產(chǎn)生的灰度值不同來產(chǎn)生小車的循跡功能,方法簡(jiǎn)便有效。②在底層運(yùn)動(dòng)模塊采用ZGA37RG直流減速電機(jī)作為搬運(yùn)機(jī)器人的驅(qū)動(dòng)電機(jī),以提高搬運(yùn)機(jī)器人的穩(wěn)定性,減少機(jī)器人在運(yùn)動(dòng)過程中因?yàn)閼T性導(dǎo)致重心偏移,電機(jī)根據(jù)不同的應(yīng)用會(huì)有不同的驅(qū)動(dòng)方式。③電機(jī)驅(qū)動(dòng)板采用L298N雙H橋芯片,通過改變L298N雙H橋的輸出實(shí)現(xiàn)電機(jī)正反轉(zhuǎn),或調(diào)整轉(zhuǎn)速,調(diào)試時(shí)程序輸入對(duì)應(yīng)的占空比值,能夠?qū)崿F(xiàn)對(duì)應(yīng)的轉(zhuǎn)速。L298N雙H橋該芯片采用15腳封裝。電路內(nèi)含兩個(gè)MOS管,只要使對(duì)角線上的電路導(dǎo)通即可驅(qū)動(dòng)電機(jī),兩個(gè)方向控制電機(jī)的正反轉(zhuǎn),采用標(biāo)準(zhǔn)邏輯信號(hào)控制。本選題實(shí)現(xiàn)用于自動(dòng)購(gòu)物的超市購(gòu)物機(jī)器人,該機(jī)器人主要使用電機(jī),灰度傳感器,舵機(jī)和紅外測(cè)距傳感器,識(shí)別功能連接電腦進(jìn)行拍照,通過已經(jīng)訓(xùn)練好的圖像識(shí)別庫來識(shí)別物品。也減少了人們的操作,簡(jiǎn)便了人的生活。