zerocontroller#

Open-loop controller that outputs zero actuation.

namespace saltro
namespace controller
class ZeroController : public saltro::controller::Controller#
#include <zerocontroller.h>

Zero controller for open-loop trajectory validation.

Implements a trivial control law that always outputs zero actuation, allowing the satellite to evolve under:

  • Passive dynamics (gravity gradient, wheel momentum exchange)

  • Environmental disturbances (aerodynamic drag, SRP, magnetic residual dipole)

  • No active control torques

This controller is primarily used for:

  • Validating reference trajectory tracking without feedback

  • Benchmarking passive stability

  • Testing disturbance models in isolation

  • Debugging dynamics propagation without control coupling

The control output is always:

\[ \mathbf{u} = \mathbf{0} \in \mathbb{R}^{n_u} \]
where \(n_u\) is the total actuator dimension (MTQs + RWs + magic torque).

Public Functions

explicit ZeroController(const Satellite &satellite)#

Construct a zero controller.

Parameters:

satelliteSatellite model (used to determine control vector dimension)

virtual Satellite::VecX find_u(const Satellite::VecX &x, const Eigen::Vector3d &B_eci, const Eigen::Vector4d &q_goal, const Eigen::Vector3d &boresight_body) const override#

Return zero control input.

Ignores all inputs and returns a zero control vector of appropriate dimension.

Parameters:
  • x – Attitude state (unused)

  • B_eci – Magnetic field (unused)

  • q_goal – Goal quaternion (unused)

  • boresight_body – Boresight constraint (unused)

Returns:

Zero control vector (nu × 1)

Protected Functions

virtual void autoTuneGains() override#

No-op gain tuning (zero controller has no gains).

This method does nothing since the zero controller has no tunable parameters.