Skip to content

Commit 3eb1e77

Browse files
committed
Better free kick pose interpretation
1 parent 703a954 commit 3eb1e77

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

crates/object_detection/src/pose_interpretation.rs

+20-7
Original file line numberDiff line numberDiff line change
@@ -215,16 +215,29 @@ fn is_free_kick_pose(
215215
) -> Option<GlobalFieldSide> {
216216
let left_shoulder_to_hand =
217217
keypoints.left_shoulder.point.coords() - keypoints.left_hand.point.coords();
218+
let left_shoulder_to_feet =
219+
keypoints.left_shoulder.point.coords() - keypoints.left_foot.point.coords();
220+
let left_arm_rotation =
221+
Rotation2::rotation_between(left_shoulder_to_hand, left_shoulder_to_feet);
222+
218223
let right_shoulder_to_hand =
219224
keypoints.right_shoulder.point.coords() - keypoints.right_hand.point.coords();
225+
let right_shoulder_to_feet =
226+
keypoints.right_shoulder.point.coords() - keypoints.right_foot.point.coords();
227+
let right_arm_rotation =
228+
Rotation2::rotation_between(right_shoulder_to_hand, right_shoulder_to_feet);
229+
220230
let arm_rotation_difference =
221-
Rotation2::rotation_between(left_shoulder_to_hand, right_shoulder_to_hand).angle();
222-
if free_kick_signal_angle_range.contains(&arm_rotation_difference.abs()) {
223-
if arm_rotation_difference.is_sign_positive() {
224-
Some(GlobalFieldSide::Away)
225-
} else {
226-
Some(GlobalFieldSide::Home)
227-
}
231+
Rotation2::rotation_between(left_shoulder_to_hand, right_shoulder_to_hand);
232+
let is_free_kick_pose =
233+
free_kick_signal_angle_range.contains(&arm_rotation_difference.angle().abs());
234+
if is_free_kick_pose && free_kick_signal_angle_range.contains(&left_arm_rotation.angle().abs())
235+
{
236+
Some(GlobalFieldSide::Away)
237+
} else if is_free_kick_pose
238+
&& free_kick_signal_angle_range.contains(&right_arm_rotation.angle().abs())
239+
{
240+
Some(GlobalFieldSide::Home)
228241
} else {
229242
None
230243
}

etc/parameters/default.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"minimum_overall_keypoint_confidence": 0.5,
88
"minimum_visual_referee_keypoint_confidence": 0.8,
99
"minimum_shoulder_angle": 0.2,
10-
"free_kick_signal_angle_range": [1.3, 1.8],
10+
"free_kick_signal_angle_range": [1.2,2.3],
1111
"foot_z_offset": 0.025,
1212
"referee_pose_queue_length": 8,
1313
"minimum_number_poses_before_message": 3,

0 commit comments

Comments
 (0)