(西南科技大學 計算機科學與技術學院,四川 綿陽 621010)
我國將很快進入老齡化社會,健康養老的需求推動社會經濟結構,產業結構調整與發展,健康服務技術與該領域的智能制造技術,也迅猛發展起來。我國重視機器人技術研究開發,但國內對于健康服務類機器人研究與開發,還處在起步階段,市場上也鮮有這類的機器人出現;而在國外,此類機器人雖然有一些產品輸出,但從數據上看出,銷量十分稀少,也正在大力研究開發。著力健康服務類機器人技術,與世界各國并跑,是有意義,有前景的事業。
根據資料表明,當今世界約有25個國家大力發展服務型機器人,在國外,已有7種健康服務類型機器人進入半商業化的應用;世界最大的民用機器人開發團隊已經在歐盟啟動,計劃到2020年,在研發家政、護理、運輸和醫療等領域的機器人項目中投入28億歐元。在服務型智能機器人的應用領域內,處于領先地位的有德國、日本、韓國以及美國等。代表性產品有:Care-0-Bot4機器人,由德國生產,是一款能幫助老人獨立生活(報警呼救、取拿飲品、安置桌椅、控制空調等)的看護機器人;日本的一家跨國公司研制的一款機器人,是可以烹飪煎餅的家政服務類機器人;韓國研制的Mahru-Z,這是一款可以打掃房子、加熱食物、輔助洗衣等的女仆機器人。
服務機器人只有準確知道自身的位置、工作空間中障礙物的位置、障礙物的運動情況,才能安全有效地進行自主移動,定位是移動的前提。定位、導航技術,在很多領域都有應用,技術方法也較多,如GPS導航,激光導航,電磁導航,信標、地圖導航等等,健康服務類機器人在室內工作,GPS導航不可靠,電磁、信標導航不方便,探索簡潔,有效的新的技術方法,才自主設計了室內導航視覺傳感器方案。此視覺傳感器是粘貼式的,和健康服務機器人并不是一體,他們之間通過無線傳輸技術進行交互,能夠粘在家庭的天花板上,非常的便捷。
該視覺傳感器主要由STM32F429IGT6、數據傳輸模塊、電源模塊、數據采集模塊(特殊標記圖像和環境地圖)、數據存儲模塊、數據處理模塊、無線通信模塊組成[1]。STM32F429IGT6作為主中央處理器以滿足多功能任務處理;數據采集模塊是基于OV5640圖像傳感器獲取移動體特殊標記的實時圖像和環境地圖,利用圖像處理的方法得到移動體此時準確的位置以及方向,通過無線傳輸模塊能夠把位置方向信息發送給移動體,這樣移動體就能根據接收到的位置信息搭配環境地圖進行移動[2]。系統總體結構框圖如圖1所示。

