?

基于STM32的視覺識別導盲機器人設計

2024-03-14 06:43劉夢禹田志宏
自動化儀表 2024年2期
關鍵詞:導盲盲人藍牙

劉夢禹,田志宏,朱 濤

(1.天津科技大學電子信息與自動化學院,天津 300222;2.天津科技大學人工智能學院,天津 300457)

0 引言

根據世界衛生組織統計,目前世界上約有2.85億名視力障礙人士,其中3 900萬名為盲人。中國目前調查發現存在2 100萬名視力障礙者,其中的23.8%是盲人[1]。視覺障礙群體的不斷擴大,使導盲設施市場的需求快速增長。不僅如此,隨著城市建設的逐步提升,人們的居住環境也在發生著變化,傳統的導盲設備已經無法適應這種變化[2]。因此,導盲機器人應需而生,并且逐漸受到行業的高度關注。

目前,全球各國關于導盲輔助方面的研究工作已經展開,研究重點集中在手杖類行進輔具、穿戴式行進輔具以及移動式行進輔具這3個方面[3]。隨著現代科技的不斷發展,智能機器人逐漸進入人們的生活,并且已經成為盲人生活中的一部分。如何將傳感技術融合到機器人的運動控制中,已成為當今智能機器人技術領域較為關鍵的課題。

為此,本文設計了1種智能化移動式導盲機器人。該設計在實現避障、定位功能的基礎上,縮小了機器人的體積并減少了質量。本文優化傳感器的設計,進一步實現傳感器結構的小型化和輕量化[4]。此外,本文結合日益完善的圖像識別技術,使導盲機器人更加智能化、人性化,以達到幫助盲人真切感知周圍環境的目的。

1 導盲機器人整體方案設計

本文設計的導盲機器人以STM32為主控制器、Jetson Nano為輔助控制器,搭載超聲波、藍牙、全球定位系統(global positioning system,GPS)、攝像頭、蜂鳴器等多種傳感器。該導盲機器人能夠實現以下功能:超聲波傳感器自動避障;藍牙模塊運動控制;GPS定位;攝像頭識別車輛、行人、路肩等;檢測到行人時蜂鳴器報警。

導盲機器人系統框架可具體分為主控模塊、運動控制模塊、避障模塊、定位模塊以及供電模塊。

1.1 工作原理介紹

單片機驅動電機驅動板通過脈沖寬度調制(pulse width modulation,PWM)電路波調壓的方式控制后兩輪電機的速度,通過PWM驅動舵機控制前兩輪的轉向。STM32通過串口與GPS模塊、藍牙模塊進行通信,實現位置信息的獲取。超聲波模塊受STM32的直接控制,對正前方障礙物進行避障分析。輔助控制器Jetson Nano與相機串行接口(camera serial interface,CSI)攝像頭通信獲取前方160°廣角視線范圍信息,進而與內部已采集的車輛、路標、行人等數據進行對比分析。通用同步異步收發器(universal synchronous asynchronous receiver and transceiver,USART)1向STM32發送對應字符串,改變其標志位,從而改變其狀態位,進而控制機器人行進,實現輔助避障。工作原理框架如圖1所示。

圖1 工作原理框架圖

1.2 硬件部分設計

1.2.1 主控電路設計

STM32負責底層運動控制、超聲波傳感器和GPS模塊。Jetson Nano 負責視覺信息處理與分析。2個主控模塊通過串口進行通信。

①STM32介紹。

在主控制器的選擇部分,因為所設計的導盲機器人應用的傳感器類型較多,導致占用串口較多(3個)、輸入/輸出(input/output,I/O)口較少,所以本文選擇STM32單片機。該單片機采用ArmCortex-M3內核[5],為哈佛結構,擁有獨立的指令總線和數據總線,具有功能強大、響應快、低功耗、工作溫度區間寬等優勢,被廣泛應用于機器人運動控制。

