Skip to content

Conversation

@DamienGilliard
Copy link
Collaborator

@DamienGilliard DamienGilliard commented Nov 24, 2025

The PR concerns the implementation of a RANSAC plane detection on each face, to improve the pose estimation
...
And it works !!! The video hereunder shows successive computations of the poses of 3 point clouds. With the previous method we had some big jumps in pose, and now it is much more stable.

Enregistrement.de.l.ecran.2025-11-24.173042.mp4

Changes include:

  • A change in the CAD segmentation that also outputs a datatree with the segments associated with each side DF_Face:
image
  • A new FitPlaneRANSAC() function in DFPointCloud to detect a plane in a point cloud
  • DF_Pose_Estimation now takes a datatree of point clouds (face segments per beam) and computes the pose using those segments

ToDo

  • add test
  • check generated documentation
  • coherence of variable names

@DamienGilliard DamienGilliard marked this pull request as draft November 24, 2025 13:40
@DamienGilliard DamienGilliard self-assigned this Nov 24, 2025
@DamienGilliard DamienGilliard added enhancement New feature or request backend labels Nov 24, 2025
@DamienGilliard DamienGilliard changed the base branch from main to release/2.0.0 November 24, 2025 13:41
@DamienGilliard DamienGilliard linked an issue Nov 26, 2025 that may be closed by this pull request
@DamienGilliard DamienGilliard changed the base branch from release/2.0.0 to feature/pose_comparison November 26, 2025 13:47
@DamienGilliard DamienGilliard marked this pull request as ready for review November 26, 2025 13:47
rh_bb_centroid = Rhino.Geometry.Point3d(df_bb_centroid[0], df_bb_centroid[1], df_bb_centroid[2])

new_xDirection, new_yDirection = df_poses.select_vectors(vectors, i_assembly.beams[i].plane.XAxis, i_assembly.beams[i].plane.YAxis)
new_xDirection, new_yDirection = df_poses.select_vectors(rh_face_normals, i_assembly.beams[i].plane.XAxis, i_assembly.beams[i].plane.YAxis)
Copy link
Collaborator

Choose a reason for hiding this comment

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

similar to comment on the other pr it seems select_vectors can return non orthonormal and even in this case 0,0,0 vectors which makes a Null Plane but still recognised as planes in ghpython. so angles etc are calculated downstream even if the plane is invalid

yaxis

Copy link
Collaborator Author

@DamienGilliard DamienGilliard Jan 8, 2026

Choose a reason for hiding this comment

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

Yep, got it. The df_face_cloud.fit_plane_ransac() method returns a null vector when it is fed an invalid point cloud, hence the subsequent unintended behaviour.

@eleniv3d eleniv3d merged commit b512b99 into feature/pose_comparison Jan 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pose estimation improvement

3 participants