引言
服務機器人作為多種高新技術發展成果的集成,為實現服務的目的,需要通過人性化、簡便、自然的方式進行人機交互,傳統的按鍵式遙控器顯然不能滿足這種設計要求。目前,體感設備發展迅速,各類基于體感控制的裝置層出不窮。體感控制就是通過肢體動作變化來實現
控制,基于體感裝置的人機交互已經成為當前研究的熱門課題。
常見的無線遙控技術不外乎紅外遙控技術和無線電遙控技術。其中紅外遙控技術優點就是帶寬大,但是需要較強的指向性,傳輸距離短,穿透能力差,功耗高;與之相比,無線電遙控技術無方向性,抗干擾能力和穿透能力強,傳輸距離遠,功耗低。因此,無線電遙控技術更加適合于智能家居、消費類電子和機器人控制等領域。
本文以STM32F103C8T6作為主控制器,采用iNEMO慣性導航模塊、nRF24L01無線模塊和12864液晶顯示模塊。設計的嵌入式體感遙控器具有體積小、操作簡單、可靠性高、可擴展性強等優點,能夠較好地滿足對服務機器人可靠遙控的要求,具有較大的應用推廣價值。
1 系統功能要求及整體架構
1.1 基本功能要求
①具備實時準確發送相應控制指令的能力。根據手部姿態確定指令的內容。
②具備接收機器人本體回傳數據包的能力。根據接收的數據包進行解析,進而判斷本體接收的控制指令是否正確。
③具備當前指令和機器人當前狀態信息的顯示能力。一方面將發送的控制指令在LCD液晶屏上予以顯示;另一方面根據機器人本體回傳的數據包,解析得出機器人的狀態,在LCD液晶屏上進行顯示。
④具備電池電量檢測和低壓報警功能。將剩余電量實時地顯示在LCD液晶屏上,當電量不足時,通過蜂鳴器進行報警提示。
1.2 系統整體方案及架構
iNEMO慣性導航模塊的基本原理如圖1所示,利用MEMS傳感器和主控芯片STM32F103RET7提供動靜態方向和慣性測量功能。集成雙軸滾轉-俯仰陀螺儀(LPR430AL)、單軸偏航陀螺儀(LY330ALH)、6軸地磁測量模塊(LSM303DLH)、壓力傳感器(LPS001DL)和溫度傳感器(STLM75)5個意法半導體公司的傳感器,運行一個AHRS姿態角運算系統,從而實現對姿態角的實時測量。
本遙控器采用ST公司具有Cortex-M3內核的ARM控制器STM32F103C8T6作為主控制器,采用ST公司的iNEMO慣性導航模塊進行手部姿態檢測,采用nRF24L01無線模塊實現指令的發送和數據的接收,采用12864液晶顯示模塊對當前控制指令、機器人當前狀態和剩余電量予以顯示,采用LED和蜂鳴器實現提示和報警功能。遙控器軟件上使用μC/OS-II實時嵌入式操作系統,能夠實現實時性內核、任務管理、時間管理、通信與同步、內存管理等功能。系統的整體架構如圖2所示。
2.1 主控制模塊電路
主控制器STM32F103C8T6芯片,工作頻率高達72 MHz,內置64 KB的Flash和20 KB的SRAM,具有豐富外設和超低功耗,完全滿足本設計要求。主控制模塊電路圖如圖3所示,參照ST公司發布的STMF10xxx硬件開發入門文檔,該部分包括外部時鐘電路、模擬電源輸入、電源濾波、下載仿真口的設計。
2.2 電源模塊電路
本遙控器采用8.4 V鋰電池供電,采用TL750M05C穩壓芯片提供5 V電壓,選用REG1117-3.3穩壓芯片為系統提供3.3 V電壓。STM32F1 03C8T6電源分為模擬電源與數字電源,為了保證其正常工作,將兩路電源進行隔離設計,在模擬地與數字地之間通過0Ω電阻實現單點共地。為監測鋰電池電源電壓,將電池電壓經電阻分壓及阻容濾波電路濾波后作為STM32F103C8T6采樣輸入。
2.3 無線通信模塊及顯示模塊電路
無線通信模塊采用2.4 GHz頻段射頻芯片nRF24L01作為無線數據收發芯片,工作于2.4~2.5GHz ISM頻段,輸出功率和通信頻道可通過程序進行配置。nRF24L01功耗低,在以-6 dBm的功率發射時,工作電流只有9 mA;接收時,工作電流只有12.3 mA,多種低功率工作模式(掉電模式和空閑模式)使節能設計更方便。nRF24L01采用SPI總線方式與控制芯片進行通信。
12864液晶顯示模塊,可顯示漢字及圖形,內置8192個中文漢字(16×1 6點陣)、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM),具有并行數據傳送方式和串行數據傳送方式,其中串行數據傳輸方式只用到CS、SID、SCK 3個通信引腳,較并行數據傳送方式節省單片機的I/O引腳,本文采用串行傳輸方式進行設計。
3 軟件系統設計
體感遙控器的軟件系統設計基于實時嵌入式操作系統μC/OS-II,借助于μC/OS-II內核的多任務管理和優秀的實時性能,大大簡化了軟件系統設計,并且可以保證系統響應的實時性。
3.1 任務分配與實現
在任務規劃的過程中,采用分層次和模塊化的思想將整個系統任務進行劃分。首先,我們必須對系統整體的控制任務有清楚地了解,具體任務劃分如表1所列。
表1中除OSTaskStat和OSTaskIdle任務為系統自帶,其他8個任務均為用戶創建。其中:App_TaskStart為起始任務,系統運行后第一個建立的任務,其作用是為初始化系統時鐘和底層設備創建所有事件和其他任務;App_TaskAD任務監視電池電壓的變化,當電壓低于設定值Low Battery時,將啟動蜂鳴器報警;App_TaskAHRS任務通過DMA不斷接收iNEMO慣性導航模塊數據,然后交由USART1接收緩沖區,實時獲得手部姿態信息;App_TaskCmd根據手部姿態信息轉化為機器人運動指令,然后按照制定的通信協議通過nRF24L01無線模塊將指令數據包發送出去;App_TaskData任務在每發送一次指令數據包后,通過nRF24L01無線模塊接收機器人本體回傳的運動狀態信息包;App_TaskLCD任務實現運動指令、機器人運動狀態、電池電量、實時時鐘在12864液晶顯示模塊上的顯示;App_TaskLED_B任務通過LED指示遙控器上的主控芯片與iNEMO慣性導航模塊、遙控器與機器人是否通信正常,當電池電量過低時,通過蜂鳴器進行報警;App_TaskClock任務得到DS1302的實時時鐘,通過消息郵箱App_LCDClockMbox發送給App_TaskLCD任務予以實時顯示。
3.2 任務間通信設計
任務和中斷服務子程序可以通過事件控制塊與其他任務進行通信,常用的通信方式有信號量、郵箱和消息隊列,同時,通過事件標志實現任務與事件之間的同步。本操作系統共創建了8個消息郵箱和1個事件標志:
OS_EVENT *App_AHRSMbox
OS_EVENT *App_CommandMbox
OS_EVENT *App_DataMbox
OS_EVENT *App_ADMbox
OS_EVENT *App_LCDCmdMbox
OS_EVENT *App_LCDDataMbox
OS_EVENT *App_LCDADMbox
OS_EVENT *App_LCDClockMbox
OS_FLAG_GRP *App_GreenLEDFlag
其中,App_GreenLEDFlag包括3個標志位:
#define Flg_GreenLED 0x0001
#define Flg-BlueLED 0x0002
#define Flg_Buzzer 0x0004
3.3 軟件系統流程圖設計
軟件系統流程圖如圖4所示。體感遙控器經上電初始化后,首先采集電池電壓,然后通過郵箱*App_ADMbox將采集得到的電量值發送給12864液晶顯示模塊進行顯示,若電量過低,則使標志位Flg_Buzzer置位,即通過蜂鳴器進行報警。并且,通過DMA把iNEMO慣性導航模塊的數據接收到USART1,判斷校驗位是否正確,若不正確則重新配置DMA,重新接收數據;若正確則將接收到的數據轉化為控制指令,通過nRF24L01無線模塊發送給機器人。同時通過郵箱*App-LCDCmdMbox將指令發送給App_TaskLCD任務,在12864液晶顯示模塊顯示當前發送的指令,并通過置位Flg_GreenLED點亮相應LED,以表示STM32F103C8T6與iNEMO模塊通信正常;機器人本體接收到指令后,會給遙控器返回數據包,如果遙控器接收的數據錯誤標志位沒有置位,則說明遙控器與機器人本體通信正常,通過郵箱*App_LCDDataMbox將機器人的狀態信息發送給App_Tas kLCD任務,在12864液晶顯示模塊上顯示機器人本體運動狀態,同時通過置位Flg_BlueLED點亮相應LED,以表示遙控器與機器人本體通信正常。App_TaskClock任務通過郵箱*App_LCDClockMbox向App_TaskLCD任務發送當前時間信息,并予以顯示。
體感遙控器軟件系統開發環境為IAR EWARM5.4,μC/OS-II版本為V2.86,STM32F103C8T6的調試工具為J-Link仿真器,STM32F103C8T6的固件庫版本為V2.0.3。
3.4 遙控器與機器人本體通信方案設計
本設計采用嚴格的“一問一答”形式,即每發送一條指令都需要機器人本體返回一幀數據包。遙控器發送一條指令后,等待機器人本體返回的數據包,只有獲得機器人本體返回的數據包后才可以繼續發送指令包。如果機器人本體接收到錯誤指令(經校驗錯誤的指令),置位通信錯誤標志位,上傳數據包;同時,機器人本體報警,將機器人速度置0,接下來1 s內下位機清除串口DMA,重新接收指令。如果遙控器收到的數據包中通信錯誤標志位置位,則重新配置nRF24L01無線模塊,重新發送指令。
4 性能測試
對本文所描述的嵌入式機器人體感遙控器進行了相應的測試,測試環境分別為室內走廊環境和室外環境,測試結果如表2所列。測試結果表明,在室內走廊環境中,收發指令的正確率在95%以上;在室外環境中,由于環境中可能存在多種干擾,并且距離在20~30 m,正確率在90%以上。由于遙控器底層軟件具備一定容錯能力,90%以上的正確率完全滿足要求。
結語
本文討論了基于STM32F103C8T6的嵌入式服務機器人體感遙控器的設計與實現,并對具體的硬件電路和軟件系統進行了詳細的介紹。經過大量的實驗證明,本體感遙控器具有操作簡便、可操作性強、通信可靠、穩定性和人性化程度高等優點,在實驗室服務機器人的實際應用中取得了良好的效果。
評論
查看更多