
    ni                     8    S SK r S SKrS SKrS SKr " S S5      rg)    Nc                   <    \ rS rSrS
S jrS rS rS rS rS r	Sr
g	)Racecar   c                 H    X l         X0l        Xl        U R                  5         g N)urdfRootPathtimeStep_preset)selfbullet_clientr   r	   s       V/home/james-whalen/.local/lib/python3.13/site-packages/pybullet_envs/bullet/racecar.py__init__Racecar.__init__
   s    $MGJJL    c                 8   U R                   R                  [        R                  R	                  U R
                  S5      / SQSS9nXl        [        U R                   R                  U5      5       HO  nU R                   R                  UUU R                   R                  SSS9  U R                   R                  X5        MQ     U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSS9  U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSS9  U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSS9  U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSS9  U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSS9  U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSS9  U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSSS9  U R                   R                  USUSU R                   R                  / S	Q/ S
Q/ S
QS9nU R                   R                  USSSS9  SS/U l        SU l        SU l        SS/U l        SU l        SU l        g )Nz!racecar/racecar_differential.urdf)r   r   g?F)useFixedBaser   targetVelocityforce	      )r      r   )r   r   r   )	jointType	jointAxisparentFramePositionchildFramePositionr   i'  )	gearRatiomaxForce
                     )r   gearAuxLinkr            r   g      4@g      ?)r
   loadURDFospathjoinr   racecarUniqueIdrangegetNumJointssetJointMotorControl2VELOCITY_CONTROLgetJointInfocreateConstraint
JOINT_GEARchangeConstraintsteeringLinksr   nMotorsmotorizedwheelsspeedMultipliersteeringMultiplier)r   carwheelcs       r   r   Racecar.reset   s   
''

277<<(9(9;^_%(-  /C  tww++C01
gg##C$)$(GG$<$<34*+	 $ -
 gg3& 2 	  !"!$!#+/77+=+=+45>4= 	! 	?A 	GGQ!e<  !#!$!#+/77+=+=+45>4= 	! 	?A 	GGQ"u=  !"!$!#+/77+=+=+45>4= 	! 	?A 	GGQ"u=  !#!$!#+/77+=+=+45>4= 	! 	?A 	GGQ!e<  !#!$!#+/77+=+=+45>4= 	! 	?A 	GGQ"u=  !#!$!#+/77+=+=+45>4= 	! 	?A 	GGQ"u=  !"!$!#+/77+=+=+45>4= 	! 	?A 	GGQ""uM  !"!$!#+/77+=+=+45>4= 	! 	?A 	GGQ""uMQDDMDLr7DD!Dr   c                     U R                   $ r   )r:   r   s    r   getActionDimensionRacecar.getActionDimensionv   s    <<r   c                 4    [        U R                  5       5      $ r   )lengetObservationrC   s    r   getObservationDimensionRacecar.getObservationDimensiony   s    t""$%%r   c                     / nU R                   R                  U R                  5      u  p#UR                  [	        U5      5        UR                  [	        U5      5        U$ r   )r
   getBasePositionAndOrientationr0   extendlist)r   observationposorns       r   rH   Racecar.getObservation|   sM    Kww44T5I5IJHCtCy!tCy!r   c           	         US   U R                   -  nUS   U R                  -  nU R                   HH  nU R                  R	                  U R
                  UU R                  R                  UU R                  S9  MJ     U R                   H=  nU R                  R	                  U R
                  UU R                  R                  US9  M?     g )Nr   r   r   )targetPosition)
r<   r=   r;   r
   r3   r0   r4   r   r9   POSITION_CONTROL)r   motorCommandsr   steeringAnglemotorsteers         r   applyActionRacecar.applyAction   s    "1%(<(<<N "!$t'>'>>M %%
gg##D$8$8$)$(GG$<$<3A*.--	 $ 9 & ##
gg##D$8$8$)$(GG$<$<3@ $ B $r   )
r
   r   r;   r:   r0   r<   r9   r=   r	   r   N) g{Gz?)__name__
__module____qualname____firstlineno__r   r   rD   rI   rH   rZ   __static_attributes__ r   r   r   r      s#    d"L&Br   r   )r-   copymathnumpynpr   rb   r   r   <module>rg      s    	   QB QBr   