任晉萍 李志堅(jiān) 亓彥斌 王磊 杜浩
1、山西工學(xué)院通識(shí)教育學(xué)院 2、太原工業(yè)學(xué)院
隨著人工智能和機(jī)器人技術(shù)的發(fā)展,工業(yè)自動(dòng)化和生活智能化程度越來越高,智能化的出現(xiàn),給我們的生產(chǎn)生活帶來了很大的便利,這也是現(xiàn)代社會(huì)發(fā)展的趨勢(shì)和科學(xué)研究的方向之一[1]。智能小車被廣泛應(yīng)用于科學(xué)探索、工業(yè)生產(chǎn)等領(lǐng)域。無接觸式智能服務(wù)機(jī)器人有了一個(gè)很好的發(fā)展前景。近期大多數(shù)智能小車用于餐廳送餐,或者送外賣等。基于此,本文產(chǎn)品通過樹莓派開發(fā)板和Arduino單片機(jī),搭建智能車控制系統(tǒng)。使用樹莓派4B完成整個(gè)智能車運(yùn)行的總控的搭建,包括信息傳輸,視覺,傳感器等。使Arduino uno開發(fā)板完成智能車的運(yùn)動(dòng)的控制,使得整體功耗更小,模塊化分工更明顯。利用python編程預(yù)計(jì)可實(shí)現(xiàn)路徑安排、機(jī)械臂控制、道路識(shí)別、環(huán)境監(jiān)測(cè)以及二維碼識(shí)別的任務(wù)??梢院芎玫剡m應(yīng)當(dāng)今時(shí)代的需求,本設(shè)計(jì)可以完成樓內(nèi)定點(diǎn)無接觸配送,病毒消殺,上門核酸以及環(huán)境監(jiān)測(cè)的任務(wù),在滿足用戶需求的情況下,極大地節(jié)省了人力,同時(shí)提供了更加安全、便捷、智能的服務(wù)[2]。
本產(chǎn)品以樹莓派4B單板計(jì)算機(jī)為處理核心,配合Arduino UNO輔助控制。整個(gè)系統(tǒng)由電源模塊、高清攝像頭模塊、超聲波模塊、運(yùn)動(dòng)傳感器模塊、環(huán)境監(jiān)測(cè)模塊、電機(jī)驅(qū)動(dòng)模塊以及交互模塊組成,其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
電源模塊給系統(tǒng)各個(gè)模塊提供所需電壓。高清攝像頭模塊識(shí)別道路信息,供計(jì)算機(jī)進(jìn)行處理分析,處理后信息將交由單片機(jī)進(jìn)行驗(yàn)證實(shí)施,控制電機(jī)驅(qū)動(dòng)模塊驅(qū)動(dòng)產(chǎn)品的行進(jìn)任務(wù)。運(yùn)動(dòng)傳感器模塊以及超聲波模塊將產(chǎn)品狀態(tài)以及所處環(huán)境反饋給計(jì)算機(jī),由計(jì)算機(jī)模擬當(dāng)前產(chǎn)品狀態(tài)以做出狀態(tài)上的調(diào)整。環(huán)境監(jiān)測(cè)模塊則將信反饋至計(jì)算機(jī),計(jì)算機(jī)對(duì)相應(yīng)情況做出反應(yīng)且將信息通過交互系統(tǒng)上傳至云端。
圖2為樹莓派4B,在本產(chǎn)品中,主控板是最核心的部分,負(fù)責(zé)連接攝像頭模塊、運(yùn)動(dòng)模塊、信息采集模塊、交互模塊,是產(chǎn)品的大腦。通過樹莓派各型號(hào)的相比,樹莓派4B是樹莓派最新發(fā)布的第四代產(chǎn)品,性能與樹莓派3B+相比無論是處理器速度,還是多媒體和內(nèi)存上都有顯著提升。這滿足了產(chǎn)品在數(shù)據(jù)處理上的需求。同時(shí),它有2.4/5.0 Ghz雙頻無線LAN,藍(lán)牙5.0/BLE以及千兆以太網(wǎng),滿足了信息交互的需求。整體而言,非常適合本產(chǎn)品。
圖2 主控樹莓派4B
圖3是Arduino,由一個(gè)基于單片機(jī)的開放源碼的硬件平臺(tái)和一套專門的開發(fā)環(huán)境組成。它便捷靈活、方便上手,可以用來開發(fā)交互產(chǎn)品,比如它可以讀取大量的開關(guān)和傳感器信號(hào),并且可以控制各電機(jī)和其他物理設(shè)備。它沒有復(fù)雜的單片機(jī)底層代碼,沒有難懂的匯編,只是簡(jiǎn)單而實(shí)用的函數(shù)。而且具有簡(jiǎn)便的編程環(huán)境IDE,極大的自由度,可拓展性能非常高.因此,我們采用本單片機(jī)作為機(jī)器人的副控,負(fù)責(zé)完整基礎(chǔ)物理設(shè)備的控制,減小產(chǎn)品功耗。
圖3 副控Arduino UNO
采用樹莓派高清夜視攝像頭,與主控板配套,滿足各種光線條件下的拍攝需求??蓪?shí)時(shí)反饋道路信息以及所需拍攝的人物信息或二維碼信息,為本產(chǎn)品的運(yùn)作提供了眼睛。
采用數(shù)字運(yùn)動(dòng)傳感器MPU9250來采集機(jī)器人運(yùn)動(dòng)中的加速度,角速度等數(shù)據(jù)。MPU-9250是一個(gè)多芯片模塊(MCM),由集成到單個(gè)QFN封裝中的兩個(gè)芯片組成。一個(gè)模具裝有3軸陀螺儀和3軸加速度計(jì)。因此,MPU-9250是一個(gè)9軸運(yùn)動(dòng)跟蹤設(shè)備,結(jié)合了3軸陀螺儀,3軸加速度計(jì),3軸磁力計(jì)和數(shù)字運(yùn)動(dòng)處理器。
使用超聲波等微小的傳感器能夠測(cè)量產(chǎn)品自身和最近的固體物體之間的距離,對(duì)于機(jī)器人避免碰撞,識(shí)別環(huán)境很有用,搭配視覺系統(tǒng),可完善產(chǎn)品對(duì)環(huán)境的識(shí)別能力。
使用DHT11數(shù)字溫濕度傳感器,高效、穩(wěn)定的對(duì)產(chǎn)品所在環(huán)境進(jìn)行監(jiān)測(cè)。
使用42GA775直流減速電機(jī)以及DS3115舵機(jī),為產(chǎn)品提供動(dòng)力執(zhí)行。使用L298N對(duì)電機(jī)進(jìn)行直接控制,通過主控芯片的I/O輸入對(duì)其控制電平進(jìn)行設(shè)定后,為電機(jī)進(jìn)行正轉(zhuǎn)反轉(zhuǎn)驅(qū)動(dòng),操作簡(jiǎn)單、穩(wěn)定性好,滿足直流電機(jī)的大電流驅(qū)動(dòng)條件。
OpenCV是一個(gè)基于Apache2.0許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。
系統(tǒng)軟件設(shè)計(jì)采用Python語言編程實(shí)現(xiàn),利用單片機(jī)PWM輸出模塊和普通I/O模塊和樹莓派高清夜視攝像頭等模塊來保證小車的運(yùn)動(dòng)進(jìn)行,根據(jù)系統(tǒng)需求,對(duì)各個(gè)模塊進(jìn)行初始化配置,以實(shí)現(xiàn)其相應(yīng)功能。主程序流程如圖4所示。
圖4 主程序流程
將樹莓派攝像頭拍攝到的視頻流傳到PC端,并在PC端查看。目的是為了便于攝像頭姿態(tài)的調(diào)整和圖像處理算法的調(diào)試。我們使用UDP傳輸協(xié)議進(jìn)行圖像傳輸。具體實(shí)現(xiàn)主要分為發(fā)送端和接收端兩部分:其中,發(fā)送端在樹莓派端運(yùn)行,接收端在PC端運(yùn)行。二者同時(shí)運(yùn)行。
基于視覺opencv庫(kù),使用pygame模塊來遠(yuǎn)程控制機(jī)器人的前后左右移動(dòng),配合數(shù)據(jù)采集代碼,使攝像頭進(jìn)行拍攝以及數(shù)據(jù)采集。數(shù)據(jù)采集完成后進(jìn)行一些數(shù)據(jù)清洗的工作,將處理過的數(shù)據(jù)使用神經(jīng)網(wǎng)絡(luò)模型對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練,得到訓(xùn)練好的模型。在樹莓派機(jī)器人上使用行駛模塊和訓(xùn)練好的模型,載入模型,即可實(shí)現(xiàn)在原先道路的自動(dòng)駕駛。根據(jù)模型,來進(jìn)行自動(dòng)行駛。
識(shí)別并定位攝像頭圖像中的各類常見物體。系統(tǒng)調(diào)用了TensorFlow Object Detection API,使用了訓(xùn)練好的SSDLite目標(biāo)檢測(cè)模型,在樹莓派端進(jìn)行目標(biāo)檢測(cè)。使用的SSDLite模型主要優(yōu)點(diǎn)是運(yùn)行速度快、占用內(nèi)存小,適合在樹莓派端進(jìn)行運(yùn)算。
實(shí)現(xiàn)了超聲波測(cè)距和對(duì)測(cè)距進(jìn)行移動(dòng)平均來減小誤差。超聲波測(cè)距是通過控制口發(fā)一個(gè)10us以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開定時(shí)器計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)就可以讀定時(shí)器的值,此時(shí)就為此次測(cè)距的時(shí)間,方可根據(jù)聲速算出距離。
(1)采用IO口TRIG觸發(fā)測(cè)距,給至少10us的高電平信號(hào)。
(2)模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回。
(3)有信號(hào)返回,通過IO口ECHO輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。測(cè)試距離=高電平時(shí)間*聲速/2。
電學(xué)性能測(cè)試:對(duì)所有設(shè)備進(jìn)行上電,充電等操作,測(cè)試供電,充電電路設(shè)計(jì)是否合理。經(jīng)過測(cè)試,設(shè)備正常上電運(yùn)行,RevPi Core 3正常3.3伏供電,樹莓派攝像頭模塊,HC-05藍(lán)牙無線模塊都正常運(yùn)行。鋰電池充放電正常,4.2伏充電截止,3.5伏截止放電,充放電指示燈正常表示信息。數(shù)據(jù)采集測(cè)試:RevPi Core 3與樹莓派攝像頭模塊上電后,按照寫定程序,正常執(zhí)行應(yīng)執(zhí)行的任務(wù)。藍(lán)牙通訊測(cè)試:RevPi Core 3連接數(shù)字運(yùn)動(dòng)傳感器與主藍(lán)牙串口模塊正常上電。打開樹莓派的VNC桌面,單擊右上角的藍(lán)牙圖標(biāo),選擇Add Device。進(jìn)而,進(jìn)入藍(lán)牙搜索界面,稍等片刻,便正常運(yùn)行查找到對(duì)應(yīng)的HC-05模塊,點(diǎn)擊Pair進(jìn)行配對(duì),配對(duì)正常。
本文基于樹莓派4B和Arduino單片機(jī)設(shè)計(jì)了一款樓內(nèi)智能服務(wù)機(jī)器人,可實(shí)現(xiàn)產(chǎn)品自主樓內(nèi)運(yùn)動(dòng)。在程序的控制下,產(chǎn)品依托視覺檢測(cè)模塊和超聲波模塊實(shí)現(xiàn)自主運(yùn)動(dòng)以及避障,在工作同時(shí)可實(shí)時(shí)監(jiān)測(cè)產(chǎn)品所處環(huán)境,通過交互系統(tǒng)為用戶提供環(huán)境信息。