judo.utils.rollout_backend¶

Base class for rollout backends.

Module Contents¶

class judo.utils.rollout_backend.RolloutBackend[source]¶

Bases: abc.ABC

Abstract base class for rollout backends.

Rollout backends conduct parallel trajectory simulations for sampling-based optimization in the controller.

num_threads: int¶
abstractmethod rollout(x0: numpy.ndarray, controls: numpy.ndarray, last_policy_output: numpy.ndarray | None = None) tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray | None][source]¶

Conduct parallel rollouts.

Parameters:
  • x0 (numpy.ndarray) – Initial state, shape (nq+nv,). Will be tiled to num_threads internally.

  • controls (numpy.ndarray) – Control inputs, shape (num_threads, num_timesteps, nu).

  • last_policy_output (numpy.ndarray | None) – Previous policy outputs, if applicable.

Returns:

Tuple of – - states: Rolled out states, shape (num_threads, num_timesteps, nq+nv)

Return type:

tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray | None]

- sensors: Sensor readings, shape (num_threads, num_timesteps, nsensor)
- policy_outputs: Final policy outputs, or None if not applicable.
abstractmethod update(num_threads: int) None[source]¶

Update the number of threads.

Parameters:

num_threads (int) – New number of parallel threads.

Return type:

None