traj_tau_dot — FLYVISION trajectory op

• Data kinds: points × signal → table

• Call: import fullseye as fs; fs.ledger.traj_tau_dot(points, t_s, target=(0.0, 0.0, 0.0), normal=None) (implementation को सीधे call करना हो तो import flyvision; flyvision.traj_tau_dot(points, t_s, target=(0.0, 0.0, 0.0), normal=None), registry से लेना हो तो opsflyvision.get("traj_tau_dot"))

उपयोग

मापी गई 3-D trajectory के साथ distance, approach speed, tau और tau-dot।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

The quantity a looming detector is supposed to deliver, computed from the true path so that an eye's estimate can be scored against it. With d(t) the distance to *target* (a point, or — with *normal* — the signed distance to the plane through *target*), the approach speed is v = -dd/dt, the time-to-contact tau = d/v and its rate tau-dot = d tau/dt. Lee's (1976) sign convention: tau-dot = -1 at constant speed, tau-dot = -0.5 under the constant deceleration that stops exactly at the target (the braking law), and a value between them means the agent is braking enough to stop short.

points: (N, 3) positions, metres, N >= 3.

t_s: (N,) strictly increasing sample times, seconds.

target: the point approached (3,), metres.

normal: None for the Euclidean distance to *target*, or a (3,) plane

normal: the distance is then (p - target) . normal / |normal|.

Returns a dict {"t_s", "distance_m", "speed_m_s", "tau_s", "tau_dot", "closest_m", "t_closest_s", "n"}. Samples where the agent is not approaching (v <= 0) carry NaN in tau_s and tau_dot — a documented non-finite: a receding agent has no time-to-contact.

Ground truth (pinned in the tests): for d = v0 t toward the target at constant speed tau-dot == -1, and for d = v0 t - a t^2 / 2 with v0^2 = 2 a d0 (stops exactly at the target) tau-dot == -0.5 — both to 1e-9 on a uniform grid, where central differences are exact for a quadratic.

Raises ValueError: *points* not (N, 3) with N >= 3 (an empty *points* is refused), a *t_s* that is not (N,) strictly increasing, non-finite entries, a malformed *target* / *normal*, and a zero *normal*.

उपयोग की विस्तृत guide

• fly_vision family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_zebra_stripes_fly_eye — py -3.11 examples/poc_zebra_stripes_fly_eye.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

fly_t4t5_field · fly_flow_from_directions · fly_matched_filter · fly_egomotion_from_flow · fly_eye_merge · fly_view_plane_texture · fly_hex_resample · fly_expansion_readout

इसी category के (trajectory)

—


*Provenance: flyvision.py — FLYVISION operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.