Signal-Domain Contact Acquisition
Locating and locking orbital contacts through signal inference
Introduction
Contact acquisition is a subsystem of trade operations responsible for locating orbital contacts and maintaining positional lock. Each contact type is assigned to a dedicated dish—small dishes for Utility, Basic, and Medium contacts; medium dishes for Large and Exotic. Positional data is mirrored to a large dish, which handles contact interrogation and landing.1
This implementation targets a single chip per dish and tracking proceeds through three phases: Scan (full-sky search), Refine (9-point search to reduce search area), and Lock (bilateration-based positional convergence within 2°).
Signal Model
Dishes operate on an azimuth-elevation coordinate system. Pointing a dish at the position in the sky yields three key values:
Signal Strength — Angular distance in degrees between the dish pointing direction and the contact. Larger values indicate the dish is further from the target and increases resolution time.
Power Setting — Operator-defined power input to the dish, in watts.
Watts Reaching Contact — Effective power delivered to the contact. Decreases as Signal Strength increases.
Resolution time determines how long the dish must dwell at a position before the contact is identified. It is a function of delivered power and a contact-specific WattsToResolve constant:
Contact Visibility requires delivered power to meet a minimum threshold. Contacts below threshold do not appear regardless of pointing accuracy:
Contact type parameters governing both values:
The power ratio, r = WattsReachingContact / PowerSetting, has a piecewise linear relationship with SignalStrength2:
This relationship is central to step size selection during scan as well as contact resolution during refinement. By targeting a specific power ratio on a given dish, the maximum detection radius and resolution time can be bounded before the scan begins.
Scan Detection
The Scan phase performs a full sky search using an Archimedean spiral originating at the pole (H, V) = (0°, 0°). The position advances continuously using the following mathematical model:
Period = 360 × Rotations
ElevationRate = 90 / Period / 2
Position = (Position + Step) % Period
Horizontal = Position % 360
Vertical = Position × ElevationRateOnce the spiral reaches the hemisphere, the dish resets back to the pole. The step size is set to half the target search radius, ensuring overlapping coverage with no gaps.
Dish Assignment
Contacts are assigned to a dish based on the minimum time to resolve a contact at max power and a power ratio of 1.
Utility, Basic, and Medium contacts can be acquired using the small dish. Large and Exotic contacts have a lifetime of 1800-1860s, exceeding the small dish capability by more than a factor of three, and therefore, require at least a medium dish.
Search Radius
Contact resolution on its own is slow—dwelling at a position and waiting for signal data to accumulate is not a viable scan strategy. However, contact visibility provides a faster inference mechanism. Since a contact only becomes visible when WattsReachingContact >= MinimumWattsVisible, setting the dish power to a known level bounds the angular distance at which a contact can first appear. A contact visible at this power level implies it is within the target search radius.
To define a uniform search radius across all assigned contacts, the largest signal strength is selected to satisfy the most constrained contact on each dish.
Power is set such that the visibility threshold fires at the target search radius. At approximately 20° Signal Strength, the power ratio is roughly 20%. With this binding constraint, a contact visible at this power level implies it is within 20° of the current dish position and no resolution is required. The horizontal step size is therefore 10°—half the search radius—producing overlapping coverage across the full sky.
Utility and Basic Detection
Utility and Basic contacts have a MinimumWattsVisible of 0 W and cannot use WattsReachingContact for proximity detection. For these contacts, the dwell time is computed to infer the signal strength. At 20° Signal Strength, the power ratio is approximately 21.4%.
At max dish power (200 W), this gives a resolution time of approximately 0.544s. This resolve time can fit roughly within a tick.
This functions as an implicit refinement step. Each scan position where the contact is detected serves as its own resolution point — the dish dwells for 0.5s and resolves the signal in place before transitioning directly to Lock. The scan step size and dwell time together provide sufficient positional accuracy for Lock entry without a separate search.
Timing
Maximum scan duration is a function of dish horizontal slew rate and the number of rotations per sweep. At the completion of a sweep, the dish resets to the pole before the beginning of the next pass. Reset requires returning to the pole vertically and completing the remaining 180° horizontal slew to the origin. Both movements execute simultaneously, with reset duration determined by the slower axis:
Reset cost is partially offset by contact downtime—the interval between contact de-spawn and next spawn during which no acquisition is possible. The realized penalty depends on the downtime range for each contact type and whether waiting until the end of the downtime window produces a net benefit.
For Basic contacts, the fixed 30s downtime window always covers the small dish reset cost. For Large contacts, waiting until the end of the 120s downtime window guarantees the contact exists when scanning begins—the 60s cost of waiting is less than the alternative of scanning when no contact is present. For the remaining contacts, the downtime window is too wide to make waiting viable and the full reset cost applies.
Search Refinement
Resolution time is a function of Signal Strength—the closer the dish is to the contact, the faster the signal resolves. The refine step exploits this relationship by setting a fixed dwell time per position that acts as a proximity threshold: if the signal resolves within the time limit, the contact is within the target radius and Lock begins. If it does not resolve, the contact is outside the radius and the dish advances to the next position.
Strategy
Refine samples nine positions: the detection origin from Scan and eight equally spaced points arranged in a ring equidistant from the detection origin. Each outer circle is sized to span from the detection origin circle to the search boundary, intersecting both at the bisector angles between adjacent circles — at 22.5° and 67.5° intervals. This constrains the detection radius to 8.28°.
Where:
R = total search radius
r = detection radius
d = distance from the detection origin
Horizontal offsets are normalized by the elevation of the detection position to account for spherical compression at high elevations:
To minimize latency from dish movement, points are visited counter-clockwise starting from the detection position, traversing adjacent circles sequentially.
Resolution Budget
The dwell time per position is derived from the resolution time of the detection circle. A contact at the boundary resolves in exactly the dwell time; any contact closer resolves faster. Total Refine time accounts for both dwell time at each position and dish movement between positions.
For Medium contacts, worst-case Refine time (52s) is comparable to the scan resolve time (54s), making the benefit marginal on a per-phase basis. For Large and Exotic contacts, worst-case Refine time (153s) exceeds the Scan resolve time (96.5s) — Refine is potentially slower than simply dwelling at the scan detection position.
The justification in incurring this cost presides in understanding total acquisition cost. Lock entry signal strength directly determines movement distance and resolution time at each measurement step. A contact entering Lock at 20° requires significantly more dish movement per step and longer dwell times than one entering at 8.28°. An incorrect step direction at 20°—moving away from the contact rather than toward it—incurs a resolution penalty that compounds through subsequent correction passes. Refine absorbs a fixed upfront cost to bound the Lock entry condition, reducing both the expected number of correction passes and the cost of each pass.
Lock Acquisition
Lock converges on the contact position using a sequence of 3-4 measurements that decompose the signal strength into vertical and horizontal components. While the actual position is plotted on a spherical coordinate system, a flat plane approximation treats the coordinate space as Euclidean, enabling a 1D bilateration to estimate vertical position before solving for horizontal candidates.
This approximation is most effective at close range — for Medium contacts and above, the refine step reduces the search radius to 8.28° before locking begins, keeping the approximation error within acceptable limits. For Utility and Basic contacts, resolution times are cheap enough that approximation error is recovered through retry at minimal cost.
Measurement Sequence
V-step: Given the initial measurement obtained through refinement, the dish moves a vertical offset equal to the current Signal Strength. This produces a second measurement at a known vertical displacement from the starting position.
V-lock: The vertical position is estimated by applying the law of cosines to the two measurements:
The dish moves to Vlock and resolves Slock. Since Vlock minimizes horizontal skew, Slock represents the residual horizontal error and serves as the offset for evaluating H candidates.
H candidates: Two horizontal positions are computed from Slock and normalized based on their vertical position:
Given the two horizontal candidates, each position is tested and selected based on the greatest improvement in Signal Strength. If neither reduce the Signal Strength below the 2° convergence threshold, the lock is retried from the current position.
Resolution Budget
Lock phase duration is determined by dish movement to each measurement position and dwell time for signal resolution. Movement time is bounded by the maximum angular displacement per measurement step.
Resolution time at each measurement position depends on signal strength at that position. At the convergence threshold of 2°, the power ratio reaches 1.0, representing the minimum possible resolution time for a given contact type and dish power. At the maximum displacement boundary, the power ratio is lower, producing the worst-case resolution time per pass.
Performance Analysis
Total acquisition time is the sum of scan, refine, and lock phases. Scan time represents the variable component—determined by contact elevation and dish position within the sweep cycle. Refine and lock times are bounded and treated as fixed costs. The following table presents worst-case scan time combined with average refine and lock times for each contact type.
Utility, Basic and Medium contacts complete acquisition well within their lifetime window under all scan conditions, with total acquisition representing less than 25% of available lifetime. Large and Exotic contacts operate under a tighter budget—worst-case total acquisition consumes at least 63% of the minimum lifetime window before expiry risk becomes a factor. That margin absorbs scan phase residual penalties, contact position variance, and large dish coordination time, which will be discussed in a future module.
Links to Implementation
For operators ready to deploy the contact acquisition system within their own base, the following implementation guide walks through the full construction process—complete with layout considerations, materials, and programmable logic:
Trade I: Contact Acquisition — Establishes the contact tracking layer for automated trade infrastructure. Covers dedicated dish assignment across all five contact slots, full-sky scan pattern design, and IC10 controller configuration for signal acquisition and lock. Serves as the input layer for traffic management and trade operations.
References
Reddit. Trader Contact Dish Alignment — Manual
https://www.reddit.com/r/Stationeers/comments/1r05zdo/trader_contact_dish_alignment_manual/Stationeers Wiki. Kit (Satellite Dish).
https://stationeers-wiki.com/Kit_(Satellite_Dish)Reddit. Question About Trade Contact Resolution Time. https://www.reddit.com/r/Stationeers/comments/1rhp84r/question_about_trade_contact_resolution_time/
Stationeers Discord. @FlorpyDorp. Trinity Trade Triangulator — Design Discussion.
https://discord.com/channels/276525882049429515/1086111760811032636/1451160850449567745
Content developed in collaboration with Anthropic’s Claude, used for technical documentation structure, engineering analysis, and editorial refinement.
Large dish logic is out of scope for this document.










