rpg ig active原始碼閱讀 六

2021-10-16 17:38:18 字數 2678 閱讀 3238

今天還是主要看ig_active_reconstruction

昨天看了幾個通訊介面的檔案,今天看其他的

getig

communit

useinformationgain

world_representation_raycaster.hpp

world_representation_pinhole_cam_raycaster.cpp

namespace ig_active_reconstruction 下有乙個基類 utilitycalculator

只有乙個純虛函式

是根據傳入的完整的viewspace和可以考慮的views集合 返回最佳view的id

virtual views::view::idtype getnbv

( views::viewspace::idset& id_set, boost::shared_ptr viewspace )=0

;

namespace ig_active_reconstruction 繼承了上面的基類 utilitycalculator 有乙個子類weightedlinearutility

// 兩個通訊介面 分別是環境和機械人的通訊介面

boost::shared_ptr world_comm_unit_;

//! inte***ce to world representation.

boost::shared_ptr robot_comm_unit_;

//! inte***ce to robot.

//ig計算的檢索配置

world_representation::communicationinte***ce::igretrievalconfig ig_retrieval_config_;

//! will be used for ig retrieval.

// 要用的ig的name和對應的weight

std::vector< std::string > information_gains_;

//! name of the information gains to use.

std::vector<

double

> ig_weights_;

//! weight of the information gains.

double cost_weight_;

這是繼承基類的那個函式,應該也是最重要的

virtual views::view::idtype getnbv

( views::viewspace::idset& id_set, boost::shared_ptr viewspace )

;

具體實現看檔案吧,有單執行緒和多執行緒兩種

用到的是world_comm_unit_->computeviewig(command,information_gains);這個函式,這個函式在word_comm_unit裡只有乙個純虛函式,需要去子類裡面看

根據執行緒數(設定的是8

把views分成幾個batch

對每個執行緒呼叫weightedlinearutility::getig這個函式,下面看

是對每個batch

void

getig

(std::vector<

double

>

& ig_vector,

double

& total_ig, world_representation::communicationinte***ce::igretrievalcommand command, views::viewspace::idset& id_set, boost::shared_ptr viewspace,

unsigned

int base_index,

unsigned

int batch_size )

;

這個是為多執行緒服務的

void weightedlinearutility::

useinformationgain

( std::string name,

double weight)

是新增乙個名稱為name的ig,權重預設為1.0

namespace ig_active_reconstruction 下的namespace world_representation

裡的乙個基類raycaster

成員變數裡有乙個類ray 主要是起點和方向

typedef eigen::vector3d rayorigin;

typedef eigen::vector3d raydirection;

/*! defines a ray.

*/struct ray

;

還有幾個純虛函式

namespace ig_active_reconstruction 下的namespace world_representation 繼承了基類raycaster,子類是pinholecamraycaster

有兩個struct

之後用到再細看吧

SynchronousQueue原始碼閱讀心得

synchronousqueue 簡寫為sq 同步佇列中,讀執行緒與寫執行緒只有相互匹配時才能完成一次完整的讀寫操作。而讀與寫的匹配依賴於transferqueue或transferstack中的transfer sq中重要的資料結構有transferqueue和transferstack,還有qn...

Vector和Hashtable原始碼閱讀與理解

vector是執行緒安全的arraylist public synchronized void insertelementat e obj,int index ensurecapacityhelper elementcount 1 system.arraycopy elementdata,index...

seata xid是什麼 seata原始碼閱讀筆記

seata原始碼閱讀筆記 本文基於v0.8.0版本,本文沒貼 seata中的三個重要部分 tc 事務協調器,維護全域性事務和分支事務的狀態,驅動全域性提交或回滾,就是seata的服務端。tm 事務管理器,開始全域性事務,提交或回滾全域性事務。rm 資源管理器,管理正在處理的分支事務的資源,向tc註冊...