frameRate drop down in Processing

frameRate

昨晚回到實驗室後,亭穎跟筌翔發現了在長時間使用頭架的狀況下,最後Arduino的時間跟主機端的時間會對不起來,最誇張會相差到四分鐘。

這個問題發生之後,可以很快速地來表列一下有可能是那些因素所造成,當然最一開始想到的就是「問題出在Arduino或是Processing?」

驗證的方法,就是使用Arduino本身的監控視窗來去觀察看看是否長時間使用之後有時間飄移的問題。這個可以用來檢驗到底是不是Arduino造成的問題。

但是在觀察過相關的Data之後,發現其實Arduino設定的Sampling Rate並無太大的偏差,因此我認為主要問題是出在Processing上,說實在話這個問題以前LabVIEW也有碰過。

經過多次的試驗之後,發現主要是因為Processing這邊的frameRate比Arduino這邊低所造成的,然而在這個架構中,Arduino只有17Hz而照道理來說Processing的frameRate預設是60fps,應該要沒問題的,但是由上方的圖可以很明顯地觀察到,隨著時間的增加,其frameRate下降之快速。

一開始使用分段儲存法,我認為是資料儲存表格過於龐大導致速度拖慢,因此我每十分鐘建立一個新的資料儲存表格,希望藉此來解決這個問題。然而發現還是會有frameRate急遽下降的問題,這時上網查詢了相關的論壇以及前人的經驗之後,得到的結論是Processing中的運算造成整體程式速度下降,把程式中不必要的「迴圈內之重複計算」給修正,也把全螢幕改成視窗化,希望藉此能夠使程式速度上升,然而都失敗了。

噢對了,在這其中還找到了我一直想知道的一個系統變數 displayWidth 以及displayHeight ,這兩個變數可以抓取目前使用螢幕的大小。藉此就可以設計一套能夠依據使用者螢幕大小不同而自動調整大小的GUI了。

最後在要出去吃飯的路上,我突然想到,應該是我每增加一筆新資料,就把該資料直接存到檔案裡,「寫入」這個動作導致frameRate隨著資料量的增加而降低。因此,我把寫入這個動作改成整個測驗結束之,才會存檔,這樣就能夠維持frameRate一直在50 fps了。換言之,又是一個「位置」造成的bug。中間我還想過要讓程式自動去判定檔案大小、frameRate的drop down 來去自動分檔案儲存,最後再合併。實在是脫褲子放屁。

Advertisements
frameRate drop down in Processing

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s