
    jW                        d Z ddlZddlZddlmZmZ ddlmZmZm	Z	 ddl
Z
ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddl m!Z!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z) e G d d                      Z*e G d d                      Z+dZ,e G d d                      Z-e G d d                      Z.e G d d                      Z/e G d d                      Z0e G d d                      Z1e G d d                       Z2e G d! d"                      Z3e G d# d$                      Z4e G d% d&                      Z5e G d' d(                      Z6e G d) d*                      Z7e G d+ d,                      Z8efd-e9d.e:fd/Z;d3d0Z<d1 Z=e>d2k    r e=             dS dS )4z7Command-line interface for Raiden teleoperation toolkit    N)	dataclassfield)ListLiteralOptional)CALIBRATION_FILECALIBRATION_POSES_FILECAMERA_CONFIGSPACEMOUSE_CONFIGWEIGHTS_DIR)run_calibration_pose_recording)CalibrationRunner)build_interface)convert_taskselect_tasks)run_recording)
run_replay)run_bimanual_teleop)ShardifyConfigrun_shardifyselect_processed_task)select_processed_recordingselect_recording)select_task_and_episodevisualize_recordingc                       e Zd ZU dZdZed         ed<   	 dZed         ed<   	 dZe	ed	<   	 d
Z
eed<   	 dZeed<   	 dZe	ed<   	 dZe	ed<   	 dZeed<   dS )TeleopCommand:Start bimanual teleoperation with improved synchronizationleaderr   
spacemousecontrolbimanualr#   singlearmsg        bilateral_kp/dev/hidraw7spacemouse_path_r/dev/hidraw6spacemouse_path_lgQ?	vel_scale皙?	rot_scaleFinvert_rotationN)__name__
__module____qualname____doc__r"   r   __annotations__r&   r'   floatr)   strr+   r,   r.   r/   bool     1/home/robot-lab/cameron/raiden_fork/raiden/cli.pyr   r      s         DD/7GW+,777N*4D'&
'444FL%F+s+++I+s+++HIuRIuQ!OT!!!DDr9   r   c                       e Zd ZU dZdZed         ed<   	 dZeed<   	 dZ	e
e         ed<   	 d	Zeed
<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZed         ed<   dS )RecordCommand2Record a demonstration with cameras and robot datar   r    r"   datadata_dirN	s3_bucketdemonstrations	s3_prefixr(   r)   r*   r+   Q?r,         @r.   Fr/   r#   r$   r&   )r0   r1   r2   r3   r"   r   r4   r?   r6   r@   r   rB   r)   r+   r,   r5   r.   r/   r7   r&   r8   r9   r:   r<   r<   ;   s         <</7GW+,777NHcV#Ix}###<%Is%%%@+s+++I+s+++HIuRIuQ!OT!!!D*4D'&
'444FFr9   r<   i@B c                   B    e Zd ZU dZ ee          Zee         e	d<   dS )ResetCanCommand)Reset CAN interfaces (bring down then up))default_factory
interfacesN)
r0   r1   r2   r3   r   listrI   r   r6   r4   r8   r9   r:   rF   rF   a   s9         33!E$777JS	777DDr9   rF   c                       e Zd ZU dZdZee         ed<   	 dZee         ed<   	 dZ	e
ed<   	 dZe
ed<   	 d	Ze
ed
<   	 dZe
ed<   	 dZeed<   dS )MakeFfsOnnxCommandMExport Fast Foundation Stereo model to ONNX (and optionally TensorRT engines)N	model_dir	save_pathi  heighti  width   valid_iters   max_dispFbuild_engines)r0   r1   r2   r3   rN   r   r6   r4   rO   rP   intrQ   rS   rU   rV   r7   r8   r9   r:   rL   rL   i   s         WW#Ix}###f#Ix}###_FC>E3=K=Hc8M4PPr9   rL   c                   v    e Zd ZU dZdZed         ed<   	 dZee	         ed<   	 dZ
ee	         ed<   	 dZeed	<   dS )
MakeTriStereoEngineCommand2Compile TRI Stereo TensorRT engine from ONNX modelc64c32r[   variantNonnxengineTfp16)r0   r1   r2   r3   r^   r   r4   r_   r   r6   r`   ra   r7   r8   r9   r:   rY   rY      sn         <<%*GW\"***D(3-N FHSM   SD$r9   rY   c                       e Zd ZdS )ConsoleCommandNr0   r1   r2   r8   r9   r:   rc   rc              Dr9   rc   c                       e Zd ZdS )ListDevicesCommandNrd   r8   r9   r:   rg   rg      re   r9   rg   c                       e Zd ZU dZdZeed<   	 eZe	ed<   	 dZ
ed         ed<   	 dZe	ed	<   	 d
Ze	ed<   	 dZeed<   	 dZeed<   	 dZeed<   dS )RecordCalibrationPosesCommand)Record robot poses for camera calibration   	min_posesoutput_filer   r    r"   r(   r)   r*   r+   rC   r,   rD   r.   Fr/   N)r0   r1   r2   r3   rl   rW   r4   r	   rm   r6   r"   r   r)   r+   r,   r5   r.   r/   r7   r8   r9   r:   ri   ri      s         33Is8-K---(/7GW+,777N+s+++I+s+++HIuRIuQ!OT!!!DDr9   ri   c                       e Zd ZU dZeZeed<   	 eZ	eed<   	 e
Zeed<   	 dZeed<   	 dZeed<   	 dZeed	<   	 d
Zeed<   	 dZeed<   dS )CalibrateCommand+Run camera calibration using recorded poses
poses_filerm   camera_config_file	   	squares_x	squares_ygQ?square_lengthgZd;O?marker_lengthDICT_6X6_250
dictionaryN)r0   r1   r2   r3   r	   rq   r6   r4   r   rm   r
   rr   rt   rW   ru   rv   r5   rw   ry   r8   r9   r:   ro   ro      s         55,J,,,,'K'''*++++IsNIsNM5F M5   E$J$$$22r9   ro   c                       e Zd ZU dZdZeed<   	 dZed         ed<   	 dZ	e
ed<   	 d	Zeed
<   	 dZed         ed<   	 dZeed<   dS )ConvertCommandzAConvert raw camera recordings (SVO2/bag) to UnifiedDataset formatr>   r?   zedr|   ffs
tri_stereostereo_method      ?	ffs_scalerR   	ffs_itersr[   r\   tri_stereo_variantF	reconvertN)r0   r1   r2   r3   r?   r6   r4   r   r   r   r5   r   rW   r   r   r7   r8   r9   r:   r{   r{      s         KKHcl9>M756>>> eIuwIs[05-555uItggr9   r{   c                       e Zd ZU dZdZee         ed<   	 dZe	d         ed<   	 dZ
eed<   	 d	Zeed
<   	 dZeed<   	 dZe	d         ed<   dS )ReplayCommand#Replay recorded follower arm motionNrecording_dirr#   r$   r&   r   speed   strideF	visualizeraw)r   	processedsource)r0   r1   r2   r3   r   r   r6   r4   r&   r   r   r5   r   rW   r   r7   r   r8   r9   r:   r   r      s         --#'M8C='''S*4D'&
'444?E5PFCOOOyItK*/FG&'/// R  Rr9   r   c                   R    e Zd ZU dZdZeed<   	 dZeed<   	 dZ	e
ed<   	 dZeed	<   d
S )VisualizeCommand:Visualize a converted UnifiedDataset recording using Rerunr   r   g      ?image_scaleFwebi#  web_portN)r0   r1   r2   r3   r   rW   r4   r   r5   r   r7   r   r8   r9   r:   r   r     s^         DDFCOOO+KGC\Hc66r9   r   c                   v   e Zd ZU dZdZeed<   	 dZeed<   	 dZe	e         ed<   	 dZ
e	e         ed<   	 d	Zeed
<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZe	e         ed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 d Zeed!<   	 d"Zeed#<   	 dZeed$<   	 dZeed%<   dS )&ShardifyCommand;Export converted episodes to WebDataset sharded .tar formatr>   r?   zdata/shards
output_dirN	task_namer@   yam_datasetsrB   r   past_lowdim_steps   future_lowdim_steps   max_padding_left   max_padding_rightd   samples_per_shard_   jpeg_quality384x384resize_imagesFfilter_still_samplesg?still_thresholdTfail_on_nanr   
   stats_stridemax_episodesnum_workers	use_depth)r0   r1   r2   r3   r?   r6   r4   r   r   r   r@   rB   r   rW   r   r   r   r   r   r   r   r7   r   r5   r   r   r   r   r   r   r8   r9   r:   r   r     s        EEHcQ#J###B#Ix}###F#Ix}###J#Is###hsD!!!!GcRsT s   9L#:#,M8C=,,,C!&$&&&A!OU!!!PKOFCOOO UL#^L#GK1ItFFr9   r   c                      e Zd ZU dZdZeed<   	 dZeed<   	 dZ	e
d         ed<   	 d	Zeed
<   	 dZeed<   	 dZe
d         ed<   	 dZeed<   	 dZe
d         ed<   	 dZeed<   	 dZee         ed<   	 dZeed<   	 dZeed<   	 dZeed<   dS )ServeCommandzStart the chiral policy serverz0.0.0.0hosti="  portr|   r}   r   r   r   rR   r   r[   r\   r   r-   max_joint_deltaee_pose)jointr   action_typeFno_depthr   r   r    rr   calibration_fileN)r0   r1   r2   r3   r   r6   r4   r   rW   r   r   r   r5   r   r   r   r   r   r7   r   r   r   rr   r   r8   r9   r:   r   r   X  s$        ((D##D#%9>M756>>>oIuUIs.05-555L OU   U/8K+,888zHdR#,M8C=,,,oIte    Ec__r9   r   pathreturnc                     	 t          |           5 }t          j        |          cd d d            S # 1 swxY w Y   d S # t          $ r i cY S w xY wN)openjsonloadFileNotFoundError)r   fs     r:   _load_spacemouse_configr     s    $ZZ 	 19Q<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    			s'   ? 2? 6? 6? AAc                  v   t          d           t                       t          d           t                       t          d           t          d           t          d           t          d           t          d           t          d           t          d	           t          d
           t          d           t          d           t          d           t          d           t          d           t          d           t          d           t                       t          d           d S )NzARaiden - Toolkit for policy learning with YAM bimanual robot armszUsage: rd <command> [options]z	Commands:z:  teleop                      Start bimanual teleoperationzA  record                      Record teleoperation demonstrationszR  convert                     Convert SVO2/bag recordings to UnifiedDataset formatzA  replay                      Replay recorded follower arm motionzH  visualize                   Visualize a converted recording with RerunzG  record_calibration_poses    Record robot poses for camera calibrationzI  calibrate                   Run camera calibration using recorded poseszV  list_devices                List all connected cameras, arms, and SpaceMouse deviceszL  shardify                    Export converted episodes to WebDataset shardszI  console                     Open the interactive metadata console (TUI)zG  reset_can                   Reset CAN interfaces (bring down then up)zO  serve                       Start the chiral policy server for live inferencez\  make_ffs_onnx               Export Fast Foundation Stereo model to ONNX / TensorRT engineszP  make_tri_stereo_engine      Compile TRI Stereo TensorRT engine from ONNX modelz<Run 'rd <command> --help' for more information on a command.)printr8   r9   r:   _print_helpr     s`   	
