o
    wi8                     @   s  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Zdeed d  d  ZejddejdddZdejeefeed eediZee ed ed   Zd\ZZ de Z!ejddejdddZ"ejee fe!e!d ee"ded< ee! ed e!d   Z#dZ$e#e$ Z%d\Z&Z'e%e&e&d d   Z(ejdde&e'  ejdddZ)eje&e'fe(e(d ee)ded< dZ*	 	 G d(d) d)eZCeC ZDdS )*zPanda arm with exoskeleton only on the base (no exos on links).

Single ArUco board on the robot base for camera/pose estimation; arm links
have no exo meshes or markers.
    N)aruco   )ExoskeletonConfig
LinkConfigrobot_modelsfranka_emika_pandazrobot_models/so100_modelz/../board_imgs)   r   g      #@
   d         )dtypelarger_base)sizeZmarkerLengthZmarkerSeparation
dictionaryids)   r            larger_coarse_boardg      ?)   r   even_larger_boardvirtual_gripper_keypoint)PathZ
board_imgsT)parentsexist_okzlarger_coarse_board.png)   r   )Imageg
F%u?)dpizWrote zeven_larger_board.pngc                   @   s   e Zd ZdZdZe dZe dZe dZ	e
 de
 de
 dd	Zed
 ed ed
 d	Zdeddddeg deg dd
ediZdS )PandaBaseOnlyConfigzLPanda arm: only the base has an exoskeleton (ArUco board); no exos on links.ZPanda_BaseOnlyz
/panda.xmlz/background.xmlz/assets/z/larger_base.pngz/larger_coarse_board.pngz/even_larger_board.png)r   r   r   r   r   r   Zlink0_8Zlink0zlink0_8.objzB../../so100_blender_testings/panda_base_redo_grip_align_larger.stl)gLG@gfffffcg      F@)r   r   r   )mujoco_namepybullet_namerobot_mesh_pathexo_mesh_patharuco_offset_posaruco_offset_rotaruco_board_nameboard_lengthN)__name__
__module____qualname____doc__namePANDA_MODEL_DIRbase_xml_pathSO100_MODEL_DIRbackground_xml_pathcompiler_meshdirBOARD_IMG_DIRaruco_boardslink_boardsaruco_board_objectsr   nparrayBOARD_LENGTH_EVEN_LARGERlinks r<   r<   L/data/cameron/para/panda_streaming/hand_eye_calib/../ExoConfigs/panda_exo.pyr!   e   s2    



r!   )Er-   osnumpyr8   cv2r   exoskeletonr   r   pathdirnameabspath__file__Z	_this_dirjoinr/   r1   r4   getPredefinedDictionaryDICT_6X6_250
aruco_dictn_aruco_rown_aruco_colxarangeint32reshapeboard_ids_base	GridBoardr6   ZBOARD_LENGTH_LARGEZn_coarse_rowZn_coarse_colZx_coarseZboard_ids_coarseZBOARD_LENGTH_COARSEZEVEN_LARGER_PLANE_RATIOr:   Z
n_even_rowZ
n_even_colZ_x_evenZboard_ids_even_largerVIRTUAL_GRIPPER_BODY_NAMEpathlibr   Zboard_length_coarseresolver   Zout_dirmkdirZout_pathgenerateImageimgimwritestrPILr   openZpil_imgZboard_length_inintroundwidthr    saveImportErrorprintr!   ZPANDA_BASE_ONLY_CONFIGr<   r<   r<   r=   <module>   sd    
	
"
	
%