Flexible Space Telescope Slew and Vibration Suppression¶
Background¶
Large observatories are not perfectly rigid. Reaction-wheel acceleration can excite appendage, optical-bench, or instrument modes, leaving line-of-sight jitter after the nominal attitude maneuver ends. A useful slew must therefore reach the target angle and settle both the rigid body and the flexible mode before observation begins.
This example performs a \(20^\circ\) rest-to-rest slew in 30 seconds. Wheel torque is included as a state and its slew rate is the control, which makes actuator smoothness and endpoint unloading explicit.
Dynamic model¶
Let \(\theta\) be the rigid-body pointing angle, \(\omega=\dot\theta\) its rate, \(\eta\) an equivalent line-of-sight flexible displacement, \(\dot\eta\) its rate, \(\tau\) the reaction-wheel torque, and \(\nu=\dot\tau\) the commanded torque slew. A single lightly damped mode is coupled to rigid-body acceleration:
The fixed horizon and principal parameters are
The coupling coefficient maps rigid angular acceleration into the equivalent line-of-sight modal coordinate; it is an educational reduced-order model, not a finite-element telescope model.
Objective, endpoints, and path constraints¶
The normalized average cost penalizes wheel demand, torque slew, modal deflection, and modal velocity:
with \(\tau_{\max}=12\ \mathrm{N\,m}\), \(\nu_{\max}=2.5\ \mathrm{N\,m/s}\), and \(\eta_s=10^{-4}\ \mathrm{rad}\). The endpoint conditions are
The path bounds are
The angle bounds are written in radians in the implementation; \(\pi/9\ \mathrm{rad}=20^\circ\).
Variables and units¶
| Symbol | Meaning | Unit |
|---|---|---|
| \(t\) | Maneuver time | s |
| \(\theta,\omega\) | Rigid pointing angle and angular rate | rad, rad/s |
| \(\eta,v_\eta\) | Equivalent line-of-sight mode displacement and rate | rad, rad/s |
| \(\tau\) | Reaction-wheel torque state | N m |
| \(\nu\) | Torque-slew control | N m/s |
| \(J_s\) | Rigid-body pointing inertia | kg m² |
| \(\omega_f,\zeta_f\) | Flexible-mode frequency and damping ratio | rad/s, dimensionless |
| \(b_f\) | Rigid-to-flexible acceleration coupling | dimensionless |
Reference maneuver and independent checks¶
A quintic minimum-jerk rigid slew,
provides both the initial guess and an unshaped comparison. Its analytically defined angular acceleration is integrated through the flexible-mode equation independently of the optimizer.
For either trajectory, terminal modal amplitude is reported as
The optimized torque-slew samples are also linearly interpolated and all five physical differential equations are reintegrated with a high-accuracy DOP853 solver. This exposes discrepancies that a collocation endpoint check alone would hide.
Modeling choices and limits¶
Making torque a state and torque slew the control enforces continuous, rate-limited wheel demand and allows zero terminal torque. The \(300\times2\) Lobatto mesh resolves the 0.32 Hz mode while retaining piecewise-linear control histories.
Only one linear mode and one pointing axis are represented. The model omits wheel-speed and momentum capacity, wheel electrical dynamics, multiple structural modes, nonlinear geometry, sensor noise, disturbances, and a closed-loop attitude controller. The result demonstrates maneuver shaping; it is not a flight-qualified jitter prediction.
Run the example¶
Save the figure without opening a window:
Verified result¶
| Quantity | Verified value |
|---|---|
| Objective \(J\) | \(0.41550448\) |
| Peak rigid angular rate | \(1.091275^\circ/\mathrm s\) |
| Peak wheel torque | \(4.414576\ \mathrm{N\,m}\) |
| Peak optimized flexible error | \(23.265178\ \mathrm{arcsec}\) |
| Unshaped terminal modal amplitude | \(5.276834\ \mathrm{arcsec}\) |
| Shaped, independently integrated terminal amplitude | \(0.1791\ \mathrm{arcsec}\) |
| Maximum scaled forward-integration error | \(1.708\times10^{-3}\) |
| Scaled forward endpoint error | \(9.845\times10^{-4}\) |
| Maximum integral-dynamics balance error | \(3.997\times10^{-15}\) |
The collocation endpoint imposes zero modal displacement and velocity. The nonzero \(0.1791\) arcsec value is the stricter result obtained by independently integrating the interpolated command. It is about 3.4% of the unshaped minimum-jerk residual and remains below the script's 5% acceptance threshold.

Source code¶
See the complete runnable example:
examples/flexible_telescope_slew.py.