圖1 系統總體結構框圖
由圖1可知此視覺傳感器的核心是CMOS圖像芯片和高性能的嵌入式MCU處理器,是一個微型系統,此系統具有“眼睛”和“大腦”的能力。CPU和CMOS通過總線直接連接:通過DMA把OV5640采集的數據傳輸到主控制器,這樣訪問控制簡捷,且不占用CPU資源。此導航傳感器外部有大容量內存,方便實現復雜視覺算法。具有各種各樣的通訊接口,擁有強大的通訊能力。本研究設計的健康服務機器人室內導航視覺傳感器性價比高且結構清晰。
此導航視覺傳感器的設計與開發是基于底層芯片,可最大化發揮CMOS芯片的采集能力。針對室內環境光變化大的問題,在設計中研發了室內光自適應模塊,即開放CMOS圖像芯片的曝光時間、亮度、白平衡等控制寄存器,有手動和自動2種方式控制CMOS芯片的控制寄存器,增強了室內導航視覺傳感器對室內光變化的自適應能力,在特殊標記移動體的采集品質上有明顯的提升。
本文設計的導航視覺傳感器有1個顯著的特性:能夠通過調整CMOS芯片的控制寄存器來增強OV5640傳感器室內光自適應能力,解決了室內特殊標記移動體采集時光線強、弱的問題,為后期的圖像處理提供有利的條件。
系統控制器采用STM32系列的32位微控制器STM32F429。它采用ARM32位Cortex?-M4的CPU,具備豐富的外設資源,主要包括3個速度為2.4MSPS的12 位ADC、通用DMA、3個I2C、3個速度高達45Mb/s的SPI、6個速度達11.25Mb/s的USART、定時器有17個,帶有Flash存儲器中實現零等待狀態運行性能的自適應實時加速器[3], MPU,具有豐富的DSP指令集,內置高達1M的Flash和192+4KB的SRAM,主頻高達168MHz。這些使得F4尤其適用于需要浮點運算和DSP處理的應用,也被稱之為:DSC,具有非常廣泛的應用場景。
該視覺傳感器搭配環境地圖能夠實時為服務機器人提供導航服務,因此需要對其提供穩定可靠的電源[4]。電源電路采用蓄電池作為供電電源,經過電源降壓電路轉換為系統可用的5 V以及3.3 V兩路工作電源,系統控制器通過協調實現各模塊的電源供給,實現系統低功耗。LP3878供應穩定的5V輸出、3.3 V電源采取功耗極度低的LTC3631中轉提供。
利用OV5640圖像芯片結合STM32F429IGT6作為本視覺傳感器數據采集模塊。OV5640是一款CMOS類型的數字圖像傳感器,該芯片支持輸出的圖像像素最大可為 500 萬 (2592x1944分辨率),輸出圖像的數據支持使用VGA時序,輸出圖像的數據格式可以為 YUV(422/420)、YCbCr422、RGB565 以及JPEG,與STM32F429IGT6處理器的相機接口匹配。輸出圖像數據的幀率可調范圍是15-60幀。它還可以對采集的圖像進行補償,通過控制寄存器和數據寄存器的讀寫設置對伽瑪曲線、色度、飽和度、白平衡等基礎處理,有自動和手動兩種模式,為室內環境光的變化提供硬件基礎。此攝像頭可以對機器人當前所處室內環境地圖以及特殊標記進行采集。
根據應用需求,本研究選擇數據采集的圖像格式為YUV(422)格式,此格式的圖像傳輸時占用較小的頻寬,Y數據對環境光比較敏感而且圖像處理數據量比較小,能克服室內光線等外界因素的干擾。環境地圖的采集則是采用JPEG格式,此格式可以大大減少圖像數據量,便于處理。
數據存儲電路主要由內部Flash和外部SRAM以及外部 MicroSD 卡三部分組成[5]。內部Flash用于系統內部傳感器的數據存儲,外部SRAM是用來擴展程序運行時需要的內存,MicroSD卡用于采集環境地圖和特殊標記圖像的數據存儲[6]。F429是采用SDIO模式驅動MicroSD卡工作。利用STM32F429IGT6通過SCCB 總線進行控制OV5640的寄存器SIO_C和SIO_D。采集完后OV5640會根據控制寄存器的配置做一些基本的圖像處理,轉換出的數據最終通過Y2-Y9引腳輸出。輸出的數據通過DMA的FIFO模式傳到外部SD卡中,等待進一步的處理。
視覺傳感器與服務機器人之間的交互借助網絡通信技術實現,基于TCP/IP的無線網絡通信。本文WIFI通信模塊主要利用ATK-ESP8266來實現,ATK-ESP8266具有強大的片上處理和存儲能力,通過GPIO口集成傳感器,實現了運行中最少地占用系統資源[7],并且內部包含開關balun、電源管理器,因此需要極少的外部電路。ATK-ESP8266與STM32F429的連接方式如圖2所示。

圖2 ATK-MODULE接口與MCU的連接關系
視覺傳感器軟件設計是在ARM公司的Keil5集成開發環境下采用C語言編寫實現,主要包括串口初始化及DMA初始化、按鍵初始化、初始化系統時鐘、DCMI時鐘以及I2C時鐘、MicroSD卡初始化、OV5640攝像頭GPIO及I2C初始化以及用戶參數配置[8],主程序流程圖如圖3所示。

圖3 主程序流程圖
由圖3可知,此視覺傳感器通過不斷的匹配目的地址,當前地址與目的地址重合時,結束導航,否則根據機器人智能引導路徑繼續行走,直到當前地址與目的地址重合。
數據采集程序由STM32F429IGT6和OV5640圖像傳感器共同完成,在微控制器初始化完成以后[9],可以根據用戶選擇來進行環境地圖采集或者服務機器人位置采集,當進入第2種時,攝像頭每采集完一幀圖像時會進入DCMI_IRQHandler中斷,用來計算幀率以滿足服務機器人定位導航需求。OV5640數據采集流程圖如圖4所示。

