
    ni                     z   S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  Sr
Sr/ SQr/ S	QS-  r/ S
Qr/ SQr\R                   " / SQ5      rSrSrSrSr\R                   " \\\/S-  5      r\R.                  rSrSrSr\\\/\-  r/ SQ/ SQ/ SQ/ SQ/r\R<                   " S S\R>                  5      5       r g)z(Pybullet simulation of a vision60 robot.    N)laikago_motor)minitaur)robot_config      )torso_to_abduct_fl_jabduct_fl_to_thigh_fl_jthigh_fl_to_knee_fl_jtorso_to_abduct_hl_jabduct_hl_to_thigh_hl_jthigh_hl_to_knee_hl_jtorso_to_abduct_fr_jabduct_fr_to_thigh_fr_jthigh_fr_to_knee_fr_jtorso_to_abduct_hr_jabduct_hr_to_thigh_hr_jthigh_hr_to_knee_hr_j)r      r   )r   r   gffffff?)r   r   g?)   r   r   r   r   r   r   r   r   r   r   r   g           ggffffff@)(\?)\({GzĿ)r   )\(?r   )皙ɿr   r   )r   r   r   c                   \   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )MiniCheetah2   z(A simulation for the mini cheetah robot.c                    > SU;  a  SUS'   SU;  a  SUS'   SU;  a	  [         US'   [        US'   [        US'   [        US'   [        US	'   S
US'   [
        R                  US'   [        [        U ]&  " S0 UD6  g )Nmotor_kpg      Y@motor_kdg       @motor_torque_limits
num_motorsdofs_per_legmotor_directionmotor_offsetFmotor_overheat_protectionmotor_model_class )
_DEFAULT_TORQUE_LIMITS
NUM_MOTORSDOFS_PER_LEGJOINT_DIRECTIONSJOINT_OFFSETSr   LaikagoMotorModelsuperr   __init__)selfkwargs	__class__s     d/home/james-whalen/.local/lib/python3.13/site-packages/pybullet_envs/minitaur/robots/mini_cheetah.pyr1   MiniCheetah.__init__6   s     fZfZF*&<f"# &F<)F> 0F*F>*/F&'"/"A"AF	+t%//    c                 H   SnU R                   (       aR  U R                  R                  UU R                  5       U R	                  5       U R                  R
                  S9U l        g U R                  R                  XR                  5       U R	                  5       5      U l        g )Nmini_cheetah/mini_cheetah.urdf)flags)_self_collision_enabled_pybullet_clientloadURDF_GetDefaultInitPosition_GetDefaultInitOrientationURDF_USE_SELF_COLLISION	quadruped)r2   mini_cheetah_urdf_paths     r5   _LoadRobotURDFMiniCheetah._LoadRobotURDFG   s    =##,,55
 

&
&
(

)
)
+%%==	 6 ?dn ,,55
 ">">"@

)
)
+-dnr7   c                    U R                  5         [        S5       HY  nU R                  [        [        R
                  R                  S9  U R                  R                  5         U R                  5         M[     Ub|  [        X R                  -  5      n[        U5       HU  nU R                  U[        R
                  R                  S9  U R                  R                  5         U R                  5         MW     g g )Ni  )motor_control_mode)ReceiveObservationrangeApplyActionINIT_MOTOR_ANGLESr   MotorControlModePOSITIONr<   stepSimulationint	time_step)r2   default_motor_angles
reset_time_num_steps_to_resets        r5   _SettleDownForResetMiniCheetah._SettleDownForResetT   s    3Z

)::CC  E **,
  'zNN:;'(! +<<EE 	 	G 	,,.! ) (r7   c                 V    [         R                  R                  U R                  S5      $ )Nr9   )ospathjoin
_urdf_rootr2   s    r5   GetURDFFileMiniCheetah.GetURDFFilee   s    77<<)IJJr7   c           	         AU R                    HM  nU R                   U   nU R                  R                  U R                  UU R                  R                  SSS9  MO     [        [        [        [        [        5      5      5       HA  u  p$[        U   nU R                  R                  U R                  U R                   U   USS9  MC     g )Nr   )	bodyIndex
jointIndexcontrolModetargetVelocityforce)rb   )_joint_name_to_idr<   setJointMotorControl2rA   VELOCITY_CONTROLzipMOTOR_NAMESrH   lenrJ   resetJointState)r2   add_constraintnamejoint_idiangles         r5   	ResetPoseMiniCheetah.ResetPoseh   s    &&''-h
11NN++<< 2  ' {E#k*:$;<"e
++
..$006a , Q =r7   c                     g Nr)   r[   s    r5   _BuildUrdfIdsMiniCheetah._BuildUrdfIdsw   s    r7   c                     [         $ rs   )rh   r[   s    r5   _GetMotorNamesMiniCheetah._GetMotorNamesz   s    r7   c                 <    U R                   (       a  [        $ [        $ rs   )_on_rackINIT_RACK_POSITIONINIT_POSITIONr[   s    r5   r>   #MiniCheetah._GetDefaultInitPosition}   s    }}r7   c                     / SQnU$ )N)r   r   r   g      ?r)   )r2   init_orientations     r5   r?   &MiniCheetah._GetDefaultInitOrientation   s    %r7   )rA   )__name__
__module____qualname____firstlineno____doc__r1   rC   rT   r\   rp   rt   rw   r>   r?   __static_attributes____classcell__)r4   s   @r5   r   r   2   s:    00"-""KQ	 r7   r   )!r   mathrW   ginnumpynppybullet_envs.minitaur.robotsr   r   r   r+   NUM_LEGSrh   r*   r{   r|   arrayr-   HIP_JOINT_OFFSETUPPER_LEG_JOINT_OFFSETKNEE_JOINT_OFFSETr,   r.   piPIDEFAULT_ABDUCTION_ANGLEDEFAULT_HIP_ANGLEDEFAULT_KNEE_ANGLErJ   DEFAULT_LOCAL_TOE_POSITIONSconfigurableMinitaurr   r)   r7   r5   <module>r      s   .  	 
  7 2 6
 &)   88@A    -/@AAEG	WW    .0B   45H46JL  R(## R Rr7   