FollowPath / FollowPathAction
役割
FollowPath は simple_pure_pursuit の follow_path action server を呼ぶ BehaviorTree action node です。XML では path_index input port に経路番号を渡します。
Interface
種別 |
名前 |
型 / 内容 |
|---|---|---|
input port |
|
実行する経路 index |
action client |
|
|
状態遷移
内部状態を、
とみなせます。
onStart() では input port を読みます。
読み取りに失敗した場合は FAILURE です。成功した場合は action goal の送信準備だけ行い、RUNNING を返します。
Goal 送信
server が未準備なら、
なので RUNNING を返して待ちます。server が準備できたら goal を送ります。
goal handle が null の場合、server に reject されたため FAILURE です。
Result 判定
result code を \(c\)、result の success flag を \(b\) とします。成功条件は次だけです。
それ以外は FAILURE です。
Halt
上位 node から halt された場合、goal handle が存在すれば cancel を送ります。
これにより BehaviorTree 側の中断と pure pursuit 側の走行停止要求を対応させます。
設定ファイル
この node は example/sample/config/tree/main.xml 内の Action ID="FollowPath" または Action ID="FollowPathAction" で使います。
<Action ID="FollowPath" path_index="0"/>
path_index は simple_pure_pursuit の input.csv.follow_path_files の index に対応します。
sample launch は path/trajectory/{0..11}.csv を 12 本登録します。そのため XML 側で path_index="11" までは参照できます。存在しない index や空 CSV を指定すると、pure pursuit 側で action goal が reject され、この BT node は FAILURE になります。
TreeNodesModel には Groot 表示用に input port も定義します。
<Action ID="FollowPath">
<input_port name="path_index"/>
</Action>