2008年6月12日 星期四

新版iPhone




3.5G HSDPA + WiFi + GPS
multi-touch + image sensor + 3D motion sensor
only NT$6,000.-

這叫其它的PDA手機怎麼混啊?

2008年6月9日 星期一

長條型動態貝殼

滾球型動態貝殼是藉由內球電磁浮驅動外球而滾動,為求滾動中內球艙室的穩定,需具備精確的平衡感測力回饋調整裝置。滾球型的好處是轉向反應快,隨時能往任一方向增加滾動向量。 長條型動態貝殼則是靠底部嵌入的四個小滾球在地面上滾動而移動,小滾球是從貝殼內面安裝的,貝殼底部的四個圓洞可以扣住小滾球使之不脫落,藉由包覆小滾球上部的電磁極陣列曲面電磁浮驅動小滾球滾動。小滾球內藏Air-Bag,可在緊急時候將Air-Bag口轉至對外,彈出Air-Bag,由空中墜落時提供撞擊緩衝,在水中則可提供浮力。長條型動態貝殼的底盤是蓄電池,前後兩端是強化玻璃半球,貝殼圓柱前後段有可向上向下滑開的窗,中段則是可向下滑開的門,門的開啟是順著軌道滑到貝殼圓柱底部,左右兩邊同時只能有一扇門開啟。前後兩個強化玻璃半球上附有螺旋槳的滑軌,兩個螺旋槳可依水、陸、空不同需要活動至適當的位置提供流體推進。至於四顆滾球與兩個活動螺旋槳的人機操控介面設計,我在此徵求創意。

2008年6月6日 星期五

2008年6月5日 星期四

SENSE@NEURONS系統晶片設計

可無限擴展動態聯結網路式資料流圖論機
基於概念元的物件導向式語意理解與處理

Sense Based Object Oriented
Semantics Understanding And Processing
Of
The Infinitely Expandable Dynamic Linking
Networked Data Flow Graph Machine

G-machine: 協同平行動態配置運算即調整鏈結狀態

Graph machine("圖論機",亦稱"動態連結網路式資料流機")的operators自主存取switches-map上的linking-state,配置線路的同時進行配置好的線路的運算,而運算除了產生新值到operands外亦可能存取switches-map上linking-state,有可能運算完其配置的線路就自動釋放,也有可能在運算完後更改運算線路的鏈結狀態以供往後的運算。此機制相當有用於方程式推導,不像傳統運算機程式的算式都是單方向堆疊計算且式子是固定不可變動的,即便程式是設定成可於runtime自我改寫那也是更改instruction codes,而Sense based Graph machine則是直接更改virtual wires,Sense G-machine不使用instruction code decoder而採用直接匹配比對sense entries所link的symbols產生shiftable switch states的方式。採用新方式的前提是virtual wires上switch states的memory cells電路總體積必須小於原先decorder組合閘電路體積(後者會隨運算資源單元數增加decoder的gate level及gatecon count,以解碼器解碼定址的方式其address bandwidth對擴展彈性是一大問題;前者只需增加switch memory,以相同的bandwidth延伸用於比對symbols的bus)才符合系統晶片設計的成本考量,所以採用MRAM cell相較於SRAM/DRAM頭一個在空間上就是一項利多。Graph的linkages不是永遠存在enhanced switches network上的,它們是可swap-in/out的,非運作時可轉成symbols回存到MEM槽列裡。ALUs能夠自主存取switches-map上的linking-state,可以依序將script透過switches-network逐一比對sense entries所link的symbols,匹配產生浮動游標到switches-map上,接著依操作子(operator)結合優先權順序讓operators(ALUs)與operands(MEMs)自己去互動,即在配置線路的同時進行配置好的線路的運算,而運算除了產生新值到operands外亦可能存取switches-map上linking-state,有可能運算完其配置的線路就自動釋放。至於比對匹配不存在的symbols則自動產生新的senses。G-machine相較於傳統處理器有一個很大的差異是它沒有program counter,純然在switches-network上配置"=>"操作子(NextStep)定義流程。如果你質疑這不是一下子就寫滿了switches-network?請回顧一下此則網誌前面的這句話:"配置線路的同時進行配置好的線路的運算,而運算除了產生新值到operands外亦可能存取switches-map上linking-state,有可能運算完其配置的線路就自動釋放,也有可能在運算完後更改運算線路的鏈結狀態以供往後的運算。"

