1. 程式人生 > >maplab系列9:poseUpdate調參

maplab系列9:poseUpdate調參

rovioli在rovio之上加了定位功能,使用poseUpdate對濾波器新增一個觀察量。專業樣做的好處是在沒有觀察量的時候,可以靠存vio推進。在濾波器狀態好的時候可以實現長時間(大於幾十秒)的正確定位。

並且雖然只用pose來更新,但通過prediction的F矩陣,同樣可以調整到速度,imu等。其實濾波器完整的更新過程應該從上一個時刻的狀態到當前時刻的預測直再到更新直。這樣如果上一個時刻預測這個時刻的位置移動少了一些,那麼說明速度也需要提高。

檢查更新過程可以計算一個全量更新,也就是\Delta x=H*r的到更新量,和通過K得到的跟新量的對比。看跟新量大概是全量的百分比。

H決定一個參差r能對應每個狀態量的跟新量,這個比例完全又推到決定,沒有調參的餘地,如果推到有誤,這裡也會有錯。可以調的東西有觀察量的不確定度,有一些觀察量會影響所有的狀態量,比如重投影。這時候調整觀察量的不確定度只是整體調整全量更新的比例。如果不同的觀察量隻影響部分狀態量,這樣可以通過調整觀察量的不確定度來平衡觀察量之間的影響度。比如前後幀的update和gps全域性的update。

檢測濾波器狀態可以突然關閉濾波器跟新,過一段時間再開啟跟新,看下這時的偏差量。

檢查濾波器是否有效可以通過降低update頻率。看下狀態有沒有跟著跟新量走的趨勢。但只有update的頻率夠高才能快速讓濾波器進入狀態,然後再減少跟新頻率才行。

rovioli中的poseupdate分為三部分,一部分是更新觀察量pose所在座標系到濾波器所在座標系的變換(IW),一個直接跟新濾波器狀態,一個是觀察量local和濾波器local的變換(MV),比如觀察量是鐳射slam的pose,濾波器是imu。這時可以不用精確確定lidar到imu的變換,而放到MV中來更新。這三部分的比重通過調節。

  UpdateNoise:值越大pose更新越慢,對應prenoiP_的濾波器狀態部分

  init_cov_IrIW 10; 
  init_cov_qWI 1;  

  pre_cov_MrMV 1e-4;  
  pre_cov_qVM 1e-4; 
  
  init_cov_MrMV 1; 
  init_cov_qVM 1;  
  pre_cov_IrIW 0.0001;  
  pre_cov_qWI 0.0001; 

對應prenoiP_的pose部分狀態部分

值越小,對速度等濾波器狀態影響越大,如果值太大,就等於強行把body的pose等於更新的pose

updateVecNormTermination對應IEKF的收斂直,如果pose跟新和自建點跟新太矛盾,會招騁不收斂,然後就沒有任何poseupdate更新量了。也就是兩者矛盾的時候,選擇相信自建點的更新。

靜止啟動初始化比運動中初始化容易。