
    h*                     b    S /r SSKrSSKJr  SSKJr  SSKJr   " S S\\R                  5      r
g)zRushiv Arora    N)utils)	MujocoEnv)Boxc                   L    \ rS rSr/ SQSS.r    SS jrS rS rS rS	 r	S
r
g)
SwimmerEnv
   )human	rgb_arraydepth_array
rgbd_tuple   )render_modes
render_fpsc                    [         R                  R                  " U UUUU40 UD6  Xl        X l        X0l        UU l        U(       a8  [        [        R                  * [        R                  S[        R                  S9nO7[        [        R                  * [        R                  S[        R                  S9n[        R                  " U SS4SU0UD6  g )N)   )lowhighshapedtype)r   zswimmer.xml   observation_space)r   EzPickle__init___forward_reward_weight_ctrl_cost_weight_reset_noise_scale+_exclude_current_positions_from_observationr   npinffloat64r   )selfforward_reward_weightctrl_cost_weightreset_noise_scale*exclude_current_positions_from_observationkwargsr   s          Z/home/james-whalen/.local/lib/python3.13/site-packages/gymnasium/envs/mujoco/swimmer_v4.pyr   SwimmerEnv.__init__   s     	!6	
 	
 '<#!1"3 7 	8 6 #VVG"&&BJJ! !$VVG"&&RZZ! 	-	
6G	
KQ	
    c                 t    U R                   [        R                  " [        R                  " U5      5      -  nU$ )N)r   r   sumsquare)r!   actioncontrol_costs      r'   r.   SwimmerEnv.control_cost:   s*    --ryy7H0IIr)   c           	         U R                   R                  SS R                  5       nU R                  XR                  5        U R                   R                  SS R                  5       nX2-
  U R
                  -  nUu  pVU R                  U-  nU R                  U5      nU R                  5       n	Xx-
  n
UU* US   US   [        R                  R                  USS9UUUS.nU R                  S:X  a  U R                  5         XSSU4$ )Nr         )ord)
reward_fwdreward_ctrl
x_position
y_positiondistance_from_origin
x_velocity
y_velocityforward_rewardr	   F)dataqposcopydo_simulation
frame_skipdtr   r.   _get_obsr   linalgnormrender_moderender)r!   r-   xy_position_beforexy_position_afterxy_velocityr9   r:   r;   	ctrl_costobservationrewardinfos               r'   stepSwimmerEnv.step>   s   !YY^^Aa05576??3 IINN1Q/446(=H!,
44zA%%f-	mmo+(%:+A.+A.$&IINN3D!N$L$$,	
 w&KKME5$66r)   c                 4   U R                   R                  R                  R                  5       nU R                   R                  R                  R                  5       nU R
                  (       a  USS  n[        R                  " X/5      R                  5       nU$ )Nr1   )	r<   r=   flatr>   qvelr   r   concatenateravel)r!   positionvelocityrK   s       r'   rB   SwimmerEnv._get_obs\   sn    99>>&&++-99>>&&++-;;|Hnnh%9:@@Br)   c                 f   U R                   * nU R                   nU R                  U R                  R                  XU R                  R
                  S9-   nU R                  U R                  R                  XU R                  R                  S9-   nU R                  X45        U R                  5       nU$ )N)r   r   size)
r   	init_qpos	np_randomuniformmodelnq	init_qvelnv	set_staterB   )r!   	noise_low
noise_highr=   rR   rK   s         r'   reset_modelSwimmerEnv.reset_modelf   s    ,,,	,,
~~ 6 6 !7 !
 
 ~~ 6 6 !7 !
 
 	t"mmor)   )r   r   r   r   N)g      ?g-C6?g?T)__name__
__module____qualname____firstlineno__metadatar   r.   rN   rB   rd   __static_attributes__ r)   r'   r   r   
   s;    
 H "37#
J7<r)   r   )__credits__numpyr   	gymnasiumr   gymnasium.envs.mujocor   gymnasium.spacesr   r   r   rl   r)   r'   <module>rr      s-      +  jENN jr)   