Skip to content

Commit 110ce07

Browse files
committed
Merge branch 'Gamecontroller-update-for-HSL' of github.com:bit-bots/bitbots_main into Gamecontroller-update-for-HSL
2 parents 984004f + e6e26f5 commit 110ce07

37 files changed

Lines changed: 153 additions & 130 deletions

File tree

scripts/deploy/deploy_robots.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ def _parse_arguments(self) -> argparse.Namespace:
118118
parser.add_argument(
119119
"-w",
120120
"--workspace",
121-
default=".",
122-
help="Path to the workspace directory to deploy to. Defaults to the current directory.",
121+
default="~/bitbots_main",
122+
help="Path to the workspace directory to deploy to. Defaults to 'bitbots_main' in $HOME dir.",
123123
)
124124
parser.add_argument("--skip-local-repo-check", action="store_true", help="Skip the local repository check.")
125125

src/bitbots_behavior/bitbots_blackboard/bitbots_blackboard/capsules/game_status_capsule.py

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Optional
22

33
from bitbots_utils.utils import get_parameters_from_other_node
4-
from game_controller_hl_interfaces.msg import GameState
4+
from game_controller_hsl_interfaces.msg import GameState
55
from std_msgs.msg import Bool
66

77
from bitbots_blackboard.capsules import AbstractBlackboardCapsule
@@ -21,42 +21,37 @@ def __init__(self, node, blackboard=None):
2121
self.last_goal_from_us_time = -86400.0
2222
self.last_goal_time = -86400.0
2323
self.free_kick_kickoff_team: Optional[bool] = None
24-
self.game_controller_stop: Bool = False
25-
#publish stopped msg for hcm
26-
self.stop_pub = self.node.create_publisher(Bool, "game_controller/stop_msg", 1)
24+
self.game_controller_stop: bool = False
25+
# publish stopped msg for hcm
26+
self.stop_pub = node.create_publisher(Bool, "game_controller/stop_msg", 1)
2727

2828
def get_game_state(self) -> int:
29-
#Init, ready, set, playing, finished
29+
# Init, ready, set, playing, finished
3030
return self.gamestate.main_state
3131

3232
def get_game_phase(self) -> int:
33-
#Timeout, Normal, Extratime, Penaltyshoot
34-
return self.gamestate.gamePhase
33+
# Timeout, Normal, Extratime, Penaltyshoot
34+
return self.gamestate.game_phase
3535

3636
def get_set_play(self) -> int:
37-
#None, Direct Freekick, Indirect Freekick, Penalty, Throw in, Goalkick, Cornerkick,
38-
return self.gamestate.setPlay
37+
# None, Direct Freekick, Indirect Freekick, Penalty, Throw in, Goalkick, Cornerkick,
38+
return self.gamestate.set_play
3939

4040
def get_secondary_team(self) -> int:
41-
#Team ID, wer in set Play den Baall hat
42-
return self.gamestate.kickingTeam
43-
#Team ID, wer in set Play den Baall hat
44-
return self.gamestate.kickingTeam
41+
# Team ID, wer in set Play den Ball hat
42+
return self.gamestate.kicking_team
4543

4644
def has_kickoff(self) -> bool:
47-
#vegelcih mit eigener Teamnummer
48-
return self.gamestate.kickingTeam == self.team_id
49-
45+
# vegelcih mit eigener Teamnummer
46+
return self.gamestate.kicking_team == self.team_id
47+
5048
def is_stopped(self) -> bool:
5149
return self.gamestate.stopped
5250

5351
def has_penalty_kick(self) -> bool:
54-
return(
55-
self.gamestate.set_play == GameState.SET_PLAY_PENALTY_KICK
56-
and self.gamestate.kickingTeam == self.team_id)
57-
return(
58-
self.gamestate.set_play == GameState.SET_PLAY_PENALTY_KICK
59-
and self.gamestate.kickingTeam == self.team_id)
52+
return (
53+
self.gamestate.set_play == GameState.SET_PLAY_PENALTY_KICK and self.gamestate.kicking_team == self.team_id
54+
)
6055

6156
def get_our_goals(self) -> int:
6257
return self.gamestate.own_score
@@ -80,14 +75,12 @@ def get_secondary_seconds_remaining(self) -> float:
8075
"""Seconds remaining for things like kickoff"""
8176
# Time from the message minus time passed since receiving it
8277
return max(
83-
self.gamestate.secondary_time
84-
- (self._node.get_clock().now().nanoseconds / 1e9 - self.last_update),
78+
self.gamestate.secondary_time - (self._node.get_clock().now().nanoseconds / 1e9 - self.last_update),
8579
0.0,
8680
)
8781