②Jetson Nano介紹。

Jetson Nano A02是一款開源硬件,擁有計算統一裝置架構(computer unified device architecture,CUDA)核心、128-coreMaxwell圖形處理器(graphics processing unit,GPU)、4 GB大容量內存、5 W低功耗。相較于Raspberry Pi或其他人工智能(artifical intelligence,AI)邊緣計算單元,Jetson Nano A02的圖像處理能力強、功耗低、性價比高[6]。很多算法可因此獲得實時性能。因此,本文將Jetson Nano A02作為視覺識別部分的主控。Jetson Nano接口如圖2所示。

圖2 Jetson Nano接口

1.2.2 運動控制設計

導盲機器人運動控制設計采用伺服驅動系統。其中,TBSK20舵機直接以PWM電路波調壓的方式接收STM32信號,從而控制前兩輪轉向,以決定機器人的行進方向。TB6612驅動板同時驅動2個直流電機來控制后輪,并運用PWM技術改變占空比來控制電機轉速,進而控制機器人的行進速度。

首先,與傳統的差速系統相比,伺服驅動系統可使機器人電機動力直接轉換為驅動力。轉向機構則由獨立舵機控制。其結構更加簡單、緊湊,控制效率和穩定性更高。其次,以軟件為主導的動力系統可以根據軟件定義不同的方式或系統的工作條件進行調整,因而操作難度更低、更智能。同時,輪胎與配件損耗較小,可滿足長時間穩定運行的應用需求,在柔性控制方面有很大的優勢。舵機接口如圖3所示。

圖3 舵機接口

1.2.3 避障模塊設計

導盲機器人搭載了超聲波傳感器和視覺傳感器。兩者均可獨立實現避障功能。

超聲波傳感器選用HC-SR04模塊,測距精度為3 mm,可提供2~400 cm的非接觸式距離感測功能。該超聲波傳感器的測距原理是依據超聲波在空氣中傳播的速度,通過計算源聲波發送時刻和回波信號接收時刻的時間間隔來獲取障礙物的距離信息[7]。

(1)

式中:h為測試距離;t為高電平時間;v為聲速,為340 m/s。

視覺傳感器采用Jetson Nano NX AI高清攝像頭。該攝像頭具有160°對焦視場廣角,感光芯片為索尼IMX219。相較于柔性印制電路板(flexible printed circuit,FPC)標準攝像頭系列,Jetson Nano NX AI的視角更廣闊、靈敏度更高、掃描效率更快,非常適合圖像數據采集和信息處理。

Jetson Nano和STM32之間包含串口通信、串行外設接口(serial peripheral interface,SPI)通信、集成電路總線(inter-integrated circuit,I2C)通信等多種通信方式。本文選擇使用USART1進行通信。通信過程如下。首先,Jetson Nano與STM32的TX端與RX端通過晶體管-晶體管邏輯(transistor transistor logic,TTL)電平模塊交叉連接。然后,相同的串口通信參數和協議得以確定,如串口波特率均為115 200 bit/s、字長為8 B的數據格式和1個停止位以及無奇偶校驗位等。最后,串口通信程序得以編號,例如在STM32中調用USART_SendString、USART_SendArray等函數、Jetson Nano中調用Python的Pyserial庫。當Jetson Nano識別到指定物體時,采集到的圖像數據將編碼為JPEG格式發送給STM32。STM32接收指令,控制機器人行進,并輔助避障。

1.2.4 GPS模塊設計

GPS定位模塊使用中科微電子的ATGM336H。ATGM336H通道數目為32,冷啟動捕獲靈敏度為-148 dBm,跟蹤靈敏度為-162 dBm,定位精度為2.5 m(即GPS定位在2.5 m精度的概率為50%),支持北斗衛星導航系統(Beidou navigation satellite system,BDS)/GPS/格洛納斯全球衛星導航系統(glonass global navigation satellite system,GLONASS)的單系統定位[8],以及任意組合的多系統聯合定位的接收機模塊。ATGM336H可以直接替換U-blox的MAX系列多款GPS模塊,主要接口信號Pin-Pin兼容,安裝孔一致,功耗低,內置天線檢測電路,具有天線短路保護功能。

