Skip to content

Commit f179ca9

Browse files
committed
Refactor
1 parent f51cae9 commit f179ca9

1 file changed

Lines changed: 29 additions & 32 deletions

File tree

biped_walking_controller/preview_control.py

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -334,44 +334,41 @@ def update(
334334
delta_t = t - self.t_start
335335

336336
if self.state == State.INIT:
337-
if delta_t > self.params.t_init:
338-
if self.next_ss_state == State.SS_RIGHT:
339-
self.t_start = t
340-
self.state = State.SS_RIGHT
341-
self.next_ss_state = State.SS_LEFT
342-
elif self.next_ss_state == State.SS_LEFT:
343-
self.t_start = t
344-
self.state = State.SS_LEFT
345-
self.next_ss_state = State.SS_RIGHT
337+
self._try_transition_to_single_support(t, self.params.t_init)
338+
346339
elif self.state == State.DS:
347-
if delta_t > self.params.t_ds:
348-
if self.next_ss_state == State.SS_RIGHT:
349-
self.t_start = t
350-
self.state = State.SS_RIGHT
351-
self.next_ss_state = State.SS_LEFT
352-
elif self.next_ss_state == State.SS_LEFT:
353-
self.t_start = t
354-
self.state = State.SS_LEFT
355-
self.next_ss_state = State.SS_RIGHT
340+
self._try_transition_to_single_support(t, self.params.t_ds)
341+
356342
elif self.state == State.SS_RIGHT:
357-
if delta_t > 0.5 * self.params.t_ss and lf_contact_force > self.params.force_threshold:
358-
self.t_start = t
359-
if self.step_idx == len(self.steps) - 2:
360-
self.state = State.END
361-
else:
362-
self.state = State.DS
363-
self.step_idx += 1
343+
self._try_transition_to_ds_or_end(t, lf_contact_force)
344+
364345
elif self.state == State.SS_LEFT:
365-
if delta_t > 0.5 * self.params.t_ss and rf_contact_force > self.params.force_threshold:
366-
self.t_start = t
367-
if self.step_idx == len(self.steps) - 2:
368-
self.state = State.END
369-
else:
370-
self.state = State.DS
371-
self.step_idx += 1
346+
self._try_transition_to_ds_or_end(t, rf_contact_force)
347+
372348
elif self.state == State.END:
373349
if delta_t > self.params.t_end:
374350
self.steps = None
375351

376352
def get_current_state(self) -> State:
377353
return self.state
354+
355+
def _switch_single_support_leg(self, t: float):
356+
self.t_start = t
357+
self.state = self.next_ss_state
358+
self.next_ss_state = State.SS_LEFT if self.state == State.SS_RIGHT else State.SS_RIGHT
359+
360+
def _try_transition_to_single_support(self, t: float, duration: float):
361+
if t - self.t_start > duration:
362+
self._switch_single_support_leg(t)
363+
364+
def _is_last_step(self) -> bool:
365+
return self.step_idx == len(self.steps) - 2
366+
367+
def _try_transition_to_ds_or_end(self, t: float, contact_force: float):
368+
if (
369+
t - self.t_start > 0.5 * self.params.t_ss
370+
and contact_force > self.params.force_threshold
371+
):
372+
self.t_start = t
373+
self.state = State.END if self._is_last_step() else State.DS
374+
self.step_idx += 1

0 commit comments

Comments
 (0)