圖4 數據采集程序流程圖
由圖4可知,視覺傳感器的數據收集模塊有兩種選擇。一是對環境地圖的采集,此地圖作為輔助型地圖結合導航定位算法對室內機器人進行定位導航;二是對室內機器人當前位置進行采集,OV5640每采集一幀數據,就會進去一次幀中斷,在這個過程中,如果接收到結束導航的指令,就會關閉系統。
控制OV5640涉及到它的很多寄存器,輸出圖像的圖像格式、圖像方向以及分辨率的大小等可以通過設置這些寄存器來控制。部分代碼如圖5所示。對OV5640采用SCCB協議控制,SCCB總線跟I2C十分類似,因此我們直接控制片上I2C外設與它通訊。輸出圖像使用VGA時序,這根控制液晶屏輸入類似,一幀幀輸出,幀內數據從左到右、從上至下,一個像素一個像素輸出。

圖5 CMOS芯片寄存器配置部分代碼
由于本文采集數據都是圖形數據,因此需要擴展外部內存方式進行數據的存取。本文采用SD卡擴展內存,當數據采集開始后,OV5640利用像素數據輸出端口把采集到的像素數據傳到DCMI的數據寄存器,此后DMA會把DCMI的DR寄存器像素數據搬至外部SD內存,微控制器是通過SD_ReadDisk()函數與SD_WriteDisk()函數控制MicroSD卡的讀寫操作。
數據采集存儲完成后,由于本文采集圖像場口為1080p,數據比較大處理比較困難,因為本文使用等比例縮小場口的方法把圖像縮放成320*240圖像,然后再進行后續的處理,原始圖像如圖6所示。
定位導航算法步驟如下:
1)背景分割:由于圖像背景和ROI存在明顯的顏色差異,因此利用OTSU(最大類間方差法)對圖7進行背景分割;

圖6 原始圖像 圖7 輪廓圖
2)對第一步得到的圖像進行行映射,用式1進行行求和,其中erzhihua是保存數據的二維數組,SUM用來保存每行的和;
(1)
3)把SUM中大于等于10的行下標和最開始的1和最后一個1所在的列下標保存,根據下標位置就可以把圖像輪廓圖求出來,如圖7所示。
4)SUM中和最大的那行就是此時移動體橫坐標位置,和最小的代表移動體此時移動方向橫坐標位置,至于縱坐標可以利用開始和結尾為1所在的列數求出中間點的坐標;
5)把直角坐標系分成8個方向,根據步驟④求出的兩個點坐標可以確定移動體的當前位置和移動方向。
數據傳輸軟件設計采用無線通信技術,利用ATK-ESP8266和微控制器來實現。本文ATK-ESP8266配置成串口無線STA(COM-STA)模式,模塊作為無線WIFI STA,用于連接無線網絡,實現微控制器串口與服務機器人數據互傳。數據傳輸流程如圖8所示。

圖8 數據傳輸軟件流程圖
由圖7可知,無線通信模塊通過調用函數ESP-Status wifi_station()連接區域wifi,程序正常運行,連接成功顯示如圖9所示。調用ESP-Send()函數把視覺傳感器即時信息傳給機器人。此過程中指令包和數據包的格式如表1和表2所示。

圖9 WIFI連接成功

表1 指令包格式

表2 數據包格式
本文實驗環境在一間6 m*4 m的房間內,鏡頭場口大小為1080p,視角為70度,自動對焦的情況下對服務機器人進行識別與定位。人為調整機器人位置,利用本文視覺傳感器對其進行定位,并把數據通過專用數據通信總線傳到上位機看其是否與實際一致,所測20組數據如表3所示。數據傳到上位機顯示如圖10~11所示。

表3 測試結果
由表3可知,本文視覺傳感器在對機器人進行定位誤差基本都在±9 mm以內。在抹除通過串口把數據傳到上位機的時間,本視覺傳感器的定位速度達到每秒3次。

圖10 位置信息

圖11 方向信息
健康服務類機器人是移動機器人,主要是室內運動的智能裝備。移動機器人結構創新技術;環境感知測控與定位、導航技術;智能與融合控制技術;無線網絡與通信技術,康復器具與生物機電技術等等,都是需要研究開發的技術領域,都需要青年科技人員創新創業。本文是在健康服務類移動機器人的環境感知測控與定位、導航技術上,做創造性的研究與開發,即研究一種新穎的室內移動機器人的視覺導航技術。依托自主研制的室內導航視覺傳感器(無線、粘貼安裝式),通過對圖像傳感器芯片的底層控制實現室內環境光自適應功能。系統穩定可靠、成本低、功耗低,在室內導航方面有較好的應用前景。