宋亞男, 陳海輝, 徐榮華, 宋子寅
(1. 廣東工業大學 自動化學院, 廣東 廣州 510006;2. 廣東工業大學 實驗教學部, 廣東 廣州 510006)
在進行本科教育過程中,參與課外科研和畢業設計環節的學生以課題形式參與實驗室建設,初見成效。此項工作讓參與實驗室建設的學生增長了見識,提高了學習積極性;基于其開發結果,進行實驗室平臺建設,使得其他學生能基于此平臺進行進一步研發和學習。機器人聲源定位系統的實驗設計與實現就是其中一個。
基于嵌入式系統開發板TQ2440,結合機器人聲源定位系統的要求,設計和實現定位系統的麥克風陣列和基于麥克風陣列的定位算法[1-15]。并基于該研究結果構建綜合設計性實驗,開放給本科生課外科研和課程設計、實驗等實踐環節使用。具體包括下面2個實驗設計目標。
(1) 基于ARM開發板TQ2440完成機器人聲源定位系統演示實驗,給學生展示基于麥克風陣列的聲源定位原理,為學生提供的一些相關基礎知識,并增強學生自己動手的興趣。
(2) 基于ARM開發板TQ2440完成機器人聲源定位系統的半開放實驗(開放聲源定位算法設計部分,固化麥克風陣列等硬件電路部分),為學生進行機器人聲源定位算法改進提供平臺。
聲源定位算法主要包括時延估計和位置計算兩大部分[1]。
2.1.1 位置計算
3個麥克風構成的直角坐標三角形陣列見圖1[1]。

圖1 直角坐標麥克風陣列
圖1中:Mic1(0,0)表示麥克風Mic1處于直角坐標原點,坐標為(0,0);Mic2(0,d) 表示麥克風Mic2處于直角坐標縱軸上,坐標為(0,d),其中d為已知;Mic3(d,0)表示麥克風Mic3處于直角坐標橫軸上,坐標為(d,0) ,其中d為已知;S(x,y)表示待定位聲源,待定位橫坐標為x,縱坐標為y。
由圖1可以列出以下公式[1]:
(1)
(2)
其中S21和S31分別為麥克風Mic1(0,0)相對于麥克風Mic2(0,d)、麥克風Mic1(0,0)相對于麥克風Mic3(d,0)接收到聲音信號的時延。
2.1.2 時延估計

(3)


圖2 基于互相關函數法的時延估計流程
課題組自行設計和制作了機器人聲源定位系統,聲音信號采集原理框圖見圖3,電路圖見圖4[1-8]。

圖3 聲音信號采集原理框圖

