一種相位式激光測距系統(tǒng)和方法
【專利摘要】本發(fā)明提出一種相位式激光測距系統(tǒng)和方法,對已有激光器進行二次開發(fā),使得用戶能夠通過上位PC機控制激光器的工作模式,執(zhí)行距離測量并輸出測量數(shù)據(jù),由單片機對輸出的測量數(shù)據(jù)進行解碼,并輸出到上位PC機進行顯示。本發(fā)明提出的技術方案還可以通過最小二乘法對測量精度進行提升。
【專利說明】一種相位式激光測距系統(tǒng)和方法
【技術領域】
[0001]本發(fā)明涉及激光測距【技術領域】,具體涉及一種相位式激光測距系統(tǒng)和方法。
【背景技術】
[0002]激光測距利用了激光具有的良好的單色性、方向性、相干性以及高亮度的特點,以實現(xiàn)高精度的測量,其可應用于長度、距離和角度等的測量當中。
[0003]世界上第一臺激光測距儀于1961年研制成功。而在上世紀70年代,YAG激光器技術逐漸成熟,并且大量應用于激光測距儀中。在80年代,隨著半導體的進步,半導體激光器在輸出功率、光束方向性以及探測器;靈敏度等方面均取得顯著的進步。而在近年來,隨著集成電路技術的發(fā)展和半導體激光器的成熟,出現(xiàn)了面向大眾日常生產(chǎn)生活使用的,對人眼安全、低價便攜的手持式激光測距儀,并且發(fā)展十分迅速。
[0004]激光測距儀測距作為近年來快速發(fā)展的一種測距方式,以其測量精度高,分辨率高,抗干擾能力強和小巧輕便等優(yōu)點,在軍用和民用領域應用日益廣泛。現(xiàn)階段我國在激光測距領域與國外尚有差距,在軍事工業(yè)領域依然受制于人。希望借助一些國外的研發(fā)經(jīng)驗成果,對現(xiàn)有的FLUKE411D手持式激光測距儀進行二次開發(fā),研發(fā)一種微小型無人通用的激光測距模塊,并對其進行提升精度的算法研究。
【發(fā)明內容】
[0005]為了解決現(xiàn)有技術中存在的上述技術問題,本發(fā)明提出一種相位式激光測距系統(tǒng)和方法。
[0006]所述系統(tǒng)包括:
[0007]上位PC機、通過PL2303串口轉USB模塊與上位PC機連接的PIC16F877A單片機、以及通過轉接板與所述PIC16F877A單片機連接的激光測距儀;
[0008]其中,所述激光測距儀采用FLUKE激光器,使用轉接板將FLUKE激光器的輸出信號端口與PIC16F877A單片機連接,采集FLUKE激光器輸出的測距數(shù)據(jù);使用轉接板將FLUKE激光器的接收輸入控制信號的端口與PIC16F877A單片機連接,將所述PIC16F877A單片機輸出的控制工作模式的指令輸入所述FLUKE激光器;
[0009]其中,所述PL2303串口轉USB模塊包括內置的USB功能控制器、USB收發(fā)器、振蕩器和帶有全部調制解調器功能的通用異步傳輸器UART ;
[0010]其中,所述PIC16F877A單片機對所述采集的FLUKE激光器輸出的測距數(shù)據(jù)執(zhí)行解碼,將解碼后的數(shù)據(jù)通過所述PL2303串口轉USB模塊傳輸?shù)缴衔籔C機進行顯示,和/或接收上位PC機通過所述PL2303串口轉USB模塊發(fā)送的控制命令,將所述控制命令轉換成控制所述FLUKE激光器工作模式的指令。
[0011]一種基于所述系統(tǒng)的相位式激光測距方法,包括:
[0012](I)系統(tǒng)上電工作后,對所述PIC16F877A單片機執(zhí)行初始化,具體包括:設置傳輸波特率,打開所述PIC16F877A單片機的UART通道,設置所述PIC16F877A單片機的AN0-AN7通道為信號輸入通道,準備對輸入模擬信號采樣,并打開所述PIC16F877A單片機的總中斷;
[0013](2)系統(tǒng)進入SLEEP工作模式,等待用戶輸入控制命令;
[0014](3)當檢測到用戶通過上位PC機輸入的控制命令為字符‘c’時,控制所述FLUKE激光器進入連續(xù)測量Continue工作模式,在此工作模式中FLUKE激光器處于不間斷距離測量狀態(tài);在處于連續(xù)測量Continue工作模式中時,如果接收到為字符‘e’的控制命令,則控制FLUKE激光器跳出所述連續(xù)測量Continue工作模式,進入SLEEP工作模式;
[0015](4)在SLEEP工作模式中,當接收到為字符‘r’的控制命令時,控制FLUKE激光器進入Request工作模式,在此工作模式中所述FLUKE激光器將首先處于等待狀態(tài),此時如果接收到為字符‘g’的控制命令,則測量得到一個距離值,并且保存這個距離值,然后控制所述FLUKE激光器再次進入Request工作模式;在處于所述Request工作模式時,如果接收到為字符‘e’的控制命令,則控制所述FLUKE激光器返回SLEEP工作模式。
[0016]特別地,所述方法還包括步驟:
[0017](5)在執(zhí)行多次距離測量后,采用最小二乘法對多次測量距離的結果進行處理。
[0018]本發(fā)明提出的系統(tǒng)能夠使得用戶通過上位PC機對已有激光器的工作模式進行控制,并能夠通過最小二乘法對測量精度進行提升。
【專利附圖】
【附圖說明】
[0019]附圖1為本發(fā)明提出的一種相位式激光測距系統(tǒng)結構圖。
[0020]附圖2為本發(fā)明提出的一種相位式激光測距方法流程圖。
[0021]附圖3為FLUKE激光器輸出測量信號波形圖。
[0022]附圖4為IXD液晶屏數(shù)據(jù)線示意圖。
[0023]附圖5為液晶屏數(shù)據(jù)線示意圖。
[0024]附圖6示出的是基于polyfit函數(shù)的最小二乘法擬合曲線。
[0025]附圖7示出的是基于Isqcurvefit函數(shù)的最小二乘法擬合曲線。
[0026]附圖8示出的是基于圖形界面的最小二乘法擬合曲線和殘差示意圖。
[0027]附圖9示出的是基于圖形界面的最小二乘法擬合曲線方程和殘差參數(shù)示意圖。
[0028]附圖10示出的是基于cftool函數(shù)的最小二乘法擬合曲線。
【具體實施方式】
[0029]下面參照附圖,對本發(fā)明的【具體實施方式】進行描述。
[0030]參照附圖1,本發(fā)明的第一實施例提出的一種相位式激光測距系統(tǒng)包括上位PC機、PL2303串口轉USB模塊、PIC16F877A單片機、PICKU3下載器、激光測距儀和轉接板。
[0031]激光測距儀采用FLUKE激光器。對FLUKE激光器進行二次開發(fā),分別使用轉接板將FLUKE激光器給LCD液晶屏的輸出信號和按鍵面板的控制信號與PIC16F877A單片機接起來,實現(xiàn)PIC16F877A單片機對激光器的控制和信號的采集。
[0032]一個轉接板連接的端口是FLUKE411D激光器的控制端,在原來的激光測距儀中該端口與FLUKE的按鍵面板相連,在設計的系統(tǒng)中給這個端口所有的7條線中的3條線電壓信號,以實現(xiàn)對進行FLUKE激光器的控制。這樣做的原因是因為這3條線所控制的工作模式是系統(tǒng)工作時所需要的,而另外幾條線所控制的是激光器的加減,改變測量模式等其它工作狀態(tài)的,與所進行的研究沒有關系,所以就不對這些端口施加信號了。
[0033]一個轉接板連接的是FLUKE激光器芯片處理信號輸出端口。單片機接收FLUKE激光器輸出的處理信號,完成對它們輸出信號的解碼,將它們所表示的數(shù)字解碼出來,然后由單片機傳輸給上位機,在上位機中顯示出FLUKE激光器所測得的距離。具體介紹將在下面的解碼部分敘述。
[0034]PICkit3編程器/調試器是一款由在Windows平臺上運行MPLAB IDE (v8.20或更高版本)軟件的PC控制的簡單低成本在線調試器。PICkit3編程器/調試器是開發(fā)工程師工具包的不可或缺的組成部分??捎糜趶能浖_發(fā)到硬件集成等各種應用領域。
[0035]PL2303USB轉串口模塊是Prolific公司生產(chǎn)的一種高度集成的RS232-USB接口轉換器,可提供一個RS232全雙工異步串行通信裝置與USB功能接口便利連接的解決方案。
[0036]該器件內置USB功能控制器、USB收發(fā)器、振蕩器和帶有全部調制解調器控制信號的UART,只需外接幾只電容就可實現(xiàn)USB信號與RS232信號的轉換,能夠方便嵌入到各種設備;
[0037]該器件作為USB/RS232雙向轉換器,一方面從主機接收USB數(shù)據(jù)并將其轉換為RS232信息流格式發(fā)送給外設;另一方面從RS232外設接收數(shù)據(jù)轉換為USB數(shù)據(jù)格式傳送回主機。
[0038]參見圖2,本發(fā)明另一個實施例提出了一種基于上述系統(tǒng)的相位式激光測距方法,包括如下步驟:
[0039]系統(tǒng)開始工作后首先對單片機進行初始化,使單片機的各項工作狀態(tài)達到需要的狀態(tài),即傳輸波特率為9600symbol/s,打開單片機的UART通道,使單片機的AN0-AN7通道為信號輸入,準備對輸入模擬信號采樣,打開總中斷。
[0040]然后系統(tǒng)進入默認的SLEEP工作模式即等待當中。如果沒有指定指令輸入,系統(tǒng)將一直處于SLEEP模式中,直到從主控計算機通過串口發(fā)送相應指令使系統(tǒng)進入不同的預設模式中工作。
[0041]當輸入‘c’字符時,系統(tǒng)進入Continue工作模式,即連續(xù)工作測量模式,此時系統(tǒng)處于不間斷測量工作中,而當再輸入‘e’時,系統(tǒng)則跳出Continue工作模式,進入SLEEP等待模式當中。
[0042]在SLEEP等待模式中,當輸入‘r’字符指令時,系統(tǒng)則進入Request工作模式當中,在此模式中系統(tǒng)將首先處于等待當中,當再輸入指令‘g’字符時,系統(tǒng)測量得到一個距離值,并且保存這個距離值,之后系統(tǒng)又進入Request模式中繼續(xù)等待,當再有‘g’字符指令時,測得一個距離值,即在需要系統(tǒng)測量時系統(tǒng)才進行測量。而當在Request模式中等待時,輸入指令為‘e,字符時,系統(tǒng)則回到SLEEP模式中等待。
[0043]除了上述敘述的工作過程外,在任何一步輸入其它無關指令系統(tǒng)都不會響應,仍將處于當前工作狀態(tài)當中。
[0044]本發(fā)明的另外一個實施例提出了 PIC16F877A單片機對從FLULKE激光器采集的數(shù)據(jù)信號進行解碼的方案。在這部分,將重點介紹一下FLUKE411D激光器輸出信號的特點,以及如何讓單片機對FLUKE411D激光器的輸出信號進行解碼的。
[0045]首先要說明的是,單片機系統(tǒng)采集的FLUKE411D激光器的輸出信號是原FLUKE411D激光器主測量模塊輸出給IXD液晶屏的信號,這是一組電壓信號。如圖3所示。從圖中可以看出輸出的信號分為4個級別,在一個周期當中,會有8個小段,而采集的數(shù)據(jù)并不是整個周期,只采集每個周期的第1、3、5、7小段的數(shù)據(jù),而2、4、6、8小段的數(shù)據(jù)則是無效數(shù)據(jù),解碼過程中并不需要它們。
[0046]通過圖4,圖5可以看出,IXD每個液晶屏的顯示是由4條COM線和2個SEG線控制的。
[0047]通過對4條COM線輸出波形的進行檢測,發(fā)現(xiàn)4條COM線輸出的波形是完全一樣的,只是在相位上依次相差90°,即相差2個小段,最終形成一個循環(huán)。而在每個周期中,4條COM線只在其中的1/8的周期中處于最高電壓狀態(tài)(可以認為其在每個周期開始的1/8時間內是高電壓狀態(tài)),其余時間電壓均低于最高電壓。由于只有在COM線與SEG線之間的電壓差幾乎達到VDD (在這里大約為3V)才能使相應的LCD數(shù)碼管顯示,因此測量每個SEG線的波形就成為解碼FLUKE411D輸出信號的關鍵。
[0048]對于測量SEG線信號,使用的方法是利用單片機的A/D采集通道對特定時間的SEG信號(即每個周期1、3、5、7小段的SEG信號)進行采樣,然后將采樣的結果分別與COM線的最大值即單片機A/D采集通道所能轉換出的最大值做差(即用1023減去從A/D通道采集到的SEG線的數(shù)),通過檢測差值的大小來確定LCD液晶屏上相應每段是顯示還是關閉的。
[0049]在采集到所需要的LCD液晶屏上每段的數(shù)據(jù)后,可以通過排除判斷法來進行解碼。先對中間段進行判斷,如果它是關閉著的,那么顯示的數(shù)字就可能是O或I或7,然后再對上端和下端進行檢測,如果全部都顯示則該數(shù)字是0,如果下端不顯示而上端顯示,則這個數(shù)字是7,如果上端和下端都不顯示則數(shù)字應為I (程序中實際是在上面兩項判斷都不是時則認為剩下的數(shù)字是I)。而如果中間段顯示,然后檢測左上方為關閉,則顯示數(shù)字應為2或3,然后對左下端進行檢測,如果顯示則數(shù)字應為2,而不顯示則數(shù)字應為3。之后在進行判斷,如果檢測到右上段是關閉著的,則顯示的數(shù)字可能為5或6,然后如果檢測到左下段為關閉,頂部為開著的,則顯示的數(shù)字應是5,如果判斷為不是則顯示的數(shù)字是5。如果左下不顯示同時頂端也不顯示,則顯示的數(shù)字為4,然后再檢測左下部,不顯示為9。最后如果以上判斷均不對,則剩下的數(shù)字只能是8 了。
[0050]通過將以上邏輯可以很容易的實現(xiàn)對FLUKE激光測距儀的解碼。
[0051]另外,對于10個數(shù)字的判斷,使用的是排除法,即把不可能的排除掉之后,剩下的就是所需要的。采用這種判斷的好處是判斷語句相應較少,且關系較為簡單明確,如果對每個數(shù)字的判斷都采用完全判斷,即必須嚴格按照其顯示的數(shù)字的顯示段來進行判斷,雖然會得到嚴格意義上的數(shù)字,但是這樣將會使判斷函數(shù)過于冗長復雜,且容易出現(xiàn)死循環(huán)的情況。當然,雖然目前的這種算法判斷較為簡單,但是一旦出現(xiàn)不是要解碼的符號出現(xiàn),判斷函數(shù)依舊會解碼出一個數(shù)字出來,這是這種算法的缺陷。這也就是為什么在測數(shù)階段有時會出現(xiàn)全是‘I’的原因。由于判斷函數(shù)以及FLUKE411D激光器輸出給LCD液晶屏的信號的問題,使得在出現(xiàn)亂碼或者其他一些干擾信號或系統(tǒng)采集數(shù)據(jù)出現(xiàn)異常時,判斷出‘I’的概率是最大的。這一點可以從實際測量的數(shù)據(jù)結果中得出。
[0052]在數(shù)據(jù)的采集階段,讓程序判斷COM線中第一條輸出線的數(shù)據(jù)大小來決定是否對SEG線的信號采樣。對于COMl線,這條線是唯一需要測量的一條輸出數(shù)據(jù)線,而其他的COM線則不需要做任何處理。當從COMl線采集到的信號大于900后,讓程序進入SEG線的采樣當中,在SEG線的采樣過程中,由于不是連續(xù)采樣,在采樣過程中需要采用延時跳躍采樣法,即在需要的時間端上采樣信號,因此需要在每段采樣之間加入延時函數(shù)。由于延時必須精確,因此采用NOP函數(shù)作為一個延時,在PIC16F877A單片機中,采用4M晶振時,一個NOP函數(shù)執(zhí)行的時間大約為5 μ S,通過觀察示波器上的波形,大概能夠計算出一個初始的NOP循環(huán)次數(shù),然后可以在程序運行時通過將采集到的相應時間相應段上的數(shù)據(jù)顯示出來,與理論結果進行比較,來決定延時時間是否合適,通過不斷的調試,最終可以得到一個對系統(tǒng)來說較合適的延時時間。而在每采集完一個通道的數(shù)據(jù)后,必須馬上讓單片機處理A/D模塊采集來的數(shù)據(jù),馬上將其保存到之前定義好的數(shù)組當中去,以防后面的程序對采集到的數(shù)據(jù)產(chǎn)生干擾。
[0053]本發(fā)明另外一個實施例提出了一種基于最小二乘法的測距精度提升方案。最小二乘法是一種數(shù)學優(yōu)化技術。它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法還可用于曲線擬合。
[0054]對給定數(shù)據(jù)點{(Xi, Yi)} (i = O, I, ".,m),在取定的函數(shù)類Φ中,求p(x) e Φ ,使誤差的平方和E~2最小,Ε~2 =Σ [p(Xi)_Yi]~2。從幾何意義上講,就是尋求與給定點{(Xi,Yi)}(i =0,1,…,m)的距離平方和為最小的曲線y = p(X)。函數(shù)p(x)稱為擬合函數(shù)或最小二乘解,求擬合函數(shù)P (x)的方法稱為曲線擬合的最小二乘法。
[0055]polyfit 函數(shù)擬合
[0056]polyfit函數(shù)可以計算數(shù)據(jù)的η次最小二乘擬合多項式,其調用格式為A =polyfit (X,y, η),式中X和y分別為自變量和因變量,而η為多項式的次數(shù),而得到的A為多項式系數(shù)按降冪排列得出的行向量,可以使用PolyfitO函數(shù)求取多項式的值,η = I時就為線性擬合,多項式擬合是最簡單且常用的方法。
[0057]利用MATLAB提供的polyfit函數(shù),可以對采樣得到的數(shù)據(jù)進行最小二乘擬合,擬合得到的圖像如圖6所示,擬合得到的曲線:y = 0.9990X+112.8229。
[0058]Isqcurvefit 函數(shù)擬合
[0059]MATLAB的最優(yōu)化工具箱中提供了內建函數(shù)lsqcurvefit,它是用來解決最小二乘曲線擬合的。該函數(shù)的調用格式為:
[0060]c = lsqcurvefit (FUN, a0, x, y),
[0061]其中:FUN為原型函數(shù)的MATLAB表示,可以是M函數(shù)或匿名函數(shù)叫為最優(yōu)化的初值;x,I為原始輸入輸出數(shù)據(jù)向量。
[0062]通過將數(shù)據(jù)輸入lsqcurvefit函數(shù)當中,得到了如圖7的擬合曲線,而得到的擬合方程為:y = 0.9990*χ+112.8229。
[0063]圖形界面擬合
[0064]圖形界面擬合,是在MATLAB當中先將數(shù)據(jù)點輸入工作空間,然后將數(shù)據(jù)點繪出,在彈出的圖形窗口中則可以對選擇對數(shù)據(jù)進行處理的方法。如果需要將以上的結果保存到工作空間,單擊Save to workspace鍵即可進行保存。圖8上面的直線圖為擬合的曲線,圖8下面的矩形圖為采樣點和擬合曲線之間的在各個點的殘差。而從圖9可以看出擬合方程為:y = 0.99901X+112.82,擬合后的殘差為 3.0427。
[0065]cftool函數(shù)擬合
[0066]MATLAB的曲線擬合工具箱有強大的圖形擬合功能,它是一個可視化的圖形界面??梢苑奖憧旖莸剡M行列表曲線擬合。
[0067]輸入cftool命令可以打開MATLAB中最常用的曲線擬合工具箱,在這個工具箱中,可以進行相應的曲線擬合,如圖10所示。
[0068]當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員當可根據(jù)本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明的權利要求的保護范圍。
【權利要求】
1.一種相位式激光測距系統(tǒng),其特征在于,包括: 上位PC機、通過PL2303串口轉USB模塊與上位PC機連接的PIC16F877A單片機、以及通過轉接板與所述PIC16F877A單片機連接的激光測距儀; 其中,所述激光測距儀采用FLUKE激光器,使用轉接板將FLUKE激光器的輸出信號端口與PIC16F877A單片機連接,采集FLUKE激光器輸出的測距數(shù)據(jù);使用轉接板將FLUKE激光器的接收輸入控制信號的端口與PIC16F877A單片機連接,將所述PIC16F877A單片機輸出的控制工作模式的指令輸入所述FLUKE激光器; 其中,所述PL2303串口轉USB模塊包括內置的USB功能控制器、USB收發(fā)器、振蕩器和帶有全部調制解調器功能的通用異步傳輸器UART ; 其中,所述PIC16F877A單片機對所述采集的FLUKE激光器輸出的測距數(shù)據(jù)執(zhí)行解碼,將解碼后的數(shù)據(jù)通過所述PL2303串口轉USB模塊傳輸?shù)缴衔籔C機進行顯示,和/或接收上位PC機通過所述PL2303串口轉USB模塊發(fā)送的控制命令,將所述控制命令轉換成控制所述FLUKE激光器工作模式的指令。
2.一種基于權利要求1所述系統(tǒng)的相位式激光測距方法,其特征在于,包括如下步驟: (1)系統(tǒng)上電工作后,對所述PIC16F877A單片機執(zhí)行初始化,具體包括:設置傳輸波特率,打開所述PIC16F877A單片機的UART通道,設置所述PIC16F877A單片機的AN0-AN7通道為信號輸入通道,準備對輸入模擬信號采樣,并打開所述PIC16F877A單片機的總中斷; (2)系統(tǒng)進入SLEEP工作模式,等待用戶輸入控制命令; (3)當檢測到用戶通過上位PC機輸入的控制命令為字符‘c’時,控制所述FLUKE激光器進入連續(xù)測量Continue工作模式,在此工作模式中FLUKE激光器處于不間斷距離測量狀態(tài);在處于連續(xù)測量Continue工作模式中時,如果接收到為字符‘e’的控制命令,則控制FLUKE激光器跳出所述連續(xù)測量Continue工作模式,進入SLEEP工作模式; (4)在SLEEP工作模式中,當接收到為字符‘r’的控制命令時,控制FLUKE激光器進入Request工作模式,在此工作模式中所述FLUKE激光器將首先處于等待狀態(tài),此時如果接收到為字符‘g’的控制命令,則測量得到一個距離值,并且保存這個距離值,然后控制所述FLUKE激光器再次進入Request工作模式;在處于所述Request工作模式時,如果接收到為字符‘e’的控制命令,則控制所述FLUKE激光器返回SLEEP工作模式。
3.如權利要求2所述的方法,其特征在于,還包括步驟: (5)在執(zhí)行多次距離測量后,采用最小二乘法對多次測量距離的結果進行處理。
【文檔編號】G01S17/32GK104076367SQ201410333756
【公開日】2014年10月1日 申請日期:2014年7月14日 優(yōu)先權日:2014年7月14日
【發(fā)明者】肖瑾, 鄭惠俊, 胡曉光, 曼諾·勞西列維奇, 肖繼忠, 范建新, 吳冰 申請人:北京航空航天大學