Skip to content

Commit 1a4b9ec

Browse files
authored
update bad z termination (#514)
* update bad z termination * lint
1 parent 395b57c commit 1a4b9ec

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

examples/walking.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ def get_rewards(self, physics_model: ksim.PhysicsModel) -> dict[str, ksim.Reward
535535

536536
def get_terminations(self, physics_model: ksim.PhysicsModel) -> dict[str, ksim.Termination]:
537537
return {
538-
"bad_z": ksim.BadZTermination(unhealthy_z_lower=0.5, unhealthy_z_upper=3.0),
538+
"bad_z": ksim.BadZTermination(min_z=0.5, max_z=3.0),
539539
"bad_velocity": ksim.BadVelocityTermination(max_vel=100.0),
540540
"far_from_origin": ksim.FarFromOriginTermination(max_dist=10.0),
541541
}

ksim/terminations.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,18 @@ def create(
132132
class BadZTermination(Termination):
133133
"""Terminates the episode if the robot is unhealthy."""
134134

135-
unhealthy_z_lower: float = attrs.field()
136-
unhealthy_z_upper: float = attrs.field()
135+
min_z: float = attrs.field()
136+
final_min_z: float | None = attrs.field(default=None)
137+
max_z: float = attrs.field()
138+
final_max_z: float | None = attrs.field(default=None)
137139

138140
def __call__(self, state: PhysicsData, curriculum_level: Array) -> Array:
139141
height = state.qpos[2]
140-
return jnp.where((height < self.unhealthy_z_lower) | (height > self.unhealthy_z_upper), -1, 0)
142+
final_min_z = self.min_z if self.final_min_z is None else self.final_min_z
143+
final_max_z = self.max_z if self.final_max_z is None else self.final_max_z
144+
min_z = (final_min_z - self.min_z) * curriculum_level + self.min_z
145+
max_z = (final_max_z - self.max_z) * curriculum_level + self.max_z
146+
return jnp.where((height < min_z) | (height > max_z), -1, 0)
141147

142148

143149
@attrs.define(frozen=True, kw_only=True)

0 commit comments

Comments
 (0)