MNNN	GGG	
)***	GGG	+	
FGGG	
MNNN	\   

MNNN	
TUUU	
STTT	
UVVV	`   
V   

UVVV	
STTT	Y   
f   
Z   
GGG	
HIIIIIr9   c                  )   t          t          j                  dk    rt          j        d         } | dk    rt          j                            d           t	                      }t          j        t          dt          |                    dd          |                    dd                    	          }t          |j
        |j        |j        |j        |j        |j        |j        |j        
           dS | dk    rt          j                            d           t	                      }t          j        t$          dt%          |                    dd          |                    dd                    	          }t'          |j        |j        t-          |j        |j        |j        |j        |j        |j                  |j        |j                   dS | dk    rt          j                            d           t          j        t0          d          }|j        ddlm}  ||j                  }n(|j        dk    rt;                      }nt=                      }t?          ||j        |j         |j!        |j"                   dS | dk    rLt          j                            d           t          j        tF          d           ddl$m%}  |             dS | dk    rt          j                            d           t          j        tL          d          }t	                      }tO          t-          |j        |                    d|j                  |                    d|j                  |j        |j        |j                  |j(        |j)        tT                     dS | dk    rt          j                            d           t          j        tV          d          }ddl,m-} dd l.m/}  ||j0                  } ||j1        |j2        |j3        |j4        |j5        !          }	tm          |j0        |j7        |j)        |	"          }
|
8                    |9                    d#          |9                    d$          |:                    d%          pd&           dS | d'k    rt          j                            d           ddlm} t          j        tv          d(          }ty          |j                  D ]O}t{          ||j>        |j?        |j@        |jA        t           ||j                  dz            |jC        )           PdS | d*k    rvt          j                            d           t          j        t          d+          }t                      \  }}t          |||j!        |jG        |jH        |jI        ,           dS | d-k    rt          j                            d           t          j        t          d.          }ddlm} t          |j                  }d}|jL        r;|jL        M                    d/          \  }}t          |          t          |          f}|D ]\  }}t          d0t          |           d1|            |jP        p|jQ        }|j        r|j         d2| d3nd}t          di d4 ||jS                  |z  d5|jT        d6|jU        d7|jV        d8|jW        d9|jX        d:|jY        d;|d<|jZ        d=|j[        d>|j\        d?|j!        d@|j]        dA|j^        dB|j_        dC|j`        }t          |||j        |D           dS | dEk    r`t          j                            d           t          j        t          dF           ddGlcmd}  |            }|e                                 dS | dHk    rt          j                            d           t          j        t          dI          }ddJlgmh}mi} |jj        p	 |            }|s#t          dK           t          jk        d           t          dLt          |           dMt           dN           dO}|D ]+} ||t          P          }|rt          dQ|            )dR},|rt          dS           dS t          jk        d           dS | dTk    rt          j                            d           t          j        t          dU          }ddVlnmo} d}|jL        r;|jL        M                    d/          \  }}t          |          t          |          f} ||j0        |jp        |jq        |jr        |j>        |j?        |j@        |jC        |js        |jt        |ju        ||j"        W           dS | dXk    rt          j                            d           t          j        t          dY          }ddlw}ddlm} ddlx} ddly}!ddlz}"ddZl{m|}# |j}        ~                    d[d\           |j}        ~                    d]d\            |t                    j        j        d^z  d_z  }$t          j                            dt          |$                     dd`lm}%m}&m}'  ||j        pt          t          daz                      }(|(                    dOdOb           |j        dcz  dk    r|j        dcz  dk    sJ dd|j         de|j         df            |j        })|)kt          t          j        dg          dh dOi          }*|*s-t          djt           dk           t          jk        d           t          |*d                   })t          dl|)            t          dm|j         dn|j                    t          do|(            |!j                            dR           t          dp           |!                    |)dqdRr          }+|j        |+j        _        |j        |+j        _        |+                                                                  |%|+                                                                          }, |&|+                                                                          }-|!                    dds|j        |j                                                                                  dtz  }.|!                    dds|j        |j                                                                                  dtz  }/|(duz  }0t          dv           |!jx                            |,|.|/ft          |0          dwdxdygg dzdO{           |0                    d|          }1|1                                rjt          d}           |                     t          |0                    }2|                     |2t          |0                     |1                    dO~           t          d            |,|.|/          \  }3}4}5}6}7}8 |'|3                                |7                                |j        dz  |+j                  }9|!jx                            |-|3|4|5|6|7|8|9ft          |(dz            dwg ddgdOdR           |#                    |+j                  }|j        |d<   |j        |d<   |+j        |d<   tC          |(dz  d          5 }:|"                    ||:           ddd           n# 1 swxY w Y   t          d|( d2           |j        r`ddl};|;                    |;j        j                  }<|;                    |<d           dD ]}=|(|= dz  }>|(|= dz  }?t          d|= d           |;                    |<          }@|@                                }A|;                    |A|<          }BtC          |>d          5 }:|B                    |:                                          }ddd           n# 1 swxY w Y   |sct[          |Bj                  D ]'}Ct          d|B                    |C                      (t          d|>            t          jk        d           |@                                }D|D                    |;j        j                   |@                    |A|D          }E|E&t          d|=            t          jk        d           tk          |E          }Ft          dt          |F          dz  dz  dd           tC          |?d          5 }:|:                    |F           ddd           n# 1 swxY w Y   t          d|?            t          d           dS dS | dk    rt          j                            d           t          j        tn          d          }ddl};ddlm}  |t                    j        j        dz  dz  }G|jx        r ||jx                  n|Gd|j         dz  }>|j        r ||j                  n|Gd|j         dz  }?|>                                s5t          d|>            t          d           t          jk        d           t          d|>            t          d|?            t          d|j                    t          d           |;                    |;j        j                  }<|;                    |<          }H|H                    dt          |;j        j                  z            }I|;                    |I|<          }J|J                    t          |>                    s&t          d|>            t          jk        d           |H                                }K|j        r|K                    |;j        j                   |H                    |I|K          }L|L#t          d           t          jk        d           |?j                            dOdOb           tC          |?d          5 }:|:                    |L           ddd           n# 1 swxY w Y   t          d|?            dS t                       t          jk        d           dS t                       t          jk        d           dS )zMain entry point for rd commandr   teleopr   path_rr(   path_lr*   )r)   r+   )descriptiondefault)r'   r"   r)   r+   r,   r.   r/   r&   recordr=   )r)   r+   r,   r.   r/   )r@   rB   	interfacer&   r?   replayr   )r   Nr   )Pathr   )r&   r   r   r   list_devicesz>List all connected cameras, robot arms, and SpaceMouse devices)r   record_calibration_posesrj   )r   rl   rm   rr   	calibraterp   )ChArUcoBoardConfig)CameraConfig)rt   ru   rv   rw   ry   )rr   rq   rm   charuco_config
left_wristright_wristscene)left_wrist_camera_idright_wrist_camera_idscene_camera_idsconvertzEConvert raw camera recordings (SVO2/bag) to PNG frames and depth maps)r   r   r   r   processed_baser   r   r   )r   episoder   r   r   r   shardifyr   xzFound z episodes in /z/shardsr   r   r   r   r   r   r   resize_images_sizer   r   r   r   max_episodes_to_processr   r   r   )r@   rB   consoleu  Interactive TUI for managing Raiden demonstrations and metadata.