1.2.5 供電模塊設計

因為驅動模塊較多,所以機器人采用兩部分電源分別給STM32和Jetson Nano供電。機器人采用3節12 V/1 500 mA電源給STM32供電,并采用另外3節相同電源,利用AMS1117 5.0正向低壓降穩壓器向Jetson Nano 供電。經測試,當開啟所有功能后,蓄電時長可達2 h。

1.3 軟件部分設計

1.3.1 底層架構部分

底層架構部分軟件流程如圖4所示。

圖4 軟件流程圖

機器人主控制器STM32以KeilμVision5為編譯環境、C語言為編譯語言,用于實現機器人多個功能的綜合控制,在不同的操作觸發下調用不同程序來實現相應功能。這些功能主要包括電機控制程序、舵機控制程序、超聲波測距程序、GPS定位程序和藍牙串口通信程序。通過整合上述各子程序,完成系統的流暢運行。主要代碼如下。

int main(void)

{

u8 car_status = 0;

u16 car_speed_flag = 0;

u8 car_angle_flag = 0;

u8 car_avoidance_flag = 0;

u16 dcsr04_distance = 0;

USART1_Init(115200);

USART2_Config(9600);

USART3_Config(9600);

HCSR04_Init();

MOTOR_Init();

Stop();

……}

1.3.2 圖像識別——模型訓練算法

本文針對目標識別方面使用到的程序為經過AlexeyAB改良過的darknet框架下的你只看一次(you only look once,YOLO)v3算法。該算法在實時目標檢測領域中擁有較強的性能,能夠契合Jetson Nano的算力。該算法在Jetson Nano中實時運行時可以達到較高的檢測速率,能夠應對日常生活中90%的場景[9]。圖像解析流程如圖5所示。

圖5 解析流程圖

YOLO v3算法已經提供了圖像識別的權重。YOLO v3算法采用分而治之的方法,將圖片劃分成單元格進行識別。在接收圖片后,YOLO v3算法根據圖像的尺寸進行尺寸解析。解析后的數據與訓練數據進行比較[10]。本文將系統的串口權限設為上電默認打開,將圖像的實時解析腳本放在開機啟動項中。系統上電后,自動運行檢測腳本:在未識別到障礙物時,向串口發送數據;在識別到障礙物時,將障礙物的信息通過串口的方式發送給機器人端。

在部署Jetson Nano之前,可以使用更高算力的設備來進行訓練。比如,可先在個人計算機(Windows平臺)中采用由德國卡爾斯魯厄理工學院(Karlsruher Insttut für Technoogie,KIT)聯合豐田工業大學芝加哥分校(Toyota Technological Institute at Chicago,TTIC)發布的KITTI數據集進行訓練。模型使用Windows訓練平臺,具體參數如下。中央處理器(central processing unit,CPU)為AMD Ryzen 9 4900H。圖形處理器(graphics pracessing unit,GPU)為NVIDIA GeForce RTX 2060。存儲空間為10 GB硬盤,包括OpenCV軟件庫和CUD NN網絡庫。所使用的數據集為KITTI-road。步驟可分為數據處理、訓練、使用與部署。

2 試驗測試與結果

機器人主控STM32通過串口與藍牙模塊HC-06進行通信,可通過移動端藍牙調試助手應用(application,APP)測試其運動控制功能與定位功能。藍牙軟件配置過程如下:首先開啟藍牙權限,在“設備連接”功能欄中搜索“HC-06”并成功連接;然后在“按鈕控制”功能欄打開編輯模式,分別將數據b、e、d、a、c發送到“OK”“RIGHT”“LEFT”“UP”“DOWN”按鈕;最后退出編輯模式,便可通過藍牙控制機器人運動。當處于室外時,進行GPS定位功能測試,在頁面頂端或“對話模式”功能欄獲取經緯度信息。經10次測試,捕獲延遲時間平均為3 s。

