隨著靳雪雯的講解,江寒對戰神一號的基本結構,很快就有了初步的瞭解。
接下來就該研究一下,如何改進它的能,提升戰鬥力了。
“這是什麼傳?”江寒指著一個小機關。
靳雪雯看了一眼:“這是撞傳。”
“這一顆呢?”
“紅外線傳。”
……
江寒一個個詢問過去。
很快,他就看到了一個小,表面微微凸起。
江寒仔細看了看:“這裡好像是個攝像頭?”
靳雪雯點了點頭:“這二維視覺傳,其實就是一顆攝像頭。”
江寒思索了一下,問:“通過這個東西,戰神一號就可以‘看’到目標了吧?”
靳雪雯說:“對的,但因爲是二維畫面,不太容易判斷出距離遠近,工作過程是這樣的……”
江寒用心傾聽,同時拿出紙和筆,列了幾個式子,寫寫算算起來。
“戰神一號”最大的問題,是攻擊移目標時,擊度太差。
敵機距離太遠,子彈就會發生滯後的現象;敵機距離太近時,又會胡“搶拍”。
之所以會有這樣的表現,歸結底是因爲預測算法有BUG。
要想徹底解決這個問題,還是要從本手。
事實上,對於實彈擊來說,無論數據理速度多快,都必須對目標的移軌跡做預測。
否則的話,子彈只會追在敵人的屁後面,永遠打不中。
——當己方機人經過計算、出子彈時,敵機早就不在原來的位置上了。
“戰神一號”定位敵機時,主要使用超聲波傳,限於件度,效果不算很理想。
所以靳雪雯還利用攝像頭,通過採集實時圖像,輔助定位。
但在圖像理時,使用了方提供的圖像識別框架。
說實話,方出品的這個編程框架,穩定真的不錯,但效率方面就沒法期待了。
雖然靳雪雯在NOIP中表現不俗,編程功力相當不錯,但想要甩掉框架,從0開始自己造子,還是力有不逮的。
此外,在理圖像數據時,對於深度信息的理,也有很大的問題。
靳雪雯畢竟才初三,無論信息學還是數學,都缺乏了一點底蘊。
能做到現在這樣,已經相當不錯了,還真沒法苛責什麼。
據靳雪雯的說法,“戰神一號”的反應閾值是0.2秒。
也就是說,從發現目標、確認敵機方位,到經過計算,調整自姿態,然後發出子彈,這一系列作至需要0.2秒的時間。
但這並不是說,其機載計算機的數據理速度,只能達到每秒5幀。
真要是那樣的話,類比電腦遊戲的畫面表現,這已經卡PPT了……
由於圖像理技的限制,“戰神一號”每秒只能理大約10幀畫面。
這個速率其實不算很慢,基本上達到了參賽機人的平均水準。
但在瞬息萬變的戰場上,這樣的信息理速度,顯然是無法讓人滿意的。
關於如何改進“戰神一號”,江寒很快就有了思路。
如何通過攝像頭,算出與敵機的相對距離?
最容易想到的,就是安裝第二顆攝像頭,形三維視覺,然後用立像算法,把數據放到三維空間中理。
但這種算法比較複雜,且需要反覆測試,調整參數。
這需要大量時間,可明天就要參賽了,可能會有點來不及。
那麼還有沒有別的辦法呢?
其實是有的。
靳雪雯編寫的控制程序,其圖像理部分,在通過像素信息計算深度時,存在相當大的誤差,對角度的判斷也有一點小問題。
這是導致預測失敗的本原因。
只要對目前的圖像識別算法,做出一些改進和優化,使其能正確計算深度(距離)和角度,就能在預測敵機的行時,大大提高功率了。
同時還要儘量提高數據理的效率。
當幀率超過20以上,就能極大緩解各種由於延遲導致的問題,超過30,眼就看不出卡頓,如果幀率達到50……
江寒算得十分認真。
靳雪雯聚會神地看著他的側臉。
不知怎麼的,小臉忽然就熱了起來,小心臟也跳得更加歡快了。
唔,果然認真工作的男人,纔是最有魅力的嗎?
靳雪雯默默地想著。
就在這時,江寒角微微勾起,忽然擡頭看了一眼:“戰神一號的主控代碼,你有備份吧?”
“啊?”靳雪雯正沉迷著,聞言頓時一驚。
慢了不止一拍,才反應了過來,慌忙點了點頭:“哦!”
然後定了定神,說:“有的,有好幾個版本。”
江寒灑然一笑:“很好,那我就在目前版本的基礎上,試著改進、優化一下,看看效果怎麼樣。”
靳雪雯連連點頭:“好的!”
江寒想了想,又說:“不過,你這個機人的編程環境,我也不是很悉……”
沉了一下,說:“要不這樣吧,咱們合作一下,我來改進算法,你負責編寫代碼,怎麼樣?”
靳雪雯興點頭:“太好了,就這麼辦!”
隨後,就拿出改錐和鑷子等工,拆起了“戰神一號”的外殼。
江寒看笨手笨腳的樣子,不由得微微一笑:“行了,給我吧,你去準備好編程環境就行了。”
靳雪雯只好訕訕地一笑,將工給了江寒,然後擺弄起自己帶來的筆記本電腦去了。
江寒將戰車腹板拆下,從中取下了它的數據理核心。
這是一塊卡片計算機,名爲“神機w-2012”,在同類產品中,能算得上可圈可點。
靳雪雯一邊忙活,一邊給江寒介紹。
“神機”的峰值功耗爲8W,搭載了一塊1.0 GHz的ARM CPU,擁有獨立的GPU、2G RAM、128G ROM,還帶有WIFI和USB接口。
其運算速度還是相當過得去的。
跟高配的臺式機、筆記本電腦相比,可能略有不及;但與配置一般的智能手機、平板電腦相比,已經差不了多了。
只是再多的計算資源,也得合理運用,才能發揮出應有的效能。
江寒將“神機”拆下來後,給了靳雪雯。
隨後,小丫頭用USB線,將“神機”連到了筆記本電腦上。
開發專用的IDE也已經準備就緒了。
江寒開始在紙面上設計算法,並讓靳雪雯修改相應的代碼。
首先要做的,是調整攝像頭工作時的分辨率。
“戰神一號”搭載的這顆攝像頭,一共支持三種分辨率:640×320、1280×720、1920×1080 。
清晰度越高,獲得的圖像質量自然越好,但理起來也就越慢。
因此,江寒一上來就讓靳雪雯將攝像頭的工作模式,調整到了640×320。
然後通過調整曝時間,以及矯正Gamma值等手段,獲得更好的圖像質量。
接下來,就是第一個關鍵點:機識別算法。
靳雪雯在自己編寫的程序中,使用了方的圖像識別框架,實現了在採集到的圖像中,匹配機外殼上的特徵圖案。
江寒看了一下框架的源代碼,就知道這個東西能不用最好不用。
這個框架複雜而且臃腫,效能十分低下。
唯一的優點就是易學易用,即使是初中生,也可以只用幾個月的時間掌握它。
但現在既然追求極限的效率,那就必須拋棄它,從零開始造子!
江寒提出了這一點,靳雪雯卻犯了愁:“從頭寫底層……那太難了吧?一晚上的時間,只怕不太夠啊。”
江寒微微一笑,平靜地說:“這個模塊我來寫吧,等下你再把它整合到主程序裡。”
頓了頓:“當然,平臺相關的部分,還有涉及到件作的地方,你得隨時給我指點,不然我還得時不時去翻方的白皮書。”
靳雪雯欣然應允,將筆記本電腦推到了江寒面前。
江寒開始工作。
圖像識別算法的改進方案,早就在江寒的腦海中了。
實戰時用來檢測撞的“皮”上,集了一些用來顯示量等信息的LED燈。
用來檢測和判定敵機,無疑是比較適合的。
首先由於LED是發的,那麼就可以調低曝,以屏蔽環境干擾;
再二值化理一下,圖像中除了LED部分,就都變了黑……
預理做得好,在後續步驟中,可以大大降低計算量。