Tabs:
  Dashboard       Live counts and per-task / per-teacher breakdown
  Demonstrations  Full list of recorded episodes — mark success or failure,
                  reassign teacher / task, delete entries
  Teachers        Add, rename, or remove teacher records
  Tasks           Add, edit, or remove task definitions

Workflow:
  Demonstrations are marked Success or Failure directly from the
  teaching hardware during recording. Open the console only to
  correct mistakes. Only successful demonstrations are converted
  when you run  rd convert.

Marking during recording (without opening the console):
  Left pedal / leader button          Start or stop recording
  Middle pedal / top leader button    Mark as Success
  Right pedal / bottom leader button  Mark as Failure

Key bindings inside the console:
  r  Refresh all panes
  s  Settings (DB path and record counts)
  ?  Help screen
  q  Quit)RaidenConsole	reset_canrG   )list_can_interfacesreset_can_interfacezNo CAN interfaces found.z
Resetting z CAN interface(s) at z bps...T)bitrateu     ✓ FzDone.servez1Start the chiral policy server for live inference)
run_server)rr   r   r   r   r   r   r   r   r   r   r   r   r   make_ffs_onnxrM   )	OmegaConfTORCH_COMPILE_DISABLE1TORCHDYNAMO_DISABLEthird_partyzFast-FoundationStereo)TrtFeatureRunnerTrtPostRunnerbuild_gwc_volume_tritonr_   )parentsexist_ok    zheight (z) and width (z) must both be divisible by 32z*.pthc                 4    |                                  j        S r   )statst_mtime)ps    r:   <lambda>zmain.<locals>.<lambda>
  s    !&&(("3 r9   )keyreversezNo *.pth checkpoint found in ''zCheckpoint : zInput size : z x zOutput dir : z
Loading model...cpu)map_locationweights_onlyr      zfeature_runner.onnxz"
Exporting feature_runner.onnx ...   leftright)features_left_04features_left_08features_left_16features_left_32features_right_04stem_2x)opset_versioninput_namesoutput_namesdo_constant_foldingz
.onnx.dataz,  Merging external data into single file ...)
missing_okzExporting post_runner.onnx ...   zpost_runner.onnx)r  r  r  r  r  r  
gwc_volumedisp)r  r  r  r  dynamoimage_himage_wcv_groupz	onnx.yamlwz
Done. Files written to r   )feature_runnerpost_runnerz.onnxz.enginez

