feat(capture): detect the flat pose for targets laid on the ground

This commit is contained in:
qlionbleusam
2026-08-29 11:07:46 +02:00
parent 8804d8b6a1
commit 6ee0839db5
2 changed files with 17 additions and 17 deletions
+7 -7
View File
@@ -32,7 +32,7 @@ class ParallelismData {
final TargetPose pose;
/// Inclinaison avant/arrière brute en degrés (0° = appareil vertical,
/// -90° = appareil à plat, caméra vers le sol).
/// +90° = appareil à plat, caméra vers le sol).
final double pitchDegrees;
/// Inclinaison gauche/droite en degrés (0° = parfaitement droit).
@@ -41,7 +41,7 @@ class ParallelismData {
/// Écart de tangage par rapport à la pose détectée.
///
/// En pose [TargetPose.wall] il vaut exactement [pitchDegrees] ; en pose
/// [TargetPose.ground] il mesure l'écart aux -90° de l'appareil à plat.
/// [TargetPose.ground] il mesure l'écart aux +90° de l'appareil à plat.
/// C'est cette valeur qu'il faut afficher : le tangage brut vaudrait -90°
/// alors que le cadrage est parfait.
final double pitchDeviation;
@@ -71,9 +71,9 @@ class ParallelismData {
/// plus proche est retenue automatiquement :
///
/// [TargetPose.wall] — cible au mur, appareil vertical (tangage ≈ 0°)
/// [TargetPose.ground] — cible au sol, appareil à plat (tangage ≈ -90°)
/// [TargetPose.ground] — cible au sol, appareil à plat (tangage ≈ +90°)
///
/// Seul le tangage négatif vaut pour la pose au sol : à plat écran vers le
/// Seul le tangage positif vaut pour la pose au sol : à plat écran vers le
/// haut, la caméra vise le plafond et le vert n'aurait aucun sens.
///
/// Implémente une hystérésis à deux seuils pour éviter le clignotement :
@@ -187,10 +187,10 @@ class ParallelismService {
final double wallPitchDeviation = pitchDeg;
final double wallWorst = math.max(pitchDeg.abs(), rollDeg.abs());
// Cible au sol : le tangage idéal est -90° (caméra vers le bas). Écran vers
// le haut, le tangage vaut +90° et l'écart atteint 180° : la pose au sol ne
// Cible au sol : le tangage idéal est +90° (caméra vers le bas). Écran vers
// le haut, le tangage vaut -90° et l'écart atteint 180° : la pose au sol ne
// peut alors jamais gagner, ce qui est exactement le comportement voulu.
final double groundPitchDeviation = pitchDeg + 90.0;
final double groundPitchDeviation = pitchDeg - 90.0;
final double groundWorst =
math.max(groundPitchDeviation.abs(), rollDeg.abs());