第280章 我已經給你們算好了
徐洋猛地張了張嘴,眉頭微蹙,腦子飛速運轉個不停。
他從事伺服控制領域已經有十幾年了,對分數階微積分也並不陌生,可那東西向來被業內人視作「屠龍之技」的。
在理論層面堪稱精緻完美,看似無懈可擊,可落到實際工程應用里,卻處處都是難以突破的壁壘,根本沒法真正落地,真正把這個方法用到實際實驗中的,少之又少。
可肖宿剛才給出的頻帶範圍和近似階次,精確得像是已經把仿真跑過幾百遍一樣。
「肖教授,」徐洋的聲音有些發乾,「分數階項的離散化實現方案,您有更具體的……內容嗎?」
肖宿掃了他一眼,轉身在白板上寫出了遞歸濾波器的零極點配置公式。
「用Oustaloup遞歸濾波器,五階逼近就夠了,零極點交錯分布在指定頻帶內。」
「極點的頻率分布可以採用幾何級數,公比取10^(1/N),N是逼近階數,五階逼近在你們關心的頻段內幅頻誤差不會超過0.3dB,相頻誤差不會超過2度。」
實驗室里安靜了幾秒鐘。
角落裡一個年輕工程師小聲問旁邊的同事:「他剛才說的那個Ous什麼東西,你聽說過嗎?」
同事搖了搖頭,臉色發白。
徐洋顧不上管身後的動靜,他腦子裡正在瘋狂地把肖宿給出的傳遞函數代入到他們現有的系統框圖中去推演。
他越推越快,越推越心驚。
這個方案不是看起來可行,而是幾乎不需要做任何額外的理論驗證,拿過來就能往DSP里寫代碼了。
「可是肖教授,」徐洋突然想到了什麼,「分數階PID的參數整定,用相位裕度法需要用到一個參考模型,我們的參考模型又該怎麼建呢?」
「可以用Den Hartog的臨界靈敏度法變形,把整數階的Nyquist判據推廣到分數階域。」
肖宿把筆帽蓋上,語氣平淡得像在說一加一等於二,「推廣的步驟很簡單,構造一個Riemann曲面上的複變函數,把分數階項映射到曲面的不同葉上,然後在主葉上做Nyquist圍線積分。
Jacobian矩陣的結構和李群上的切空間有自然的對應關係,這一步我在另一篇論文裡詳細寫過,回頭你們可以看一下。」
徐洋的腦袋已經開始發脹了。
他搞了十幾年伺服控制,自認為在國內算得上頂尖水平,可肖宿剛才說的話里,他能完全聽懂的不到一半。
沈凌比徐洋好不到哪去。
他是做圖像重建的,控制理論不是他的本行,但他已經敏銳地意識到了一個問題,那就是肖宿剛才解決伺服延遲的方法,和他接下來要問的成像畸變問題,在數學結構上似乎是相通的。
「肖教授,」沈凌深吸一口氣,往前邁了一步,「成像這邊的問題,您剛才也聽到了。
我們的多視圖幾何重建在動態場景下會出現幀間畸變,我用梯度下降和卡爾曼濾波都試過了,效果還是不太理想。」
「因為你的問題不在濾波。」肖宿轉身面對他,「你把你們的投影矩陣寫給我看看。」
沈凌立刻拉過一台筆記本電腦,調出他們當前使用的三維重建算法的核心代碼,把投影矩陣的定義部分展示在屏幕上。
肖宿只是上下掃了一遍就知道他們問題在哪兒了。
他直接指著屏幕上的一個矩陣說道:
「世界坐標繫到相機坐標系的變換用的是歐拉角表示旋轉矩陣,然後用對極幾何約束求本質矩陣,再用SVD分解做運動恢復。」
「問題就出在這一步,在高速動態場景下,相鄰幀之間的旋轉不是在歐幾里得空間裡發生的,而是在一個彎曲的流形上。
你的SVD分解把非線性約束強制投影到了線性空間裡,相當於把球面坐標硬塞進直角坐標系,畸變就是這麼來的。」
沈凌的瞳孔縮了一下。
他隱隱約約感覺到問題出在幾何框架上,但一直沒能準確定位到,想不到肖宿一下子就看出來了。
「正確的做法應該是放棄歐拉角,改用四元數表示旋轉,並且在單位四元數構成的S^3球面上直接做優化。」
肖宿再次拿起白板筆,在圖紙的另一塊空白區域寫了起來。
「首先,設第k幀到第k+1幀的旋轉四元數為q_k,那麼幀間運動導致的深度估計誤差肯定滿足一個辛結構保持的Hamilton系統。
然後構造這樣一個辛矩陣M,它的作用是把高維的投影誤差映射到一個低維的辛商流形上,在這個商流形上,誤差傳播方程就會退化成一個可積系統。」
「這個辛矩陣的定義是M = J·∇²H,其中J是標準辛形式,H是系統的Hamilton函數,取為投影誤差在深度方向上的二範數。
∇²H是H的Hessian矩陣,在這個特定的幾何設定下,它的閉式解是∇²H = (I - n·n^T)/d^2,其中,n是視線方向的單位向量,d是深度值。
這兩個一乘,M的特徵值就會全部落在單位圓上,所以數值穩定性是自然的,不需要任何額外的正則化。」
沈凌的嘴唇微微顫抖著。
他渾身上下都激動的泛起了雞皮疙瘩。
那個困擾了他一年半的幀間畸變問題,肖宿只是用一組辛矩陣輕輕描淡寫地把它拆解了。
每一步推導都寫得那麼簡單,組合在一起,卻讓他有些頭皮發麻。
這種震撼不是來自結論本身有多複雜,恰恰相反。
它太簡單了。
簡單到讓人覺得,在正確的視角下,這個問題本來就不應該有困難。
「可是我還有一個問題,」沈凌強迫自己冷靜下來,「辛矩陣的方案解決了旋轉部分的畸變,但平移部分的漂移呢?
我們的相機在快速大範圍移動時,深度圖會出現一個緩慢的累積漂移,這個漂移在用了您的辛矩陣修正旋轉後還是會殘留的。」
「那個漂移不是平移帶來的,而是你的深度圖初始值在高速運動下沒有及時收斂。」
肖宿的回答幾乎沒有任何停頓,「可以用非線性互補濾波器來解決。
在低頻段,可以信任慣性測量單元的姿態數據,而高頻段則可以信任視覺里程計的相對運動估計。至於交叉頻率,直接設在視差數據的噪聲帶寬和IMU漂移帶寬的交點處就可以。
傳遞函數就取n階巴特沃斯(Butterworth)形式,階數n的取值,是由姿態誤差的截止頻率和深度估計的收斂速率共同決定的。
我已經給你們算好了,n取3。」
他從事伺服控制領域已經有十幾年了,對分數階微積分也並不陌生,可那東西向來被業內人視作「屠龍之技」的。
在理論層面堪稱精緻完美,看似無懈可擊,可落到實際工程應用里,卻處處都是難以突破的壁壘,根本沒法真正落地,真正把這個方法用到實際實驗中的,少之又少。
可肖宿剛才給出的頻帶範圍和近似階次,精確得像是已經把仿真跑過幾百遍一樣。
「肖教授,」徐洋的聲音有些發乾,「分數階項的離散化實現方案,您有更具體的……內容嗎?」
肖宿掃了他一眼,轉身在白板上寫出了遞歸濾波器的零極點配置公式。
「用Oustaloup遞歸濾波器,五階逼近就夠了,零極點交錯分布在指定頻帶內。」
「極點的頻率分布可以採用幾何級數,公比取10^(1/N),N是逼近階數,五階逼近在你們關心的頻段內幅頻誤差不會超過0.3dB,相頻誤差不會超過2度。」
實驗室里安靜了幾秒鐘。
角落裡一個年輕工程師小聲問旁邊的同事:「他剛才說的那個Ous什麼東西,你聽說過嗎?」
同事搖了搖頭,臉色發白。
徐洋顧不上管身後的動靜,他腦子裡正在瘋狂地把肖宿給出的傳遞函數代入到他們現有的系統框圖中去推演。
他越推越快,越推越心驚。
這個方案不是看起來可行,而是幾乎不需要做任何額外的理論驗證,拿過來就能往DSP里寫代碼了。
「可是肖教授,」徐洋突然想到了什麼,「分數階PID的參數整定,用相位裕度法需要用到一個參考模型,我們的參考模型又該怎麼建呢?」
「可以用Den Hartog的臨界靈敏度法變形,把整數階的Nyquist判據推廣到分數階域。」
肖宿把筆帽蓋上,語氣平淡得像在說一加一等於二,「推廣的步驟很簡單,構造一個Riemann曲面上的複變函數,把分數階項映射到曲面的不同葉上,然後在主葉上做Nyquist圍線積分。
Jacobian矩陣的結構和李群上的切空間有自然的對應關係,這一步我在另一篇論文裡詳細寫過,回頭你們可以看一下。」
徐洋的腦袋已經開始發脹了。
他搞了十幾年伺服控制,自認為在國內算得上頂尖水平,可肖宿剛才說的話里,他能完全聽懂的不到一半。
沈凌比徐洋好不到哪去。
他是做圖像重建的,控制理論不是他的本行,但他已經敏銳地意識到了一個問題,那就是肖宿剛才解決伺服延遲的方法,和他接下來要問的成像畸變問題,在數學結構上似乎是相通的。
「肖教授,」沈凌深吸一口氣,往前邁了一步,「成像這邊的問題,您剛才也聽到了。
我們的多視圖幾何重建在動態場景下會出現幀間畸變,我用梯度下降和卡爾曼濾波都試過了,效果還是不太理想。」
「因為你的問題不在濾波。」肖宿轉身面對他,「你把你們的投影矩陣寫給我看看。」
沈凌立刻拉過一台筆記本電腦,調出他們當前使用的三維重建算法的核心代碼,把投影矩陣的定義部分展示在屏幕上。
肖宿只是上下掃了一遍就知道他們問題在哪兒了。
他直接指著屏幕上的一個矩陣說道:
「世界坐標繫到相機坐標系的變換用的是歐拉角表示旋轉矩陣,然後用對極幾何約束求本質矩陣,再用SVD分解做運動恢復。」
「問題就出在這一步,在高速動態場景下,相鄰幀之間的旋轉不是在歐幾里得空間裡發生的,而是在一個彎曲的流形上。
你的SVD分解把非線性約束強制投影到了線性空間裡,相當於把球面坐標硬塞進直角坐標系,畸變就是這麼來的。」
沈凌的瞳孔縮了一下。
他隱隱約約感覺到問題出在幾何框架上,但一直沒能準確定位到,想不到肖宿一下子就看出來了。
「正確的做法應該是放棄歐拉角,改用四元數表示旋轉,並且在單位四元數構成的S^3球面上直接做優化。」
肖宿再次拿起白板筆,在圖紙的另一塊空白區域寫了起來。
「首先,設第k幀到第k+1幀的旋轉四元數為q_k,那麼幀間運動導致的深度估計誤差肯定滿足一個辛結構保持的Hamilton系統。
然後構造這樣一個辛矩陣M,它的作用是把高維的投影誤差映射到一個低維的辛商流形上,在這個商流形上,誤差傳播方程就會退化成一個可積系統。」
「這個辛矩陣的定義是M = J·∇²H,其中J是標準辛形式,H是系統的Hamilton函數,取為投影誤差在深度方向上的二範數。
∇²H是H的Hessian矩陣,在這個特定的幾何設定下,它的閉式解是∇²H = (I - n·n^T)/d^2,其中,n是視線方向的單位向量,d是深度值。
這兩個一乘,M的特徵值就會全部落在單位圓上,所以數值穩定性是自然的,不需要任何額外的正則化。」
沈凌的嘴唇微微顫抖著。
他渾身上下都激動的泛起了雞皮疙瘩。
那個困擾了他一年半的幀間畸變問題,肖宿只是用一組辛矩陣輕輕描淡寫地把它拆解了。
每一步推導都寫得那麼簡單,組合在一起,卻讓他有些頭皮發麻。
這種震撼不是來自結論本身有多複雜,恰恰相反。
它太簡單了。
簡單到讓人覺得,在正確的視角下,這個問題本來就不應該有困難。
「可是我還有一個問題,」沈凌強迫自己冷靜下來,「辛矩陣的方案解決了旋轉部分的畸變,但平移部分的漂移呢?
我們的相機在快速大範圍移動時,深度圖會出現一個緩慢的累積漂移,這個漂移在用了您的辛矩陣修正旋轉後還是會殘留的。」
「那個漂移不是平移帶來的,而是你的深度圖初始值在高速運動下沒有及時收斂。」
肖宿的回答幾乎沒有任何停頓,「可以用非線性互補濾波器來解決。
在低頻段,可以信任慣性測量單元的姿態數據,而高頻段則可以信任視覺里程計的相對運動估計。至於交叉頻率,直接設在視差數據的噪聲帶寬和IMU漂移帶寬的交點處就可以。
傳遞函數就取n階巴特沃斯(Butterworth)形式,階數n的取值,是由姿態誤差的截止頻率和深度估計的收斂速率共同決定的。
我已經給你們算好了,n取3。」