超聲波模塊測距測試中,利用Timer定時器的PWM輸出、輸入捕獲功能提高超聲波測距精度。多次測試結果表明,超聲波模塊4 m內測距相對誤差為4 cm。在完成測距模塊檢測后,進一步測試其避障功能。在機器人正前方設置1個長方體木箱(20 cm×20 cm×40 cm)作為障礙物,點擊“UP”按鈕之后不進行任何人為控制操作。當機器人與木箱距離約為15 cm時,舵機控制機器人右轉彎。試驗結果驗證了避障功能的有效性。圖像識別測試可以在Windows訓練平臺上通過使用指令darknet.exe detector map cfg/xxx1.data cfg/xxx2.cfg backup/xxx.weights計算backup路徑下權重文件的mAP(全類平均精度)值,進而查看訓練的效果。若對圖片進行測試,則輸入指令darknet.exe detector test cfg/xxx.data cfg/xxx.cfg xxx.weights xxx.jpg。若對視頻進行測試,則輸入指令darknet.exe detector demo cfg/xxx.data cfg/xxx.cfg xxx.weights。通過darknet程序的統計計算,在預設的7種基礎分類中,路肩、車道、立柱、汽車這4種分類的平均準確率為90%。而交通標識、人、樹由于樣本數量不足(人工標識數量不夠)的原因導致準確率僅為80%[11]。識別分類評價指標結果如表1所示。

表1 識別分類評價指標結果

模型的交并比(intersection over union,IoU)指標表示該模型對對應目標預測的檢測框的準確程度,即模型建立的檢測框是否在準確的位置上。一般認為IoU值大于50%即為正確的檢測框。在本文模型中,該指標平均值為68.07%。此外,模型在IoU閾值規定為0.5時,mAP為88.33%[12]。分析結果顯示,對于YOLO置信度閾值為0.25時,準確率為0.88,召回率為0.87,綜合評判指標F1-score為0.88。

3 機器人創新點

本文所設計的基于STM32的導盲機器人具有以下創新點。

①本設計添加了GPS定位功能,盲人家屬可以隨時查看盲人的位置信息。

②本設計搭載Jetson Nano AI邊緣計算單元,配合Jetson Nano NX AI高清攝像頭,可實現識別包括路肩、車道、立柱、汽車、交通標識、人、樹在內的7類圖像,高效保障盲人出行安全。

③本設計當攝像頭識別圖像并判斷為行人時,蜂鳴器會發出警報,輔助盲人提高警惕。

④本設計電源模塊采用2塊電池分別向STM32與Jetson Nano供電,避免了因供電不足而導致傳感器失效的問題,提高了導盲機器人蓄電時長,可以實現盲人在社區及附近地區實行必要的生活行為。

4 結論

本文采用YOLO v3識別算法,設計了具有視覺識別功能的導盲機器人。試驗結果表明,機器人運動控制靈活、定位延遲低、視覺識別精準。本文設計能夠實現輔助盲人出行并提高其出行安全系數的功能,具有低功耗、易攜帶的優勢。該設計可廣泛應用于盲人所在社區及附近場所、盲人學校、盲人機構等地。

猜你喜歡
導盲盲人藍牙
盲人取襪
基于云端技術的多功能導盲手杖的設計與實現
藍牙音箱的直線之美
基于物聯網的導盲機器犬的研究與設計
隨聲附和的盲人
路口導盲及馬路障礙物檢測提醒系統的設計
自首的盲人
簡單、易用,可玩性強Q AcousticsBT3藍牙音箱
智能導盲
適合自己的才是最好的 德生(TECSUN) BT-50藍牙耳機放大器
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合