From a734a200193df153331afbc13ac4df1ad0cee449 Mon Sep 17 00:00:00 2001 From: cleWu03 Date: Fri, 14 Mar 2025 19:08:06 +0100 Subject: [PATCH 1/7] Update go_to_ball.py --- .../bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py index 728a56811..41db127c2 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py @@ -25,6 +25,9 @@ def __init__(self, blackboard, dsd, parameters): self.side_offset = parameters.get("side_offset", 0.08) def perform(self, reevaluate=False): + ball_position_y_relative = self.blackboard.world_model.field_width(self)[1] + if ball_position_y_relative > 0: + self.side_offset = - self.side_offset pose_msg = self.blackboard.pathfinding.get_ball_goal(self.target, self.distance, self.side_offset) self.blackboard.pathfinding.publish(pose_msg) From aaa08787c8bb24fd37111392f48fd36de7c4330c Mon Sep 17 00:00:00 2001 From: cleWu03 Date: Fri, 14 Mar 2025 19:20:15 +0100 Subject: [PATCH 2/7] 2. version.py --- .../behavior_dsd/actions/go_to_ball.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py index 41db127c2..cb0dda424 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py @@ -25,9 +25,9 @@ def __init__(self, blackboard, dsd, parameters): self.side_offset = parameters.get("side_offset", 0.08) def perform(self, reevaluate=False): - ball_position_y_relative = self.blackboard.world_model.field_width(self)[1] - if ball_position_y_relative > 0: - self.side_offset = - self.side_offset + #math.copysign + ball_position_y_relative = self.blackboard.world_model.get_ball_position_uv[1] + self.side_offset = -1 * math.copysign(self.side_offset) pose_msg = self.blackboard.pathfinding.get_ball_goal(self.target, self.distance, self.side_offset) self.blackboard.pathfinding.publish(pose_msg) From e034c13dd75be0137fae5cdecae2c4ea0ed1cb46 Mon Sep 17 00:00:00 2001 From: cleWu03 Date: Fri, 14 Mar 2025 19:21:51 +0100 Subject: [PATCH 3/7] version 3.py --- .../bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py index cb0dda424..5e5e7314c 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py @@ -25,7 +25,6 @@ def __init__(self, blackboard, dsd, parameters): self.side_offset = parameters.get("side_offset", 0.08) def perform(self, reevaluate=False): - #math.copysign ball_position_y_relative = self.blackboard.world_model.get_ball_position_uv[1] self.side_offset = -1 * math.copysign(self.side_offset) pose_msg = self.blackboard.pathfinding.get_ball_goal(self.target, self.distance, self.side_offset) From 71691e066f7a294e11188cad4a5c2635a44e1bd1 Mon Sep 17 00:00:00 2001 From: cleWu03 Date: Fri, 14 Mar 2025 19:29:44 +0100 Subject: [PATCH 4/7] version 4.py --- .../bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py index 5e5e7314c..9e735dbc9 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py @@ -1,3 +1,5 @@ +import math + from bitbots_blackboard.body_blackboard import BodyBlackboard from bitbots_blackboard.capsules.pathfinding_capsule import BallGoalType from dynamic_stack_decider.abstract_action_element import AbstractActionElement @@ -26,7 +28,7 @@ def __init__(self, blackboard, dsd, parameters): def perform(self, reevaluate=False): ball_position_y_relative = self.blackboard.world_model.get_ball_position_uv[1] - self.side_offset = -1 * math.copysign(self.side_offset) + self.side_offset = -1 * math.copysign(self.side_offset,ball_position_y_relative) pose_msg = self.blackboard.pathfinding.get_ball_goal(self.target, self.distance, self.side_offset) self.blackboard.pathfinding.publish(pose_msg) From a3faf12004a75b7b6d70d920bb0dc5f8a576db13 Mon Sep 17 00:00:00 2001 From: ayin21 Date: Fri, 14 Mar 2025 18:40:38 +0000 Subject: [PATCH 5/7] update format --- .../bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py index 9e735dbc9..19b1a19d1 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py @@ -28,7 +28,7 @@ def __init__(self, blackboard, dsd, parameters): def perform(self, reevaluate=False): ball_position_y_relative = self.blackboard.world_model.get_ball_position_uv[1] - self.side_offset = -1 * math.copysign(self.side_offset,ball_position_y_relative) + self.side_offset = -1 * math.copysign(self.side_offset, ball_position_y_relative) pose_msg = self.blackboard.pathfinding.get_ball_goal(self.target, self.distance, self.side_offset) self.blackboard.pathfinding.publish(pose_msg) From 5e9653a2af1e678649e3ed142f8dfdb5a10656ca Mon Sep 17 00:00:00 2001 From: ayin21 Date: Fri, 14 Mar 2025 19:52:11 +0000 Subject: [PATCH 6/7] Version with init --- .../behavior_dsd/actions/go_to_ball.py | 8 +++++--- .../bitbots_body_behavior/behavior_dsd/main.dsd | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py index 19b1a19d1..ddceaf0af 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py @@ -24,11 +24,13 @@ def __init__(self, blackboard, dsd, parameters): self.blocking = parameters.get("blocking", True) self.distance = parameters.get("distance", self.blackboard.config["ball_approach_dist"]) # Offset so we kick the ball with one foot instead of the center between the feet - self.side_offset = parameters.get("side_offset", 0.08) + self.side_offset = parameters.get("side_offset", 0.00) + + def perform(self, reevaluate=False): - ball_position_y_relative = self.blackboard.world_model.get_ball_position_uv[1] - self.side_offset = -1 * math.copysign(self.side_offset, ball_position_y_relative) + ball_position_y_relative = self.blackboard.world_model.get_ball_position_uv()[1] + self.side_offset = math.copysign(self.side_offset, ball_position_y_relative) pose_msg = self.blackboard.pathfinding.get_ball_goal(self.target, self.distance, self.side_offset) self.blackboard.pathfinding.publish(pose_msg) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd index e5a6d1036..8a8cca2bd 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd @@ -44,7 +44,7 @@ $AvoidBall LEFT --> #PerformKickLeft RIGHT --> #PerformKickRight FAR --> @ChangeAction + action:going_to_ball, @LookAtFieldFeatures, @GoToBall + target:map - NO --> @ChangeAction + action:going_to_ball + r:false, @LookAtFieldFeatures + r:false, @AvoidBallActive + r:false, @GoToBall + target:map + blocking:false + distance:%ball_far_approach_dist + NO --> @ChangeAction + action:going_to_ball + r:false, @LookAtFieldFeatures + r:false, @AvoidBallActive + r:false, @GoToBall + target:map + blocking:false + distance:%ball_far_approach_dist + side_offset:0.08 YES --> $ReachedPathPlanningGoalPosition + threshold:%ball_far_approach_position_thresh YES --> @AvoidBallInactive NO --> @ChangeAction + action:going_to_ball, @LookAtFieldFeatures, @GoToBall + target:map + distance:%ball_far_approach_dist From d23b46507245888da042505626e559178384c53a Mon Sep 17 00:00:00 2001 From: cleWu03 Date: Sat, 15 Mar 2025 09:14:09 +0100 Subject: [PATCH 7/7] Decision moved to init --- .../behavior_dsd/actions/go_to_ball.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py index ddceaf0af..713b8d106 100644 --- a/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py +++ b/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/actions/go_to_ball.py @@ -25,12 +25,10 @@ def __init__(self, blackboard, dsd, parameters): self.distance = parameters.get("distance", self.blackboard.config["ball_approach_dist"]) # Offset so we kick the ball with one foot instead of the center between the feet self.side_offset = parameters.get("side_offset", 0.00) - - - - def perform(self, reevaluate=False): ball_position_y_relative = self.blackboard.world_model.get_ball_position_uv()[1] self.side_offset = math.copysign(self.side_offset, ball_position_y_relative) + + def perform(self, reevaluate=False): pose_msg = self.blackboard.pathfinding.get_ball_goal(self.target, self.distance, self.side_offset) self.blackboard.pathfinding.publish(pose_msg)