專業智能車上位機調試軟件
一、如果有這樣的一個功能,它可以讓你看到你所采集的圖像長什么樣,并且還可以看到經過你各種濾波算法處理過后圖像的模樣,然后你就可以通過它輕易看出你的算法是否合理,或者分析怎么樣進一步優化你的算法了。你難道不興奮,不垂涎嗎?對,要實現這個功能就要通過上位機了。也許你可能會說那不簡單嘛,網上串口調試軟件一大堆,隨便拿一個來接收數據觀察保存數據,然后在處理不就完了嘛。其實這種想法是可以的,也是50%以上的朋友調車時所采用的方法,但是這種調試方式實現起來真是的履步維艱啊,可能你已經體會到調試過程中的艱辛了。一大堆的數據,這么混亂不清,雖然看到這些數據自己已經激動得不得了,但是真的要從這些數據中挖掘對我們調試有利的信息其實是比較很繁瑣的,多半都是在做一些無用功爾,況且你下載的串口調試軟件中如果做得不是很好的話,發送速度一加塊,數據的實時顯示功能就不行了,有甚卡死直接未響應了。
二、到這里可能就會有些高手笑著說:“串口?速度這么慢,問題這么多,這么低端,我們不用它,我們用SD卡,SD卡高端!”。嗯,沒錯,做上位機分析數據的另一種方式就是把采集到的圖像數據信息存儲到SD卡當中,每過一段時間取出SD卡然后放到電腦中用軟件讀取出圖像數據來再進行分析處理等。這種方式很大程度上保證所采集數據的完整性。但有一個問題就是,你是不是得讓跑一段距離后,再拿出SD卡,然后再處理,當你看到采集回來的圖像這么完整漂亮,說不出的喜悅之情在所難免的,但是車子方向和攝像頭角度的精確位置你真的很難憑圖像逆推出來了,而且,玩一小段路程下來,你真的是費了不少的勁了,弄不好有的朋友真的可能已經把好好的車子給調試壞了,真是折騰不起啊,傷不起啊。雖然說折騰無極限,折騰本身就是一種精神,沒有折騰地去實踐,車子不會跑起來的,也不可能會跑得比原來快一點點的,所以許許多多的智能車愛好者就奮不顧身地把有限的時間投入到了無限調試當中了,就是為了愛車能跑再快一點、再快一點,就這樣費勁心思、廢寢忘食、沒日沒夜地進行調試,不斷的修改算法、修改參數,總感到不太完美,又無法取得突破,真是到了瓶頸階段了,到了最后就看運氣了,看老天爺了,但是結局怎樣其實已經明顯了,但這不能怪你思維不好,算法不優秀,只能怪調試方式有問題,調試工具不夠精良。
三、所以,影響車子的最終速度在于調試階段。這款專用調試軟件就是在這種復雜的需求下應運而生了,它給專注于調試硬件電路、調試圖像處理算法、控制算法的朋友們提供一個操作方便,功能強大的上位機調試環境。通過它,你只要簡單把采集到的圖像數據發到串口,每張圖像數據開始發送時先發送個標志位如0x01,告訴上位機一幅圖像開始了。然后設置上位機的圖像的寬度和高度跟下位機采集的一樣就行了,通過上位機就可以實時的顯示圖像信息了。然后你只要簡單的把圖像處理的那部分算法源碼加到我們提供的一個VC6.0的模板工程里頭的一個函數里面,編譯會生成一個后綴名為dll的文件,你在軟件中加載這個dll算法庫,就生成一個算法插件了。以后通過點擊這個插件按鈕就可以看到處理后的效果啦,邊上下瀏覽變處理,豈不快哉!
下面介紹這個調試軟件擁有的功能和使用方法。
1、實時性好,能夠非常流暢地顯示攝像頭采集的實時圖像。
2、串口數據丟失少,幾乎不存在數據丟失的情況。即便波特率設定為25000連續不斷的發送,也是沒有任何問題的,因為經過測試,每秒發100kb的數據,軟件接收和顯示均良好。(說明:在高速接收串口數據時請不要來回拖動點擊軟件窗口,因為測試發現頻繁地放大縮小或者頻繁點擊軟件窗口會導致接收數據的不完整)
3、 強大的歷史圖像瀏覽功能,可以通過點擊上位機的上一張、下一張按鈕瀏覽全部的歷史圖像以及圖像數據信息。軟件內部默認開辟50張的圖像內存大小,當軟件接收到超過50張時,則以50張圖片的內存大小遞增,軟件能夠臨時存儲的圖片數由計算機內存決定。由于下位機采集的圖像一般像素比較低,所以臨時保存幾十萬張圖像是沒有任何問題的。
4、 圖像灰度值數據列表,對任何圖像都可以選擇查看,它就是下位機上傳上來的實際數據了。
5、 可以選擇保存當前正在瀏覽的圖像,也可以一下子保存全部接收到的圖像。看哪張PP順眼就保存哪張這個功能就比較人性化了。
6、友好的界面設計,可以任意調節軟件窗口大小,圖像顯示區域會自動適應窗口的大小,圖像與數據顯示區域內部也可以通過拖動十字線進行拉伸或者縮小,使用時非常方便。
7、 實用、豐富的界面信息顯示,動態顯示串口接收到的圖像數、當前圖像已接收的字節數、總接收字節數、總丟失字節數(這里需要解釋一下總丟失字節數,我們發送數據時為了標志一幀圖像的開始,我們需要發一個專用字節來進行標志,當上位機接收到兩個標志位并且兩個標志位之間的數目正好是一幅圖像的數據就表明一幀圖像接收完成,假如收到兩個標志位之間的字節數小于一幀圖像的字節數,就說明數據丟失了。所以我們的標志位應該設置一些極端值,也就是一些攝像頭幾乎永遠不可能采集到的灰度值,比如0或者255等一些特殊值)。通過這些參數信息可以輕易看出下位機采集數據以及往串口發送數據時的工作情況。
8、 圖像灰度值抓取功能,當啟動灰度圖抓取功能后用鼠標指向圖片中任何部位,即可顯示當前點的灰度值。對圖像每個具體細節的灰度值觀察變得簡單快捷。
9、 圖像直方圖顯示功能,通過它你可以輕易看到每個灰度值在一幅圖像中出現的頻率了。
10、極富魅力、震撼力的算法插件功能,該功能真的讓你從此告別盲調了。并且算法插件由你自己編寫,會提供一個vc6.0的工程模板,在里面給出一個提供有圖像數據信息的函數下寫算法代碼就可以了,實現非常簡單,把下位機的算法代碼拷貝到里頭基本不用修改什么就可以編譯通過,而且想添加多少個算法插件都無所謂,想怎么添加就怎么添加。這樣你就擁有了無限的算法庫了,并且可以直觀看到每種算法的實際效果了。
11、自定義幀頭協議。
12、保存灰度值數據數組txt。
開發環境:Windows7 32位 + VC6.0 。
關鍵技術:1、本軟件使用MFC類庫做界面開發。
2、串口通信技術,本軟件使用微軟提供的MSCOMM32.OCX控件進行串口操作。
3、多線程技術,本軟件使用三條線程進行處理,一條線程負責接收數據,一條負責數據處理操作
最后一條線程進行界面更新操作。使得在高速接收串口數據的情況下,軟件運行順暢。
4、緩沖區機制,本軟件使用三級緩沖區的機制,每個緩沖區采用雙向循環鏈表實現。
減少數據丟失的情況,而且非常靈活實現對這些數據進行操作處理。
5、DLL動態鏈接庫技術,實現算法庫的動態添加,動態算法庫使用C語言編寫,
編譯生成DLL文件,加載到軟件形成算法插件,直接點擊插件按鈕使用,就可以看到處理后的效果,
真正意義上實現了模擬單片機程序的執行情況。
6、VC對位圖的基本操作技術。
好了,每種技術背后所實現的具體細節就不多說了,因為涉及技術面廣,況且每種技術都是比較繁雜的,也就不可能僅靠一兩篇文章就能說得清的。截圖上來吧,要不然又要說什么無圖無真相了,下面是軟件截圖:
0.png (282 KB, 下載次數: 34)
下載附件
2018-7-11 03:22 上傳
file:///Z:\TEMP\msohtmlclip1\01\clip_image002.jpg
|