
    h.                         S SK rS SKJr  S SKJr  S SKJr  SS\R                  " S5      SS	.r	 " S
 S\\R                  5      rg)    N)utils)	MujocoEnv)Box   g      @)        r   gffffff?g      4)trackbodyiddistancelookat	elevationc            	           \ rS rSr/ SQSS.rSSSSSS	\" S
5      4SSS4	S jr\S 5       rS r	\S 5       r
\S 5       rS rS rS rSrg)	HopperEnv   )human	rgb_arraydepth_array
rgbd_tuple}   )render_modes
render_fpsg      ?gMbP?T)g      Yg      Y@gffffff?inf)gɿg?g{Gzt?c
                    [         R                  R                  " U UUUUUUUUU	4
0 U
D6  Xl        X l        X0l        X@l        XPl        X`l        Xpl	        Xl
        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U["        S.U
D6  g )N)   )lowhighshapedtype)   z
hopper.xml   )observation_spacedefault_camera_config)r   EzPickle__init___forward_reward_weight_ctrl_cost_weight_healthy_reward_terminate_when_unhealthy_healthy_state_range_healthy_z_range_healthy_angle_range_reset_noise_scale+_exclude_current_positions_from_observationr   npr   float64r   DEFAULT_CAMERA_CONFIG)selfforward_reward_weightctrl_cost_weighthealthy_rewardterminate_when_unhealthyhealthy_state_rangehealthy_z_rangehealthy_angle_rangereset_noise_scale*exclude_current_positions_from_observationkwargsr   s               Y/home/james-whalen/.local/lib/python3.13/site-packages/gymnasium/envs/mujoco/hopper_v4.pyr"   HopperEnv.__init__   s     	!$6	
 	
 '<#!1-)A&$7! /$7!"3 7 	8 6 #VVG"&&RZZ! !$VVG"&&RZZ! 		
 0"7	
 	
    c                 l    [        U R                  =(       d    U R                  5      U R                  -  $ N)float
is_healthyr&   r%   )r/   s    r:   r2   HopperEnv.healthy_rewardY   s.     $//CT%C%CD""#	
r<   c                 t    U R                   [        R                  " [        R                  " U5      5      -  nU$ r>   )r$   r,   sumsquare)r/   actioncontrol_costs      r:   rF   HopperEnv.control_cost`   s*    --ryy7H0IIr<   c                 ~   U R                   R                  SS u  pU R                  5       SS  nU R                  u  pEU R                  u  pgU R
                  u  p[        R                  " [        R                  " XC:  X5:  5      5      n
Xas=:  =(       a    U:  Os  nXs=:  =(       a    U	:  Os  n[        XU45      nU$ )N      r   )	dataqposstate_vectorr'   r(   r)   r,   alllogical_and)r/   zanglestate	min_state	max_statemin_zmax_z	min_angle	max_anglehealthy_state	healthy_zhealthy_angler@   s                 r:   r@   HopperEnv.is_healthyd   s    99>>!A&!!#AB'#88	,,#88	r~~i.?ARST%%%	!55I5-MBC
r<   c                 R    U R                   (       a  U R                  (       + nU$ SnU$ )NF)r&   r@   )r/   
terminateds     r:   r^   HopperEnv.terminatedu   s+    ,0,J,J(
 QV
r<   c                 `   U R                   R                  R                  R                  5       n[        R
                  " U R                   R                  R                  R                  5       SS5      nU R                  (       a  USS  n[        R                  " X45      R                  5       nU$ )Ni
   rI   )
rK   rL   flatcopyr,   clipqvelr+   concatenateravel)r/   positionvelocityobservations       r:   _get_obsHopperEnv._get_obsz   s{    99>>&&++-77499>>..335sB?;;|Hnnh%9:@@Br<   c                    U R                   R                  S   nU R                  XR                  5        U R                   R                  S   nX2-
  U R                  -  nU R                  U5      nU R                  U-  nU R                  nXg-   nUn	U R                  5       n
X-
  nU R                  nUUS.nU R                  S:X  a  U R                  5         XUSU4$ )Nr   )
x_position
x_velocityr   F)rK   rL   do_simulation
frame_skipdtrF   r#   r2   rk   r^   render_moderender)r/   rE   x_position_beforex_position_afterro   	ctrl_costforward_rewardr2   rewardscostsrj   rewardr^   infos                 r:   stepHopperEnv.step   s     IINN1-6??399>>!,&:dggE
%%f-	44zA,, 1mmo__
*$

 w&KKMJt;;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_staterk   )r/   	noise_low
noise_highrL   re   rj   s         r:   reset_modelHopperEnv.reset_model   s    ,,,	,,
~~ 6 6 !7 !
 
 ~~ 6 6 !7 !
 
 	t"mmor<   )	r$   r+   r#   r)   r%   r'   r(   r*   r&   N)__name__
__module____qualname____firstlineno__metadatar?   r"   propertyr2   rF   r@   r^   rk   r}   r   __static_attributes__ r<   r:   r   r      s    
 H "!%+eEl+'37<
| 
 
     <6r<   r   )numpyr,   	gymnasiumr   gymnasium.envs.mujocor   gymnasium.spacesr   arrayr.   r!   r   r   r<   r:   <module>r      sE      +   hh'(	 ]	5>> ]r<   