8882
def get_seconds_since_unpenalized(self) -> float:
89-
return self._node.get_clock().now().nanoseconds / 1e9 - self.seconds_till_unpenalized
90-
return self._node.get_clock().now().nanoseconds / 1e9 - self.seconds_till_unpenalized
83+
return self._node.get_clock().now().nanoseconds / 1e9 - self.unpenalized_time
9184

9285
def get_is_penalized(self) -> bool:
9386
return self.gamestate.penalized
@@ -111,9 +104,9 @@ def gamestate_callback(self, gamestate_msg: GameState) -> None:
111104

112105
self.game_controller_stop = gamestate_msg.stopped
113106

114-
self.stop_pub.publish(self.game_controller_stop)
107+
self.stop_pub.publish(Bool(data=self.game_controller_stop))
115108

116-
'''Anstoß im Falle von Overtime jetzt erstmal nicht genauer geregelt
109+
"""Anstoß im Falle von Overtime jetzt erstmal nicht genauer geregelt
117110
if (
118111
gamestate_msg.main_state == GameState.STATE_SET
119112
and self.gamestate.setPlay != 2
@@ -125,20 +118,20 @@ def gamestate_callback(self, gamestate_msg: GameState) -> None:
125118
# secondary action is now executed but we will not see this in the new messages.
126119
# it will look like a normal kick off, but we need to remember that this is some sort of free kick
127120
# we set the kickoff value accordingly, then we will not be allowed to move if it is a kick for the others
128-
self.free_kick_kickoff_team = gamestate_msg.kickingTeam
129-
130-
131-
if gamestate_msg.setPlay != 2 and gamestate_msg.secondaryTime == 0:
132-
self.free_kick_kickoff_team = gamestate_msg.kickingTeam
133-
134-
135-
if gamestate_msg.setPlay != 2 and gamestate_msg.secondaryTime == 0:
121+
self.free_kick_kickoff_team = gamestate_msg.kicking_team
122+
123+
124+
if gamestate_msg.set_play != 2 and gamestate_msg.secondary_time == 0:
125+
self.free_kick_kickoff_team = gamestate_msg.kicking_team
126+
127+
128+
if gamestate_msg.set_play != 2 and gamestate_msg.secondary_time == 0:
136129
self.free_kick_kickoff_team = None
137-
138-
130+
131+
139132
140133
if self.free_kick_kickoff_team is not None:
141134
gamestate_msg.has_kick_off = self.free_kick_kickoff_team == self.team_id
142-
'''
135+
"""
143136
self.last_update = self._node.get_clock().now().nanoseconds / 1e9
144137
self.gamestate = gamestate_msg

src/bitbots_behavior/bitbots_blackboard/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<build_depend>bitbots_docs</build_depend>
2424
<depend>bitbots_tf_buffer</depend>
2525
<depend>bitbots_utils</depend>
26-
<depend>game_controller_hl_interfaces</depend>
26+
<depend>game_controller_hsl_interfaces</depend>
2727
<depend>python3-numpy</depend>
2828
<depend>rclpy</depend>
2929
<depend>ros2_numpy</depend>

src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/game_state_decider.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from bitbots_blackboard.body_blackboard import BodyBlackboard
22
from dynamic_stack_decider.abstract_decision_element import AbstractDecisionElement
3-
from game_controller_hl_interfaces.msg import GameState
3+
from game_controller_hsl_interfaces.msg import GameState
44

55

66
class GameStateDecider(AbstractDecisionElement):
@@ -30,6 +30,11 @@ def perform(self, reevaluate=False):
3030
return "FINISHED"
3131
elif game_state_number == GameState.STATE_STANDBY:
3232
return "STANDBY"
33+
else:
34+
# This should never happen, but all cases required string response
35+
# as we do not get any stack trace otherwise
36+
self.blackboard.node.get_logger().error(f"Received unknown game state number: {game_state_number}")
37+
return "UNKNOWN"
3338

3439
def get_reevaluate(self):
3540
"""

src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/secondary_state_decider.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from bitbots_blackboard.body_blackboard import BodyBlackboard
22
from dynamic_stack_decider.abstract_decision_element import AbstractDecisionElement
3-
from game_controller_hl_interfaces.msg import GameState
3+
from game_controller_hsl_interfaces.msg import GameState
44

55

66
class SecondaryStateDecider(AbstractDecisionElement):
@@ -16,7 +16,7 @@ def __init__(self, blackboard, dsd, parameters):
1616

