types.trajectories.ControlSequence
types.trajectories.ControlSequence
Control input sequence over time.
Time series of control vectors applied to system.
Shapes: - Single sequence: (n_steps, nu) Control at each time step
Batched sequences: (n_steps, batch, nu) Different controls for each batch
Open-loop: (n_steps, nu) Pre-computed control sequence
Note: Length is typically n_steps (not n_steps+1) since u[k] affects x[k] → x[k+1], and we don’t need u at final state.
Examples
>>> # Zero control
>>> u_seq: ControlSequence = np.zeros((100, 1))
>>>
>>> # Sinusoidal control
>>> t = np.linspace(0, 10, 100)
>>> u_seq: ControlSequence = np.sin(t).reshape(-1, 1)
>>>
>>> # MPC generates control sequence
>>> u_optimal: ControlSequence = mpc.solve(x0, horizon=20)
>>> print(u_optimal.shape) # (20, nu)
>>>
>>> # Feedback control sequence (computed online)
>>> trajectory = [x0]
>>> controls = []
>>> x = x0
>>> for k in range(100):
... u = controller(x) # Feedback policy
... controls.append(u)
... x = system.step(x, u)
... trajectory.append(x)
>>> u_seq: ControlSequence = np.array(controls)
>>>
>>> # Batched control for multiple systems
>>> u_batch: ControlSequence = np.random.randn(100, 50, 2) # 50 systems