行為樹(BT)筆記(六) 黑板

2021-09-11 03:25:14 字數 1380 閱讀 8855

黑板是樹的所有節點共享的鍵/值儲存。

是乙個字串而是型別擦除容器(稱為safeany::any),其允許使用者儲存的任何c ++物件,並將它轉換回其原始形式。

反之,以boost::anystd::anysafeany::any也將盡量避免共同溢和下溢錯誤。

事實上,你不能將乙個負數轉換成乙個unsigned integer超過2 ^ 8的非大數字char

如果儲存為字串,黑板將使用convertfromstring()它將其強制轉換為型別t(參見前面的示例);

使用者可以建立他/她自己的blackboards後端; 例如,可以使用資料庫建立永續性黑板。

讓我們從乙個******actionnode寫入黑板開始。

// write into the blackboard key: [goalpose]

// use this function to create a ******actionnode

nodestatus calculategoalpose(treenode& self)

; // recommended: check if the blackboard is nullptr first

if( self.blackboard() )

else

}

讓我們考慮以下xml樹定義:

根sequencestar將執行四個動作:

為了您的資訊,goalpose儲存為型別刪除pose2d。

另一方面,othergoal儲存為std :: string,但是通過getparam()使用該函式的方法轉換為pose2d convertfromstring()。

在下面的**示例中,我們可以看到兩種將blackboard分配給樹的等效方法。

int main()

return 0;

}/* expected output

[ movebase: started ]. goal: x=1 y=2.0 theta=3.14

[ movebase: finished ]

[ movebase: started ]. goal: x=-1 y=3.0 theta=0.50

[ movebase: finished ]

*/

DevExpress學習筆記(六) Edit樹節點

devexpress學習筆記 edit樹節點的列 所謂edit樹節點的列,有如下兩層含義 1 根據某標識決定節點的某列cell的形式,例如cell可選擇為時間控制項,dropdownlist控制項等等 2 與第一點類似,但是需要在執行時才動態決定cell的型別,例如滑鼠單擊某cell的時候,決定此c...

qt學習筆記(六)之簡析物件樹

qt提供了一種機制,能夠自動 有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,...

qt學習筆記(六)之簡析物件樹

qt提供了一種機制,能夠自動 有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,...