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