Impact-Time-Control Guidance (gnc-autonomy/guidance/impact-time-control-guidance)
Use when the task is computing the impact-time-control guidance (ITCG)
command for a salvo or simultaneous-impact engagement against a stationary
target: the proportional-navigation (PN) baseline from the closing geometry,
the leading-order PNG time-to-go estimate on the collision course, the
impact-time error between the commanded remaining time-to-go and the natural
PNG estimate, and the time-to-go-error-feedback bias that steers the
interceptor group to arrive at the commanded impact time. This is the
canonical biased-PN impact-time-control structure of the Jeon-Lee-Tahk
family (IEEE Transactions on Aerospace and Electronic Systems 42(2):629-641,
2006, summarized by name and paraphrase only, never reproduced). Pairing
leaves: proportional-navigation-guidance owns the unaugmented planar PN law,
augmented-proportional-navigation the maneuvering-target augmentation;
impact-point-prediction is open-loop ballistic prediction; midcourse-guidance
handles waypoint steering and handover.
Domain quick reference
- Planar collision-course intercept against a stationary target: closing
speed V_c (m/s), line of sight rate lambda_dot (rad/s), range to target
R (m), navigation constant N (dimensionless, > 1), commanded remaining
time-to-go t_go_des (s).
- PN baseline acceleration: a_png = N * V_c * lambda_dot.
- PNG time-to-go on the collision course: t_go = R / V_c (exact when the
interceptor flies the collision triangle).
- Impact-time error: e_t = t_go_des - t_go.
- Time-to-go-error-feedback bias: a_b = K_it * V_c * e_t / t_go^2, with the
feedback gain K_it scheduled on the engagement state (navigation
constant by default).
- Total command: a_cmd = a_png + a_b.
- A positive error (later arrival commanded than the natural PNG time)
gives a positive bias that lengthens the intercept path; a negative
error shortens it.
Workflow
- Fix the engagement state: closing speed V_c, line of sight rate
lambda_dot, range R, navigation constant N and the commanded remaining
time-to-go t_go_des. Non-physical inputs are rejected with ValueError
(navigation constant at or below 1, non-positive closing speed or range
in the estimate, non-positive gain or times in the bias).
- Compute the PN baseline with png_baseline(nav_constant, closing_speed,
los_rate): a_png = N * V_c * lambda_dot.
- Estimate the natural PNG time-to-go with tgo_estimate_png(closing_speed,
range_to_target): t_go = R / V_c.
- Form the impact-time error e_t = t_go_des - t_go between the commanded
remaining time-to-go and the PNG estimate.
- Compute the time-to-go-error-feedback bias with
impact_time_bias(gain, closing_speed, tgo_desired, tgo_actual):
a_b = gain * V_c * e_t / t_go^2. The default gain is the navigation
constant (K_IT_DEFAULT = 4.0); a custom gain may be passed.
- Sum the baseline and the bias with itcg_command(nav_constant,
closing_speed, los_rate, range_to_target, tgo_desired, gain=None),
which returns (a_cmd, a_png, a_b, tgo_png, e_t): the total lateral
acceleration command, its PN baseline, the bias term, the time-to-go
estimate and the impact-time error.
- Read the natural (uncontrolled) time to impact with
time_to_impact_seconds(range_to_target, closing_speed), the same closed
form as the PNG estimate, for the salvo feasibility context.
- Confirm the deterministic checks with the contract test
scripts/test_impact_time_control_guidance.py.
Worked example
All values are REAL outputs of the logic module at the spec anchor state
(R = 8000.0 m, V_c = 300.0 m/s, lambda_dot = 0.004 rad/s, N = 4.0,
t_go_des = 30.0 s):
- png_baseline(4.0, 300.0, 0.004) = 4.800000000000 m/s^2
- tgo_estimate_png(300.0, 8000.0) = 26.666666666667 s
- impact time error e_t = 30.0 - 26.666666666667 = 3.333333333333 s
- impact_time_bias(4.0, 300.0, 30.0, 26.666666666667) = 5.625000000000 m/s^2
- itcg_command(4.0, 300.0, 0.004, 8000.0, 30.0) =
(10.425000000000, 4.800000000000, 5.625000000000, 26.666666666667,
3.333333333333)
The natural PNG time to impact is 26.67 s; commanding a 30 s simultaneous
arrival produces a positive bias of 5.625 m/s^2 that lengthens the intercept
path. Zero-error identity: at t_go_des equal to the PNG estimate the bias is
exactly 0 and the command collapses to the pure PN baseline
(4.8 m/s^2). The planar fixed-step Euler probe in the contract test shows
the bias lengthens the flight time by about 4.1 s at this command.
Verification
- Deterministic stdlib math only; no RNG, no network, no numeric
integration in the leaf (the Euler probe lives in the contract test as a
test-side identity check).
- ValueErrors: navigation constant at or below 1.0; negative closing speed
in the baseline; non-positive closing speed or negative range in the
time-to-go estimate; non-positive gain, actual time-to-go or desired
time-to-go in the bias.
- Identities: zero impact-time error gives zero bias and the pure PN
command; the natural time to impact equals the PNG time-to-go estimate;
doubling the closing speed at constant e_t / t_go^2 doubles the bias;
two identical calls return bit-identical results.
Related leaves
- gnc-autonomy/guidance/proportional-navigation-guidance (the unaugmented
planar PN law that forms this law's baseline)
- gnc-autonomy/guidance/augmented-proportional-navigation (maneuvering-
target augmentation of the same baseline)
- gnc-autonomy/guidance/midcourse-guidance (waypoint steering, handover,
trajectory shaping)
- gnc-autonomy/guidance/impact-point-prediction (open-loop unguided
ballistic impact prediction)
- gnc-autonomy/control/digital-control-design (sampled-data control of the
inner loop that would track this command)
Pitfalls
- Do not claim the proportional-navigation law itself: this leaf forms a PN
baseline from given engagement geometry but the standalone law, its
capture conditions and its variants belong to the PN siblings.
- Do not add impact-angle constraints: no leaf in the family claims them and
they are out of scope for the time-only law.
- The bias formula is deterministic at the given engagement state; this is
not a trajectory propagator. Do not present the fixed-step Euler check in
the contract test as a leaf capability.
- The t_go = R / V_c estimate is the leading-order collision-course form;
for wide heading errors the natural PNG time deviates from it, which is
exactly the error the feedback term acts on.
- Keep the commanded time-to-go positive and the navigation constant above
1.0; both are enforced with ValueError.
- Do not use single-word generic tags (guidance, control, navigation,
intercept): they would steal corpus tasks from the family router rows.
Behavior contract (gate 3)
The contract test scripts/test_impact_time_control_guidance.py (33 methods,
stdlib unittest, offline, deterministic) verifies: the worked-example
baseline, time-to-go, error, bias and total command within 1e-9 relative;
the zero-error identity (bias zero, command equal to the PN baseline); the
ValueError rejections (navigation constant at or below 1, negative closing
speed, non-positive closing speed or negative range in the estimate,
non-positive gain and non-positive times in the bias); boundary behavior;
the linearity of the bias in closing speed; determinism of repeated calls;
the natural-time identity; and the planar Euler sign probe showing the bias
lengthens the flight time by the anchor margin (between 3.0 and 5.5 s). The
test passes under both /usr/bin/python3 and the pyenv 3.13 interpreter; no
exact-float equality is asserted on computed sums.
Compliance
STANDARDS-REF, gated false. ARP4754A (reference-only) frames development
assurance for guided systems; the ITCG law itself is paraphrased public
guidance-theory literature (Jeon, Lee and Tahk 2006) and is never
reproduced verbatim.
1---2name: impact-time-control-guidance3description: Use when you must compute the impact-time-control-guidance command for a salvo or simultaneous-impact engagement: the proportional-navigation baseline acceleration from the closing speed and the line of sight rate, the PNG time-to-go estimate on the collision course, the impact-time error between the commanded remaining time to go and the natural PNG time, and the time-to-go-error-feedback bias that lengthens or shortens the intercept path so the group arrives at the commanded impact time. Produces the total lateral acceleration command with its PN baseline, bias term, time-to-go estimate and impact-time error. Trigger: impact time control, salvo attack, simultaneous impact, commanded impact time, time to go error feedback, ITCG.4license: Apache-2.05---67# Impact-Time-Control Guidance (gnc-autonomy/guidance/impact-time-control-guidance)89Use when the task is computing the impact-time-control guidance (ITCG)10command for a salvo or simultaneous-impact engagement against a stationary11target: the proportional-navigation (PN) baseline from the closing geometry,12the leading-order PNG time-to-go estimate on the collision course, the13impact-time error between the commanded remaining time-to-go and the natural14PNG estimate, and the time-to-go-error-feedback bias that steers the15interceptor group to arrive at the commanded impact time. This is the16canonical biased-PN impact-time-control structure of the Jeon-Lee-Tahk17family (IEEE Transactions on Aerospace and Electronic Systems 42(2):629-641,182006, summarized by name and paraphrase only, never reproduced). Pairing19leaves: proportional-navigation-guidance owns the unaugmented planar PN law,20augmented-proportional-navigation the maneuvering-target augmentation;21impact-point-prediction is open-loop ballistic prediction; midcourse-guidance22handles waypoint steering and handover.2324## Domain quick reference2526- Planar collision-course intercept against a stationary target: closing27 speed V_c (m/s), line of sight rate lambda_dot (rad/s), range to target28 R (m), navigation constant N (dimensionless, > 1), commanded remaining29 time-to-go t_go_des (s).30- PN baseline acceleration: a_png = N * V_c * lambda_dot.31- PNG time-to-go on the collision course: t_go = R / V_c (exact when the32 interceptor flies the collision triangle).33- Impact-time error: e_t = t_go_des - t_go.34- Time-to-go-error-feedback bias: a_b = K_it * V_c * e_t / t_go^2, with the35 feedback gain K_it scheduled on the engagement state (navigation36 constant by default).37- Total command: a_cmd = a_png + a_b.38- A positive error (later arrival commanded than the natural PNG time)39 gives a positive bias that lengthens the intercept path; a negative40 error shortens it.4142## Workflow43441. Fix the engagement state: closing speed V_c, line of sight rate45 lambda_dot, range R, navigation constant N and the commanded remaining46 time-to-go t_go_des. Non-physical inputs are rejected with ValueError47 (navigation constant at or below 1, non-positive closing speed or range48 in the estimate, non-positive gain or times in the bias).492. Compute the PN baseline with png_baseline(nav_constant, closing_speed,50 los_rate): a_png = N * V_c * lambda_dot.513. Estimate the natural PNG time-to-go with tgo_estimate_png(closing_speed,52 range_to_target): t_go = R / V_c.534. Form the impact-time error e_t = t_go_des - t_go between the commanded54 remaining time-to-go and the PNG estimate.555. Compute the time-to-go-error-feedback bias with56 impact_time_bias(gain, closing_speed, tgo_desired, tgo_actual):57 a_b = gain * V_c * e_t / t_go^2. The default gain is the navigation58 constant (K_IT_DEFAULT = 4.0); a custom gain may be passed.596. Sum the baseline and the bias with itcg_command(nav_constant,60 closing_speed, los_rate, range_to_target, tgo_desired, gain=None),61 which returns (a_cmd, a_png, a_b, tgo_png, e_t): the total lateral62 acceleration command, its PN baseline, the bias term, the time-to-go63 estimate and the impact-time error.647. Read the natural (uncontrolled) time to impact with65 time_to_impact_seconds(range_to_target, closing_speed), the same closed66 form as the PNG estimate, for the salvo feasibility context.678. Confirm the deterministic checks with the contract test68 scripts/test_impact_time_control_guidance.py.6970## Worked example7172All values are REAL outputs of the logic module at the spec anchor state73(R = 8000.0 m, V_c = 300.0 m/s, lambda_dot = 0.004 rad/s, N = 4.0,74t_go_des = 30.0 s):7576- png_baseline(4.0, 300.0, 0.004) = 4.800000000000 m/s^277- tgo_estimate_png(300.0, 8000.0) = 26.666666666667 s78- impact time error e_t = 30.0 - 26.666666666667 = 3.333333333333 s79- impact_time_bias(4.0, 300.0, 30.0, 26.666666666667) = 5.625000000000 m/s^280- itcg_command(4.0, 300.0, 0.004, 8000.0, 30.0) =81 (10.425000000000, 4.800000000000, 5.625000000000, 26.666666666667,82 3.333333333333)8384The natural PNG time to impact is 26.67 s; commanding a 30 s simultaneous85arrival produces a positive bias of 5.625 m/s^2 that lengthens the intercept86path. Zero-error identity: at t_go_des equal to the PNG estimate the bias is87exactly 0 and the command collapses to the pure PN baseline88(4.8 m/s^2). The planar fixed-step Euler probe in the contract test shows89the bias lengthens the flight time by about 4.1 s at this command.9091## Verification9293- Deterministic stdlib math only; no RNG, no network, no numeric94 integration in the leaf (the Euler probe lives in the contract test as a95 test-side identity check).96- ValueErrors: navigation constant at or below 1.0; negative closing speed97 in the baseline; non-positive closing speed or negative range in the98 time-to-go estimate; non-positive gain, actual time-to-go or desired99 time-to-go in the bias.100- Identities: zero impact-time error gives zero bias and the pure PN101 command; the natural time to impact equals the PNG time-to-go estimate;102 doubling the closing speed at constant e_t / t_go^2 doubles the bias;103 two identical calls return bit-identical results.104105## Related leaves106107- gnc-autonomy/guidance/proportional-navigation-guidance (the unaugmented108 planar PN law that forms this law's baseline)109- gnc-autonomy/guidance/augmented-proportional-navigation (maneuvering-110 target augmentation of the same baseline)111- gnc-autonomy/guidance/midcourse-guidance (waypoint steering, handover,112 trajectory shaping)113- gnc-autonomy/guidance/impact-point-prediction (open-loop unguided114 ballistic impact prediction)115- gnc-autonomy/control/digital-control-design (sampled-data control of the116 inner loop that would track this command)117118## Pitfalls119120- Do not claim the proportional-navigation law itself: this leaf forms a PN121 baseline from given engagement geometry but the standalone law, its122 capture conditions and its variants belong to the PN siblings.123- Do not add impact-angle constraints: no leaf in the family claims them and124 they are out of scope for the time-only law.125- The bias formula is deterministic at the given engagement state; this is126 not a trajectory propagator. Do not present the fixed-step Euler check in127 the contract test as a leaf capability.128- The t_go = R / V_c estimate is the leading-order collision-course form;129 for wide heading errors the natural PNG time deviates from it, which is130 exactly the error the feedback term acts on.131- Keep the commanded time-to-go positive and the navigation constant above132 1.0; both are enforced with ValueError.133- Do not use single-word generic tags (guidance, control, navigation,134 intercept): they would steal corpus tasks from the family router rows.135136## Behavior contract (gate 3)137138The contract test scripts/test_impact_time_control_guidance.py (33 methods,139stdlib unittest, offline, deterministic) verifies: the worked-example140baseline, time-to-go, error, bias and total command within 1e-9 relative;141the zero-error identity (bias zero, command equal to the PN baseline); the142ValueError rejections (navigation constant at or below 1, negative closing143speed, non-positive closing speed or negative range in the estimate,144non-positive gain and non-positive times in the bias); boundary behavior;145the linearity of the bias in closing speed; determinism of repeated calls;146the natural-time identity; and the planar Euler sign probe showing the bias147lengthens the flight time by the anchor margin (between 3.0 and 5.5 s). The148test passes under both /usr/bin/python3 and the pyenv 3.13 interpreter; no149exact-float equality is asserted on computed sums.150151## Compliance152153STANDARDS-REF, gated false. ARP4754A (reference-only) frames development154assurance for guided systems; the ITCG law itself is paraphrased public155guidance-theory literature (Jeon, Lee and Tahk 2006) and is never156reproduced verbatim.