diff --git a/toid_bt/behavior_trees/behavior1.xml b/toid_bt/behavior_trees/behavior1.xml
index d9b071a..0c0d1b5 100644
--- a/toid_bt/behavior_trees/behavior1.xml
+++ b/toid_bt/behavior_trees/behavior1.xml
@@ -25,30 +25,34 @@
x="1.325"
topic_name="__default__placeholder__"/>
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -61,71 +65,76 @@
x="1.328"
topic_name="__default__placeholder__"/>
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -134,6 +143,7 @@
@@ -174,6 +184,9 @@
type="double"/>
+
diff --git a/toid_bt/behavior_trees/toid_behaviors.btproj b/toid_bt/behavior_trees/toid_behaviors.btproj
index 78b09b6..655d646 100644
--- a/toid_bt/behavior_trees/toid_behaviors.btproj
+++ b/toid_bt/behavior_trees/toid_behaviors.btproj
@@ -44,6 +44,7 @@
+
Action server name
diff --git a/toid_bt/include/toid_bt/plugins/rotate_towards_action.hpp b/toid_bt/include/toid_bt/plugins/rotate_towards_action.hpp
index 9649a8f..4cf1382 100644
--- a/toid_bt/include/toid_bt/plugins/rotate_towards_action.hpp
+++ b/toid_bt/include/toid_bt/plugins/rotate_towards_action.hpp
@@ -25,6 +25,7 @@ public:
return providedBasicPorts({
BT::InputPort("x", {}),
BT::InputPort("y", {}),
+ BT::InputPort("backwards", false, {}),
BT::InputPort("min_angle", 0, {}),
BT::InputPort("max_speed", 0, {}),
//BT::InputPort("options"),
@@ -37,11 +38,17 @@ public:
auto y = getInput("y").value();
auto min_angle = getInput("min_angle").value();
auto max_speed = getInput("max_speed").value();
+ auto backwards = getInput("backwards").value();
geometry_msgs::msg::PoseStamped pose;
get_pose(pose);
- goal.angle = std::atan2(y - pose.pose.position.y, x - pose.pose.position.x);
+ if(!backwards) {
+ goal.angle = std::atan2(y - pose.pose.position.y, x - pose.pose.position.x);
+ }
+ if(backwards) {
+ goal.angle = std::atan2(pose.pose.position.y - y, pose.pose.position.x - x);
+ }
goal.min_angle = angles::from_degrees(min_angle);
goal.max_speed = max_speed;
goal.mode = 1;