Rename multi-segment functions to two-concept names; polish docstrings
Naming pass: rename functions whose third+ segment is redundant or implementation-detail, sticking to the codebase's preferred ``noun_verb`` / ``verb_noun`` two-concept idiom. Renames are atomic across definitions, callers, and tests. is_penned_position → is_penned modulate_speed_near_sheep → modulate_speed mecanum_kinematics_step → mecanum_step policy_forward_mean → forward_mean Two-concept patterns like ``velocity_to_wheels`` / ``detections_from_scan`` / ``make_strombom_predictor`` are left alone — they're idiomatic converters / factories that read as a single concept, and the longer form aids grep-ability. Docstring polish: * ``herding/config.py`` header drops the "previously lived as a module-level literal" historical framing — we ship as a single thing, so the refactor anecdote no longer earns its keep. The usage examples now mention both ``HERDING_WEBOTS`` and ``HERDING_MEC_WEBOTS`` presets. 126 pytest cases still pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,7 @@ Three-stage greedy nearest-neighbour data association:
|
||||
extrapolated for up to ``PREDICT_STEPS`` frames, then falls back to
|
||||
last-seen static memory until ``FORGET_STEPS`` deletes it.
|
||||
3. **Pen latching**. A track whose estimated position crosses the gate
|
||||
plane south of ``is_penned_position`` is marked penned, excluded
|
||||
plane south of ``is_penned`` is marked penned, excluded
|
||||
from ``get_positions``, and kept indefinitely.
|
||||
|
||||
Output of :meth:`SheepTracker.get_positions` is ``{name: (x, y)}`` —
|
||||
@@ -31,7 +31,7 @@ from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from herding.config import TrackerConfig
|
||||
|
||||
from herding.world.geometry import MAX_SHEEP, in_pen, is_penned_position
|
||||
from herding.world.geometry import MAX_SHEEP, in_pen, is_penned
|
||||
|
||||
|
||||
GATE_M = 2.5 # m — primary NN gate (recently observed tracks)
|
||||
@@ -356,10 +356,10 @@ class SheepTracker:
|
||||
at y ≈ -15) from being permanently latched as penned tracks.
|
||||
"""
|
||||
from herding.world.geometry import GATE_Y
|
||||
# Apply depth threshold to both in_pen and is_penned_position so
|
||||
# Apply depth threshold to both in_pen and is_penned so
|
||||
# that any position in the gate column must clear GATE_Y - depth.
|
||||
threshold = GATE_Y - self._pen_latch_depth
|
||||
return (in_pen(x, y) or is_penned_position(x, y)) and y <= threshold
|
||||
return (in_pen(x, y) or is_penned(x, y)) and y <= threshold
|
||||
|
||||
def get_positions(self, min_freshness: int | None = None) -> dict[str, tuple[float, float]]:
|
||||
"""Promoted (non-candidate, non-penned) tracks as ``{name: (x, y)}``.
|
||||
|
||||
Reference in New Issue
Block a user