Skip to content

Reference-seeking machine homing

Find a physical reference for an untrusted motion axis and assign it a machine coordinate for later positioning.

Version
v1 · 2026-10-25 · History
Domain-specific #
14433
Origin domain
Engineering
Subdomain
Motion Control → Engineering

Core Idea

Reference-seeking machine homing establishes a machine coordinate for a motion axis whose position the controller does not yet trust.[1][2] The controller moves the axis until it detects a configured physical reference, assigns that detected location a coordinate, and can then interpret later motion relative to the established machine frame.[1][2] The physical event and the numerical coordinate are separate: a switch or index can be some distance from machine zero, and a controller may finish at still another position.[1][2] LinuxCNC's configured index and home-offset settings make this separation explicit; Marlin likewise assigns a configured home coordinate after an endstop or other reference triggers.[1][2]

This is a subkind of machine homing, not a definition of every operation called homing.[1] LinuxCNC also calls immediate coordinate initialization and absolute-encoder procedures homing when they do not seek a physical reference.[1] The entry's defining move is specifically search, detect, assign.[1]

Structural Signature

  • Untrusted coordinate. The controller lacks a trustworthy link between the physical axis and its machine coordinate.[2] This is the before state; a retained trusted coordinate can remove the need for the search.[2] Marlin explicitly treats stepper axes as untrusted on power-up.[2]

  • Detectable physical reference. A configured switch edge, encoder index, probe, or motor-stall signal anchors the search to the machine rather than to an arbitrary software zero.[1][2] Which event is valid depends on the controller and hardware configuration.[1][2]

  • Reference-seeking motion and event capture. The axis moves toward the reference and the controller recognizes the event.[1][2] A faster search followed by a slower latch is possible, but a second approach is not constitutive: Marlin permits it to be disabled and recommends that for some sensorless configurations.[1][2]

  • Coordinate assignment. The controller binds the detected point to a configured machine coordinate.[1][2] A switch trip without this assignment is only a detected limit or contact, not completed homing.[1][2]

  • Trusted post-home state. Later position-dependent commands can use the assigned frame under the controller's stated conditions.[1][2] The trusted state follows the assignment; it is not the trigger itself.[1][2] Marlin documents commands that require homed axes, while LinuxCNC distinguishes the assigned point from a later move to its configured HOME position.[1][2]

What It Is Not

  • Not the home position itself. The position is the resulting reference or configured destination; this entry is the reference-seeking procedure that establishes a coordinate.[1] With index capture enabled, LinuxCNC can assign the detected index point a configured home offset and then move to a distinct HOME position.[1]

  • Not every kind of homing. LinuxCNC's immediate and absolute-encoder modes can establish coordinates without the physical search required here.[1] Calling all such modes this subkind would erase its defining test.[1]

  • Not a limit-stop safety guarantee. A home switch can share hardware with a limit input in some LinuxCNC configurations, but a trip used only to stop travel has not assigned a coordinate.[1] Sharing hardware does not guarantee freedom from a bad search direction or a crash.[1]

  • Not a GD&T workpiece datum or calibration in general. A workpiece datum specifies geometric reference features, and calibration may compare an output with a standard and adjust it. Neither concept by itself requires an untrusted motion axis to search, detect, and assign a machine coordinate.

Scope of Application

The two reviewed habitats are controller configurations for CNC joints and 3D-printer axes.[1][2] LinuxCNC documents switch-only, index-only, and switch-plus-index homing choices; the switch-plus-index configuration supplies one complete case here.[1][2] Marlin documents G28 acquisition using endstops, probes, or configured motor-stall detection; an endstop-triggered printer axis supplies the second.[1][2] These are documented operations, not claims that a particular mill or printer was observed or achieved a measured accuracy.[1][2]

The same question may be asked of another motion controller: does it move an untrusted axis to a physical reference and assign that event a coordinate? The reviewed manuals do not establish particular deployments in routers, pick-and-place machines, or robots, nor equivalence of magnetic, optical, mechanical, and sensorless reference accuracy. Those require their own sources before being presented as cases.

Clarity

Homing discussions often call three locations “home”: the physical trigger, the coordinate assigned to that trigger, and the position at which the axis ends the sequence.[1][2] LinuxCNC separates them as the switch or index event, its assigned offset, and the configured HOME destination.[1][2] Marlin's configured min/max, manual home, and offsets likewise make the trigger's physical placement different from the numerical coordinate.[1][2] State all three when precision matters; do not infer that a switch at one end of travel is automatically machine zero.[1][2]

The name also clarifies an apparent contradiction.[1] One manual may say an absolute encoder needs no reference search while still calling its coordinate initialization homing.[1] That is not a failure of either description: homing names a broader controller family, while reference-seeking names the physical-acquisition branch.[1]