而computing flow graph的linking state可於整體運算期間被動態更改的機制為什麼這麼重要?舉例:傳統單方向代値入公式堆疊計算出答案的方式,每代入一次三角或對數指數函數的値就是一次誤差;為大幅減少誤差當然是要先把方程式代換成最少函數項再代入値算出的答案才精確,由於同一道方程式每次運算已知項與未知項未必相同,故於運算間動態調整算子(等號"="也是一個算子)算元連接狀態是必需的。換言之,數值方法的使用應留到最後,之前應先做好符號鏈結處理的工作。另外,對於解graph traveling問題,直接以virtual wires為G點間的linkages,在traveling的同時能夠更改linkage也是許多graph演算的基本需求。Graph machine比起傳統數値定址空間stack machine在硬件層次就更適合且更直接處理這類問題。 符號處理器之所以重要於純數值計算機,往往我們要記憶的是簡化約分後的式子而非有誤差的數值,例如: n/N、N^(1/n)、log (n,N)、 三角函數。一道數學式應先調整為乘積項(指數為正)與除分項(指數為負)分群,分別乘積後再相除誤差才能減至最小。

Computing flow graph的linking state可於整體運算期間被動態更改的機制亦滿足了flow path control。傳統指令流處理器是用條件式分支(跳躍)指令載入新的address到program counter控制程序流程走向;G-machine用條件判斷算子即時存取開關網路動態變更資料流向(路徑)。迴圈亦然,但有些情況,傳統指令流處理器上的迴圈也是屬於可平行化的巨集演算,只是處理器不支援,此種狀況在G-machine則跟一般的運算網路配置一樣,除非運算資源不夠用,才會形成循序的情況。

* 傳統指令流CPU可用軟體程序以較慢的速度模擬G-machine的硬體行為;而G-machine亦可以配置出傳統指令流CPU的電路結構。

早期design COMPUTER都脫離不了用數值解碼切換器來定址,交換機早期只考慮到端對端通訊用途不管有沒有分封也都用數值標示節點,現今,我們不要MAC/IP address,我們要重新design DistributedCOMPUTER,COMPUTER NETWORK就等於是在grid-chips間的bus插入附有轉接頭的延長線或天線拉大其間距離。

  • Control-driven:

    Operator被invoke時即驅動運算,在SYNAPSE結構機制下這必須靠pulseline的ripple來達成,因為在NEURONS結構機制operator被invoke時只是配置了flowgraph,必須有value進入flowgraph才會啟動運算。

  • Data(event)-driven:

    資料備妥新的資料來到時即驅動運算(pulse line的ripple來到時),如此event的傳遞就不是藉由不同的傳統多工處理器processes/threads在put/get共用訊息佇列以行程間通訊方式模擬event傳遞。

  • Goal-driven:

    一道命題方程式的collection/package被invoke就配置好必要的flowgraph,由其無值的operand(s)自動search其它需要的命題方程式並invoke使未項變為已知每當有新value進入該net時即自動調整inner-linkages至最佳備算狀態(相當於是在整理式子)。
    彈性變動帶寬:

  • ALU與REG(MEM)還有netlist的數量要能自動隨運算傳遞的value的長度變化,ALU與REG(MEM)還有netlist在槽列或槽柵上要可shift以動態插入或回收顆粒單元。

晶片陣列間除了concurrent channels資料直接傳遞外更有sequential交談埠以message(script/description/language)交流,陣列中每個晶片的功能不盡相同而介面則保持一致,邏輯電路設計遵循"空間遞迴結構"(一結構體由若干個自己所組成)的設計原則:

  1. 小顆粒組織成大顆粒的結構形式相同於更小顆粒組織成小顆粒的結構形式 (無限的空間遞迴結構) 。

  2. 若干小顆粒組成的大顆粒跟一體成形的大顆粒互可取代。

  3. 對外界互動者就溝通上而,小顆粒跟大顆粒的介面相同無異,不會因為顆粒數目的改變而使介面有異。

平行處理語言解析組合

將scripts透過switches network比對sense entries所link的symbols匹配產生浮動游標到switches map上的動作可以平行處理。解析成sense graph與computing flow graph後運算,其運算後的結果也有可能產生scripts輸出:依據switches map上的linking state組織sense entries所link的symbols串成script。組合的動作也跟解析的動作一樣是平行處理,組成script然後再循序輸出。

VonNeumann bottleneck