Building z%.engine (may take several minutes)...rbz  Parse error: zFailed to parse z$TensorRT failed to build engine for z  Engine size: i   z.1fz MiBwbz  Saved z@
TensorRT engines ready. rd convert will use them automatically.make_tri_stereo_enginerZ   weightsr   stereo_zONNX model not found: zRun: git lfs pullz
ONNX    : z
Engine  : z
FP16    : z7
Building TensorRT engine (may take several minutes)...zFailed to parse ONNX model: zTensorRT engine build failed.z
Saved engine to r8   )lensysargvpopr   tyroclir   getr   r'   r"   r)   r+   r,   r.   r/   r&   r<   r   r@   rB   r   r?   r   r   pathlibr   r   r   r   r   r   r   r   rg   raiden.camera_utilsr   ri   r   rl   rm   r
   ro   raiden.calibration.recorderr   raiden.camera_configr   rr   rt   ru   rv   rw   ry   r   rq   run_calibrationget_camera_by_roleget_cameras_by_roler{   r   r   r   r   r   r   r6   r   r   r   r   r   r   r   r   r   r   splitrW   r   r   namer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   raiden.tui.appr   runrF   raiden.robot.controllerr   r   rI   exit_CAN_BITRATEr   raiden.serverr   r   r   r   r   r   r   rL   osr_   torchyaml	omegaconfr   environ
setdefault__file__parentr   insertcore.foundation_stereor   r   r   rO   r   mkdirrP   rQ   rN   sortedglobautogradset_grad_enabledr   rU   argsrS   cudaevalrandnr5   exportwith_suffixexistssaveunlinkhalfr  to_containerr   	safe_dumprV   tensorrtLoggerWARNINGinit_libnvinfer_pluginsBuildercreate_network
OnnxParserparsereadrange
num_errors	get_errorcreate_builder_configset_flagBuilderFlagFP16build_serialized_networkbyteswriterY   r^   r`   ra   ERRORNetworkDefinitionCreationFlagEXPLICIT_BATCHparse_from_filer   )M
subcommandsmcommandr   r   r   r   r   _cfgr   runner_Pathtask_dirr   selected_tasksresizehr  episode_dirsr   s3_full_prefixcfgr   appr   r   rI   all_okifaceokr   r<  r_   r=  r>  r   _ffs_dirr   r   r   rO   rN   ckptsmodelr  r   left_img	right_imgfeature_onnx_path
_data_file_mr  r  r  r  r  r  r  r   trt
trt_loggerr5  	onnx_pathengine_pathbuildernetworkparsericonfig
engine_memengine_bytes_tri_stereo_weightstrt_buildertrt_network
trt_parser
trt_config
serializedsM                                                                                r:   mainr    sJ    38}}qXa[
!!HLLOOO(**BhX%&(ffX~&F&F&(ffX~&F&F    G  $1")";")";!+!+ ' 7\	 	 	 	 	 	 8##HLLOOO(**BhP%&(ffX~&F&F&(ffX~&F&F    G !+!+)O&-&?&-&?%/%/$+$;   \ )      8##HLLOOOh+P  G $0(((((( $W%: ; ;;.. : < < 0 2 2\m~!+      >))HLLOOOH"\    988888LNNNNN555HLLOOOh-G  G )**B*)O&(ffXw7P&Q&Q&(ffXw7P&Q&Q%/%/$+$;   "+#/#0      ;&&HLLOOOh I  G GFFFFF999999< :;;D//!+!+%3%3"-  N '#*#="-#/-	  F ""%)%<%<\%J%J&*&=&=m&L&L!%!9!9'!B!B!Jd #      9$$HLLOOO------hc  G ))9:: 	 	")"7%/%/%/#&uuW-='>'>'L#M#M'.'A    	 	 ;&&HLLOOOh X  G &=%>%>"M7+~#/K )      :%%HLLOOOhY  G .-----273CDDN#'F$ *,223771a&&#a&&)*8 ! !&,Is<00IIxIIJJJ#->	 (w(==9====  %   $uW%7889DD&-&?&? )0(C(C &-%=%=	
 '.&?&? '.&?&? ")!5!5 (.v *1)E)E %,$;$; !( 3 3 #>> -4,@,@ !( 3 3 ")!5!5  &//!$  %/,	    9! !F 9$$HLLOOOH    4 544444-//CGGIIIII;&&HLLOOOhG  G YXXXXXXX +D/B/B/D/DJ 0111XS__XX<XXX   F# # #((EEE #*5**++++"FF g7""HLLOOOhO  G 100000#'F$ *,223771a&&#a&&)J#*#=!(!9\\%3!+!+#*#= ' 7#/ )#)!+       ?**HLLOOOh"k  G III------KKKLLLKKK++++++J!!"93???J!!"7=== h&-=@WW  HOOAs8}}---          g/L3{V7K3L3LMMIOOD4O888>B&!++0Ba0G0G0Ge7>eeeee 1H0GG  )I $W--33   
   I;IIIJJJHQKKKaMM	-)--...D'.DDW]DDEEE-)--...N++E222&'''JJyu5JQQE")"2EJ%,%8EJ"JJLL--e4499;;@@BBN'-..3355::<<K Aq'.'-@@EEGGMMOORUU  Aq'.'-@@EEGGMMOORUU  !*,A A7888J9%%&& #W-   %)      +66|DDJ  "" 3DEEEYYs#45566		"c"344555!!T!2222333 x33    !00 %%''!&&(( A%	 J J$$$$% I 2233    %X$(1    6 ((44C$^C	N$]C	N#nC
Oi+-s33 'qsA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' :i:::;;;$  &&&& ZZ
(:;;
++J;;;= 4 4D )tNNN :I"+.>.>.>">KSSSSTTT!kk*55G%4466G ^^GZ@@Fi.. 4!#\\!&&((334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 $!&v'8!9!9 K KA!"IF4D4DQ4G4G"I"IJJJJ<<<===$::<<FOOCO$8999!(!A!A'6!R!RJ!)KTKKLLL#(#4#4LUC,=,=,Dt,KUUUUVVVk400 .A---. . . . . . . . . . . . . . .2[223333W    =   D 333HLLOOOh*P  G #"""------ h&-	9LH  
 <Lgl###(+KW_+K+K+KK  >Ngn%%%(+MW_+M+M+MM  ##%% :y::;;;)****y**+++,{,,----w|--...LMMMCJ$455J++j11K%44S:IJJJ K Z@@J--c)nn== @Y@@AAA$::<<J| :##CO$8999$==k:VVJ!5666$$TD$AAAk4(( $A
###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $4{4455555 MMMHQKKKKKsY   ;||"%|"5(A@)@)A@-	@0A@-	EAE4E4AE8	E;AE8	QAQ4Q4AQ8Q;AQ8__main__)r   N)?r3   r   r'  dataclassesr   r   typingr   r   r   r*  raiden._configr   r	   r
   r   r   r/  r   raiden.calibration.runnerr   raiden.controlr   raiden.converterr   r   raiden.recorderr   raiden.robot.replayr   raiden.robot.teleopr   raiden.shardifyr   r   r   raiden.utilsr   r   raiden.visualizerr   r   r   r<   r:  rF   rL   rY   rc   rg   ri   ro   r{   r   r   r   r   r6   dictr   r   r  r0   r8   r9   r:   <module>r     s   = =  



 ( ( ( ( ( ( ( ( * * * * * * * * * *               G F F F F F 7 7 7 7 7 7 * * * * * * 7 7 7 7 7 7 7 7 ) ) ) ) ) ) * * * * * * 3 3 3 3 3 3 O O O O O O O O O O E E E E E E E E J J J J J J J J E E E E E E E E8 G G G G G G G GD  E E E E E E E E Q Q Q Q Q Q Q Q2          	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 E E E E E E E E8 3 3 3 3 3 3 3 38 h h h h h h h h, R R R R R R R R, 7 7 7 7 7 7 7 7  =G =G =G =G =G =G =G =G@ (` (` (` (` (` (` (` (`V ):  # d    !J !J !J !JH` ` `F zDFFFFF r9   