Integrates the guidance tower over orbit windows without controller dynamics. A fake motion state replaces the plant — fast coverage and selection oracle.
At step kkk the arclength progress along the active window is:
sk=min (kΔt⋅vref,send)s_k = \min\!\bigl(k \Delta t\cdot v_{\mathrm{ref}}, s_{\mathrm{end}}\bigr) sk=min(kΔt⋅vref,send)
Local fractional progress is then recovered by linear interpolation over the precomputed arclength samples {si}\{s_i\}{si}:
progressk=istart+interp(sk,{si},{i})\text{progress}_k = i_{\mathrm{start}} + \operatorname{interp}(s_k, \{s_i\}, \{i\}) progressk=istart+interp(sk,{si},{i})
Desired CoM velocity and centripetal acceleration (from §5.2–5.3):
vcd=vreft^(progressk),acd=vref2κ(progressk)(5.3)\bm v_{cd} = v_{\mathrm{ref}} \hat{\bm t}(\text{progress}_k),\qquad \bm a_{cd} = v_{\mathrm{ref}}^2 \bm\kappa(\text{progress}_k) \tag{5.3} vcd=vreft^(progressk),acd=vref2κ(progressk)(5.3)
t^\hat{\bm t}t^ and κ\bm\kappaκ are the unit tangent and curvature vector of the discrete helix Λ\LambdaΛ.
The plant is replaced by a fake motion state:
fakek={pc,vc,ac←desired CoM at step kpe,ze,Re,νe←desired EE command at step k−1\text{fake}_k = \begin{cases} \bm p_c,\bm v_c,\bm a_c & \leftarrow \text{desired CoM at step } k \\ \bm p_e,\bm z_e,\bm R_e,\bm\nu_e & \leftarrow \text{desired EE command at step } k-1 \end{cases} fakek={pc,vc,acpe,ze,Re,νe←desired CoM at step k←desired EE command at step k−1
On step k=0k=0k=0 no previous EE command exists; the base desired alone is used.
desk=G (fakek,deskbase,desk−1)\text{des}_k = \mathcal G\!\left(\text{fake}_k, \text{des}^{\text{base}}_k, \text{des}_{k-1}\right) desk=G(fakek,deskbase,desk−1)
where G\mathcal GG is the EE-goal map (add_ee_goal). FOV marking fires every Ns=5N_s = 5Ns=5 steps when a valid pose exists:
add_ee_goal
k mod Ns=0 and pe≠∅⇒mark FOV(pe,Re)k \bmod N_s = 0 \text{ and } \bm p_e \neq \varnothing \Rightarrow \text{mark FOV}(\bm p_e, \bm R_e) kmodNs=0 and pe=∅⇒mark FOV(pe,Re)
Each step appends a StepLog to the logger:
StepLog
StepLogk=(desk,actual=∅,guidance,inspection)\text{StepLog}_k = \bigl(\text{des}_k, \text{actual}=\varnothing, \text{guidance}, \text{inspection}\bigr) StepLogk=(desk,actual=∅,guidance,inspection)
inspection=(ntri,Acov),Acov=unique triangles seentotal triangles\text{inspection} = \bigl(n_{\text{tri}}, A_{\text{cov}}\bigr),\qquad A_{\text{cov}} = \frac{\text{unique triangles seen}}{\text{total triangles}} inspection=(ntri,Acov),Acov=total trianglesunique triangles seen
The function returns Package(logger, log_path=None) — no NPZ is written.
Package(logger, log_path=None)
Acov≈1 ⟺ progressk→path endA_{\text{cov}} \approx 1 \iff \text{progress}_k \to \text{path end} Acov≈1⟺progressk→path end
A short run covers only the southern orbital cap (Acov≈0.47A_{\text{cov}} \approx 0.47Acov≈0.47). The full 30-revolution helix is required for Acov→1A_{\text{cov}} \to 1Acov→1.
Marking stride NsN_sNs (not angular resolution) is the dominant cost lever.