Manages Complexity

A machine can expose many settings: search direction and speed, latch speed, index use, home offset, final destination, endstop wiring, and whether a printer uses a probe or stall signal.[1][2] The abstraction compresses them into five questions: Is the coordinate untrusted?[1][2] What physical event will be sought?[1][2] How is it captured?[1][2] What coordinate is assigned?[1][2] When does the controller regard that coordinate as usable?[1][2] These questions preserve the distinctions that matter across configurations without treating every parameter as part of the identity.[1][2]

That compression has a limit.[1][2] Search speed, trigger placement, and configuration determine practical repeatability and travel risk; this identity does not supply a universal setting or accuracy figure.[1][2] A failed or miswired reference can produce a false home or an unsafe move, so recognition of the pattern is not a substitute for verifying a controller's own homing conditions.[1][2]

Abstract Reasoning

If an axis coordinate is untrusted, a position command alone cannot prove where the hardware is.[1][2] In the reference-seeking branch, a controller must acquire a known physical event and bind it to a numerical coordinate before such commands have a trusted machine-frame meaning.[1][2] If the event is never detected, or a trip is detected but no coordinate is assigned, the defining transition is incomplete.[1][2] This gives a diagnostic order: inspect the trust state, reference event, search/capture, assignment, and only then the later commanded position.[1][2]

The same reasoning prevents a false inference from hardware alone.[1] A limit switch on a machine is evidence of a possible reference, not proof that the controller uses it for homing.[1] Conversely, an absolute encoder may give a controller a coordinate path that bypasses physical search.[1] Classification follows the configured operation, not the presence of a familiar component.[1]

Knowledge Transfer

Within motion control, the five questions transfer from a CNC joint to a printer axis even though their controllers and sensors differ.[1][2] LinuxCNC's index latch and Marlin's endstop-triggered G28 can both be analyzed as reference acquisition followed by coordinate assignment.[1][2] The roles transfer; LinuxCNC's parameter names, Marlin's commands, and their device-specific motion sequences do not.[1][2]

Beyond this domain, “finding a reference before acting” may be a useful analogy. It is not literal machine homing without an axis, controller-held machine coordinate, physical reference-seeking move, and coordinate assignment. A broad reference or calibration metaphor does not carry the specialist control and sensor conditions with it.

Examples

Canonical: LinuxCNC switch-plus-index joint

LinuxCNC permits a joint configuration in which a nonzero HOME_SEARCH_VEL drives toward a home switch, HOME_LATCH_VEL and HOME_USE_INDEX use an encoder index for a final reference, and the configured home offset assigns that detected point a machine coordinate.[1] HOME then names a separate final joint position.[1] This is a documented configuration, not an observed milling-machine run.[1]

Mapped back: untrusted coordinate → joint not yet tied to its G53 machine origin; physical reference → switch and configured encoder index; motion and capture → switch search followed by index latch; coordinate assignment → the configured home offset at the detected point; trusted post-home state → a coordinate scale on which the distinct HOME move can be expressed.[1] The index-only and immediate variants are different configurations, not details to merge into this example.[1]

Applied: Marlin endstop-triggered printer axis

Marlin says that a stepper printer axis has no trusted position when powered up.[2] In an endstop configuration, G28 moves a selected axis until the endstop triggers, may back off and approach again more slowly, and sets the axis to its configured home coordinate.[2] The manual describes the sequence and its settings, not a measured accuracy on a particular printer.[2]

Mapped back: untrusted coordinate → printer axis position after startup; physical reference → configured endstop; motion and capture → G28 approach and trigger, with optional second approach; coordinate assignment → configured min/max or manual home position and applicable offset; trusted post-home state → later commands that require a known axis position.[2] A probe or StallGuard signal can replace the endstop in separately configured variants; they are not simultaneously present in this example.[2]

Structural Tensions

Search speed versus capture precision and travel risk. A faster approach reduces the time spent finding a distant switch.[1][2] It also increases stopping overshoot and, if the configuration is wrong, can bring the joint closer to a travel limit before it stops.[1][2] A slower final latch can improve repeatability but adds motion and time; beginning with a slow search everywhere can be impractical over a long travel.[1][2] LinuxCNC separates search and latch velocities, while Marlin's optional bump and slow reapproach is a different implementation of the same engineering trade-off.[1][2] Neither controller requires the same two-stage sequence in every configuration.[1][2] Diagnostic: Given the axis travel, stopping behavior, and reference sensor, should this configuration use a fast search plus slower capture or a slower single approach?

Structural–Framed Character