"凡紐曼瓶頸"是指運算邏輯單元與記憶單元分隔於兩獨立空間其間僅以極少的帶寬連接使得運算子集與運算元群無法充份連結而形成的效能瓶頸。在1940年代計算機架構如此設計埋下沿用至今仍未革新邏輯結構上的先天設計缺陷,主要有兩個原因:

  • 在數理邏輯上當代設計思維是模擬人在處理算術時的模式,一次只處理一個算術,處理完才處理下一個,在一單位時間只有一個運算子與極少的運算元連接。(然而對現代處理器設計而言,我們應進一步考慮到,有人在處理邏輯命題數理方程時是一張graph同時處理而非的一個一個單元符號循序處理的,微處理器設計也應該參考這個模式。 )

  • 在半導體元件物理上,不論哪個年代,運算邏輯元件與記憶元件做在一起的話良率很低故障率很高,是製程技術上的難題。

傳統處理器其單一管線中的"平行化"(不是指多管線"超純量(super scalar)"平行)僅是增加運算子與運算元之間二個(一輸入一輸出)或三個(二輸入一輸出)資料帶的位元數將原來要兩個以上單位時間操作的運算於一個單位時間處理,但沒有增加單位時間運算子集與運算元群間的動態連結(可程式的連結)數量。而所謂的"硬體加速"是把多個運算子直接連接(靜態連結)成單一個固定的複合運算子使原先循序執行的工作平行化在一單位時間完成,也由於不是在不同時間單位所以運算子其間不需運算元暫存(管線latch暫存器除外)就直接相連,於是只有存取最前端輸入和最後端輸出動態連接的記憶單元,一樣無關運算子集與運算元群之間的動態連結。所謂"動態連結"是指透過記憶體開關決定相連與否而非直接的相連,有人稱之"virtual wire",傳統處理器將這個開關陣列接上decoder匯至較開關數少的輸入以較少的bit決定每一單位時間要開啟連結的開關,這樣的缺點是每一單位時間只有極少的連結開啟,造成所謂的"凡紐曼瓶頸"。直接在每一連接開關上對應一個latch記憶體才能將運算子集與運算元群間的可程式連結數量增至最大,但相對的電路所占空間會隨連結開關數量的增多而增多,一個準則是多增的latch記憶體總占空間最好與去除的decoder相等,但或許為了克服"凡紐曼瓶頸"為開關記憶體叢集擴增空間本來就是應該的。而且,參考生物腦神經網絡結構,記憶單元(突觸synapses)與運算邏輯單元(神經細胞neurons)亦是大量的多對多連接,如果要微處理器具備人工神經網路的功能,這一點是必為的。附帶一提,從Harvard架構開始處理器將程式記憶與資料記憶分開放置,主要是存取權限的問題。我現在設計的微處理器不區分程式與資料,主要是因為我遇到的很多情況下,程式即資料,資料即程式,沒辦法分。但我有在硬體上做一個基於sense的物件導向式access permission機制,更細緻地管理記憶體讀寫權限,所以不用擔心會有程式被誤寫的情形。

傳統上,在ENIAC/VonNeumann改良型系列循序處理器的記憶空間分programcode/staticdata/ stack&heap三種節段,processes(同一程式段不同資料段)/threads(同一程式段同一資料段)在stack上操作,而在與stack同節段由另一端開始與stack相反方向grow的heap是此類型處理器唯一動態資料可以在processes/threads離開sub-procedure後仍保存的動態記憶節段。當processes/ threads離開sub-procedure後,sub-stack復原到stack上sub-procedure被call前所在處,原先存在return前sub-stack裡的object references跟著釋放不再參照到heap裡的objects。此時,告知objects解除referring是由references所在處做,軟體方式是由compiler將指令片段附加到sub-procedure的return動作,硬體方式是直接將告知動作合併到return硬體指令由processor做。而heap段slots的資料分佈之動態整理配給壓縮或展開可以foke出額外的thread(s)來處理,不管是single pipeline的分時多工還是multiple pipeline的硬體平行多工。除此之外,在記憶體slots間就提供shift通道latch電路以平行化配置回收與整理的動作。未來,在graph machine,stack包含在heap裡,不做為stack machine(P-machine)處理操作用。未來在graph machine還會有類似processes/threads的觀念存在,但它們不再是一段program counter與stack registers的context狀態記載,不再是一組輪流等待被load入工作暫存器(不論是一或多個處理單元的)並在離開context時暫存的values,而是跑在graph circuit switches-network的runners,往來在眾單位ALU與單位MEM(I/O-port與MEM視為相同的slot,一樣可shift一樣可有區域限制)之間。可以思考一下:不具方向性的雙向linkage要怎麼用電路實作?用以取代"雙鏈"。

