
    Uj                     >   d Z ddlZddlZ ej                  g d      Zd ZddZedk(  rs ej                  dd	      Z
 ej                  g d
      Ze ee
      z
  Z ed ej                   ee
      d      j                                 ed ee      z         yy)a^  CANONICAL TCP definition (Cameron 2026-07-14): defined RELATIVE to the fixed ENPIRE finger mesh
(shared by the wand and the arm gripper), so every variant derives the identical point.
OFFSET calibrated once from Cameron's Blender-placed tcp cube: tcp (-157.0, -7.7, 24.8) minus the
fixed-finger reference (x_min, y_center, z_min) at calibration time.    N)gfffff2@gq=
ףpgq=
ףp@c                 t    | j                   \  }}t        j                  |d   |d   |d   z   dz  |d   g      S )Nr         )boundsnparray)meshlohis      ./home/cameronsmith/cad_recovery_mnt/gen_tcp.py_refr   	   s>    [[FB88RURURU]a/A788    gnode_v2_enpire_fixed.stlc                 T    t        j                  | d      }t        |      t        z   S )Nr	   force)trimeshloadr   
TCP_OFFSET)fixed_finger_stlms     r   tcp_servo_mmr      s"    %V4A7Zr   __main__r	   r   )g     cgg8@z
reference:r   z)TCP_OFFSET = np.array([%.2f, %.2f, %.2f]))r   )__doc__numpyr   r   r   r   r   r   __name__r   r   placedoffprintroundtolisttuple r   r   <module>r$      s   H RXX*+
9  z0?ARXX*+F
47
C	,a!,3356	
5c

BC r   