
    Rj8
                     
   d Z ddlZddlZej                  j                  ej                  j                        Z edddddd ej                  dd	      
      Z
 edddddd ej                  dd      
      Z edddddd ej                  dd      
      Z ej                  dd      Z ej                  dd      Z edddddd ej                  dd      
      Ze
eeegZd Zd Zedk(  r ed e       rdnd       yy)uR  CANONICAL ArUco board registry for the whole system (single source of truth — import this, never
redefine constants inline). All boards: cv2.aruco.DICT_6X6_250. ID ALLOCATIONS (must never overlap):
  100-108  smith300 arm base board (this file)
  190-198  UMI gripper cube TOP    (this file)
  200-208  UMI gripper cube BACK   (this file)
  217-225  fiducial exoskeleton arm 1   (exo_redo/ExoConfigs/panda_exo.py — NOT ours to move)
  226-234  fiducial exoskeleton arm 2   (exo_redo)
  240,241  DEPRECATED UMI singles (2026-07-07) — do not reuse until physical sheets confirmed destroyed
    Narm_base)   r   g{Gz?g{Gzt?      T@d   m   )nameshapemarker_msep_mmargin_msheet_mmidsumi_top      umi_back               umi_v2)   r   )g      ^@r         c                 h    t         j                  j                  | d   | d   | d   t        | d         S )z7cv2.aruco.GridBoard for a spec dict from this registry.r	   r
   r   r   )cv2aruco	GridBoardDICT)specs    3/home/cameronsmith/cad_recovery_mnt/aruco_boards.pyboardr#   "   s3    99tG}d:.>WtUYZ_U`aa    c                     t         D  ci c]"  } | d   t        | d   j                               $ }} t        t        j                               |d<   t        t        j                               |d<   t        |      }d}t        t        |            D ]X  }t        |dz   t        |            D ];  }|||      |||      z  }|sd}t        d||    d	||    d
t        |              = Z |S c c} w )Nr   r   exo_arm1exo_arm2T   FzOVERLAP z vs z: )

ALL_BOARDSsettolistEXO_ARM1_IDSEXO_ARM2_IDSlistrangelenprintsorted)sgroupsnamesokijinters          r"   check_no_overlapsr:   '   s    9CDAaiQuX__.//DFD\0023F:\0023F:LE	B3u: Lq1uc%j) 	LA58$veAh'77Eq
$uQxj6%=/JK		LL I Es   'C0__main__zoverlap check:zPASS - all ID ranges disjointFAIL)__doc__numpynpr   r   getPredefinedDictionaryDICT_6X6_250r    dictarangeARM_BASEUMI_TOPUMI_BACKr,   r-   UMI_V2r)   r#   r:   __name__r1    r$   r"   <module>rJ      s1    

yy(()?)?@ZvU9299S#3FH IVe5)"))C2EGZvU9299S#3FHryyc"ryyc"	86E})"))C:M
O
 62
b
 z	
?P?R;X^_ r$   