以往我們對"程式"的觀念是在連續時間依序對一組物質做不同的操作,一方面可以從此一組物質受操作後的反應獲得回饋。VonNeumann computer基本上是一個control FSM與一個REG-ALU-MEM pipeline組成的Bi-cycle雙循環(兩輪轉動)"腳踏車",如果把這個操作的觀點由processor轉移分散到各個operators,讓operators自己當主角,每個operator本身就是ALU + control unit,但operators的control unit比起原來processor的control unit小得非常多。如此,operators為"主動子",operands及sense entities為"被動元",當一段description被送進1顆Neuron Chip的Sense Core時,其內的"匹配神經"(附於開關網路的comparing bus)將輸入的description化解分解為一系列的linkages放到free-shiftable switches bar上,operators一透過這個bar上的linkages"接觸"到其餘的被動元就觸動引起"反應",主動子改變switches-network上的linking state,"結合"被動元成value-flow graphes("結合力"較強的主動子優先進行"結合")。之後,被動元一被主動子"結合",裡頭的values就傾向整個graph沒有values的地方流,運算流藉由此發生,而記載"definition"的sense graph鏈結狀態與values也因而改變。此謂"自動接觸結合反應機制",而operands、operators、sense-entities之間的linkages是動態消長的: 接觸 => 結合 => 反應 => 可能消失。Worst-case: 預料之中,Neuron Chips在可供配置的資源不足的情況下,原本的平行就會暫時變成循序。NeuronChips於1998年我在海軍服役期間構想之初就設定要滿足:當entities或channels不夠用而導致當機時,必須能讓user拼組加裝額外的Neuron Chips即可恢復繼續運作。也就是說,1顆Neuron Chip未匹配分解配置完的description片段會被SenseCore依chips熱接時決定的MSTP(最小展開樹狀路徑)分送出去,繼續完成運算線路的配置。如此,達到"電腦即網路,網路即電腦""平行即分散,分散即平行","電腦網路/網路電腦",整個NEURONS網路(NEURONS電腦)的referring / indexing空間聯為一體。當兩堆運作中的Neuron Chips要熱接時,倘若裡面有兩個以上sense domain的名稱(從root sense以降)相同,必須獲得每個相同domain name的sense entities的認可方能熱接成功,因為不同chips裡擁有相同名稱(從root sense以降)的sense entities將是同一個domain。反之,chips要分離時也必須告知任何於此間有linkage(s)的sense entities,惟在其間所有linkages都被回收或挪到別處後方可分離。

Direct-Symbol-Referring的觀念,是來自1997年上半我一次微積分方程式處理的OOP工作,阿信 在旁的一句"不要用address定址,直接用name指標"激發了我直接用字碼串參照資料結構的靈感。然事實上,自古至今file-system老早就已經在使用symbol-referring了,是我們自己的眼界侷限於traditional programming而忽略了。只是file-system僅僅具備tree的結構,而建於file-system上的database也是一樣,雖然只具備matrixs的結構。至於rulebase一道道的因果式與formula-base一道道的等式不等式,是資料? 是程式? 其實可算是資料也可算是程式,file-system、database、rulebase、formula-base......等等都不過是1組資料結構,用1組複合graphes既可全部滿足,何必讓它們分開? 以往ENIAC-programmer的觀念是以address pointer單方向記錄nodes的linkages,會如此這樣是由於VonNeuman等古人承襲Turing machine在1度線性記憶空間──1條格子段帶上讀出→計算或操作→寫入的觀念把operators(neurons)與operands(synapses)分開獨立於兩個空間其間僅以極少的頻寬相連才在格子裡紀錄跳接格子的偏置量(格數),操作單元記住讀寫頭所在格子裡的value然後根據這個記住的value為count(座標or向量)移動讀寫頭到欲跳接的格子去。畢竟,他們是數學家,並不是電子電路設計的專家,也不是生物腦神經生理的專家。而我會想到要用switches network於object oriented data structures的linkages也是淵源於1997年某一個晚上我在畫UML做OOD時 LEIFONE 在一旁觀看時的一句"好像在畫電路圖喔"激發了我這樣的靈感。如此,任一個單元不但不依賴CPU(分時interrupt其process)而各自隨時直接透過開關網路獲知data-structure狀態(在此架構也沒有所謂的CPU了),還可直接利用enhanced switches network上free-shiftable switches所構成的pathes,以產生cursors放入path的方式自動travel。其traveling的cursors任何時候所駐留單元的資訊當然也是直接透過開關網路上一條跟隨移動的channel主動向需求單元回報,同理,放出cursors的單元也是直接透過這個dynamic-channel與cursors通訊,乃至於回收cursors。

電腦程式自己可以修改自己與電腦程式自己會寫程式

