楊 軍
(四川師范大學(xué),成都610101)
隨著科學(xué)技術(shù)的快速發(fā)展,機(jī)器人已經(jīng)漸漸步入人們的實(shí)際生活之中,本設(shè)計所研究的遙控搬運(yùn)機(jī)器人是眾多機(jī)器人中的一種。搬運(yùn)機(jī)器人主要代替人完成物體的夾取、運(yùn)輸、擺放工作,可工作于人類無法進(jìn)入或?qū)θ梭w有害的工作環(huán)境。傳統(tǒng)搬運(yùn)機(jī)器人多采用無線電或者紅外的方式來進(jìn)行遙控,這種機(jī)器人操控范圍較小,并且需要特定的控制器。本設(shè)計主要研究基于WiFi網(wǎng)絡(luò)的無線遙控搬運(yùn)機(jī)器人,利用WiFi網(wǎng)絡(luò)可以實(shí)現(xiàn)實(shí)時視頻圖像采集,以及機(jī)器人上的傳感器數(shù)據(jù)采集。采用WiFi網(wǎng)絡(luò)通信使得控制端多樣化,可用手機(jī)、電腦等具備WiFi功能的設(shè)備進(jìn)行控制。此外,還可將機(jī)器人接入Internet來實(shí)現(xiàn)更遠(yuǎn)距離的控制。
本設(shè)計服務(wù)器端采用移植了Linux操作系統(tǒng)的S3C6410,通過完成底層驅(qū)動的移植和編寫,實(shí)現(xiàn)對硬件的控制,其次移植了MJPGstreamer服務(wù)器和BOA服務(wù)器等實(shí)現(xiàn)圖像數(shù)據(jù)、控制信息的傳輸[1]??蛻舳朔矫娣謩e編寫了WEB版和Android版應(yīng)用程序。系統(tǒng)功能框圖如圖1所示。
圖1 系統(tǒng)功能框圖
(1)MCU
本設(shè)計的主控器采用友善之臂公司的一款核心板,其主芯片S3C6410是三星公司基于ARM1176JZF-S核設(shè)計的嵌入式處理器。該核心板配置了256 MB DDR RAM,并且主頻為533 MHz,最高主頻可以達(dá)到667 MHz。通過將Linux操作系統(tǒng)移植到該核心板上來完成對硬件的管理與客戶端提供數(shù)據(jù)交換,響應(yīng)客戶端的命令控制。
(2)伺服電機(jī)
采用的伺服電機(jī)為微型伺服馬達(dá)(又稱作舵機(jī)),主要應(yīng)用于模型的動作控制,通過脈寬調(diào)制可以對其進(jìn)行比較精確的控制。本設(shè)計采用TOROBOT公司生產(chǎn)的TR213舵機(jī),其動態(tài)扭矩可以達(dá)到13 kg·cm,轉(zhuǎn)角范圍為180°,控制精度達(dá)到0.5°,工作電壓為4.8~7.2 V,其性能能夠滿足本設(shè)計的基本要求,所以選用兩個TR213配合夾持器完成物體的夾持工作。
(3)直流電機(jī)
直流電機(jī)用于控制機(jī)器人移動,本設(shè)計采用帶齒輪箱的直流電機(jī),其減速比為1:120,工作電壓為3~12 V左右,7.2 V電壓下轉(zhuǎn)速達(dá)120 r/min,4個直流電機(jī)配合車體,最大負(fù)載可達(dá)到2 kg。
(4)WiFi網(wǎng)卡
無線網(wǎng)卡采用USB接口的必聯(lián)(B-LINK)BL-LW05-AR5無線網(wǎng)卡,其主芯片為RTL8188,并且外置了5 DBI的高增益天線,傳輸速度最高可達(dá)150 Mbps,實(shí)際傳輸距離較遠(yuǎn),并且支持AP模式。本設(shè)計通過移植該網(wǎng)卡的驅(qū)動、Hostapd以及DHCP讓機(jī)器人作為AP熱點(diǎn)供無線設(shè)備進(jìn)行連接控制。
(5)攝像頭
攝像頭采用中星微ZC301P,USB接口,像素高達(dá)130萬,擁有6 mm的五玻鏡頭,62°視角,并且具有自動亮度、自動白平衡、伽馬校正功能。本設(shè)計中使用這款攝像頭來完成機(jī)器人前方視頻數(shù)據(jù)采集。
(6)壓力傳感器
為了采集機(jī)器人夾持器的壓力數(shù)據(jù),本設(shè)計采用了FSR402薄膜壓力傳感器。該傳感器受力后會導(dǎo)致電阻變小,根據(jù)電阻值的變化可以得到壓力的變化,其允許的壓力范圍為100 g~10 kg,并且傳感器受力區(qū)域的直徑達(dá)1.27 cm。
(7)直流電源
為了完成物體的夾持、搬運(yùn)、擺放工作,機(jī)器人帶有4路直流電機(jī)、2路伺服電機(jī),耗電量較大,且負(fù)載時電流較大。為了使其能穩(wěn)定正常工作,本設(shè)計選用了一款15C的航模電池,其容量為1 300 m Ah,標(biāo)稱電壓為7.4 V,充滿電壓為8.4 V,最大電流可達(dá)16 A,配以LM338穩(wěn)壓器可以穩(wěn)定地提供5 A/5 V直流電源。
服務(wù)器端功能框圖如圖2所示。
圖2 服務(wù)器端功能框圖
核心板采用友善之臂公司提供的TINY6410,此核心板已提供Bootloader、Linux操作系統(tǒng)和文件系統(tǒng)。使用時只需要根據(jù)實(shí)際的需要裁減Linux系統(tǒng)即可,本設(shè)計采用的Linux內(nèi)核版本為Linux2.6.38,編譯平臺為Ubuntu12.04,交叉編譯器為arm-linux-gcc-4.5.1。
(1)直流電機(jī)驅(qū)動
由于S3C6410只帶有兩路PWM輸出,而夾持器部分需要兩路PWM脈寬調(diào)制控制伺服舵機(jī),因此直流電機(jī)部分采用定時器2來模擬PWM調(diào)制。設(shè)置定時器2每100 ms進(jìn)一次中斷,在定時器中進(jìn)行1~100計數(shù),因此PWM周期為10 s,并有100個脈寬比可調(diào),滿足直流電機(jī)調(diào)速控制。
(2)伺服電機(jī)驅(qū)動
伺服電機(jī)需要采用脈寬調(diào)制,通過調(diào)節(jié)20 ms周期內(nèi)的占空比可以指定伺服電機(jī)的旋轉(zhuǎn)角度,其對應(yīng)關(guān)系表略——編者注。
由于舵機(jī)的控制要求較高,本設(shè)計采用S3C6410自帶的PWM進(jìn)行控制。設(shè)置PWM0和PWM1的周期為20 ms,通過調(diào)節(jié)PWM0和PWM1的占空比來控制伺服電機(jī)的工作。
(3)攝像頭驅(qū)動
ZC301為免驅(qū)的UVC視頻設(shè)備,為了實(shí)現(xiàn)視頻的采集,需要在編譯內(nèi)核時選擇V4L2支持。
(4)USB WiFi驅(qū)動
本設(shè)計中的USB無線網(wǎng)卡采用RTL8188芯片,為使該設(shè)備能夠正常工作需要進(jìn)行驅(qū)動程序移植。
(5)ADC驅(qū)動
電源電量以及FSR壓力傳感器數(shù)據(jù)測量需要ADC驅(qū)動的支持,由于系統(tǒng)中已含有該驅(qū)動,故只需要在編譯內(nèi)核時選擇上即可。
Hostapd是Linux系統(tǒng)中無線訪問接入點(diǎn)的守護(hù)進(jìn)程。它可以將無線網(wǎng)卡設(shè)置為AP模式,并且支持多種加密方式,提供了設(shè)備接入的身份驗(yàn)證。在實(shí)際的使用期間,需要對其配置文件進(jìn)行相應(yīng)的修改。本設(shè)計中采用Hostapd結(jié)合RTL8188網(wǎng)卡完成AP熱點(diǎn)的搭建。另外,通過配置DHCP的配置文件并啟用該服務(wù)為接入機(jī)器人的WiFi設(shè)備分配IP地址,有效地避免了多個設(shè)備接入時的地址沖突問題。
本設(shè)計選用input_uvc作為輸入組件來使用V4L2從攝像頭獲取圖像數(shù)據(jù),經(jīng)JPEG庫對數(shù)據(jù)進(jìn)行編碼之后,通過選用output_h(yuǎn)ttp作為輸出組件來輸出圖像數(shù)據(jù)。output_h(yuǎn)ttp組件實(shí)現(xiàn)了一個符合HTTP1.0標(biāo)準(zhǔn)的 WEB服務(wù)器,用戶可以使用HTTP協(xié)議獲取視頻信息。
由于MJPGstreamer服務(wù)器只能傳輸視頻信息,而本設(shè)計需要接收客戶端的控制命令并且還需返回機(jī)器人的傳感器數(shù)據(jù),因此需要移植支持CGI應(yīng)用腳本的服務(wù)器。BOA服務(wù)器是一個可運(yùn)行在Unix或Linux下的非常小巧的單任務(wù)WEB服務(wù)器,并且支持CGI腳本,廣泛應(yīng)用于嵌入式領(lǐng)域[4]。本設(shè)計通過編寫CGI腳本來完成服務(wù)器與客戶端的數(shù)據(jù)交換。
服務(wù)程序主要完成機(jī)器人的初始化、讀取電量值并將電量值通過LED進(jìn)行提示,讀取命名管道獲得命令字并將其解析執(zhí)行。主要的流程圖如圖3所示。
圖3 服務(wù)程序流程圖
如圖3所示,本設(shè)計中的服務(wù)程序采用多進(jìn)程程序設(shè)計方式,其子進(jìn)程每60 s采集一次電源電量信息并更新電量指示燈顯示,主進(jìn)程采用阻塞讀的方式讀取命名管道來等待客戶端發(fā)送命令,獲得命令之后對命令進(jìn)行解析,并調(diào)用驅(qū)動程序來執(zhí)行相應(yīng)的命令,從而實(shí)現(xiàn)對機(jī)器人的控制。
Android客戶端軟件流程圖如圖4所示。
圖4 Android應(yīng)用程序流程圖
Android端的應(yīng)用程序采用多線程技術(shù),其中一個子線程每60 s向服務(wù)器發(fā)送一個獲取電量的命令并根據(jù)收到的數(shù)據(jù)進(jìn)行顯示更新,另一個線程根據(jù)MJPEG協(xié)議來解析出圖像數(shù)據(jù)并更新顯示。主線程主要完成用戶操控事件的監(jiān)聽,并根據(jù)用戶的實(shí)際操控發(fā)送相應(yīng)的命令給服務(wù)器,并從服務(wù)器獲得機(jī)器人的最新數(shù)據(jù)來實(shí)時更新,其命令的發(fā)送方式采用HTTP協(xié)議中的GET方法。
GET方法是HTTP協(xié)議中定義的多種與服務(wù)器進(jìn)行交互的方法之一,它一般用于獲取/查詢資源信息。該方法請求的數(shù)據(jù)會附在URL之后,并且提交的數(shù)據(jù)最多只能是1024字節(jié),但是本設(shè)計中只需要傳送命令字即可,因此采用GET方法來傳送命令字與獲取機(jī)器人數(shù)據(jù)信息。使用該方法來發(fā)送命令,服務(wù)器端的CGI程序可以在QUERY-STRING環(huán)境變量中非常方便地獲取到客戶端傳送給服務(wù)器的數(shù)據(jù),并且客戶端應(yīng)用程序可以在Http Response中獲得服務(wù)器端返回的數(shù)據(jù)。
MJPEG將服務(wù)器端發(fā)送來的一張張JPEG圖像數(shù)據(jù)發(fā)送給客戶端,客戶端不斷地接收圖像數(shù)據(jù)并顯示更新,即形成了動態(tài)的圖像。獲取視頻圖像數(shù)據(jù)時,客戶端首先發(fā)一個GET方法,如果服務(wù)器接收響應(yīng)則會設(shè)置context type的boundary子屬性來指明,然后服務(wù)器端開始發(fā)送圖片數(shù)據(jù),在數(shù)據(jù)頭部會有圖片類型以及大小信息,其中Content-Length字段指明圖像數(shù)據(jù)的長度,Content-Type字段指明圖像的類型值為image/jpeg。當(dāng)一幀圖像數(shù)據(jù)發(fā)送完畢后,服務(wù)器端將會發(fā)送邊界字符串來表示一幀圖像發(fā)送結(jié)束。
圖5 WEB客戶端流程圖
WEB客戶端程序流程圖如圖5所示。WEB客戶端采用AJAX技術(shù),其功能模塊大體上分為3個部分:第一部分主要是監(jiān)測用戶的操作并采用HTTP GET 34方法來發(fā)送控制命令,然后將服務(wù)器返回的信息更新顯示;第二部分主要為120 s定時發(fā)送,獲取電源電量值的命令,并將獲得的數(shù)據(jù)更新顯示;第三部分獲取圖像數(shù)據(jù)并顯示。
AJAX(Asynchronous Javascript+ XML)即異步JavaScript和XML技術(shù)的簡稱,它可以實(shí)現(xiàn)網(wǎng)頁異步更新。采用該方法來設(shè)計WEB應(yīng)用,可以只對網(wǎng)頁的部分內(nèi)容進(jìn)行更新,而不需要重新對整個頁面進(jìn)行加載。其工作原理如圖6所示。
圖6 AJAX工作原理
本文從硬件選型、硬件電路設(shè)計、系統(tǒng)移植、驅(qū)動程序移植編寫、服務(wù)器搭建、服務(wù)器程序編寫,以及Android客戶端和WEB客戶端應(yīng)用程序編寫方面進(jìn)行了較為詳細(xì)的介紹。最終,用戶能夠通過Android客戶端和WEB客戶端對機(jī)器人進(jìn)行夾持、運(yùn)輸、擺放動作的控制,并且可以實(shí)時地返回機(jī)器人采集到的圖像數(shù)據(jù)和傳感器數(shù)據(jù)。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]郭琦.一種基于ARM的 WiFi無線監(jiān)控系統(tǒng)設(shè)計[J].電子設(shè)計工程,2013,21(4):184-186.
[2]許敏.基于嵌入式Web的校園視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].濟(jì)南:山東建筑大學(xué),2008.
[3]陳書益,黃永慧.開源視頻服務(wù)器軟件MJPG-streamer的研究和應(yīng)用[J].電子設(shè)計工程,2012,3(5).
[4]朱宇.基于ARM的CC1100無線服務(wù)器的設(shè)計與實(shí)現(xiàn)[J].電子設(shè)計工程,2013,21(4):187-189.
[5]楊宗德,鄧玉春.Linux高級程序設(shè)計[M].2版.北京:人民郵電出版社,2009.