Skip to content

Comments

Feature fake#2176

Open
vivi-enne wants to merge 8 commits intoHULKs:mainfrom
vivi-enne:feature_fake
Open

Feature fake#2176
vivi-enne wants to merge 8 commits intoHULKs:mainfrom
vivi-enne:feature_fake

Conversation

@vivi-enne
Copy link
Contributor

Why? What?

We need a feature for the SLAM, therefore we decided to take the upper left corner of the goal. This PR also includes the camera_to_world transition, so that future features should be easily included.

Fixes #

ToDo / Known Issues

  • For multiple features a better output type needs to be specified. Depends on the feature detection.
  • Camera angle looks not as expected but is rotated a bit Check camera angle in mujoco #2175

Ideas for Next Iterations (Not This PR)

If there are some improvements that could be done in a next iteration, describe them here.

How to Test

Check in simulator: standing or walking robot should output a vector for Control.main_outputs.feature that matches the position of the left upper corner of the goal in the camera image. If it is not visible it should be None.

@github-project-automation github-project-automation bot moved this to Request for Review in Development Jan 10, 2026
@vivi-enne vivi-enne enabled auto-merge January 10, 2026 12:08
Copy link
Contributor

@oleflb oleflb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks nice overall, just some remarks

}
},
"field_dimensions": {
"ball_radius": 0.05,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not the same ball_radius as we have in mujoco

Comment on lines +44 to +45
let field_of_view_width_angle = 60.0_f32.to_radians();
let field_of_view_height_angle = 45.0_f32.to_radians();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we already have config for this?

Comment on lines +47 to +54
let x = upper_left_goal_post_in_camera.x();

let horizontal_angle_to_object = upper_left_goal_post_in_camera.y().atan2(x);
let vertical_angle_to_object = upper_left_goal_post_in_camera.z().atan2(x);

let is_visible = x > 0.0
&& horizontal_angle_to_object.abs() < field_of_view_width_angle / 2.0
&& vertical_angle_to_object.abs() < field_of_view_height_angle / 2.0;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the Intrinsic camera matrix already provides functionality for this. If not this would be a great location to put this code. You could then construct an Intrinsic here and use that.
Right now you also ignore the fact that the optical center could be shifted, which would make this math incorrect.
Again, the Intrinsic camera matrix handles all of that (except shear at the moment)

@vivi-enne vivi-enne added this to the Booster 3 - woami milestone Jan 14, 2026
@vivi-enne vivi-enne moved this from Request for Review to In Progress in Development Jan 21, 2026
@vivi-enne vivi-enne assigned vivi-enne and unassigned oleflb Jan 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

4 participants