1111 jnp = None
1212
1313# Import your integrator
14+ from target_gym .base import EnvParams , EnvState
1415from target_gym .integration import (
1516 integrate_dynamics ,
1617)
1920
2021
2122@struct .dataclass
22- class BikeState :
23+ class BikeState ( EnvState ) :
2324 omega : float # tilt angle [rad]
2425 omega_dot : float # tilt angular velocity
2526 theta : float # steering angle [rad]
@@ -30,7 +31,6 @@ class BikeState:
3031 x_b : float # back wheel x
3132 y_b : float # back wheel y
3233 last_d : float # last displacement action (normalized)
33- t : int
3434 # for rendering
3535 torque : float = jnp .nan
3636 displacement : float = jnp .nan
@@ -41,7 +41,7 @@ def distance_from_start(self):
4141
4242
4343@struct .dataclass
44- class BikeParams :
44+ class BikeParams ( EnvParams ) :
4545 c : float = 0.66
4646 dCM : float = 0.30
4747 h : float = 0.94
@@ -59,7 +59,6 @@ class BikeParams:
5959 delta_t : float = 0.05
6060
6161 max_tilt_deg : float = 12.0
62- max_steps_in_episode : int = 1_000
6362
6463 use_goal : bool = False
6564 goal_x : float = 0.0
@@ -229,7 +228,7 @@ def vecs_to_state(
229228 x_b = xb_new ,
230229 y_b = yb_new ,
231230 last_d = metrics .get ("d" , state .last_d ).squeeze (),
232- t = state .t + 1 ,
231+ time = state .time + 1 ,
233232 )
234233
235234
@@ -279,7 +278,7 @@ def _accel_fn(velocities, positions):
279278def check_is_terminal (state : BikeState , params : BikeParams ):
280279 max_tilt_rad = jnp .deg2rad (params .max_tilt_deg )
281280 terminated = jnp .abs (state .omega ) > max_tilt_rad
282- truncated = state .t >= params .max_steps_in_episode
281+ truncated = state .time >= params .max_steps_in_episode
283282 return terminated , truncated
284283
285284
0 commit comments