1717
def perform(self, reevaluate=False):
1818
set_play_number = self.blackboard.gamestate.get_set_play()
19-
game_phase_number = self.blackboard.gamestate.get_game_phase
19+
game_phase_number = self.blackboard.gamestate.get_game_phase()
2020
# todo this is a temporary hack to make GUI work
2121
if game_phase_number == GameState.GAME_PHASE_NORMAL and set_play_number == GameState.SET_PLAY_NONE:
2222
return "NORMAL"
@@ -38,6 +38,11 @@ def perform(self, reevaluate=False):
3838
return "GOAL_KICK"
3939
elif set_play_number == GameState.SET_PLAY_THROW_IN:
4040
return "THROW_IN"
41+
else:
42+
self.blackboard.node.get_logger().error(
43+
f"Unknown secondary state with game phase {game_phase_number} and set play {set_play_number}"
44+
)
45+
return "UNKNOWN"
4146

4247
def get_reevaluate(self):
4348
"""

src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,17 +103,10 @@ $DoOnce
103103
NO --> $SecondaryStateTeamDecider
104104
OUR --> #SearchBall
105105
OTHER --> @AvoidBallActive, @LookAtFieldFeatures, @WalkInPlace + duration:2, @GoToRelativePosition + x:1 + y:0 + t:0, @Stand
106-
YES --> $SecondaryStateDecider
107-
CORNER_KICK --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToCornerKickPosition + mode:others
108-
THROW_IN --> $RankToBallNoGoalie
109-
FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_first
110-
SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_second
111-
THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
112-
ELSE --> $SecondaryStateTeamDecider
113-
OUR --> $RankToBallNoGoalie
114-
FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_first
115-
SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_second
116-
THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
106+
YES --> $RankToBallNoGoalie
107+
FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_first
108+
SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_second
109+
THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
117110

118111
#Init
119112
@Stand + duration:0.1 + r:false, @ChangeAction + action:waiting, @LookForward, @Stand
@@ -164,7 +157,7 @@ $IsPenalized
164157
PENALTYSHOOT --> #PenaltyShootoutBehavior
165158
TIMEOUT --> #StandAndLook
166159
ELSE --> $SecondaryStateTeamDecider
167-
OWN --> #NormalBehavior //Nutzt immer normalBehaviour wenn wir die aktion ausführen, könnte man spezifischeres Verhalten definieren
160+
OUR --> #NormalBehavior
168161
OTHER --> #Placing
169162
NORMAL --> #NormalBehavior
170163
OVERTIME --> #NormalBehavior

src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/body_behavior.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from bitbots_blackboard.body_blackboard import BodyBlackboard
55
from bitbots_tf_buffer import Buffer
66
from dynamic_stack_decider.dsd import DSD
7-
from game_controller_hl_interfaces.msg import GameState
7+
from game_controller_hsl_interfaces.msg import GameState
88
from geometry_msgs.msg import PoseWithCovarianceStamped, Twist
99
from rclpy.callback_groups import MutuallyExclusiveCallbackGroup
1010
from rclpy.duration import Duration

src/bitbots_behavior/bitbots_body_behavior/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<depend>bitbots_tts</depend>
2323
<depend>bitbots_utils</depend>
2424
<depend>dynamic_stack_decider</depend>
25-
<depend>game_controller_hl_interfaces</depend>
25+
<depend>game_controller_hsl_interfaces</depend>
2626
<depend>geometry_msgs</depend>
2727
<depend>python3-numpy</depend>
2828
<depend>rclpy</depend>

src/bitbots_lowlevel/bitbots_buttons/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ find_package(ament_cmake REQUIRED)
1515
find_package(backward_ros REQUIRED)
1616
find_package(bitbots_docs REQUIRED)
1717
find_package(bitbots_msgs REQUIRED)
18-
find_package(game_controller_hl_interfaces REQUIRED)
18+
find_package(game_controller_hsl_interfaces REQUIRED)
1919
find_package(rclcpp REQUIRED)
2020
find_package(std_msgs REQUIRED)
2121
find_package(std_srvs REQUIRED)
@@ -27,7 +27,7 @@ ament_target_dependencies(
2727
ament_cmake
2828
backward_ros
2929
bitbots_msgs
30-
game_controller_hl_interfaces
30+
game_controller_hsl_interfaces
3131
rclcpp
3232
std_msgs
3333
std_srvs

src/bitbots_lowlevel/bitbots_buttons/package.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
<depend>backward_ros</depend>
2121
<depend>bitbots_docs</depend>
2222
<depend>bitbots_msgs</depend>
23-
<depend>game_controller_hl_interfaces</depend>
23+
<depend>game_controller_hsl_interfaces</depend>
2424
<depend>rclcpp</depend>
2525
<depend>std_msgs</depend>
2626
<depend>std_srvs</depend>
2727
<depend>test_msgs</depend>
2828

2929
<export>
30-
<bitbots_documentation>
30+
<bitbots_documentation>
3131
<language>python3</language>
3232
<status>tested_robot</status>
3333
</bitbots_documentation>

0 commit comments

Comments
 (0)