o
    m'i                     @   sh  d Z ddlZddlZddlmZ ddlmZmZ ej	
ej	eZej	ej	
eddZdZe d	ZeejZd
Zde Zde ded   ZdZee Zed Zd\ZZee ed ed   Zee ed ed   ZeZej ddee  ej!d"ddZ#dej$eefeed ee#diZ%e%d Z&de Z'ee' ee' fZ(dZ)	 G d'd( d(eZAeA ZBdS ))u/  Panda arm with 4×2 rectangular ArUco board on the end-effector (hand).

Wider than tall to match the Panda EEF form factor.
Same marker size as the even_larger 4×4 board (~32.63 mm).
  - 4 columns × 2 rows, DICT_6X6_250
  - 8 markers total, IDs 242–249
  - Physical board ≈ 140 × 68 mm (W × H)
    N)aruco   )ExoskeletonConfig
LinkConfigZrobot_modelsZfranka_emika_pandazrobot_models/so100_modelz/../board_imgsgQE?      
   g      ?g333333@)   r      )dtype	4x2_board)sizeZmarkerLengthZmarkerSeparationZ
dictionaryidsgffffff?Zvirtual_gripper_keypoint)PathZ
board_imgsT)parentsexist_okz4x2_handeye_board.pngi   )Imageg
F%u?)dpizWrote z  (i  z.1fz x z mm)c                   @   s   e Zd ZdZdZe dZe dZe dZ	dZ
dZde diZdeiZd	ed
dddeg dedejd dgdeed	iZdS )PandaHandEye4x2ConfiguC   Panda arm: 4×2 rectangular ArUco board on the hand (end-effector).ZPanda_HandEye_4x2z
/panda.xmlz/background.xmlz/assets/g        handeye_boardz/4x2_handeye_board.pngZ
hand_boardZhand_0Zhandzhand.stl)(   g      >@g     V@r   r   )	mujoco_namepybullet_namerobot_mesh_pathexo_mesh_patharuco_offset_posaruco_offset_rotaruco_board_nameboard_lengthplane_scaleN)__name__
__module____qualname____doc__namePANDA_MODEL_DIRbase_xml_pathSO100_MODEL_DIRbackground_xml_pathcompiler_meshdir	exo_alphaexo_link_alphaBOARD_IMG_DIRaruco_boardsr   aruco_board_objectsr   nparraypiBOARD_LENGTH_4X2PLANE_SCALE_4X2links r6   r6   F/data/cameron/para/panda_streaming/ExoConfigs/panda_exo_handeye_4x2.pyr   H   s0    



r   )Cr$   osnumpyr0   cv2r   exoskeletonr   r   pathdirnameabspath__file__Z	_this_dirjoinr&   r(   r-   getPredefinedDictionaryDICT_6X6_250
aruco_dictxZx_coarseZBOARD_LENGTH_COARSEZEVEN_LARGER_PLANE_RATIOZBOARD_LENGTH_EVEN_LARGERZ_x_evenZ
n_4x2_colsZ
n_4x2_rowsBOARD_WIDTH_4X2BOARD_HEIGHT_4X2r3   arangeint32reshapeZboard_ids_4x2	GridBoardlink_boardsr   Z_SFr4   ZVIRTUAL_GRIPPER_BODY_NAMEpathlibr   resolver   out_dirmkdirout_pathintroundimg_hgenerateImageimgimwritestrPILr   openpil_imgwidthr   saveImportErrorprintr   ZPANDA_HANDEYE_4X2_CONFIGr6   r6   r6   r7   <module>   sH    
"	
"