楊叢叢 吳濤 張安峰 江山強(qiáng)
摘 ?要: 本文設(shè)計(jì)并開(kāi)發(fā)了一種基于樹(shù)莓派的無(wú)線遙控移動(dòng)機(jī)器人,機(jī)器人使用手機(jī)作為控制端,控制系統(tǒng)以樹(shù)莓派作為核心控制器,采用Python語(yǔ)言進(jìn)行程序開(kāi)發(fā),機(jī)器人擁有小車(chē)底盤(pán)、電機(jī)驅(qū)動(dòng)、機(jī)械臂、舵機(jī)驅(qū)動(dòng)和超聲波測(cè)距等多個(gè)功能模塊。系統(tǒng)通過(guò)Wi-Fi實(shí)現(xiàn)了機(jī)器人與手機(jī)之間的信息交互,操作者可以無(wú)線遠(yuǎn)程遙控來(lái)實(shí)現(xiàn)機(jī)器人的移動(dòng)、避障和物體抓取。
關(guān)鍵詞:?樹(shù)莓派;機(jī)械臂;電機(jī)驅(qū)動(dòng);超聲波測(cè)距;舵機(jī)驅(qū)動(dòng)
中圖分類(lèi)號(hào): TP242.6????文獻(xiàn)標(biāo)識(shí)碼:?A????DOI:10.3969/j.issn.1003-6970.2020.02.021
【Abstract】: This paper designs and develops a wireless remote control mobile robot based on Raspberry Pi. The robot uses the mobile phone as the control terminal. The control system uses the Raspberry Pi as the core controller. The program is developed in Python language. The robot is composed of several functional modules such as car chassis, motor drive, manipulator, steering gear drive and ultrasonic ranging. the system realizes the information interaction between the robot and the mobile phone through Wi-Fi, and the operator can wirelessly remotely control the robot to move, avoid obstacles and grasp objects.
【Key words】: Raspberry Pi; Robotic arm; Motor-drive; Ultrasonic ranging; Servo-drive
0??引言
隨著計(jì)算機(jī)科學(xué)與網(wǎng)絡(luò)技術(shù)的不斷創(chuàng)新,為智能機(jī)器人技術(shù)的發(fā)展帶來(lái)了新的發(fā)展機(jī)遇,各種機(jī)器人在不同的領(lǐng)域發(fā)揮著越來(lái)越重要的作用[1]。無(wú)線遠(yuǎn)程遙控機(jī)器人能夠替代人類(lèi)執(zhí)行一些危險(xiǎn)的活動(dòng),對(duì)于消除危險(xiǎn)隱患、減少人員傷亡具有重要意義。Wi-Fi是一種無(wú)線傳輸技術(shù),傳輸距離長(zhǎng),并且網(wǎng)絡(luò)穩(wěn)定可靠。近年來(lái),智能手機(jī)、平板電腦等移動(dòng)手持設(shè)備的普及,智能家居的興起使得Wi-Fi技術(shù)成為人們工作生活中不可或缺的部分。樹(shù)莓派(RaspberryPi),簡(jiǎn)稱(chēng)Rpi或者RasPi,是一款基本ARM的微型電腦主板,以SD卡為內(nèi)存硬盤(pán),提供了一個(gè)具有最基本功能的,廉價(jià)的硬件平臺(tái)。尺寸只有信用卡大小,運(yùn)行速度比臺(tái)式機(jī)稍慢,但已具備了電腦的所有基本功能[2]。樹(shù)莓派作為本次設(shè)計(jì)機(jī)器人平臺(tái)的“大腦”,可通過(guò)編程來(lái)管理機(jī)器人的操作(地圖、導(dǎo)航、障礙物探測(cè)和躲避運(yùn)輸?shù)龋3]。本次設(shè)計(jì)旨在服務(wù)那些行走不便的中老年人群,通過(guò)遠(yuǎn)程控制機(jī)器人實(shí)現(xiàn)傳遞物品、操作家用電器等功能,能夠滿(mǎn)足一般家用需求。
1??硬件部分的選擇與設(shè)計(jì)
1.1??硬件組成
本次設(shè)計(jì)所需的硬件主要包括底盤(pán)、4個(gè)車(chē)輪(兩前輪兩后輪)、直流電機(jī)、樹(shù)莓派(3B+型號(hào))、舵機(jī)、超聲波傳感器、電機(jī)驅(qū)動(dòng)板和舵機(jī)驅(qū)動(dòng)板等,選用電機(jī)驅(qū)動(dòng)板型號(hào)為L(zhǎng)298N,舵機(jī)驅(qū)動(dòng)板型號(hào)為PCA9685,機(jī)器人的總裝配圖和實(shí)物圖如圖1所示。
1.2??小車(chē)底盤(pán)模塊
小車(chē)的驅(qū)動(dòng)方式為四輪驅(qū)動(dòng),四個(gè)車(chē)輪都為驅(qū)動(dòng)輪,直流電機(jī)與電機(jī)驅(qū)動(dòng)板聯(lián)接,電機(jī)驅(qū)動(dòng)板與樹(shù)莓派聯(lián)接,樹(shù)莓派通過(guò)自身的GPIO口聯(lián)接電機(jī)驅(qū)動(dòng)板實(shí)現(xiàn)對(duì)小車(chē)的控制。
1.3??電機(jī)驅(qū)動(dòng)模塊
電機(jī)驅(qū)動(dòng)模塊采用可直接驅(qū)動(dòng)兩路直流電機(jī)的L298N芯片,L298N是專(zhuān)用驅(qū)動(dòng)集成芯片,屬于H橋集成電路,具有輸出電流大負(fù)載能力強(qiáng)等特點(diǎn),可以直接控制兩臺(tái)直流電機(jī),并可實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),實(shí)現(xiàn)此功能只需要改變輸入邏輯電平,并且通過(guò)使能端ENA、ENB輸入PWM信號(hào),還可以實(shí)現(xiàn)速度調(diào)節(jié)。使能端為高電平時(shí)有效。直流電機(jī)與L298N的連接,由OUT1和OUT2接口控制機(jī)器人右側(cè)電機(jī),OUT3和OUT4接口控制機(jī)器人左側(cè)電機(jī)。L298N與電機(jī)和樹(shù)莓派的連接方式如圖2所示。IN1~I(xiàn)N4為邏輯輸入端分別與樹(shù)莓派的四個(gè)GPIO輸入/輸出接口相連,L298N的+5V端口與樹(shù)莓派的5V端口連接用來(lái)給樹(shù)莓派供電,L298N單獨(dú)供電。
1.4??機(jī)械臂模塊
機(jī)械臂裝配圖如圖3所示,機(jī)械臂整體為六自由度,由六個(gè)舵機(jī)進(jìn)行驅(qū)動(dòng),樹(shù)莓派聯(lián)接舵機(jī)驅(qū)動(dòng)板來(lái)控制舵機(jī)進(jìn)而控制機(jī)械臂的運(yùn)動(dòng)。機(jī)械臂底座是一個(gè)旋轉(zhuǎn)平臺(tái),旋轉(zhuǎn)平臺(tái)的下半部分是固定的,1號(hào)舵機(jī)能夠控制機(jī)械臂底座上半部分的旋轉(zhuǎn)。2號(hào)、3號(hào)和4號(hào)舵機(jī)分別控制其上方機(jī)械臂對(duì)下方機(jī)械臂關(guān)節(jié)處的相對(duì)轉(zhuǎn)動(dòng)。機(jī)械手抓手包括兩個(gè)部分。下半部分為旋轉(zhuǎn)部分,由下方固定在機(jī)械臂上的5號(hào)舵機(jī)所控制;上半部分為夾取部分,由6號(hào)舵機(jī)控制。
1號(hào)到6號(hào)舵機(jī)的信號(hào)線、正極和負(fù)極分別接PCA9685的5號(hào)到0號(hào)通道的PWM、V+、GND。為簡(jiǎn)便表示,接線圖中只標(biāo)注了6號(hào)舵機(jī),其余舵機(jī)的接線與6號(hào)舵機(jī)一致。PCA9685分為控制電和驅(qū)動(dòng)電兩個(gè)電源,其中控制電接3.3V,由樹(shù)莓派提供,同時(shí)SCL和SDA和單片機(jī)的數(shù)據(jù)信號(hào)和時(shí)鐘信號(hào)相連;而驅(qū)動(dòng)電需接5v電壓。PCA9685與舵機(jī)和樹(shù)莓派的接線圖如圖4所示。
1.5??舵機(jī)驅(qū)動(dòng)模塊
1.5.1 ?脈沖頻率設(shè)置
1.5.2 ?脈沖寬度調(diào)節(jié)
一個(gè)周期為20?ms的脈沖里面高電平持續(xù)的時(shí)間決定了舵機(jī)轉(zhuǎn)動(dòng)的角度,180度舵機(jī)對(duì)應(yīng)關(guān)系如下:0.5?ms–0度,1?ms–45度,1.5?ms–90度,2?ms–135度,2.5?ms–180度。則舵機(jī)旋轉(zhuǎn)角度θ與脈沖寬度ω間的關(guān)系為:
PCA9685的任一通道均有4個(gè)寄存器用于設(shè)置12位計(jì)數(shù)器以此實(shí)現(xiàn)脈寬調(diào)節(jié),分別用于控制高電平開(kāi)始到結(jié)束的時(shí)刻,每個(gè)通道都?LEDX_ON_L、LEDX_ON_H、LEDX_OFF_L、LEDX_OFF_H四個(gè)寄存器。一般將LEDX_ON設(shè)置為0,如果脈寬為duty,則LEDX_OFF的計(jì)算公式如下:
pwm.setpwm?(0,0,servo)#后面的參數(shù)中第一個(gè)參數(shù)為通道。后兩個(gè)參數(shù),前面一個(gè)是低電平轉(zhuǎn)高電平的時(shí)間,后面一個(gè)是高電平轉(zhuǎn)低電平的時(shí)間,這兩個(gè)數(shù)值都應(yīng)該小于4096。該函數(shù)設(shè)置PWM波的占空比,一般以4096為一個(gè)PWM波周期。
1.6??超聲波測(cè)距模塊
樹(shù)莓派小車(chē)實(shí)現(xiàn)自動(dòng)駕駛需要加裝距離傳感器。由于超聲波指向性強(qiáng),能量消耗較慢且在介質(zhì)中傳播的距離較遠(yuǎn),因此超聲波經(jīng)常用于距離測(cè)量。HC-SR04是一個(gè)超聲波距離傳感器,工作原理和聲納相同。如果需要精確測(cè)量距離,則需安裝多個(gè)傳感器。HC-SR04共有4個(gè)引腳,分別為VCC、Trig、Echo和GND。由于傳感器是5?V,樹(shù)莓派是3.3?V,需要將1千歐姆的電阻接在GPIO的INPUT和echo中間。
Trig將由樹(shù)莓派GPIO的OUTPUT給出10微妙的高電壓來(lái)觸發(fā),被觸發(fā)后超聲波測(cè)距模塊會(huì)產(chǎn)生8個(gè)40?KHz的方波,并檢測(cè)是否有方波返回,若有方波返回則會(huì)通過(guò)Echo引腳輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是方波從發(fā)射到返回所經(jīng)歷的時(shí)間[7]。通過(guò)距離計(jì)算公式便可知障礙物的距離,公式[7]如下:
S為障礙物距小車(chē)的距離,T為高電平持續(xù)的時(shí)間,C為聲速(340 m/s)。
2??機(jī)器人的運(yùn)動(dòng)控制
樹(shù)莓派接收傳感器的反饋信號(hào),通過(guò)Wi-Fi發(fā)送給手機(jī)等手持移動(dòng)設(shè)備,操作者通過(guò)手機(jī)Wi-Fi連接樹(shù)莓派,經(jīng)由樹(shù)莓派將指令發(fā)送給各功能模塊,使機(jī)器人完成相應(yīng)作業(yè)任務(wù)。本次設(shè)計(jì)中機(jī)器人的系統(tǒng)結(jié)構(gòu)框圖如圖5所示。
2.1??電機(jī)驅(qū)動(dòng)控制
首先是小車(chē)底盤(pán)的電機(jī)驅(qū)動(dòng)控制,L298N的控制方式及直流電機(jī)狀態(tài)[8]如表1所示。
由表1可知,使能端ENA、ENB為高電平時(shí)電機(jī)才可能轉(zhuǎn)動(dòng),方向端IN1~I(xiàn)N4使電機(jī)實(shí)現(xiàn)不同方向的轉(zhuǎn)動(dòng)。IN1、IN3為高電平,IN2、IN4為低電平時(shí)電機(jī)正轉(zhuǎn),小車(chē)前進(jìn);反之小車(chē)后退;小車(chē)轉(zhuǎn)彎通過(guò)速度差實(shí)現(xiàn),若左轉(zhuǎn),右邊車(chē)輪不動(dòng),從而左轉(zhuǎn)。即IN1、IN2為低電平,IN3高電平IN4低電平時(shí)小車(chē)左轉(zhuǎn),反之小車(chē)右轉(zhuǎn)[9-12]。Python控制馬達(dá)的控制原理框圖如圖6所示。圖中H表示高電平,L表示低電平。
2.2??舵機(jī)驅(qū)動(dòng)控制
舵機(jī)是一種集成了內(nèi)部閉環(huán)電路和減速器的角位置伺服機(jī)構(gòu),主要包括控制電路、電動(dòng)機(jī)、齒輪組和線性電位器。減速齒輪由電動(dòng)機(jī)帶動(dòng),其終端帶動(dòng)一個(gè)比例電位器用來(lái)檢測(cè)轉(zhuǎn)過(guò)的角度,并把該角度轉(zhuǎn)換成電信號(hào)反饋給控制電路,控制電路控制電動(dòng)機(jī)正轉(zhuǎn)或者反轉(zhuǎn),使齒輪組的輸出位置與期望值相符。
本次設(shè)計(jì)中機(jī)械臂的舵機(jī)驅(qū)動(dòng)控制是利用Python編程來(lái)控制舵機(jī)的轉(zhuǎn)動(dòng)角度,需要用不同寬度的脈沖來(lái)控制,輸出不同寬度的脈沖信號(hào),傳輸給信號(hào)線。一般舵機(jī)脈寬在0.5~2.5?ms之間,轉(zhuǎn)1°的脈沖時(shí)間大約是2 ms÷180°=0.011毫秒/度。但在舵機(jī)里面有一些零點(diǎn)幾毫秒的延時(shí)脈沖。如果用delay()函數(shù)做延時(shí),很難做到每個(gè)角度都可以轉(zhuǎn)到。所以需要一個(gè)比毫秒延時(shí)還要精確的延時(shí)函數(shù)time.sleep(i)來(lái)作為脈沖的計(jì)時(shí)延時(shí)函數(shù),函數(shù)里面的i數(shù)值設(shè)置在0.0000~0.0035之間,這樣至少90%的角度都可以轉(zhuǎn)到。如果讓舵機(jī)循環(huán)擺動(dòng),一定要加上適當(dāng)?shù)难訒r(shí)。
2.3??遙控功能
遙控機(jī)器人采用WEB按鍵控制的方式,使用相較于其他web framework處理服務(wù)器性能問(wèn)題更加強(qiáng)健的、輕量級(jí)的、強(qiáng)大的PythonWEB框架tornado在樹(shù)莓派上建立WEB應(yīng)用服務(wù),設(shè)置開(kāi)放的端口號(hào)為8080,進(jìn)而實(shí)現(xiàn)通過(guò)手機(jī)等客戶(hù)端訪問(wèn)樹(shù)莓派上的html網(wǎng)頁(yè)文件。通過(guò)引用Python的GPIO庫(kù),實(shí)現(xiàn)通過(guò)樹(shù)莓派的GPIO接口來(lái)控制L298N模塊和PCA9685模塊,進(jìn)而控制機(jī)器人的馬達(dá)和舵機(jī)實(shí)。html文件通過(guò)使用JavaScript的onkeydown事件,通過(guò)window.event或者按鍵事件獲取keycode按鍵編碼,通過(guò)jQuery的ajax進(jìn)行數(shù)據(jù)發(fā)送[13-16],通過(guò)點(diǎn)擊手機(jī)等客戶(hù)端html網(wǎng)頁(yè)上的按鍵或鍵盤(pán)輸入相應(yīng)按鍵來(lái)控制機(jī)器人的運(yùn)動(dòng)。
2.4??避障功能
小車(chē)通過(guò)超聲波傳感器循環(huán)檢測(cè)前、左、右3個(gè)方向的障礙物距離,根據(jù)3個(gè)方向的距離對(duì)行駛控制做出判斷,使小車(chē)實(shí)現(xiàn)自動(dòng)避障行駛。避障算法流程圖[17]如圖7所示。首先檢測(cè)正前方障礙物距離,如果距離大于30 cm則繼續(xù)向前行駛,如果小于15 cm里面則向后,如果距離在此之間則先后檢測(cè)小車(chē)左方和右方的障礙物距離。如果左右兩側(cè)的距離均小于15?cm,則小車(chē)后退;若右側(cè)距離大于左側(cè)距離,則小車(chē)右轉(zhuǎn);反之,則左轉(zhuǎn)。
圖7??避障算法流程圖
Fig7??Obstacle avoidance algorithm flow chart
3??結(jié)語(yǔ)
本文設(shè)計(jì)并開(kāi)發(fā)了一種基于樹(shù)莓派的無(wú)線遙控移動(dòng)機(jī)器人,可實(shí)現(xiàn)機(jī)器人的遠(yuǎn)程控制、自主避障行駛等功能。樹(shù)莓派作為主控板,通過(guò)L298N實(shí)現(xiàn)利用電機(jī)控制小車(chē),通過(guò)PCA9685實(shí)現(xiàn)利用舵機(jī)控制機(jī)械臂,接入WiFi模塊實(shí)現(xiàn)遠(yuǎn)程遙控信號(hào)的接收,手機(jī)通過(guò)WiFi即可實(shí)現(xiàn)對(duì)機(jī)器人的遠(yuǎn)程控制。接入超聲波測(cè)距模塊實(shí)現(xiàn)對(duì)機(jī)器人前方障礙物的自主避障。設(shè)計(jì)了基于前方障礙物距離的避障行駛算
法,確保機(jī)器人行駛過(guò)程中自主避開(kāi)障礙物。實(shí)驗(yàn)表明機(jī)器人具有較好的遙控和避障性能,在智能機(jī)器人領(lǐng)域具有一定的實(shí)用價(jià)值。該機(jī)器人系統(tǒng)簡(jiǎn)單,精度較高,且成本較低。能夠滿(mǎn)足一般家用需求。
參考文獻(xiàn)
徐勝華. 基于STM32的智能掃地機(jī)器人研究與設(shè)計(jì)[D].?廣西師范大學(xué),?2016.
理查德,?格里梅特.?樹(shù)莓派機(jī)器人實(shí)戰(zhàn)秘笈.?北京: 人民郵電出版社,?2018.
門(mén)伯里,?豪斯.?樹(shù)莓派學(xué)習(xí)指南-(基于Linux)[M].?北京: 人民郵電出版社,?2014.
李強(qiáng),?霍淑珍,?鄭偉.?基于I2C通信的PCA9685在舵機(jī)控制中的應(yīng)用[J].?科技創(chuàng)新與應(yīng)用,?2018(28):?173-174.
周雅靜,?彭熙,?張翠翠,?等.?基于樹(shù)莓派及串行舵機(jī)控制技術(shù)的人形機(jī)器人控制系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)[J].?電子世界,?2019(02):?140-141.
周英路,?王志亮,?朱松青,?等.?基于PCA9685的多路舵機(jī)控制器設(shè)計(jì)[J].?南京工程學(xué)院學(xué)報(bào)(自然科學(xué)版),?2017,?15(04):?26-31.
霍海波.?基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)[J].?電子技術(shù)與軟件工程,?2019(14):?246-247.
張?zhí)禊i,?徐磊.?L298N控制直流電機(jī)正反轉(zhuǎn)[J].?工業(yè)設(shè)計(jì),?2011(03):?98-99.
吳波濤,?孔金平,?王湘.?基于Arduino和樹(shù)莓派的智能小車(chē)的設(shè)計(jì)與實(shí)現(xiàn)[J].?電子設(shè)計(jì)工程,?2017,?25(15):?58-61.
王小宇. 基于Raspberry Pi的輪式移動(dòng)機(jī)器人設(shè)計(jì)及運(yùn)動(dòng)控制[D].?山東理工大學(xué),?2018.
曾杰,?陳超波,?趙楠,?等.?基于樹(shù)莓派的搜檢機(jī)器人的設(shè)計(jì)[J].?計(jì)算機(jī)與數(shù)字工程,?2019,?47(03):?700-705.
楊志勇,?黃文鋒,?劉燦.?基于樹(shù)莓派的遠(yuǎn)程控制智能拍照小車(chē)[J].?現(xiàn)代電子技術(shù),?2019,?42(08):?168-170+174.
張常友.?基于樹(shù)莓派和Arduino平臺(tái)的移動(dòng)式家庭服務(wù)機(jī)器人設(shè)計(jì)[J].?山東工業(yè)技術(shù),?2017(09):?222.
Stelian-Emilian Oltean. Mobile Robot Platform with Arduino Uno and Raspberry Pi for Autonomous Navigation[J]. Procedia Manufacturing,?2019,?32.
陳銳,?楊蘇成,?陳敏聰,?等.?基于樹(shù)莓派的環(huán)境監(jiān)控小車(chē)設(shè)計(jì)與實(shí)現(xiàn)[J].?電子測(cè)量技術(shù),?2019,?42(08):?123-126.
凡佳輝,?劉冉,?韓飛,?等.?基于樹(shù)莓派的智能機(jī)器人控制研究[J].?信息技術(shù)與信息化,?2018(04):?142-144.
戴文翔,?孫智勇.?基于樹(shù)莓派的紅外避障小車(chē)[J].?數(shù)字技術(shù)與應(yīng)用,?2018,?36(01):?89-90.