這就是一種左腦人工智慧。而所謂"程式"是指一組運算操作子(神經元細胞)與運算操作元(神經突觸鍵結)間隨網絡資料流變化的非循序離散廣鏈結狀態,不同於當今普及的循序處理器程式是依據程式指標器循序於個別獨立不同時間點指定的運算操作子與運算操作元間狹鏈結狀態。電腦程式具備自我修改撰寫能力意味也具備著自我理解與理解外部程式及資料的能力,而程式與資料其實被SENRON電腦視為相同的事物,無法分割的同一種概念。電腦程式自己可以修改自己與電腦程式自己會寫程式是Project SENSE@NEURONS一個很重要很主要的目的,在基礎結構初始設計就已為滿足此一目的考量程式資料結構的易變更性,於基礎程式資料結構算子算元基底層級就採用動態聯結機制。為具備自我理解與理解外部程式及資料的能力,在基礎結構初始設計就已為滿足此一目的考量程式資料結構的易理解性,對照於當今第四代電腦為方便反編譯而保留到執行時期的編譯時期程式資料定義資訊,但使其更緊密量身訂做地於基礎程式資料結構就予以滿足,SENRON電腦是採用Direct Symbol Referring透過開關網路比對字符產生鏈結狀態與透過開關網路反向由鏈結狀態組合出symbols串成的述句的機制,不同於傳統處理器從數值解碼鏈結狀態的方式,所以不需在數值與字符間編譯反編譯,所有定義資訊跟程式資料結構本身一樣直接由開關網路鏈結狀態記載,只有資料結構末端值才是與傳統處理器一樣記載在運算操作元(神經突觸鍵結)。

From the starting point of software operating system, everything is Sense and all time are runtime.

From the starting point of hardware processor, everything is Neuron and there is only one kind of interface among grid chips.

單一套記憶組織: SenseSpace

為什麼寫程式存取variable外還要存取file,為什麼不是只存取variable就好?

在作業系統層做一個symbol-oriented於memory與storage間背景自動快取回存與整理的子系統,讓應用程式只存取memory的varible而不用touch到storage的file,軟體工程師不需要額外對file/storage做操作,使用者也不需有"隨時要記得存檔"這個觀念。

為什麼資料庫存取被設計成另一個I/O,要輸出SQL之類的字串而不是像存取memory中的data structure一樣?

記憶體管理系統、檔案管理系統、資料庫管理系統應被設計為一體,formula base與rule base還有grammar base的存取也應該要如同一般的程式語句撰寫一樣。簡而言之,就是要讓使用者與設計者腦袋裡只有一種概念,只與單一種對象(但可以是多個)對話。

同樣道理,存取網頁為什麼不能像存取視窗一樣,為什麼非得要多個彆扭的XML?

另外,現今不論軟体或硬体產品都存在產品間功能重覆與重疊的問題,需要有一個機制來自動融合兩個以上軟硬體取其聯集,物件導向系統的類別自動匯整機制有助於解決此一類問題。

把整個網路當成一台電腦用

把輸入欄(命令列)變成可接收一般的語句,語句中的詞直接參照的是跨網域變數。視network-socket另一端的server的memory如同虛擬記憶體機制中的storage一般,在local-memory與socket-I/O間建置一個於背景自動快取回存與整理類似物件導向式虛擬記憶體的子系統,所有host互為client/server就形成整個網路的記憶參照空間聯為一體的情形。例如在hostA跑到這一道: processA.senseA := hostB.processB.senseB + processB.senseB,由於invoke的是hostB.processB.senseB的+,所以網路虛擬記憶體系統會快取hostA的processA的senseA與processB的senseB到hostB執行運算,系統會自動回存senseA到hostA。

以上快取策略是在系統初次開發設定的,一個健全的分散式作業系統其網路虛擬記憶體快取策略應滿足:
  • 評估所有算元與算子定義(function/method)的size,其size小的快取到size大的所在host執行運算。
  • 評估算子的硬體資源可配置量(或host的performance),優先在可配置量大(或performance高)的host執行運算。

由於分散式虛擬記憶體系統被快取的記憶體是被多個區域的記憶體快取與回存,所以每當有算元被回存時系統必須主動更新其它各個區域記憶體中快取的算元。

基於算子算元的動態分散式運算服務作業系統是讓應用軟體的寫作方式不用分端寫。