圖4 聲音信號采集電路圖
(1) 實驗目的:認識TQ2440開發板,學會下載燒寫程序;基于聲源定位系統完成定位實驗測試與分析,培養算法設計與分析的思想和興趣。
(2) 實驗材料及工具:帶串口的PC機1臺(沒串口的PC機可以外加一條USB轉串口線),TQ2440開發板1塊,串口線,USB下載線,5 V電源1個,麥克風陣列電路板1個,聲源1個(可以是小喇叭),驅動程序包。
(3) 實驗內容和實驗步驟:
① 將TQ2440開發板的串口線、USB下載線接好,并連到PC機相應的接口處,電源口的線也要接上;
② 打開電腦,并把開發板上的存儲器選擇撥到NOR檔,按照提示安裝USB下載驅動,驅動在驅動包里面;
③ 驅動安裝好之后,打開軟件包里面的DNW軟件, 點擊“Configuration”選單的“Options”,出現“UARTUSB Options”配置單:設置Baud Rate=115200,COM Port為COM 2,USB Port download address=0x30000000: 設置好,點擊OK;
④ 點擊“serial Port”選單的“conect”選項,并重啟開發板,鍵入a,并點擊USB PORT,選擇transmit,找到bin文件ucos2_image.bin文件并打開,待程序下載完;
⑤ 把存儲器選擇開關打到NAND檔,并按重啟鍵;
⑥ 把x軸聲音信號接到開發板的AIN0;y軸聲音信號接到開發板的AIN1;原點信號接到開發板的AIN3。地線與管腳1或2相接;
⑦ 接上麥克風陣列電路電源,試著發出聲響,就會看到信號波形的波動;打開聲源,觀察里面一些參數的數據,按下表記錄幾組數據并進行分析。
(1) 實驗目的:開放聲源定位算法設計部分,固化聲源信號采集電路部分,提供平臺給學生進行聲源定位方法的研究。
(2) 實驗內容和實驗步驟:打開本系統的工程文件uCOS-II,把之前生成的數據文件uCOS-II_data文件刪除;打開uCOS-II.mcp文件,再打開uCOS-II.mcp中的main.c文件。
子函數Task0()、Task1()、Task2()是多任務函數,3個函數里面的命令就是同時執行的一樣。
每個任務的最簡格式:
void Task0(void *pdata)//任務0
{
while (1)
{
OSTimeDly(OS_TICKS_PER_SEC*5);
}
}
上面的命令一個都不能少,否則程序無法執行,可以在上面的OSTimeDly()函數之前,while里面編寫程序。OSTimeDly()為時延函數,功能是每個多久該任務執行一次,OS_TICKS_PER_SEC可以更改數值。
任務1 void Task1(void *pdata)里面是用顯示屏顯示信息的任務,其中Lcd_printf(0,24,RGB(0xFF,0xFF,0xFF),RGB( 0x00,0x00,0x00),0,“1%2d%2d”,deal5[1],deal6[1]) 是一個在屏幕上打印信息的函數,前2個數值是x,y值,第1個RGB為字體顏色,第2個RGB為背景顏色,接下來就是要打印的內容,和VC的printf相似。學生可以試著把自己的想法顯示出來。
任務2是聲源定位的程序實現函數Task2。
函數readAdc()為讀取AD轉換的函數,在本系統中,數據是以2 000個采樣點為一幀進行處理的,在里面使用到一階慣性濾波:
a0[i2]=0.6*x0[i2]+0.4*a0[i2-1]
(4)
改變信號前面的系數就可以改變濾波的性能,學生可以試一下。
這段程序采用互相關函數法求時延,其程序和位置計算的程序學生自行分析,也可以自行設計修改時延估計算法,對比不同時延估計算法的優劣。
機器人聲源定位實驗是學生陳海輝的本科畢業設計完成的工作,特此表示感謝。經過部分學生和教師的試運行,受到好評。在相關基金項目的資助下正準備引入本科實驗教學中。該平臺也正被后屆學生進行課外科研實踐,進一步改進和完善聲源定位算法。
References)
[1] 陳海輝.召喚式撿球機器人的聲源定位系統設計與實現[D]. 廣州:廣東工業大學,2011.
[2] Tamim N S M,Ghani F. Hilbert transform of FFT pruned cross correlation function for optimization in time delay estimation. Communications[C]// Proceedings of the 2009 IEEE 9th Malaysia International Conference on Communications.2009:809-814.
[3] 袁余民,廖海龍. 可移動聲源定位系統的研究與實現[J].信息系統工程,2010(1):18-20.
[4] 吳曉,靳世久,李一博,等.基于麥克風陣列聲音信號定位方法的研究[J].傳感技術學報,2010(5):682-686.
[5] 李從清,孫立新,戴士杰, 等.聲源定位分離技術在機器人領域的應用[J].電聲基礎,2010(1):49-53.
[6] 容茂成,祖麗楠,楊鵬.移動機器人聽覺定位技術研究[J].機器人技術與應用,2009(1):35-37.
[7] Chang Pisheng, Willson A N. Performance of 3D Speaker Localization Using a Small Array of Microphones [C]//Conference Record of the Tirty-First Asilomar Conference on Signal,Systems & Computers. 1997:328-332.
[8] 景生華,王偉,朱松盛,等.聲音引導系統及其信號濾波的設計[J].現代電子技術,2010(12):62-65.
[9] 童詩白,華成英.模擬電子技術基礎[M]. 4版.北京:高等教育出版社,2006.
[10] 于海生,丁軍航,潘松峰, 等.微型計算機控制技術[M].2版.北京:清華大學出版社,2009.
[11] Done W, Kirlin R. Speech zero-crossing rate compression for bandwidth compression[J]. IEEE Transactions on Acoustics, Speech and Signal Processing, 1975,23(5):433-438.
[12] Jean J Labrosse. 嵌入式實時操作系統μC/OS-2[M].邵貝貝,譯.2版.北京:北京航空航天大學出版社,2003.
[13] 任哲.嵌入式實時操作系統μC/OS-II原理及應用[M]. 2版.北京:北京航空航天大學出版社,2009.
[14] 譚浩強. C程序設計[M]. 3版.北京:清華大學出版社,2005.
[15] 周立功. ARM嵌入式系統基礎教程[M]. 2版.北京:北京航空航天大學出版社,2008.