state_node
役割
state_node は BehaviorTree XML を読み込み、10 ms 周期で root node を tick します。root が終端状態になったら timer を停止します。
Interface
種別 |
名前 |
型 / 内容 |
|---|---|---|
parameter |
|
読み込む BehaviorTree XML |
parameter |
|
blackboard 初期値 |
ZMQ |
Groot monitor |
|
Tick model
tick 周期を \(T=10\mathrm{ms}\) とします。時刻 \(t_k=kT\) ごとに root を tick します。
状態 \(s_k\) は BehaviorTree.CPP の、
です。実行継続条件は、
です。終端条件は、
で、このとき finished_=true として timer を cancel します。
Blackboard
blackboard には ROS node pointer と move_index を入れます。
各 custom BT node は \(B[\mathrm{node}]\) を使って ROS topic や action client を作ります。
登録 node
起動時に次を BehaviorTreeFactory へ登録します。
登録名 |
C++ class |
用途 |
|---|---|---|
|
|
pure pursuit action の呼び出し |
|
|
同上 |
|
|
|
|
|
plan 文字列による子 node 選択 |
設定ファイル
state_node は example/sample/config/tree/main.xml を読みます。rogi_nav.launch.py は config_dir から path を組み立て、tree_path parameter として渡します。
profile 側の起動 key は次です。
launch:
components:
state:
state_node:
enabled: true
groot:
enabled: false
move_index は state.launch.py の launch argument で、default は 0 です。rogi_nav.launch.py からは現在明示上書きされていないため、通常は default が入ります。
Groot を使う場合は profile の launch 直下に次の optional key を置けます。
key |
default |
用途 |
|---|---|---|
|
|
Groot monitor 接続先 |
|
|
BT publisher port |
|
|
BT server port |
groot_executable は state.launch.py が ROGI_NAV_GROOT_EXECUTABLE または common_tool/Groot/build/Groot から探します。