輸入裝置訂做

  • 左右手兩個分開獨立可感測三維空間方位的無線握把,一個在拇指處附可按壓的軌跡球,一個則附可按壓的拇指搖桿,兩個手把在食指中指處各有一個板機按鈕。拇指搖桿適合用來控制走動,軌跡球適合用來瞄準星,而由手把方位感測來控制準星會更好,軌跡球可用來做點選焦點的移動,按壓軌跡球即是點選。
  • 最佳的顯示裝置其實還是頭戴式或眼罩式的,在頭部附上三維空間方位感測直接以頭部方向決定視角畫面方向,當按壓下拇指搖桿按鈕不放再轉動頭部時可鎖定畫面中央的物件以其為中心繞著它旋轉視角畫面,如果能偵測眼睛瞳孔位置更能直接由眼球轉動控制準星或點選焦點的移動。
  • 以拇指搖桿來控制走動,如果換成軀體搖桿呢?整個人站或坐在大型搖桿平板上以身體重心移動控制搖桿。如果非擬真到真的用雙腳行走不可,那就訂做個大型軌跡球讓人在裡面走。

最理想的軟體發行方式

DVD-ROM無法reuse不環保,最理想的軟體發行方式是線上付費下載到硬式磁碟、DVD-RAM或大容量快閃記憶卡。而線上付費可分租賃與買斷:租賃是期限內無限次數下載;買斷是永久無限次數下載。你會說那如果我用一個帳號複製多份給朋友那出版商不就沒錢賺了?請注意,軟體可以做成同一時間只能在一個網路IP位置run,軟體執行期間會不定時向版權伺服器要求密碼以繼續執行,這個密碼可能是資料參數或程式參照,一軟體從一網路IP位置以下載帳號密碼登入版權伺服器,另一從另一網路IP位置執行的軟體就立即被登出而暫停執行,結果就跟消費者有一片防盜考保護的DVD軟體自己使用外可以借人但借人時自己就沒得用一樣。如果是在分散式作業系統上,程式在要執行時才自動下載到客戶端,執行完就自動釋放,當然也可以要求"永久快取"到客戶端以利啟動載入時間的縮短與離線執行。關於下載後離線執行,軟體也可以在線上發行時編成限定只能在特定的硬體晶片序號run。

電戰單兵戰術頭盔自動步槍系統

玩槍戰遊戲常常槍跟不上眼睛的速度,眼睛看到了大腦想說:"快!快!那邊",偏偏手的動作就是很慢。如果扣下板機武器就直接射向眼睛看的地方那反應速度應該可以大大提升。這仰賴眼睛瞳孔的追蹤技術,槍可以做在頭盔上方由電腦控制跟著眼睛的轉向。槍在身體的最高點這樣設計其實很合理,當你躲在遮蔽物後,只要露出頭頂上的武器與攝影鏡頭就能射擊。頭盔頂隨目光焦點轉向的自動轉向步槍也可卸下來拿在手上,附在槍管前頭的是光學變焦倍數攝影鏡頭,可以切換資訊眼罩到此攝影畫面來射擊,畫面會隨目光焦點移動(因為槍的轉動)將目光焦點處移動到畫面正中央,一般用於眼睛不能露出掩蔽物時。萬一眼睛瞳孔追蹤攝影故障時可以使用手上握把的拇指軌跡球來移動焦點。頭盔頂也可加裝自動轉向迷你榴彈砲,戰術頭盔電腦可以根據目的點(目光焦點)距離自動計算出拋彈仰角並控制轉動,也可根據戰情電腦中的虛擬實境評估拋線上有否障礙物。

由環狀天線陣列前部雷達測距乘以俯角的cos加上環狀天線陣列半徑即是目標物與頭盔中心之水平距離;由環狀天線陣列前部雷達測距乘以俯角的sin即是目標物與環狀天線垂直方向中心點的距離,加上環狀天線垂直方向中心點與自動轉向步槍高度的距離再除以目標物與頭盔中心之水平距離取tan的反函數即是自動轉向步槍的俯角。以上是垂直面分量,水平面分量的計算也是一樣。問題是天線陣列與攝影鏡頭間的視角差異如何計算?我還沒找到或想出解法,有人可以提供一下嗎?這應該跟空軍戰鬥噴射機的HUD(Head-Up Display)或陸軍戰鬥直昇機的HMD(Head-Mounted Display)一樣,與機鼻雷達天線陣列的視角差異需要計算修正。所以,另一方面我才在想說是不是有辦法把雷達面板與EMD(Eye-Mask Display)疊在一起且不會擋到攝影,透明的平板型天線陣列晶片疊在感光晶片前面or雷達電磁波可穿透感光鏡片不會影響攝影訊號的天線陣列晶片疊在感光晶片後面?由測得的兩個眼睛瞳孔方向延伸出去相交之點即是目標物精確位置,如此就不用雷達測距,但以防萬一瞳孔追縱量測微型裝置故障,回波測距仍須備不時之需。

