盧健之,趙 奕,趙塏杰,楊澤平
(華東理工大學(xué) 信息科學(xué)與工程學(xué)院,上海 200237)
21世紀(jì)以來,國內(nèi)外對機(jī)器人技術(shù)的發(fā)展越來越重視。機(jī)器人技術(shù)被認(rèn)為是對未來新興產(chǎn)業(yè)發(fā)展具有重要意義的高技術(shù)之一。機(jī)器人在醫(yī)療服務(wù)、野外勘測、深空深海探測、家庭服務(wù)和智能交通等領(lǐng)域都有廣泛的應(yīng)用前景。在這些領(lǐng)域,機(jī)器人需要在動態(tài)、未知、非結(jié)構(gòu)化的復(fù)雜環(huán)境中完成不同類型的作業(yè)任務(wù),這就對機(jī)器人的環(huán)境適應(yīng)性、環(huán)境感知、自主控制、人機(jī)交互提出了很高的要求。
本文設(shè)計(jì)的基于樹莓派控制板的六足智能機(jī)器人,通過樹莓派上編寫的Python代碼來控制6條機(jī)械腿,可以實(shí)現(xiàn)前進(jìn)、后退和轉(zhuǎn)向的功能,搭配攝像頭和OpenCV提供的人臉識別庫可以實(shí)現(xiàn)人臉識別功能。使用Web網(wǎng)頁設(shè)計(jì)控制頁面,開啟FLASK服務(wù)器后,聯(lián)網(wǎng)設(shè)備進(jìn)入設(shè)計(jì)好的控制頁面即可實(shí)現(xiàn)機(jī)器人的腿部控制和人臉識別。
該機(jī)器人具有以下創(chuàng)新點(diǎn):
(1)設(shè)備拓展性:機(jī)器人選用樹莓派系統(tǒng),在樹莓派上有著多個GPIO接口,可以拓展豐富的功能。除控制機(jī)器人的移動和攝像外,可以通過添加溫度傳感器、甲醛探測器、紅外線傳感器等,采集豐富的環(huán)境信息,使機(jī)器人達(dá)到真正意義上的智能。
(2)移動方式:區(qū)別于一般的可遙控移動設(shè)備,機(jī)器人采用六足機(jī)械足移動方式。經(jīng)過對移動算法和硬件的優(yōu)化,機(jī)械腿移動具有傳統(tǒng)輪子移動所不具備的優(yōu)勢,如靈活性強(qiáng),能夠適應(yīng)更復(fù)雜的地形環(huán)境,能夠前往更多小車所不能前往的區(qū)域等。
(3)交互方式:通過網(wǎng)頁端與機(jī)器人交互。通過搭建FLASK網(wǎng)站,使在同一局域網(wǎng)下的所有設(shè)備都能夠訪問和控制六足機(jī)器人,不論在手機(jī)還是在平板電腦上,只要輸入IP就能夠看到監(jiān)控的實(shí)時畫面并控制機(jī)器人移動。我們計(jì)劃在之后的研究中,將FLASK架設(shè)到遠(yuǎn)程服務(wù)器中,以突破局域網(wǎng)的局限性,使任意設(shè)備都能通過公網(wǎng)的IP地址來訪問和控制六足機(jī)器人,實(shí)現(xiàn)真正的遠(yuǎn)程監(jiān)控、遠(yuǎn)程遙控。
(4)人臉識別:與傳統(tǒng)的監(jiān)控設(shè)備不同,此智能機(jī)器人具備人臉識別功能,開啟該功能后,能夠?qū)Τ霈F(xiàn)在畫面中的任意人臉進(jìn)行識別,并記錄結(jié)果,真正做到自動監(jiān)管。
本六足機(jī)器人主要具有以下功能:
(1)六足機(jī)械腿移動:通過6條機(jī)械腿,共18個舵機(jī)完成機(jī)器人的移動。
(2)圖像實(shí)時傳輸:通過攝像頭獲取圖像并實(shí)時傳輸?shù)胶蠖恕?/p>
(3)人臉錄入:將圖像中的人臉截取下來,然后存到相應(yīng)的人臉庫中。
(4)人臉識別:使用根據(jù)庫中人臉進(jìn)行訓(xùn)練得到的模型,識別圖像中的人臉,返回識別結(jié)果。
(5)Web交互:提供網(wǎng)頁前端與上述功能進(jìn)行交互。即在網(wǎng)頁中控制機(jī)器人的移動,顯示監(jiān)控圖像、人臉錄入和人臉識別的結(jié)果。
技術(shù)路線如圖1所示。
圖1 六足機(jī)器人的技術(shù)路線
智能六足機(jī)器人的系統(tǒng)功能框架如圖2所示。
圖2 系統(tǒng)功能框架
區(qū)別于一般的可遙控移動設(shè)備,機(jī)器人采用六足移動的方式。機(jī)器人的行走靠舵機(jī)提供動力,而樹莓派控制板可以通過GPIO接口實(shí)現(xiàn)對舵機(jī)的控制,也可以使用連接在樹莓派上的PCA9685舵機(jī)控制板實(shí)現(xiàn)。對于單個電機(jī)而言,可直接使用樹莓派提供的接口,而多個電機(jī)協(xié)同控制時,通常使用PCA9685舵機(jī)控制板,通過控制PWM脈沖寬度調(diào)制信號控制舵機(jī)角度,原理如圖3所示。
圖3 PCA9685原理
PWM是脈沖寬度調(diào)制的縮寫,通過對一系列脈沖的寬度進(jìn)行調(diào)制,等效出所需要的波形(包含形狀以及幅值),對模擬信號電平進(jìn)行數(shù)字編碼,即通過調(diào)節(jié)占空比的變化來調(diào)節(jié)信號、能量等的變化。占空比是指在一個周期內(nèi),信號處于高電平的時間占據(jù)整個信號周期的百分比,例如方波的占空比為50%。
六足步行機(jī)器人的步態(tài)是多樣的,其中三角步態(tài)是六足步行機(jī)器人的典型步態(tài)?!傲憔V”昆蟲步行時,一般不是六足同時直線前進(jìn),而是將三對足分成兩組,以三角形支架結(jié)構(gòu)交替前行。目前,大部分六足機(jī)器人采用了仿昆蟲的結(jié)構(gòu),6條腿分布在身體兩側(cè),身體左側(cè)的前、后足及右側(cè)的中足為一組,右側(cè)的前、后足和左側(cè)的中足為另一組,分別組成2個三角形支架,依靠大腿前后劃動實(shí)現(xiàn)支撐和擺動過程,前驅(qū)步態(tài)圖示如圖4所示,旋轉(zhuǎn)步態(tài)圖示如圖5所示。
圖4 前驅(qū)步態(tài)圖示
圖5 旋轉(zhuǎn)步態(tài)圖示
樹莓派接通攝像頭拍攝圖片,將每張圖片由數(shù)字轉(zhuǎn)換為字節(jié)格式,通過Socket通信發(fā)往PC。PC在接收到圖片信息后,把文字轉(zhuǎn)換為圖片格式,提供給后續(xù)程序使用。開啟網(wǎng)站后,樹莓派持續(xù)通過Socket向PC發(fā)送圖片信息,而樹莓派還需隨時接收PC可能發(fā)送的移動方向信息,所以在樹莓派的程序中使用了雙線程,一邊向PC發(fā)送信息,一邊等待接收PC的信息。兩者之間的通信均需將需要發(fā)送的信息轉(zhuǎn)換成字節(jié)格式,再通過Socket通信發(fā)向?qū)Ψ絀P。接收到信號后,系統(tǒng)將字節(jié)格式轉(zhuǎn)換為原格式。
與傳統(tǒng)的監(jiān)控設(shè)備不同,該機(jī)器人搭載了人臉識別功能,開啟該功能后,能夠?qū)Τ霈F(xiàn)在畫面中的任意人臉進(jìn)行識別,并記錄結(jié)果。通過該功能,能夠做到真正的自動監(jiān)管。人臉識別功能的數(shù)據(jù)流程如圖6所示。在進(jìn)行人臉識別之前,需要先通過攝像頭捕獲圖像,將檢測到的人臉注冊并儲存到人臉數(shù)據(jù)庫中,注冊完成后對庫中的人臉數(shù)據(jù)進(jìn)行訓(xùn)練并儲存訓(xùn)練文件。開啟人臉識別功能后,系統(tǒng)會對檢測到的人臉與訓(xùn)練生成的模型進(jìn)行比對,并返回比對結(jié)果。
圖6 識別流程
人臉檢測算法主要采用人臉Haar特征值算法。如圖7所示,使用Haar特征模板遍歷圖像,并使用積分圖的方法計(jì)算模板中白色矩形遍歷的灰度值的和,減去黑色矩形遍歷的灰度值的和,即為該人臉的Haar特征值。
圖7 Haar特征值模板
人臉識別主要使用LBP算法。如圖8所示的計(jì)算是在一個3×3的正方形上展開,將正方形的中心點(diǎn)作為基點(diǎn),在附近區(qū)域找到所有像素值與其進(jìn)行對比,將對比結(jié)果進(jìn)行量化。接下來需要將這些量化結(jié)果進(jìn)行處理,即根據(jù)不同的位置將這些值進(jìn)行加權(quán)并相加,最后得到的值就是中心點(diǎn)局部二值模式對應(yīng)的值。
圖8 LBP算子
如圖9所示,通過預(yù)處理將人臉圖像分塊,采用LBP算子提取人臉特征并生成直方圖,用以描述人臉。采用局部二值模式提取人臉特征,提取的局部紋理特征十分穩(wěn)定,在很多情況下都擁有不變的特性,有助于分類。
圖9 提取LBP特征
控制網(wǎng)站如圖10所示。網(wǎng)站共分成4個界面,分別是主界面、遠(yuǎn)程遙控界面、人臉識別界面和人臉錄入界面。
圖10 網(wǎng)站界面
主界面:左邊部分顯示攝像頭的實(shí)時監(jiān)控畫面,右邊一欄顯示當(dāng)前視頻流的幀數(shù)、分辨率等信息。
遠(yuǎn)程遙控界面:除左邊顯示的攝像頭畫面外,右邊設(shè)置了方向圓盤,通過點(diǎn)擊圓盤上的按鈕,可以控制機(jī)器人進(jìn)行前進(jìn)、后退、轉(zhuǎn)向和初始化等動作。
人臉識別界面:進(jìn)入人臉識別界面后,如果畫面中未檢測到人臉,網(wǎng)頁將繼續(xù)顯示當(dāng)前攝像頭的畫面;如果畫面中檢測到人臉,網(wǎng)頁會顯示處理后的圖像,即將人臉用藍(lán)色方框框出,并在左下角顯示識別到的人臉的名稱以及識別結(jié)果的置信度。檢測到人臉后,點(diǎn)擊網(wǎng)頁右側(cè)的信息框,信息框中也會顯示人臉的名稱和置信度。
人臉錄入界面:使用者可以通過該界面將自己的臉錄入到人臉數(shù)據(jù)庫中。在右側(cè)欄輸入使用者的ID后,系統(tǒng)開啟人臉檢測,并自動捕獲50張檢測到的人臉圖像,保存到人臉數(shù)據(jù)庫中。捕獲完畢后,系統(tǒng)會自動對人臉庫中的數(shù)據(jù)進(jìn)行訓(xùn)練,并生成訓(xùn)練結(jié)果文件,以待人臉識別程序調(diào)用。
樹莓派3B+控制板作為機(jī)器人的主控板,也是本機(jī)器人設(shè)計(jì)的核心,樹莓派具有強(qiáng)大的性能和豐富的擴(kuò)展接口,其操作系統(tǒng)對于一般應(yīng)用的處理游刃有余,豐富的擴(kuò)展I/O接口可以通過連接各傳感器和舵機(jī)等硬件設(shè)備實(shí)現(xiàn)不同的功能。樹莓派采用Python語言,其簡潔性和擴(kuò)展性十分適合機(jī)器人的功能實(shí)現(xiàn)。采用PCA9685舵機(jī)控制板通過脈沖實(shí)現(xiàn)對舵機(jī)的控制。
模塊接口和系統(tǒng)間接口使用IC協(xié)議進(jìn)行通信。SDA:數(shù)據(jù)線,IC協(xié)議允許在單根數(shù)據(jù)線上進(jìn)行雙向通信,這條線既可以發(fā)送數(shù)據(jù),也可以接收數(shù)據(jù)。SCL:時鐘線,這里所說的“時鐘”的作用就是協(xié)調(diào)硬件之間的傳輸節(jié)奏,做到步伐一致。在IC通信中,當(dāng)時鐘線的電平拉高后,數(shù)據(jù)線的內(nèi)容就不能改變,即SCL為高電平時,不能寫數(shù)據(jù),但可以讀。當(dāng)SCL下降為低電平后,才能向數(shù)據(jù)線(SDA)寫入數(shù)據(jù)。
IC通信以Start信號開始,以Stop信號結(jié)束。
傳送開始信號的方法:拉高SCL和SDA電平,在SCL處于高電平的情況下拉低SDA的電平。
傳送結(jié)束信號的方法:拉高SCL電平,在SCL處于高電平的情況下,拉高SDA的電平。
無論是開始信號還是結(jié)束信號,SCL都處于高電平,由于時鐘線拉高將固定數(shù)據(jù)線上的內(nèi)容,因此在開始和結(jié)束信號中不能傳輸數(shù)據(jù)。在SDA上,開始信號和結(jié)束信號相反,Start時電平拉低,Stop時電平拉高。SCL接PH4,SDA接PH5,VCC接3.3 V,GND接地,V+供電,在驅(qū)動大功率舵機(jī)時可不接,但外接電源的2個端口要接正負(fù)極,否則無法供電。
PC和樹莓派的系統(tǒng)開發(fā)平臺匯總見表1、表2所列。
表1 系統(tǒng)開發(fā)平臺——PC
表2 系統(tǒng)開發(fā)平臺——樹莓派
隨著互聯(lián)網(wǎng)的普及與發(fā)展,萬物聯(lián)網(wǎng)的趨勢越來越明顯,物聯(lián)網(wǎng)給人們生活帶來的便利也越來越多。本文設(shè)計(jì)的機(jī)器人以樹莓派為中心,集行走、圖像傳輸、人臉識別和遠(yuǎn)程遙控等功能于一體;同時,基于樹莓派自身良好的拓展性,通過在機(jī)器人上連接光敏傳感器、紅外傳感器、氣敏傳感器等,也能夠使它成為一個多功能探測機(jī)器人。