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