wip-behaviors #3
@@ -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>
|
||||||
|
|||||||
@@ -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"/>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user