陶筱云 張煒瑋 劉潤揚(yáng) 胡宇航
摘要:為解決老年人日常獨(dú)居在家的護(hù)理問題,緩解社會養(yǎng)老壓力,解放年輕生產(chǎn)力,需要一款能定時為處在指定地點(diǎn)的老人提供日常藥品或日常生活用品的智能家居?;赟TM32單片機(jī),結(jié)合OPENMV智能攝像頭模塊和Apriltag識別的算法在小車定位方面研究較少,但較傳統(tǒng)GPS或傳感器定位精度更高,較SLAM算法操作更加簡便,結(jié)合藍(lán)牙APP能實(shí)現(xiàn)老年人日常居家所需的簡單護(hù)理操作。本設(shè)計主要討論智能小車基于Apriltag識別算法下尋找指令中固定目標(biāo)或目標(biāo)地點(diǎn)的功能,在老年人居家養(yǎng)老方面具有重大意義。
關(guān)鍵詞:OPENMV;AprilTag;智能小車
0 引言
所謂“生老病死”是人生常態(tài),人到老年難免會面臨行動力衰退、記憶力下降、病痛纏身等困擾,大多數(shù)老年人都需要長期服藥用以緩解病痛或維持身體機(jī)能。且現(xiàn)今社會壓力較大,年輕人大多在外務(wù)工,老年人獨(dú)居在家不僅提高了護(hù)理難度,還加大了社會養(yǎng)老壓力。
本設(shè)計希望能夠解決老年人行動不便、記憶力衰退帶來的忘記定時吃藥的問題,結(jié)合OPENMV攝像頭模塊和Apriltag識別,利用OPENMV自帶的智能算法與Apriltag類二維碼存儲量大、編碼范圍廣、容錯性高的特點(diǎn)及二維碼編碼的獨(dú)一性,可以實(shí)現(xiàn)準(zhǔn)確性較高的固定目標(biāo)識別。操作和設(shè)計簡單,在一般戶型下可以實(shí)現(xiàn)較高準(zhǔn)確性尋找到準(zhǔn)確目標(biāo)。
1 系統(tǒng)整體設(shè)計
利用STM32F103RC單片機(jī)主控結(jié)合硬件設(shè)計,提高測算速度和精度。利用Apriltag自帶的算法實(shí)現(xiàn)小車對于固定目標(biāo)的“定位”功能,即可以輸出小車距離目標(biāo)地點(diǎn)處標(biāo)記二維碼中心的位置參量和角度參量;結(jié)合OPENMV攝像頭模塊,可實(shí)現(xiàn)對不同Apriltag的識別,實(shí)現(xiàn)小車尋找到固定目標(biāo)的功能。得到OPENMV 模塊輸出的參量后,通過串口,使主控STM32F103RC單片機(jī)和控制小車基本行進(jìn)的STC89C52RC單片機(jī)通信,加以條件判斷,即可實(shí)現(xiàn)小車在一般家庭戶型中自由行走,實(shí)現(xiàn)智能小車尋找固定目標(biāo)的功能。
2.AprilTag介紹
AprilTag是一個視覺基準(zhǔn)庫,近年來在AR、機(jī)器人、相機(jī)校準(zhǔn)等領(lǐng)域被廣泛應(yīng)用。共有六個種類,也稱六個家族:TAG16H5,TAG25H7,TAG25H9,TAG36H10,TAG36H11,ARTOOLKIT每個家族含至少30個id,至多2320個id,但家族內(nèi)包含id數(shù)量越多,AprilTag識別的準(zhǔn)確率就越高,通過選擇不同家族,可滿足對不同數(shù)量的編碼。可以通過網(wǎng)絡(luò)下載或OPENMV的IDE軟件隨機(jī)生成的方法獲得指定數(shù)量的AprilTag。
其檢測的方法主要是識別一四邊形區(qū)域,這一塊區(qū)域較周圍區(qū)域亮度更暗,通過其內(nèi)部亮塊的不同組合方式,識別到特定id。因此,黑色AprilTag較其他顏色識別準(zhǔn)確率更高。通過其內(nèi)置算法,用戶可以得到角度,3D坐標(biāo)值等數(shù)據(jù)。本設(shè)計主要使用的是TAG36H11,也是應(yīng)用最廣泛的一個家族。
3.智能小車尋找固定目標(biāo)方法設(shè)計
小車的智能控制軟件系統(tǒng)主要包括:STM32主控部分、OPENMV攝像頭視覺識別部分、小車行進(jìn)控制部分。其中STM32主控部分主要負(fù)責(zé)數(shù)據(jù)的收發(fā)和分析處理數(shù)據(jù);OPENMV攝像頭視覺識別部分主要負(fù)責(zé)AprilTag的識別和方向角度、3D位置的計算;52單片機(jī)電機(jī)驅(qū)動部分主要負(fù)責(zé)左右轉(zhuǎn)向輪的控制。
3.1OPENMV攝像頭視覺識別部分
通過OPENMV對AprilTag識別后可得到六個變量,分別為xyz坐標(biāo)軸的三個變量,以及xyz坐標(biāo)軸上的三個偏量,即三個位置參量,三個角度參量。使用者可以通過MicroPython語言進(jìn)行編程,輸出所需變量,減少程序計算量,提高響應(yīng)速率,也減少錯誤的產(chǎn)生。
嘗試兩種方法:
(1)將AprilTag置于識別地點(diǎn)門框或墻面低處;
將AprilTag置于識別地點(diǎn)的門框或者墻面低處,openmv攝像頭與AprilTag距離更近,識別精度較高,但無法精確控制小車車身朝向,可能在小車自主避障之后出現(xiàn)行進(jìn)方向的偏差,目標(biāo)地點(diǎn)丟失等問題。
程序設(shè)計AprilTag通過串口發(fā)送id碼,yz坐標(biāo)到主控芯片。
(2)將AprilTag置于識別地點(diǎn)中心天花板;
將AprilTag置于識別地點(diǎn)中心的天花板上,可以通過AprilTag發(fā)送的角度參量對車身朝向和小車行進(jìn)方向進(jìn)行調(diào)整,尋找固定目標(biāo)更加快速。但由于OPENMV攝像頭自身像素限制,屋頂過高可能出現(xiàn)識別不精確或難以識別的問題,但減小了AprilTag計算出的三維距離與實(shí)際距離存在誤差對小車找到固定目標(biāo)的影響。
程序設(shè)計AprilTag通過串口發(fā)送id碼,yz坐標(biāo)和三個角度參量到主控芯片。
OPENMV發(fā)出的參量與實(shí)際兩會有2-3厘米的誤差,將通過主控芯片,利用條件判斷控制合適的余量,盡量消除誤差帶來的影響。
3.2STM32主控部分
小車主開關(guān)閉合后,小車及其他附屬部分上電,將自主進(jìn)行定時器中斷初始化,并向52單片機(jī)傳送原地待定指令。然后打開與OPENMV的異步通信串口,接收OPENMV視覺系統(tǒng)掃描并計算得出的數(shù)據(jù),接收到數(shù)組中;同時打開接收語音識別指令和藍(lán)牙app指令的串口,接收到的指令為預(yù)先在程序內(nèi)設(shè)置好的固定地點(diǎn)數(shù)字代碼,主控芯片將把數(shù)字代碼與OPENMV傳來的AprilTag的id進(jìn)行匹配,若匹配成功,則將出數(shù)據(jù)存儲到數(shù)組內(nèi),供后續(xù)條件判斷,小車電機(jī)驅(qū)動使用;反之,匹配不成功,則輸出“error”,系統(tǒng)不進(jìn)行后續(xù)的運(yùn)算。
一般家庭門寬為80厘米至100厘米,為保證小車轉(zhuǎn)向距離足夠,且AprilTag傳出數(shù)據(jù)存在誤差,主控芯片接收到AprilTag傳來的參量(即小車當(dāng)前所處位置與目標(biāo)地點(diǎn)的距離)后,進(jìn)行相應(yīng)的條件判斷,同樣也分為兩種方法:
(1)若AprilTag置于識別地點(diǎn)門框或墻面低處,Z軸對應(yīng)值(即小車與目標(biāo)正前方直線距離)大于50厘米,主控芯片向52單片機(jī)發(fā)送前進(jìn)指令;反之小于50厘米,向52單片機(jī)發(fā)送停止指令。Y軸對應(yīng)值(即小車與目標(biāo)中心左右距離的差距)為正數(shù),則小車向右轉(zhuǎn)90°后向前行進(jìn)該值-10的距離;若對應(yīng)值為負(fù)數(shù),則小車向左轉(zhuǎn)九十°后向前行進(jìn)該值-10的距離。
(2)若AprilTag置于識別地點(diǎn)中心天花板,Y軸對應(yīng)值(即小車與目標(biāo)正前方直線距離)大于10厘米,主控芯片向52單片機(jī)發(fā)送前進(jìn)指令;反之小于10厘米,向52單片機(jī)發(fā)送停止指令。X軸對應(yīng)值(即小車與目標(biāo)中心左右距離的差距)為正數(shù),則小車向右轉(zhuǎn)90°后向前行進(jìn)該值-10的距離;若對應(yīng)值為負(fù)數(shù),則小車向左轉(zhuǎn)90°后向前行進(jìn)該值-10的距離。流程圖如圖1所示。
3.3小車行進(jìn)控制部分
小車的避障方案選擇中斷的方式,無論將APRILTAG置于天花板還是低處墻面均可使用。利用紅外傳感器,結(jié)合紅外測距算法,檢測到小車車頭前方15厘米處有障礙物后,52單片機(jī)控制左電機(jī)驅(qū)動左輪向右旋轉(zhuǎn)90°,再次利用紅外傳感器判斷前方20厘米內(nèi)是否存在障礙物,若前方無障礙物,則前進(jìn)20厘米,再驅(qū)動右輪向左旋轉(zhuǎn)90°回到正確方向;若前方存在障礙物,則再次驅(qū)動左電機(jī),控制小車向右旋轉(zhuǎn)180°,后前進(jìn)20厘米,再驅(qū)動左輪向右旋轉(zhuǎn)90°回到正確方向。最后重新識別到AprilTag,重復(fù)主控芯片的指令。
4 結(jié)論
利用OPENMV攝像頭模塊與Apriltag,結(jié)合現(xiàn)有資料,進(jìn)行程序編寫。Apriltag二維碼放置的位置對攝像頭識別準(zhǔn)確性及距離測算的精度有較大影響,受限于攝像頭自身像素和Apriltag的大小及清晰度,當(dāng)Apriltag置于識別地點(diǎn)門框或墻面低處時,識別準(zhǔn)確度及距離測算精度都較高,但由于小車避障部分依靠紅外攝像頭和簡單程序編寫,在其完成避障操作的過程中可能會出現(xiàn)車身無法回正而丟失固定目標(biāo)或在空地較小的地方卡住的情況。當(dāng)Apriltag置于識別地點(diǎn)中心時,由于小車自身高度較矮,與正常家庭天花板距離為1.5米至2.5米,因此識別準(zhǔn)確度及距離測算精度較前一種方法更低,可以提高Apriltag的清晰度或適量放大來減小誤差;相較于前一中方法,將Apriltag置于識別地點(diǎn)中心可以通過發(fā)送角度參量來確定車身是否朝正,有利于車身在避障操作后回正,減小了丟失目標(biāo)的可能性。
參考文獻(xiàn):
[1]夏勝杰,楊昊,艾偉清.基于Arduino單片機(jī)和OpenMV的顏色目標(biāo)定位與跟蹤小車的設(shè)計與實(shí)現(xiàn)[J].常熟理工學(xué)院學(xué)報,2021,35(05):59-64.
[2]姚志強(qiáng),趙恩銘,楊松,楊燕婷,劉光宇,周豹,王辰,朱曉棟.基于OpenMV的目標(biāo)方位追蹤算法[J].牡丹江師范學(xué)院學(xué)報(自然科學(xué)版),2021(03):14-18.
[3]史勇民,樓順天,安盼盼.基于視覺的傳感器位置記憶追蹤方法[J].應(yīng)用光學(xué),2021,42(05):853-858.
基金項(xiàng)目:國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項(xiàng)目“康護(hù)智能小車”(項(xiàng)目號:202110066005)
作者簡介:陶筱云(2000-),女,本科生,測控技術(shù)與儀器專業(yè)。