mirror of
https://gitee.com/dlmu-cone/Arborflow
synced 2026-10-23 09:42:19 +08:00
145 lines
6.0 KiB
XML
145 lines
6.0 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<root BTCPP_format="4">
|
|
<BehaviorTree ID="check_game_start">
|
|
<Fallback>
|
|
<IsGameStatus name="IsGameStart"
|
|
max_remain_time="420"
|
|
min_remain_time="0"
|
|
expected_game_progress="4"
|
|
key_port="{@referee_gameStatus}"/>
|
|
<ForceFailure>
|
|
<Sequence>
|
|
<PublishSpinSpeed spin_speed="0.0"
|
|
duration="0.0"
|
|
topic_name="cmd_spin"/>
|
|
<PublishTwist v_y="0.0"
|
|
v_yaw="0.0"
|
|
v_x="0.0"
|
|
duration="0.0"
|
|
topic_name="cmd_vel"/>
|
|
</Sequence>
|
|
</ForceFailure>
|
|
</Fallback>
|
|
</BehaviorTree>
|
|
|
|
<BehaviorTree ID="check_robot_status">
|
|
<Fallback>
|
|
<IsStatusOK ammo_min="0"
|
|
heat_max="350"
|
|
hp_min="200"
|
|
key_port="{@referee_robotStatus}"/>
|
|
<ForceFailure>
|
|
<Fallback>
|
|
<IsRfidDetected friendly_supply_zone_exchange="false"
|
|
friendly_supply_zone_non_exchange="true"
|
|
center_gain_point="false"
|
|
friendly_fortress_gain_point="false"
|
|
key_port="{@referee_rfidStatus}"/>
|
|
<PubNav2Goal goal="0;0;0"
|
|
topic_name="goal_pose"/>
|
|
</Fallback>
|
|
</ForceFailure>
|
|
</Fallback>
|
|
</BehaviorTree>
|
|
|
|
<BehaviorTree ID="rmul_2025">
|
|
<KeepRunningUntilFailure>
|
|
<ForceSuccess>
|
|
<ReactiveSequence>
|
|
<SubTree ID="check_game_start"/>
|
|
<PublishSpinSpeed spin_speed="7.0"
|
|
duration="0.0"
|
|
topic_name="cmd_spin"/>
|
|
<SubTree ID="check_robot_status"/>
|
|
<PubNav2Goal goal="4.65;-3.5;0"
|
|
topic_name="goal_pose"/>
|
|
</ReactiveSequence>
|
|
</ForceSuccess>
|
|
</KeepRunningUntilFailure>
|
|
</BehaviorTree>
|
|
|
|
<!-- Description of Node Models (used by Groot) -->
|
|
<TreeNodesModel>
|
|
<Condition ID="IsGameStatus">
|
|
<input_port name="max_remain_time"
|
|
default="420"
|
|
type="int">Maximum remaining time (s)</input_port>
|
|
<input_port name="min_remain_time"
|
|
default="0"
|
|
type="int">Minimum remaining time (s)</input_port>
|
|
<input_port name="expected_game_progress"
|
|
default="4"
|
|
type="int">Expected game progress stage</input_port>
|
|
<input_port name="key_port"
|
|
default="{@referee_gameStatus}"
|
|
type="pb_rm_interfaces::msg::GameStatus_<std::allocator<void> >">GameStatus port on blackboard</input_port>
|
|
</Condition>
|
|
<Condition ID="IsRfidDetected">
|
|
<input_port name="friendly_supply_zone_exchange"
|
|
default="false"
|
|
type="bool">己方与兑换区重叠的补给区</input_port>
|
|
<input_port name="friendly_supply_zone_non_exchange"
|
|
default="false"
|
|
type="bool">己方与兑换区不重叠的补给区 / RMUL 补给区</input_port>
|
|
<input_port name="center_gain_point"
|
|
default="false"
|
|
type="bool">中心增益点(仅 RMUL 适用)</input_port>
|
|
<input_port name="friendly_fortress_gain_point"
|
|
default="false"
|
|
type="bool">己方堡垒增益点</input_port>
|
|
<input_port name="key_port"
|
|
default="{@referee_rfidStatus}"
|
|
type="pb_rm_interfaces::msg::RfidStatus_<std::allocator<void> >">RfidStatus port on blackboard</input_port>
|
|
</Condition>
|
|
<Condition ID="IsStatusOK">
|
|
<input_port name="ammo_min"
|
|
default="0"
|
|
type="int">Lower then minimum ammo will return FAILURE</input_port>
|
|
<input_port name="heat_max"
|
|
default="350"
|
|
type="int">Maximum heat. NOTE: Sentry heat limit is 400</input_port>
|
|
<input_port name="hp_min"
|
|
default="300"
|
|
type="int">Minimum HP. NOTE: Sentry init/max HP is 400</input_port>
|
|
<input_port name="key_port"
|
|
default="{@referee_robotStatus}"
|
|
type="pb_rm_interfaces::msg::RobotStatus_<std::allocator<void> >">RobotStatus port on blackboard</input_port>
|
|
</Condition>
|
|
<Condition ID="PubNav2Goal">
|
|
<input_port name="goal"
|
|
default="0;0;0"
|
|
type="geometry_msgs::msg::PoseStamped_<std::allocator<void> >">Expected goal pose that send to nav2. Fill with format `x;y;yaw`</input_port>
|
|
<input_port name="topic_name"
|
|
default="__default__placeholder__"
|
|
type="std::string">Topic name</input_port>
|
|
</Condition>
|
|
<Action ID="PublishSpinSpeed">
|
|
<input_port name="spin_speed"
|
|
default="0.000000"
|
|
type="double">Angular Z velocity (rad/s)</input_port>
|
|
<input_port name="duration"
|
|
type="std::chrono::milliseconds">Publish then sleep duration in milliseconds</input_port>
|
|
<input_port name="topic_name"
|
|
default="__default__placeholder__"
|
|
type="std::string">Topic name</input_port>
|
|
</Action>
|
|
<Action ID="PublishTwist">
|
|
<input_port name="v_y"
|
|
default="0.000000"
|
|
type="double">Linear Y velocity (m/s)</input_port>
|
|
<input_port name="v_yaw"
|
|
default="0.000000"
|
|
type="double">Angular Z velocity (rad/s)</input_port>
|
|
<input_port name="v_x"
|
|
default="0.000000"
|
|
type="double">Linear X velocity (m/s)</input_port>
|
|
<input_port name="duration"
|
|
type="std::chrono::milliseconds">Publish then sleep duration in milliseconds</input_port>
|
|
<input_port name="topic_name"
|
|
default="__default__placeholder__"
|
|
type="std::string">Topic name</input_port>
|
|
</Action>
|
|
</TreeNodesModel>
|
|
|
|
</root>
|