點陣雷達是除了影像攝取外一個不可或缺的輸入裝置,為支持HMD的幾項功能:

  • 當目光焦點在螢幕上的一點時能即時得知該點的實際距離並計算出它的三維空間座標。
  • 將距離點陣做距離相差大的邊緣偵測得實體物件的輪廓影像是一項相當有用的戰場視覺輔助以提升對環境物件個體或地形的認知。

  • 當目光焦點移到螢幕上的一點時可顯示該點最內圈的距離差邊緣偵測所得輪廓以醒目焦點物件。

  • 依據點陣雷達測得距離點陣將攝影所得影像投影對應到電腦中的3D虛擬實境達到戰場偵查即時分享,將虛擬實境畫面與所在影像疊合更可看到遮蔽物後其它HMD有看到的物件。

當目光焦點在螢幕上的一個物件個體,可藉由三維空間實際位置座標的對照參照到無線網路上可通訊的物件個體,或者直接就用雷達天線細胞與焦點物件通訊。 而通訊就包括了對焦點物件下達goto或attack某點等戰略命令,只要在HMD上點擊可命令物件選取動作然後再點擊畫面或俯視地圖上或者點選列表中的目的地或目標物。當然, 也可以從俯視地圖或瀏覽列表點選被命令個體。 更自動化的一個功能是:當選擇goto、follow或attack某目標物,無線通訊網路上的所有自動單位能自動協調分配執行任務並自動決定採用最合適的武器或策略,而觸發這一切動作的原始只是你在自己的HMD上點了一下畫面中的實際物件或點選了一下列表中的對應單位。

戰場資訊眼罩可以藉由穿戴式電腦的影像辨識功能標示出目標物的醒目框線,也能做motion detection鎖定移動物,但如何分辨敵我?把目標物的座標與所有友軍的座標核對,相等的就是友軍。目標物的座標是藉由頭盔上的點陣雷達所測距與自身所在座標計算而得,而友軍單位的座標何來?是由友軍的電戰裝備透過無線通訊網路獲得,萬一電戰裝備落入敵手怎麼辦?所以必須限定電戰裝備只由特定人能使用,一旦離開特定人,無線通訊網路上的其它單位必須立即能得知,如何辦到?資訊眼罩內面追蹤瞳孔位置的感測器也可用來攝得視網膜影像,藉此做身份識別,但如果有種隱形眼鏡可以顯示視網膜影像而影像是精細到不會影響視覺,那敵軍只要戴上這種隱形眼鏡就能騙過身份識別。另一個方法是對目標物發出指向性無線通訊波詢問,若有發射訊號回傳且回答的暗號正確就是友軍。可是兩種方法都有對目標物發波,目標物收到訊號就知道自己被瞄準,所以在發波前必須先確定射擊準備就緒,一確定是敵軍就馬上立即射擊。頭盔頂上隨目光焦點自動轉向的機槍也是需要點陣雷達測距以三角函數求得步槍轉角才能精確瞄準目標物,等於是射擊前會先令目標物得知自己被瞄準,所以必須扣下板機才發波測距隨即計算、轉向、擊發。

如此這般倚賴無線通訊網路的作戰模式,資訊傳輸安全非常重要,萬一通訊的加密遭致破解,反而是把友軍位置、相關戰情與行動要求拱手提供給敵軍,被敵軍滲透入我們的通訊提供錯誤戰情資訊或者亂發送行動要求也會擾亂我們的協同作戰。任何無方向性輻射波發射裝置在發報中都可被三角量測定位,只要通訊一開啟行蹤就有暴露的很大可能,使用指向性無線通訊可以避免行蹤暴露,頂多在指向性通訊途徑上遭遇敵方天線時被得知方向。而使用動態指向性無線通訊,通訊端不時在移動,通訊方向也就要跟著不時調整,這需要對360度環式天線陣列的無線訊號做motion detection,鎖定追蹤接收的訊號束並自動調整發射的訊號束方向對準之。當指向性通訊途徑上遭遇敵軍戰術頭盔上的360度環式天線陣列,通訊即被攔截與阻斷並被得知友軍發訊方向而暴露行蹤,而友軍也就收不到傳訊。有效的資料傳輸加密,除了讓敵軍看不懂友軍通訊內容,萬一敵軍篡改局部通訊內容再往通訊途徑方向發訊,友軍的電戰裝備可以由加密浮水印知曉此段訊息不是友軍原發的。如果使用無方向性輻射波被兩個以上敵軍電戰頭盔收到訊號,敵軍透過他們的私有行動網路就能將網路上所有單兵截收到的訊息段比對相同的匯整起來,訊息段比對相同的每個截收座標沿截收方向延伸出去的交點即是友軍位置。