The entry is framed leaning. Its test is precise enough to compare different machines, yet the test depends on motion-control vocabulary and hardware: axis, controller trust state, physical switch or index, and assigned machine coordinate. Its evaluative weight is low in the sense that the definition does not prescribe a moral or institutional outcome; repeatability and safe travel are engineering aims and constraints, not parts of the abstract test itself. Human practice enters through controller configuration, sensor placement, and the decision to treat a position as trusted. The reviewed documentation places this procedure within numerical-control and firmware practice rather than an unrestricted mathematical relation.

The vocabulary travels literally among machine controllers that perform the same reference-seeking operation. It does not travel literally to arbitrary decisions that “need a baseline.” The operator imports a configured reference and coordinate assignment into a controller; the pattern can then be recognized in the controller's behavior. A portable skeleton—unknown state made usable by a trusted reference—may suggest a broader abstraction, but no reviewed parent prime presently owns this exact procedural relation. Its character: a reusable, source-attested engineering procedure with a structural core, whose name and validity remain tied to physical motion control.

Structural Core vs. Domain Accent

The core is the ordered transition from an untrusted axis coordinate through physical reference acquisition to a usable assigned coordinate.[1][2] Removing the acquisition or assignment breaks this subkind.[1][2] Search speed, switch style, index use, and post-home destination are accents: they can vary while those roles stay intact.[1][2] The contrast between LinuxCNC and Marlin shows what actually varies without turning either implementation into the definition.[1][2]

The domain is load bearing.[1] The controller must command motion, observe a physical event, and set a machine coordinate; a conceptual “fresh start” lacks these conditions.[1] The broadly portable idea of establishing a reference may belong to a prime or future prime, but this record does not establish such a parent and does not claim cross-domain prime status.[1] Its contribution is the narrower control procedure and its distinction from non-search homing modes.[1]

Current-catalog typed review approved an unparented root. Frame of Reference is a relevant neighbor because the procedure establishes coordinates that later motion uses, but a frame can be specified without an axis searching for a physical event, and this one-axis procedure need not instantiate the full frame signature. Calibration shares reference use, but its accepted identity involves measuring deviation, adjusting an output, and monitoring drift; those are not required here. Word overlap supplies a comparison target, not an edge. The placement is provisional to the current catalog and carries no invented intermediate parent.

Neighborhood in Abstraction Space

Reference-seeking machine homing sits in a sparse region of the domain-specific corpus (99th percentile for distinctiveness): few abstractions share its structure, so a faithful description tends to retrieve it precisely.

Family — Unclustered & Miscellaneous (2769 abstractions)

Nearest neighbors

Computed from structural-signature embeddings · 2026-10-25

Not to Be Confused With

  • Home position: the reference location or configured final position; ask whether a physical acquisition and coordinate assignment occurred.

  • Immediate or absolute-encoder homing: LinuxCNC uses these names even where no physical reference search occurs; ask whether an axis moved to detect a reference.[1]

  • Limit or emergency stop: a trip may halt motion but does not by itself assign a machine coordinate; ask what the controller did with the detected event.[1]

  • Workpiece datum: a geometric specification for locating features of an object; ask whether a motion controller acquired its own axis reference.

References

[1] LinuxCNC project, Homing Configuration, LinuxCNC 2.8 documentation, §§4–6.13, accessed 2026-10-22. First-party controller configuration; cited for documented operations, not an observed milling deployment. registry ↩a ↩b ↩c ↩d ↩e ↩f ↩g ↩h ↩i ↩j ↩k ↩l ↩m ↩n ↩o ↩p ↩q ↩r ↩s ↩t ↩u ↩v ↩w ↩x ↩y ↩z ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42 ↩43 ↩44 ↩45 ↩46 ↩47 ↩48 ↩49 ↩50 ↩51 ↩52 ↩53 ↩54 ↩55 ↩56 ↩57 ↩58 ↩59 ↩60 ↩61 ↩62 ↩63 ↩64 ↩65 ↩66 ↩67 ↩68 ↩69 ↩70 ↩71 ↩72 ↩73 ↩74

[2] Marlin (firmware project), Homing, especially “When homing happens,” “What G28 does,” “The home position,” and “Sensorless homing,” accessed 2026-10-22. First-party current firmware documentation; cited for documented printer operation, not a measured printer deployment. registry ↩a ↩b ↩c ↩d ↩e ↩f ↩g ↩h ↩i ↩j ↩k ↩l ↩m ↩n ↩o ↩p ↩q ↩r ↩s ↩t ↩u ↩v ↩w ↩x ↩y ↩z ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42 ↩43 ↩44 ↩45 ↩46 ↩47 ↩48 ↩49 ↩50 ↩51 ↩52 ↩53 ↩54 ↩55