文獻標識碼: A
文章編號: 0258-7998(2011)10-0026-03
隨著經濟發展的高速化,人們的生活節奏也越來越快,家政機器人DR(Domestic Robot),因能夠代替人完成家政服務工作而受到了更多都市市民的青睞。目前,低端DR以單一的輸入功能如清潔功能等重復性作業為主,缺乏與用戶的交互;高端DR雖然功能完善,但是價格昂貴,不易為普遍用戶接受。本文設計的系統是通過上位機的路線繪制程序與用戶進行交互,以低成本便捷的方式實現對DR的室內定位控制(Indoor Positioning Control),具有很好的實用性。
1 系統結構
系統整體構架分為上位機信息發送系統和機器人子系統兩個部分。上位機端采用VB編寫的繪制路線程序作為可視控制平臺,實現房屋布局圖載入、行進路線繪制、坐標提取、路線信息計算與無線傳輸等功能。機器人處理子系統采用FPGA芯片作為核心處理器,結合SoPC技術和Verilog硬件描述語言以完成對FPGA芯片的配置、Nios II軟核實現路線信息的無線接收、提取路線信息。使用Verilog硬件描述語言搭建電機和舵機的PWM控制模塊,控制電機與舵機配合,完成路線的行駛。其系統框圖如圖1所示。
2.1.2 串口無線模塊
PC機路線繪制程序將信息打包通過串口傳輸到無線模塊CC1100-232后發送出去。CC1100是TI公司的高性能無線通信芯片,采用串口工作方式,可以工作在433 MHz/868 MHz/915 MHz公用頻段,串口速率為1.2 Kb/s~38.4 Kb/s。在無線傳感器、家庭自動化、機器人控制等領域有著廣泛的應用。
2.2 機器人子系統
機器人子系統的功能是實現路線信息的接收與執行,由FPGA處理器、CC1100-232無線模塊、機器人模型組成。
2.2.1 機器人模型
微元路線的準確實現需要機器人根據路線信息準確地行走,機器人模型設計的關鍵在于行進部分的設計,本系統的機器人行進部分由兩個從動輪、一個帶碼盤的驅動輪、光電對管TCRT5000和電機模組組成。驅動輪的電機模組分為130電機和5010舵機兩部分,電機與舵機安裝于驅動輪上,電機帶動驅動輪轉動,舵機帶動驅動輪旋轉。PWM波可以控制電機、舵機轉動,調節PWM波的占空比可以改變電機轉速和舵機的轉動角度。在驅動輪上帶有碼盤和光電對管TCRT5000,兩者結合可以準確地記錄驅動輪轉動了多少碼格。
機器人的行進方式有兩種:(1)舵機偏轉為0°時,電機作用驅動輪,機器人直線行駛;(2)舵機偏轉90°時,電機作用驅動輪,機器人繞幾何中心點轉動,如圖4所示。
每次微元的路線機器人的執行方式都是舵機擺至90°,電機驅動輪行進使機器人繞中心點轉動相應轉角,然后舵機擺正,電機驅動機器人行走微元路線相應的距離。
2.2.2 FPGA控制模塊
系統采用Altera Cyclone III EP3C16 FPGA芯片,Verilog硬件描述語言完成復雜的數字系統設計。Altera公司的SoPC技術可自定義IP核配置NIOS軟核,可定制性高[1]。通過軟硬件協同設計使整個系統的FPGA實現更加靈活與高效。
本系統使用Nios II系統通過C語言編寫UART串口模塊程序,與串口無線模塊CC1100-232進行通信提取路線信息,控制PIO口進行相應的中斷檢測與中斷服務。軟件設計的整個流程可以在Nios IDE環境中完成。在Nios II系統開發過程中,使用寄存器操作方式訪問PIO口[2]:即定義一個寄存器結構體,然后通過訪問結構體元素的方式讀寫PIO口數據,如圖5所示。
使用Verilog語言搭建電機與舵機的控制模塊以及光電對管的計數模塊,如圖6所示。圖中,電機部分:cp50m為50 MHz時鐘輸入端;jian為光電對管檢測輸入端,內部計數器完成對它的計數;en為參數設置使能;len[15..0]為計數預設定值,由Nios II軟核根據路線信息計算得出參考值;dir為電機轉向控制輸入端,根據輸入控制信號ctrl1、ctrl2完成對電機控制。pwm輸出信號實現電機轉速控制,finish信號負責動作執行完畢后向Nios II軟核發送完成信息。舵機部分:為了方便控制舵機只需要旋轉0°或90°即可,控制時通過pulse輸出端輸出周期為20 ms、高電平為0.5 ms的PWM波,舵機轉向即為0°;輸出周期 20 ms,高電平為1.5 ms的PWM波, 舵機轉向即為90°。舵機轉向由dir控制。
通過Nios II系統與電機舵機控制模塊完成對FPGA核心處理器的配置后,整個系統搭建完畢,FPGA控制器框圖如圖7所示。
2.2.3 機器人子系統路線信息執行過程
機器人子系統執行時,串口無線模塊CC1100-232接收由發射端傳遞的路線信息,數據接收完成后相應信號管腳置高。Nios II系統相應的IO口檢測后產生中斷,啟動中斷函數,通過串口讀取接收模塊信息(接收信息包含路線的長度和轉角兩部分內容)。
驅動輪的直徑為5 cm,驅動輪上碼盤的碼格數為100個,設計數值為x1,則其行進距離L為:
若機器人按照式(1)直行某確定距離L,應根據式(4)設置好相應的計數值x1;若使機器人旋轉某個角度θ,應根據式(5)設置好相應的計數值x2。
分析設定好光電計數器的預設定值后就可以啟動機器人行進。首先是轉角,舵機偏轉90°后,Nios II系統將轉角預設定值x2傳給電機模塊len[15..0],然后驅動電機轉動讓機器人旋轉,驅動輪轉動時碼盤的遮光部分使光電對管斷開檢測管腳為0,透光部分使光電對管正常工作檢測管腳為1,計數器對檢測管腳的脈沖計數。當計數值與預設值相等時,機器人轉角完成,此時finish信號置高,Nios II系統檢測到此信號后就會控制舵機模塊使舵機擺正,接著加載距離信息的預設值x1,進行直線行進,執行完畢后機器人系統進入等待下一次路線信息接收狀態。
本文闡述了一種采用繪圖板上位機實現的可視化家政機器人控制方法。利用FPGA配置靈活性的特點,結合Altera公司的SoPC技術,使整個系統軟硬件協調配合完成信息傳遞和處理。位置可視化的優勢在于可更方便地讓使用者對DR進行實時的調度,以更加人性化的方式方便了行動不便的使用者。本方法以其易于實現和控制的特點為家政機器人定位系統提供了一個有效可行的方案。
參考文獻
[1] 赫建國,倪德克,鄭燕.基于Nios II內核的FPGA電路系統設計.第1版[M].北京:電子工業出版社,2010:110-142.
[2] 周立功.SoPC嵌入式系統基礎教程.第1版[M].北京:北京航空航天大學出版社,2006:194-218.