1. 程式人生 > >maplab系列11:PropertyHandler

maplab系列11:PropertyHandler

PropertyHandler是rovio中使用的一個配置表引數和演算法引數相互轉換的功能。核心檔案是:PropertyHandler.hpp

大概使用方法是把程式中的一些變數在handler中註冊。然後handler可以把這些直存為配置檔案。主要註冊方法有:

void registerMatrix(std::string str, Eigen::Matrix<TYPE,N,M>& var)等方法。並附帶一些自動命名的邏輯。

比如這個registerMatrix會自動把矩陣裡的entry按照下表來命名。

引數序列化是基於boost的ptree,readFromPropertyTree把讀入的ptree付給演算法中對應的變數。

readFromInfo讀入一個給予ptree的配置表

PropertyHandler還可以有層級關係,subHandlers_儲存子PropertyHandler的指標

並且PropertyHandler是int, bool, double, string的範型,所以有對應的四個如boolRegister_的模板實現。

FilterConfiguration用來載入和修改部分配置檔案

濾波器的基類FilterBase繼承於PropertyHandler,RovioFilter生成了三個子PropertyHandler:

  • ImgUpdate
  • PoseUpdate
  • VelocityUpdate

其他如Prediction的類也都繼承了PropertyHandler,作為RovioFilter的子PropertyHandler

State下面有兩個函式可以把濾波器狀態和協方差序列化為配置檔案

  • registerElementsToPropertyHandler
  • registerCovarianceToPropertyHandler_