wip-behaviors #3

Merged
Pimpest merged 86 commits from wip-behaviors into main 2026-05-28 06:21:26 +00:00
3 changed files with 106 additions and 15 deletions
Showing only changes of commit c7caa69bfa - Show all commits

View File

@@ -1,17 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4"> <root BTCPP_format="4">
<BehaviorTree ID="seq1">
<Sequence>
<ZeroOdom service_name=""/>
<MovePointSimple x="1.05"
y="0"
theta="0"
max_speed="0.300000"
backwards="false"
action_name=""/>
<MovePointSimple x="0.76"
y="0.18"
theta="-90"
max_speed="0.250000"
backwards="true"
action_name=""/>
<TranslateX x="0.5"
max_speed="0.300000"
action_name=""/>
</Sequence>
</BehaviorTree>
<BehaviorTree ID="test_1"> <BehaviorTree ID="test_1">
<Sequence> <Sequence>
<RotateSimple angle="90" <RotateTowards x="0.4"
min_angle="0.000000" y="0.0"
action_name=""/> max_speed="0.000000"
<Sleep msec="1000"/> min_angle="0.000000"
<RotateSimple angle="0" action_name=""/>
min_angle="0.000000"
action_name=""/>
</Sequence> </Sequence>
</BehaviorTree> </BehaviorTree>
<!-- Description of Node Models (used by Groot) --> <!-- Description of Node Models (used by Groot) -->
<TreeNodesModel>
<Action ID="MovePointSimple">
<input_port name="x"
type="double"/>
<input_port name="y"
type="double"/>
<input_port name="theta"
type="double"/>
<input_port name="max_speed"
default="0.000000"
type="double"/>
<input_port name="backwards"
default="false"
type="bool"/>
<input_port name="action_name"
type="std::string">Action server name</input_port>
</Action>
<Action ID="RotateTowards">
<input_port name="x"
type="double"/>
<input_port name="y"
type="double"/>
<input_port name="max_speed"
default="0.000000"
type="double"/>
<input_port name="min_angle"
default="0.000000"
type="double"/>
<input_port name="action_name"
type="std::string">Action server name</input_port>
</Action>
<Action ID="TranslateX">
<input_port name="x"
type="double"/>
<input_port name="max_speed"
default="0.000000"
type="double"/>
<input_port name="action_name"
type="std::string">Action server name</input_port>
</Action>
<Action ID="ZeroOdom">
<input_port name="service_name"
type="std::string">Service name</input_port>
</Action>
</TreeNodesModel>
</root> </root>

View File

@@ -2,17 +2,22 @@
<root BTCPP_format="4"> <root BTCPP_format="4">
<BehaviorTree ID="track_calib"> <BehaviorTree ID="track_calib">
<Sequence> <Sequence>
<SetBlackboard value="0.264" <SetBlackboard value="0.265"
output_key="width"/> output_key="width"/>
<Sleep msec="1000"/> <Sleep msec="1000"/>
<ZeroOdom service_name=""/> <ZeroOdom service_name=""/>
<RotateTowards x="0.4"
y="0.0"
max_speed="0.000000"
min_angle="0.000000"
action_name=""/>
<Sequence> <Sequence>
<Sleep msec="1000"/> <Sleep msec="1000"/>
<MovePointSimple x="-0.4" <MovePointSimple x="0.4"
y="0" y="0"
theta="0" theta="0"
max_speed="0.10000" max_speed="0.10000"
backwards="true" backwards="false"
action_name=""/> action_name=""/>
<Sleep msec="500"/> <Sleep msec="500"/>
<RotateSimple angle="0" <RotateSimple angle="0"
@@ -22,11 +27,11 @@
</Sequence> </Sequence>
<ForceSuccess> <ForceSuccess>
<Timeout msec="13000"> <Timeout msec="13000">
<MovePointSimple x="1.0" <MovePointSimple x="-1.0"
y="0" y="0"
theta="0" theta="0"
max_speed="0.070000" max_speed="0.070000"
backwards="false" backwards="true"
action_name=""/> action_name=""/>
</Timeout> </Timeout>
</ForceSuccess> </ForceSuccess>
@@ -76,6 +81,8 @@
action_name=""/> action_name=""/>
</Timeout> </Timeout>
</ForceSuccess> </ForceSuccess>
<Sleep msec="1000"/>
<EndCalib service_name=""/>
</Sequence> </Sequence>
</BehaviorTree> </BehaviorTree>
@@ -84,17 +91,21 @@
<Sleep msec="1000"/> <Sleep msec="1000"/>
<ZeroOdom service_name=""/> <ZeroOdom service_name=""/>
<Sleep msec="1000"/> <Sleep msec="1000"/>
<MovePointSimple x="-1.200" <MovePointSimple x="1.200"
y="0" y="0"
theta="0" theta="0"
max_speed="0.250000" max_speed="0.250000"
backwards="true" backwards="false"
action_name=""/> action_name=""/>
</Sequence> </Sequence>
</BehaviorTree> </BehaviorTree>
<!-- Description of Node Models (used by Groot) --> <!-- Description of Node Models (used by Groot) -->
<TreeNodesModel> <TreeNodesModel>
<Action ID="EndCalib">
<input_port name="service_name"
type="std::string">Service name</input_port>
</Action>
<Action ID="MovePointSimple"> <Action ID="MovePointSimple">
<input_port name="x" <input_port name="x"
type="double"/> type="double"/>
@@ -123,6 +134,20 @@
<input_port name="action_name" <input_port name="action_name"
type="std::string">Action server name</input_port> type="std::string">Action server name</input_port>
</Action> </Action>
<Action ID="RotateTowards">
<input_port name="x"
type="double"/>
<input_port name="y"
type="double"/>
<input_port name="max_speed"
default="0.000000"
type="double"/>
<input_port name="min_angle"
default="0.000000"
type="double"/>
<input_port name="action_name"
type="std::string">Action server name</input_port>
</Action>
<Action ID="SetWidth"> <Action ID="SetWidth">
<input_port name="width" <input_port name="width"
type="double"/> type="double"/>

View File

@@ -33,7 +33,7 @@ public:
bool setRequest(typename Request::SharedPtr & request) override bool setRequest(typename Request::SharedPtr & request) override
{ {
auto width = getInput<double>("width").value(); auto width = getInput<double>("width").value();
auto count = getInput<double>("count").value(); double count = getInput<int>("count").value();
geometry_msgs::msg::PoseStamped pose; geometry_msgs::msg::PoseStamped pose;
get_pose(pose); get_pose(pose);
@@ -42,6 +42,8 @@ public:
double new_width = width * (1 + (theta / (2 * M_PI * count))); double new_width = width * (1 + (theta / (2 * M_PI * count)));
request->data = new_width; request->data = new_width;
RCLCPP_INFO(logger(), "width is %lf", new_width);
setOutput("new_width", new_width); setOutput("new_width", new_width);
return true; return true;
} }