觸覺表面壓縮的製作方法
2023-07-06 15:29:41 1
專利名稱:觸覺表面壓縮的製作方法
觸覺表面壓縮
背景技術:
通過採用新的顯示技術和新的用戶輸入接收方式,電子設備及其用戶之間的交互變得更先進。觸控螢幕使得用戶能夠通過直接與用戶界面進行交互而在設備上進行輸入。觸覺技術甚至使得電子設備的用戶能夠感知用戶界面中的元素。例如,設備可通過短暫的振動反饋對按下按鈕做出反應,藉此用戶可以感知設備對觸摸做出的響應。同時,用戶界面的顯示器通常採用可顯示複雜、詳細信息的高解析度屏幕。這使得在設備中實現觸覺反饋更具挑戰性
發明內容
目前發明了改進的方法以及實現此方法的技術設備來減輕上述問題。本發明的各方面包括一種方法、裝置、模塊和其上存儲電腦程式的計算機可讀介質,它們的特徵在於獨立權利要求中聲明的內容。在從屬權利要求中公開了本發明的各實施例。在不同的方面和實施例中,使用關於用戶界面上的觸覺元素的空間信息創建與用戶界面元素相關的觸覺反饋。所述空間信息例如以壓縮和/或編碼形式駐留在存儲器中,以便節省內存和提高操作速度。所述空間信息在需要時被解碼或解壓縮,此外,布置觸覺高速緩存,以便提前解壓縮可能立即需要的空間信息。此預測性解壓縮被布置為基於用戶界面上的用戶輸入的移動來完成。例如,將用戶可能立即觸摸的塊解壓縮到所述觸覺高速緩存。根據第一方面,提供一種用於提供觸覺反饋的方法,包括自動確定關於用戶輸入的位置和移動的信息,基於所述位置信息將當前觸覺數據取回到存儲器,根據所述關於位置和移動的信息自動預測所述用戶輸入的未來位置,將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及根據所取回的當前和未來觸覺數據自動產生觸覺反饋。根據一個實施例,所述方法還包括將所述觸覺數據壓縮到存儲器,以及根據用於將所述未來觸覺數據取回到存儲器的所預測的未來位置來解壓縮所壓縮的觸覺數據。根據一個實施例,所述方法還包括根據當前位置、至少一個過去位置、所述當前位置和所述至少一個過去位置的距離以及從所述至少一個過去位置到所述當前位置的方向來預測所述未來位置。根據一個實施例,所述方法還包括將所述觸覺數據壓縮到存儲器,其中通過包括行程長度編碼、掃描線編碼、基於塊的編碼、多通編碼、低通濾波、降尺度(downscaling)以及十中抽一採樣(decimation)的組中的至少一項執行所述壓縮。根據一個實施例,所述方法還包括響應於在過去未使用所述觸覺數據或者響應於預測在未來不使用所述觸覺數據而從所述存儲器刪除所述觸覺數據。根據一個實施例,所述方法還包括使用適於圖形呈現的硬體來生成所述觸覺數據。根據一個實施例,所述方法還包括響應於用戶界面的變化而生成所述觸覺數據,以及將所述觸覺數據更新到所述存儲器。根據一個實施例,所述方法還包括從所述觸覺數據確定紋理信息,其中所述紋理信息是包括紋理像素、致動器使用參數和用於驅動致動器的程序代碼的組中的至少一項。根據一個實施例,所述方法還包括通過響應於所述觸覺數據而驅動所述致動器來產生所述觸覺反饋,其中所述觸覺數據指示諸如柔軟度、圖案和彈性的材料性質。根據一個實施例,所述方法還包括根據使用所述位置信息和觸覺數據的距離計算來產生所述觸覺反饋,其中首先使用觸覺數據塊並且隨後使用觸覺數據像素來執行所述距離計算。根據第二方面,提供一種包括至少一個處理器、至少一個存儲器的裝置,所述存儲器包括電腦程式代碼,所述至少一個存儲器和所述電腦程式代碼被配置為與所述至少一個處理器一起導致所述裝置執行至少以下操作確定關於用戶輸入的位置和移動的信息,基於所述位置信息將當前觸覺數據取回到所述存儲器,根據所述關於位置和移動的信息預測所述用戶輸入的未來位置,將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及根據所取回的當前和未來觸覺數據產生觸覺反饋。根據一個實施例,所述裝置還包括用於將所述觸覺數據壓縮到存儲器,以及根據用於將所述未來觸覺數據取回到存儲器的所預測的未來位置來解壓縮所壓縮的觸覺數據的電腦程式代碼。根據一個實施例,所述裝置還包括用於根據當前位置、至少一個過去位置、所述當前位置和所述至少一個過去位置的距離以及從所述至少一個過去位置到所述當 前位置的方向來預測所述未來位置的電腦程式代碼。根據一個實施例,所述裝置還包括用於將所述觸覺數據壓縮到存儲器的電腦程式代碼,其中通過包括行程長度編碼、掃描線編碼、基於塊的編碼、多通編碼、低通濾波、降尺度以及十中抽一採樣的組中的至少一項執行所述壓縮。根據一個實施例,所述裝置還包括用於響應於在過去未使用所述觸覺數據或者響應於預測在未來不使用所述觸覺數據而從所述存儲器刪除所述觸覺數據的電腦程式代碼。根據一個實施例,所述裝置還包括用於使用適於圖形呈現的硬體生成所述觸覺數據的電腦程式代碼。根據一個實施例,所述裝置還包括用於響應於用戶界面的變化而生成所述觸覺數據,以及將所述觸覺數據更新到所述存儲器的電腦程式代碼。根據一個實施例,所述裝置還包括用於從所述觸覺數據確定紋理信息的電腦程式代碼,其中所述紋理信息是包括紋理像素、致動器使用參數和用於驅動致動器的程序代碼的組中的至少一項。根據一個實施例,所述裝置還包括用於通過響應於所述觸覺數據而驅動所述致動器來產生所述觸覺反饋的電腦程式代碼,其中所述觸覺數據指示諸如柔軟度、圖案和彈性之類的材料性質。根據一個實施例,所述裝置還包括用於根據使用所述位置信息和觸覺數據的距離計算來產生所述觸覺反饋的電腦程式代碼,其中首先使用觸覺數據塊並且隨後使用觸覺數據像素來執行所述距離計算。根據一個實施例,所述裝置還包括主處理器以及在操作上與所述主處理器相連的系統存儲器,觸覺處理器以及在操作上與所述觸覺處理器相連的本地存儲器,位於所述主處理器和所述觸覺處理器以及/或者所述系統存儲器和所述本地存儲器之間的數據總線,以及被配置為與所述至少一個處理器一起導致所述裝置將所述觸覺數據和所述未來觸覺數據取回到所述本地存儲器中的電腦程式代碼。根據一個實施例,所述裝置還包括響應於所述用戶界面的變化而將所述觸覺數據更新到所述本地存儲器中,以及將所述未來觸覺數據解壓縮到所述本地存儲器中的電腦程式代碼。根據第三方面,提供一種包括至少一個處理器、至少一個存儲器的系統,所述存儲器包括電腦程式代碼,所述至少一個存儲器和所述電腦程式代碼被配置為與所述至少一個處理器一起導致所述系統執行至少以下操作確定關於用戶輸入的位置和移動的信息,基於所述位置信息將當前觸覺數據取回到所述存儲器,根據所述關於位置和移動的信息預測所述用戶輸入的未來位置,將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及根據所取回的當前和未來觸覺數據產生觸覺反饋。根據一個實施例,所述系統還包括主處理器以及在操作上與所述主處理器相連的系統存儲器,觸覺處理器以及在操作上與所述觸覺處理器相連的本地存儲器,位於所述主處理器和所述觸覺處理器以及/或者所述系統存儲器和所述本地存儲器之間的數據連接,以及被配置為與所述至少一個處理器一起導致所述系統將所述觸覺數據和所述未來觸覺數據取回到所述本地存儲器中的電腦程式代碼。根據第四方面,提供一種諸如晶片或獨立模塊之類的模塊,所述模塊包括處理器、包含電腦程式代碼的存儲器,所述存儲器和所述電腦程式代碼被配置為與所述處理器一起導致所述模塊執行至少以下操作形成關於用戶輸入的位置和移動的信息,基於所述 位置信息將當前觸覺數據取回到所述存儲器,形成所述用戶輸入的未來位置,所述未來位置基於所述關於位置和移動的信息,將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及根據所取回的當前和未來觸覺數據提供用於產生觸覺反饋的信號。根據一個實施例,所述模塊可以布置為作為所述裝置和/或所述系統的一部分執行操作,並且所述模塊可以作為多個類似模塊中的一個模塊執行操作。根據第五方面,提供一種存儲在非臨時計算機可讀介質上並且可在數據處理設備中執行的電腦程式產品,所述電腦程式產品包括用於確定關於用戶輸入的位置和移動的信息的電腦程式代碼部分,用於基於所述位置信息將當前觸覺數據取回到存儲器的電腦程式代碼部分,用於根據所述關於位置和移動的信息預測所述用戶輸入的未來位置的電腦程式代碼部分,用於將與所述未來位置相關的未來觸覺數據取回到所述存儲器的電腦程式代碼部分,以及用於根據所取回的當前和未來觸覺數據產生觸覺反饋的電腦程式代碼部分。根據第六方面,提供一種裝置,包括用於處理數據和電腦程式代碼的處理器,用於確定關於用戶輸入的位置和移動的信息的部件,用於基於所述位置信息將當前觸覺數據取回到存儲器的部件,用於根據所述關於位置和移動的信息預測所述用戶輸入的未來位置的部件,用於將與所述未來位置相關的未來觸覺數據取回到所述存儲器的部件,以及用於根據所取回的當前和未來觸覺數據產生觸覺反饋的部件。
下面將參考附圖更詳細地描述本發明的各種實施例,這些附圖是圖I是根據一個實例實施例的用於產生觸覺反饋的方法的流程圖;圖2a示出根據一個實例實施例的觸覺反饋系統和模塊的框圖;圖2b示出根據一個實例實施例的觸覺反饋裝置的框圖;圖3a和3b示出根據一個實例實施例的與用戶界面元素相關的觸覺反饋的使用;圖4a、4b和4c示出根據一個實例實施例的空間觸覺信息的壓縮和解壓縮方法;圖5a、5b和5c示出根據一個實例實施例的帶有收縮的掃描線參考表的空間觸覺信息的壓縮和解壓縮方法;圖6a、6b和6c不出根據一個實例實施例的空間觸覺信息的基於塊的壓縮和解壓縮方法;
圖7a、7b、7c和7d示出根據一個實例實施例的計算觸覺反饋的距離的方法;圖8a和Sb示出根據一個實例實施例的空間觸覺信息的預測性解壓縮的操作;圖9示出根據一個實例實施例的觸覺紋理的使用以及將觸覺紋理分配給用戶界面元素;以及圖10是根據一個實例實施例的產生觸覺反饋的方法的流程圖。
具體實施例方式在下文中,將在可攜式電子設備的上下文中描述本發明的多個實施例。但是需要指出,本發明並不限於可攜式電子設備。實際上,不同的實施例廣泛地用於任何需要為用戶提供觸覺反饋的環境。例如,諸如小轎車、飛機和船隻之類的交通工具的控制系統可以從使用下面描述的不同實施例獲益。此外,諸如智能樓宇和各種家用電器(例如,電視、廚房設備、洗衣機等)之類的較大物體的用戶界面可以具有根據不同實施例的增強觸覺反饋。各種實施例還可以實現為諸如晶片或觸覺反饋模塊之類的模塊或實現為當在處理器上運行時,能夠操縱觸覺反饋的電腦程式產品。圖I是根據一個實例實施例的用於產生觸覺反饋的方法的流程圖。在階段110,確定當前觸點的位置和移動。然後在階段120取回與當前位置相關的觸覺數據,所取回的觸覺數據可用於生成到用戶的觸覺反饋。在實際中,觸覺數據可與用戶界面上的對象相關,並且可以描述用戶界面對象的表面或交互類型。通過生成觸覺(基於移動的物理觸覺)反饋,可使對象覺得具有特定種類表面或者使對象通過移動(例如,振動)對觸摸做出響應。在階段130,預測未來觸摸位置。通過觀察用戶界面上的當前和過去觸點以及根據所述當前和過去觸點推斷未來觸點(多個)來完成此操作。例如,可以計算移動速度、移動方向和移動曲率,並且根據這些量來預測未來觸點。備選地或此外,可簡單地通過根據當前觸點投射過去觸點(投射到另一側)來創建未來觸點。在階段140,使用有關可能未來觸點的信息將觸覺數據取回到存儲器,以便例如可以更快地存取觸覺數據。例如,當下一次進入階段120時,可不必將任何新數據取回到本地存儲器,因為已在先前階段140預測性地取回數據。在階段150,未來觸覺數據可用於在用戶觸摸進入未來觸點覆蓋的區域之時,生成到用戶的觸覺反饋。如上所述,此生成操作可在不將觸覺數據取回到存儲器的情況下完成,因為已在階段140取回所述數據。還可使用未來(預測的)觸覺數據,以便在用戶觸摸進入預測區域之前已經給出觸覺反饋,以便例如指示用戶正在移向某個對象。 上述空間預測可用於優化內存的速度和利用率。使用此方法,可針對觸覺數據使用更少的本地內存,並且由於觸覺數據已在本地存儲器中,所以可以更快地取回觸覺數據。在某些情況下,如果確定預測不能針對特定用戶界面布局而良好地工作,則可以關閉預測。預測性觸覺數據取回很適合於連續移動,例如平移、滾動和滾動條以及感知圖片。有視力障礙的人可以發現生成數據反饋尤其有用,因為儘管他們不能看到用戶界面,但是他們可以感知用戶界面。上述解決方案還可以包括以下特徵。觸覺數據(觸覺表面標識符(ID))可以通過現有圖形硬體來呈現。如果沒有可用圖形硬體,則可通過諸如矩形、圓形、多邊形之類的幾何形狀表示用戶界面,並且這些形狀可被轉換為掃描線格式。可使用觸覺協處理器。觸覺數據可被壓縮,以便放入協處理器的本地存儲器。此步驟可以包括減小原始觸覺數據的大小並進行多輪壓縮,以便形成足夠小的壓縮數據。可以將本地存儲器中的觸覺數據和新的觸覺數據進行比較,並且僅將修改後的壓縮數據傳輸到觸覺協處理器的本地存儲器(例如,經由I2C總線或其他任何用於連接觸覺處理器和主處理器的總線)。如果用戶界面保持靜態,則沒有任何數據被發送到觸覺協處理器。觸覺算法可讀取用戶觸摸輸入並檢查屏幕的對應部分是否具有某些與其關聯的觸覺材料。針對用戶的反饋可以使用簡單的預定義觸覺圖像圖案或預定義反饋參數而根據觸點的觸覺數據的材料ID來提供,或者通過執行與所述ID關聯的一部分觸覺反饋代碼來提供。取決於觸覺算法,還可計算到最近用戶界面元素的距離以便生成反饋。圖2a示出根據一個實例實施例的觸覺反饋系統和模塊的框圖。在圖2a中,主集成處理單元核心201與觸覺協處理器202是分離的。觸覺模塊可以是圖中的單獨晶片,也可以集成在其他晶片或元件中。主集成核心201可以包括用於呈現用戶界面圖形的圖形硬體,或者包括單獨的圖形硬體。存在各種與圖形硬體相關的緩衝器,例如幀緩衝器、Z緩衝器(用於深度計算),以及模板緩衝器(未示出)。還可以存在觸覺表面緩衝器(觸覺數據緩衝器)。圖形硬體和緩衝器可通過用於發送圖形命令和用於取回觸覺數據的圖形軟體應用編 程接口(API)進行存取。控制所述系統的應用/用戶界面框架可以減小觸覺數據的大小並壓縮數據,然後使用觸覺API (例如,使用I2C總線)將數據發送到觸覺協處理器。觸覺協處理器然後可以執行觸覺數據的解壓縮,並根據用戶輸入和觸覺數據運行致動器。觸覺處理器也可以僅解壓縮部分數據,或僅從壓縮後的數據取回需要的觸覺ID。為了足夠快地正確感知反饋,觸覺反饋循環可以在例如1000Hz或更高處運行,因此需要特殊類型的處理器來使從用戶輸入到觸覺反饋(振動、致動器)的延遲保持較低。可編程觸覺協處理器可具有有限的處理能力(例如,2MHz)和較小的內存佔用(例如,4-32kB)。觸覺協處理器還可能不能訪問系統存儲器。在觸覺協處理器內運行的觸覺反饋程序代碼需要有關用戶界面窗口和元素位於何處以及它們的材料性質為何的信息。用戶界面窗口和元素可以具有任何形狀和形式,並且僅將窗口直角坐標發送到觸覺協處理器可能是不夠的。在此,認識到可以使用現有圖形硬體來呈現觸覺數據以及規則圖形。例如,觸覺數據(觸覺表面)可以包括8位標識符值來表示不同的表面材料。可以使用圖形處理器的Alpha色彩通道(在其未被系統以其他方式使用的情況下)。此外,可以使用圖形處理器的模板緩衝區。進而,可以呈現單獨的觸覺圖像(可能具有較低解析度)。觸覺表面的原始表示可能無法放入例如4kB的觸覺處理器內存內,因為觸覺數據例如可能佔據307kB (640*480*8位)的空間。另外,主機中央處理單元(CPU)與觸覺處理器之間可能沒有足夠的帶寬(25fps VGA觸覺表面需要7. 7 M B/s,而例如I2C總線帶寬一般為O. 46 M B/s)。通過快速壓縮和解壓縮來將觸覺表面傳輸到觸覺處理器,這些問題已得到緩解或克服。圖2b示出根據一個實例實施例的觸覺反饋裝置的框圖。所述裝置可以具有各種在操作上相連的用戶交互模塊,例如,嵌入設備或者以有線或無線的方式連接到裝置。可以具有揚聲器210和麥克風212來執行基於音頻的輸入/輸出,例如,發出語音命令和收聽音頻反饋。還可以具有顯示器211,例如能夠接收用戶觸摸輸入的觸控螢幕。所述裝置還可以具有鍵盤KEYB,以及其他輸入設備,例如相機、滑鼠、手寫筆等。圖2b的裝置或系統還可以包括至少一個處理器PR0C、存儲器MEM和至少一個通信模塊C0MM。所述裝置還可以包括圖2a的所有元件,例如觸覺協處理器、數據總線、圖形硬體、致動器等。觸覺反饋可以布置在所述系統或裝置中的觸覺模塊內。圖3a和3b示出根據一個實例實施例的與用戶界面元素相關的觸覺反饋的使用。如圖3a所示,用戶界面可以包含顯示器上的各種元素,例如圖標310、按鈕311以及窗口312和313。如圖中所示的電子設備的用戶界面還可以包括鍵盤、麥克風、相機、揚聲器和其他交互模塊。如圖3b所示,觸覺ID表面具有每個用戶界面元素的ID號。例如,圖標310具有與之關聯的觸覺區域320,按鈕311具有與之關聯的觸覺表面321,以及窗口 312和313分別具有與之關聯的觸覺區域322和323。不同區域的不同ID可用於確定用戶界面組件在被觸摸時具有何種感覺。圖3b示出用戶界面的不同區域如何具有不同的材料(自然地,有些區域可能還具有相同的ID)。由於用戶界面元素可能具有任何形狀,因此,諸如矩形之類的簡單基元可能不足以描述元素的觸覺區域。相反,可以使用更複雜的形狀和圖案。因此,可以藉助像素來描述觸覺區域。
可使用各種壓縮方法壓縮觸覺數據。可使用具有參考表的掃描線編碼。可創建參考表以僅指向編碼數據中的少數掃描線。備選地,參考表可以包含每個掃描線起點的索引,自然地需要更多空間。此外,掃描線的編碼可被收縮(collapsed)以節省空間。還可使用基於塊的壓縮。圖4a、4b和4c示出根據一個實例實施例的空間觸覺信息的壓縮和解壓縮方法。在圖4a中,示出圖4b的觸覺數據的編碼。第一行觸覺數據420導致編碼410中只有一對數字O和31,指示在第一行上存在32 (31+1)個O值。這些數字置於第一代碼(C)位置414處,值為0,並且置於第一長度(L)位置415處,值為31。分別地,第四行觸覺數據421導致編碼411指示存在5 (4+1)個O值、2 (1+1)個I值、7 (6+1)個O值等。這些數字置於第一代碼位置414處,值為0,置於第一長度L位置415處,值為4,置於第二代碼位置416處,值為I,置於第二長度位置417處,值為I,置於第三代碼位置418處,值為0,置於第三長度位置處,值為6等。除了編碼後的觸覺數據之外,掃描線參考表還被累加,以便系統可直接存取位於數據中間的掃描線起點。這在圖4c中參考圖4a指示。所述參考表包含掃描線號對(採取編碼形式)和偏移值。所述參考表中的第一表項432指示可以在地址O處找到第一(或基於O的索引中的第O個)掃描線432,可以在地址20處找到第五(或基於O的索引中的第4個)掃描線433。這些表項的編碼後的掃描線可以分別從圖4a中的位置412和413確定。與觸覺數據的原始大小512相比,具有參考表的編碼總大小可以從434中看出為100位元組。掃描線參考表使得編碼數據的隨機存取解碼更快速。如果用戶界面發生變化,則可能需要重新壓縮觸覺數據。可以通過重新壓縮,僅壓縮發生更改的數據並將其插入正確位置。但是,與舊數據相比,新數據的大小可能有所不同。數據可以按順序排列,以便不需要維護單獨的索引表。實際上,可使用兩個觸覺數據緩衝器,以便當觸覺處理器使用其中一個緩衝器時,可將數據發送到另一緩衝器。因此,可以執行更新,以便從正在被使用的另一緩衝器複製未更改的數據,並且經由數據總線從外部僅接收發生更改的數據。這可加快更新速度。在解壓縮時,可使用特定觸摸位置(X,Y)的觸覺數據值,並且無需解壓縮所有數據。觸覺加速器存儲器中可能沒有足夠的內存來存放整個未壓縮的觸覺數據圖像。解壓縮時,基於Y位置從偏移表取回封閉的起始偏移。此後,我們具有4條數據掃描線並且其中一條掃描線是所需的基於Y位置的掃描線。通過添加長度數據來遍歷編碼的掃描線數據(顏色、長度對)來完成掃描線數據的解壓縮。由此找到X位置中的觸覺數據ID值。參考圖4b,將確定位於坐標[X=23,Y=4]處的觸覺表面值。首先,計算參考表索引為Y/4=l,得到數據偏移20。然後,通過採用模數Υ%4=0計算4條掃描線中所需的掃描線,得出第一掃描線。通過檢查掃描線數據,發現X坐標可以從第6對顏色、長度值中找到。通過添加來自編碼數據的行程長度(L)值,直到達到X坐標值來實現此操作。第6對的顏色值(觸覺數據ID)為I。作為另一實例,將確定位於坐標[Χ=25,Υ=13]處的觸覺表面值。參考表索引為Υ/4=3,得到數據偏移76。所需的掃描線為¥%4=1,8卩,第二掃描線。掃描並跳過第一掃描線的數據(通過添加行程長度值,直到覆蓋整條線)。從第二掃描線的數據得出,可以從第3對顏色、長度值找到X坐標。該對的顏色值(觸覺數據ID)為O。圖5a、5b和5c示出根據一個實例實施例的帶有收縮的掃描線參考表的空間觸覺信息的壓縮和解壓縮方法。所述收縮操作可以在壓縮期間或之後執行。收縮不需要徹底,即,可存在多個具有相同內容的線。將圖5a與圖4a相比較,除了已刪除重複表項之外,掃 描線壓縮表相同。換言之,由於圖5b中的掃描線520具有相同內容,因此它們導致相同的壓縮數據,並且可使用相同的掃描線編碼510來表示全部掃描線520。類似地,掃描線521的壓縮結果全部相同,並且可以由數據511表示。由於現在並非所有掃描線均在壓縮數據中具有唯一表項,因此無法僅通過添加壓縮數據的行程長度值來確定像素的數據偏移。因此,圖5c的掃描線參考表包含所有掃描線的表項。但是,掃描線表項530指向同一偏移(O),以及所有掃描線表項531指向同一偏移(42)。此方法提高了實例情況中的壓縮效率,並且總體壓縮後的大小為86位元組。數據解碼過程與圖4a至4c的解碼過程類似,只是在此情況下,直接從參考表找到掃描線偏移(Y坐標)。圖6a、6b和6c不出根據一個實例實施例的空間觸覺信息的基於塊的壓縮和解壓縮方法。在基於塊的壓縮方法中,圖像被分為若干塊(在此實例中,32 X 16像素->4個塊,每個塊16X8像素,塊620、621、622和623)。每個塊被單獨壓縮,並且壓縮數據包括壓縮後的塊數據610、611、612和613, —個塊接著另一個塊。壓縮方式與之前的行程長度壓縮方式類似,只是整個塊在一次掃描中進行壓縮,在邊緣處繞回到下一行。圖6c中的塊數據偏移表指示現在每個塊的塊數據的起點630、631、632和633。壓縮效率可能稍遜於634中指示的基於掃描線的壓縮。但是,如果要執行距離計算,則基於塊的壓縮是有利的。可以在X方向或Y方向上壓縮塊,並且可以選擇更小的壓縮大小。可以例如使用偏移參考表中的I位來存儲塊的掃描方向。將理解,可根據用戶界面、用戶界面的變化、所使用的觸覺反饋算法、執行距離計算的需要等而更改觸覺數據壓縮算法(例如,上述掃描線算法、基於塊的算法、參考表算法)。例如,如果觸覺反饋算法需要確定距離,則可使用基於塊的壓縮,否則可以使用具有收縮參考表的掃描線壓縮。此外,可以對數據運行不同的壓縮算法,然後可以選擇最高效的算法。圖7a、7b、7c和7d示出根據一個實例實施例的計算觸覺反饋距離的方法。有些觸覺算法可以利用對到最近形狀的距離的了解。對於基於塊的行程長度壓縮,按如下方式確定最短距離。首先,找到到不為空的最近塊的距離711。在圖7a中,對於塊700-708,只有塊701、703和705不為空。如果塊不與參考點710的塊平行,則使用塊的角進行計算,如果塊與參考點710的塊平行,則使用塊的左/右或上/下邊進行計算。然後計算最近塊的最大距離712 (遠端角或遠端邊)。如果該最大距離內具有其他塊,則需要將這些塊包括在距離計算中(圓713)。然後,在選定塊的壓縮後的掃描線中執行搜索。如果掃描線起點X〈參考點X〈終點X,則針對所述距離使用掃描線的中點(與參考點具有相同X坐標的像素)。如果掃描線起點X和終點X〈參考點X,則針對所述距離使用掃描線的終點X。如果掃描線起點X和終點X〉參考點X,則針對所述距離使用掃描線的起點X。然後在這些像素中找到最短距離。備選地,可以計算起點、終點和中點的距離並通過比較找到最短距離。在圖7b中,示出針對塊701中的掃描線的計算。發現最短距離為122 (這是距離的平方以避免取平方根)。在圖7c中,示出針對塊703的計算,並且發現對於掃描線6的終點,最短距離為52。在圖7d中,示出針對塊705的計算,並且發現最短距離為145。因此,最近距離為到塊703中的掃描線6的點7。 圖8a和Sb示出根據一個實例實施例的空間觸覺信息的預測性解壓縮操作。預測性解壓縮可以利用有關用戶觸點的移動的信息。所述移動可以具有諸如位置、速度、方向、加速度(或減速度)以及曲率之類的特性。可以測量和/或計算全部或部分特性以預測未來的觸點位置。例如,快速移動的觸點可以導致預測下一觸點距離當前點相對較遠。曲線移動可以導致預測未來點偏離到當前移動線路的一側。可預測多個未來點,以及/或者可以確定未來點的跨距(span)。所預測的未來點和/或所確定的跨距然後可用於確定從存儲器取回到本地高速緩存和/或被解碼的塊或掃描線。為了提高處理速度,壓縮後的觸覺數據的某些區域可以以未壓縮的形式存在於觸覺處理器的本地存儲器中。例如,當觸覺反饋算法需要在每個觸覺循環中取回大量點時,這是有利的。在此情況下,無需在運行中查找或解壓縮數據可以提高操作速度並改進觸覺反饋的功能。例如,本地存儲器中的解壓縮區域可以為ID表面的若干8X8塊,具體取決於可用內存量。因此,如果用戶界面保持相對靜止並且用戶界面元素幾乎不包括動畫或移動,則可以促進快速數據取回。非靜態用戶界面的區域中的塊可以從高速緩存中刪除並不隨新數據進行壓縮。根據觸點位置X,Y,可以預測壓縮表面的哪些部分需要解壓縮以及可以從存儲器刪除哪些未壓縮數據。在圖8a中,示出手指在觸覺觸控螢幕上的移動。塊800是手指當前觸摸的區域。區域801覆蓋先前觸摸的塊,並且區域802示出預測用戶接下來要觸摸的塊。可以取回塊802並將其解壓縮到本地高速緩衝存儲器,以便在用戶觸摸移至新位置時,可以快速存取塊802。因此,舊塊801可以被從高速緩存刪除以釋放內存,因為不再需要它們。在圖Sb中,示出針對觸覺數據解壓縮的移動的預測。白框815示出手指正在移動的最新預測。深灰框816示出可從塊高速緩存刪除的舊位置。使用由點C、NP和NA限定的預測矩形區域解壓縮塊。由點C、NP和NA限定的三角形還可用於獲取更精確的塊解壓縮並避免解壓縮不需要的塊。使用點高速緩存存儲例如最後8個或任何固定數量的先前坐標。圖8b中示出來自點高速緩存的當前手指位置C (cx,cy)、上一點P (px, py)以及平均點A(ax, ay )。還示出了所預測的點NP和NA。可使用點C、P和A按照以下方式計算所預測的點NP和NA。移動速度確定由點C、NP和NA限定的預計三角形的大小。實際上,從C到NA以及從C到NP的距離可以被設為等於從當前點C到「上一」點P的距離。從C到點NA和NP的夾角可以被設為等於從C到點A和P的夾角,但是與從C到點A和P的夾角相比,其在另一側。換言之,點P相對於點C的鏡像定義點NP。點NA然後相對於點C從點A投射到線A-C的延長線上並且到C的距離等於點NP到點C的距離。這使得預測基於移動的當前位置、速度和方向以及移動曲率。觸覺數據塊高速緩存可以包含塊的索引表,以便可以快速從存儲器中找到塊,然後可以直接使用解壓縮後的塊數據。可以創建索引表,因為塊在高速緩存中可能未按順序排列。下面提供塊高速緩存的一個實例實施例的偽代碼。首先,確定當前觸摸位置。然後將「上一點」(即,過去的軌跡點)計算為當前點(5%)和上一點(95%)的加權平均值。換言之,在當前點停留在同一位置時,上一點開始接近當前點,但是變化並不突然。不允許上一點太遠,如果太遠,則重置高速緩存-這被解釋為發生跳轉。接下來,將當前點添加到點高速緩存。然後,計算來自點高速緩存的中間(平均)坐標點。接著,使用由上一點和當前點 形成的兩個向量的點積來計算預計夾角。該夾角還展示出在一段時間內的平滑行為,即,該夾角被緩慢更新。接下來,確定該夾角兩邊處的兩個預計點首先,通過相對於點C執行鏡像獲取點NP,然後將點NA定義為具有到C的相同距離並且位於所計算的與線C-NA的預計夾角中。然後解壓縮由所述三個點(兩個預計點以及當前點)限定的矩形中的塊。/*計算當前點C*/
cx=curreiit_toiichJocatioii_xO;cy=current_toiich_!ocatioii_yO*
/*計算新的上一點P (95% P,5% C)*/px=p\· 0.95+cx*0.05;
py=py*0.95+cy*0J5;
/*檢查上一點是否太遠*/if ( (distance (ex, cy, px, py) > BIG— DISTANCE){
resetPointCache (ex, cy); px=cx;
py=^y ·
}
/*將當前點C添加到點高速緩存*/
adiPointToCacie (cit cy);
/*計算來自點高速緩存的平均坐標崩calcAverage (&ai, &ay); /*計算雨量C-P和C-A之閡的點翁*/dotp=clot|)roduct (cx-px, cy-py, c\-a\, cy-av);
/*計算爾量C-P和C-A之闊的夾角*1
權利要求
1.一種用於提供觸覺反饋的方法,包括 -自動確定關於用戶輸入的位置和移動的信息, -基於所述位置信息將當前觸覺數據取回到存儲器, -根據所述關於位置和移動的信息自動預測所述用戶輸入的未來位置, -將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及 -根據所取回的當前和未來觸覺數據自動產生觸覺反饋。
2.根據權利要求I的方法,還包括 -將所述觸覺數據壓縮到存儲器,以及 -根據用於將所述未來觸覺數據取回到存儲器的所預測的未來位置來解壓縮所壓縮的觸覺數據。
3.根據權利要求I或2的方法,還包括 -根據當前位置、至少一個過去位置、所述當前位置和所述至少一個過去位置的距離以及從所述至少一個過去位置到所述當前位置的方向來預測所述未來位置。
4.根據權利要求1、2或3的方法,還包括 -將所述觸覺數據壓縮到存儲器,其中通過包括行程長度編碼、掃描線編碼、基於塊的編碼、多通編碼、低通濾波、降尺度以及十中抽一採樣的組中的至少一項執行所述壓縮。
5.根據權利要求I至4中任一項的方法,還包括 -響應於在過去未使用所述觸覺數據或者響應於預測在未來不使用所述觸覺數據而從所述存儲器刪除所述觸覺數據。
6.根據權利要求I至5中任一項的方法,還包括 -使用適於圖形呈現的硬體來生成所述觸覺數據。
7.根據權利要求I至6中任一項的方法,還包括 -響應於用戶界面的變化而生成所述觸覺數據,以及 -將所述觸覺數據更新到所述存儲器。
8.根據權利要求I至7中任一項的方法,還包括 -從所述觸覺數據確定紋理信息,其中所述紋理信息是包括紋理像素、致動器使用參數和用於驅動致動器的程序代碼的組中的至少一項。
9.根據權利要求I至8中任一項的方法,還包括 -通過響應於所述觸覺數據而驅動所述致動器來產生所述觸覺反饋,其中所述觸覺數據指示諸如柔軟度、圖案和彈性的材料性質。
10.根據權利要求I至9中任一項的方法,還包括 -根據使用所述位置信息和觸覺數據的距離計算來產生所述觸覺反饋,其中首先使用觸覺數據塊並且隨後使用觸覺數據像素來執行所述距離計算。
11.一種包括至少一個處理器、至少一個存儲器的裝置,所述存儲器包括電腦程式代碼,所述至少一個存儲器和所述電腦程式代碼被配置為與所述至少一個處理器一起導致所述裝置執行至少以下操作 -確定關於用戶輸入的位置和移動的信息, -基於所述位置信息將當前觸覺數據取回到所述存儲器, -根據所述關於位置和移動的信息預測所述用戶輸入的未來位置,-將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及 -根據所取回的當前和未來觸覺數據產生觸覺反饋。
12.根據權利要求11的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -將所述觸覺數據壓縮到存儲器,以及 -根據用於將所述未來觸覺數據取回到存儲器的所預測的未來位置來解壓縮所壓縮的觸覺數據。
13.根據權利要求11或12的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -根據當前位置、至少一個過去位置、所述當前位置和所述至少一個過去位置的距離以及從所述至少一個過去位置到所述當前位置的方向來預測所述未來位置。
14.根據權利要求11、12或13的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -將所述觸覺數據壓縮到存儲器,其中通過包括行程長度編碼、掃描線編碼、基於塊的編碼、多通編碼、低通濾波、降尺度以及十中抽一採樣的組中的至少一項執行所述壓縮。
15.根據權利要求11至14中任一項的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -響應於在過去未使用所述觸覺數據或者響應於預測在未來不使用所述觸覺數據而從所述存儲器刪除所述觸覺數據。
16.根據權利要求11至15中任一項的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -使用適於圖形呈現的硬體來生成所述觸覺數據。
17.根據權利要求11至16中任一項的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -響應於用戶界面的變化而生成所述觸覺數據,以及 -將所述觸覺數據更新到所述存儲器。
18.根據權利要求11至17中任一項的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -從所述觸覺數據確定紋理信息,其中所述紋理信息是包括紋理像素、致動器使用參數和用於驅動致動器的程序代碼的組中的至少一項。
19.根據權利要求11至18中任一項的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -通過響應於所述觸覺數據而驅動所述致動器來產生所述觸覺反饋,其中所述觸覺數據指示諸如柔軟度、圖案和彈性的材料性質。
20.根據權利要求11至19中任一項的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -根據使用所述位置信息和觸覺數據的距離計算來產生所述觸覺反饋,其中首先使用觸覺數據塊並且隨後使用觸覺數據像素來執行所述距離計算。
21.一種根據權利要求11至20中任一項的裝置,包括-主處理器以及在操作上與所述主處理器相連的系統存儲器, -觸覺處理器以及在操作上與所述觸覺處理器相連的本地存儲器, -位於所述主處理器和所述觸覺處理器以及/或者所述系統存儲器和所述本地存儲器之間的數據總線,以及 -被配置為與所述至少一個處理器一起導致所述裝置將所述觸覺數據和所述未來觸覺數據取回到所述本地存儲器中的電腦程式代碼。
22.根據權利要求21的裝置,還包括被配置為與所述處理器一起導致所述裝置執行至少以下操作的電腦程式代碼 -響應於所述用戶界面的變化而將所述觸覺數據更新到所述本地存儲器中,以及 -將所述未來觸覺數據解壓縮到所述本地存儲器中。
23.一種包括至少一個處理器、至少一個存儲器的系統,所述存儲器包括電腦程式代碼,所述至少一個存儲器和所述電腦程式代碼被配置為與所述至少一個處理器一起導致所述系統執行至少以下操作 -確定關於用戶輸入的位置和移動的信息, -基於所述位置信息將當前觸覺數據取回到所述存儲器, -根據所述關於位置和移動的信息預測所述用戶輸入的未來位置, -將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及 -根據所取回的當前和未來觸覺數據產生觸覺反饋。
24.根據權利要求23的系統,其中所述系統還包括 -主處理器以及在操作上與所述主處理器相連的系統存儲器, -觸覺處理器以及在操作上與所述觸覺處理器相連的本地存儲器, -位於所述主處理器和所述觸覺處理器以及/或者所述系統存儲器和所述本地存儲器之間的數據連接,以及 -被配置為與所述至少一個處理器一起導致所述系統將所述觸覺數據和所述未來觸覺數據取回到所述本地存儲器中的電腦程式代碼。
25.—種諸如晶片或獨立模塊的模塊,所述模塊包括處理器、包含電腦程式代碼的存儲器,所述存儲器和所述電腦程式代碼被配置為與所述處理器一起導致所述模塊執行至少以下操作 -形成關於用戶輸入的位置和移動的信息, -基於所述位置信息將當前觸覺數據取回到所述存儲器, -形成所述用戶輸入的未來位置,所述未來位置基於所述關於位置和移動的信息, -將與所述未來位置相關的未來觸覺數據取回到所述存儲器,以及 -根據所取回的當前和未來觸覺數據提供用於產生觸覺反饋的信號。
26.一種存儲在非臨時計算機可讀介質上並且可在數據處理設備中執行的電腦程式產品,所述電腦程式產品包括 -用於確定關於用戶輸入的位置和移動的信息的電腦程式代碼部分, -用於基於所述位置信息將當前觸覺數據取回到存儲器的電腦程式代碼部分, -用於根據所述關於位置和移動的信息預測所述用戶輸入的未來位置的電腦程式代碼部分,-用於將與所述未來位置相關的未來觸覺數據取回到所述存儲器的電腦程式代碼部分,以及 -用於根據所取回的當前和未來觸覺數據產生觸覺反饋的電腦程式代碼部分。
27.一種裝置,包括 -用於處理數據和電腦程式代碼的處理器, -用於確定關於用戶輸入的位置和移動的信息的部件, -用於基於所述位置信息將當前觸覺數據取回到存儲器的部件, -用於根據所述關於位置和移動的信息預測所述用戶輸入的未來位置的部件, -用於將與所述未來位置相關的未來觸覺數據取回到所述存儲器的部件,以及 -用於根據所取回的當前和未來觸覺數據產生觸覺反饋的部件。
全文摘要
本發明涉及為電子設備的用戶提供觸覺反饋。使用關於用戶界面上的觸覺元素的空間信息來創建與用戶界面元素相關的觸覺反饋。所述空間信息例如以壓縮和/或編碼的形式駐留在存儲器中,以便節省內存並提高操作速度。所述空間信息在需要時被解碼或解壓縮,此外,布置觸覺高速緩存,在該處提前解壓縮可能立即需要的空間信息。此預測性解壓縮被布置為基於用戶界面上的用戶輸入的移動來完成。例如,將用戶可能立即觸摸的塊解壓縮到所述觸覺高速緩存。
文檔編號G06F3/01GK102971689SQ201080067797
公開日2013年3月13日 申請日期2010年6月28日 優先權日2010年6月28日
發明者M·派索寧 申請人:諾基亞公司