資訊眼罩內面追蹤瞳孔位置的感測器也可用來攝得視網膜影像藉此做身份識別,當眼睛離開眼罩,視網膜影像消失,眼罩的畫面就會關掉,所以敵軍沒有辦法以挖出友軍的眼珠子來通過辦識然後用自己的眼睛看眼罩的資訊。可是如果把眼罩印刷電路板上的感測器與顯示器焊接點熔斷然後重新焊上延長線,一端的感測器對著友軍的眼睛、一端的顯示幕對著敵軍的眼睛,敵軍就能看到友軍的資訊眼罩內容。感測器、顯示器與電腦電路得做在同一封裝內才行,如此,倘若敵軍試圖拆解感測器與顯示器,一旦拆開封裝電路也跟著毀了,資訊眼罩損壞不能work,敵軍是否就無從上友軍的協同作戰網?不,就算感測器、顯示幕與電腦電路做在同一封裝內,還是可以用光纖光訊號導管將別處的眼睛瞳孔與視網膜影像導入,因為感測器與顯示幕在IC封裝表面仍是分於不同區塊。有沒有辦法讓電腦IC晶片表面內嵌的顯示幕每個像素發光的同時也能對單一垂直方向感光?若能做到這樣,假如有人要用光導管欺騙資訊眼罩的身份辦識就會擋住顯示幕,但還是可以將光訊號導管導出後再接分光器分出感測端與顯像端。要求感測得的影像包含顯像幕影像在瞳孔上的反射影像以確保感測端與顯像端是同一個眼睛,但瞳孔上有反光時就無法攝得到瞳孔內的眼球內面視網膜影像,那就以比對瞳孔上的反射影像與螢幕影像判斷眼睛的靠近與離開,當偵測到靠近時就關掉螢幕做一次視網膜驗証,通過辦識即開啟螢幕並登入系統,隨後持續比對瞳孔上的反射影像與螢幕影像,一旦比對出現不符就立即登出資訊眼罩至使用者身份驗証畫面。可是現代科技工藝之精緻,敵軍若做個仿生的人造電子眼球直接觀看,一切防盜措施都無用,所有的多重生物特徵辨識技術最終可能回歸最基本的使用者密碼輸入驗証,一偵測到眼睛離開螢幕(影像+距離)就登出要求重新輸入密碼驗証通過方可再登入。

定位方法

由一個天線發出一段訊號,被另一個天線收到立即發出"已收到"之訊號, 然後原發訊號天線收到"已收到"訊號,期間所花總total時間稱之"echo time",( echo time * 已知平均傳輸速率 ) / 2 即估算出兩個天線之間的距離。

3個不全在同一直線上已知位置的天線,分別以echo所得距離為半徑畫圓圈,3個圓圈交叉得一點,即為第4個未知天線的二維空間位置;4個不全在同一平面上已知位置的天線,分別以以echo所得距離為幅圓成球殼,4個球面相交得一點,即為第5個未知天線的三維空間位置。

定位2Dspace中的未知位置天線需要3個已知位置不全在同一直線上的天線;定位3Dspace中的未知位置天線需要4個已知位置不全在同一平面上的天線。若少一個已知位置天線,就只能獲得兩個正相反方向的點,如果電磁波不是正負交流就可以從天線電流方向判別電磁波磁場方向進而由兩個點中擇出一個來,前提是必須已知欲定位天線電流方向而且方向固定非為正負交流。

但上述方法都已經造成通訊,如何在不讓被定位天線知情的情況下定位之?

將3個不全在同一直線上已知位置的天線所收到之data sequence做位移比對,確認3個天線收波的順序及時間差即可計算定出二維空間中非指向性輻射波的來源方向;同樣地,4個不全在同一平面上已知位置的天線即可定出三維空間中非指向性輻射波的來源方向。再多加一個已知位置的天線,比對其它任兩(三)個不在同一直線(同一平面)上的天線收到的data sequence,即可定出另一個2D(3D)方向,藉由這兩個方向軸夾角與已知位置天線之間的距離透過三角函數計算出與未知位置天線的距離即可定位。

反過來,在一個空域彼此間僅有指向性通訊的天線組也可藉由相同的方法定位空域中一個發射非指向性輻射波的天線。

最後,如何在自己不發波的情況下藉由週遭的發波天線定位自己?