scoop op• Datenarten: scalar × scalar × scalar × scalar → table
• Aufruf: import fullseye as fs; fs.ledger.scoop_image_limit(a: 'float', pitch: 'float', radius: 'float', bulk_density: 'float', *, h: 'float | None' = None, phi_deg: 'float' = 30.0, edge_px: 'float' = 0.5, grain_frac: 'float' = 0.25, min_a_over_d: 'float' = 5.0, target_mass: 'float | None' = None, rel_tol: 'float' = 0.05) -> 'dict' (die Implementierung direkt: import scoop; scoop.scoop_image_limit(a: 'float', pitch: 'float', radius: 'float', bulk_density: 'float', *, h: 'float | None' = None, phi_deg: 'float' = 30.0, edge_px: 'float' = 0.5, grain_frac: 'float' = 0.25, min_a_over_d: 'float' = 5.0, target_mass: 'float | None' = None, rel_tol: 'float' = 0.05) -> 'dict'; aus dem Register: opsdrive.get("scoop_image_limit"))
Richtwert für die Unsicherheit beim Messen eines gehäuften Löffels aus einem Seitenbild und "reicht das Bild oder braucht es eine Waage?" (regelbasiert, Richtwert).
Modell: Volumenfehler ≈ sichtbare Oberfläche S × Randunsicherheit e = edge_px·pitch + grain_frac·r (die Randpixel sowie der Rest des Anteils, bei dem die Silhouette zur äußeren Hülle der Körner wird, den die Kalibrierung nicht beseitigt). S ist die Mantelfläche des Haufenkegels π a √(a² + H²) (H = a tan φ), das Volumen ist die geschlossene Form des gehäuften Zustands (h, falls a/2 nicht angegeben). grain_frac = 0.25 ist der Wert 0.15 mit Reserve; 0.15 wurde aus der Obergrenze zurückgerechnet, bei der mit MuJoCo-Starrkörperkugeln (Radius 2 mm, Randradius 30 mm, Packungsdichte einmal kalibriert) der Anzahlfehler über 3 Größen × 2 seeds innerhalb von 4.3 % lag (PoC). Bei wenigen Körnern bricht es schneller zusammen als die lineare Extrapolation (Radius 3.5 mm, Randradius / Korndurchmesser 4.3 ergibt 9.5 %), daher gibt a / d < min_a_over_d unabhängig vom Fehler scale zurück.
Rückgabe: sigma_V, sigma_mass = ρ_b σ_V, rel_err = σ_V / V, a_over_d (Randradius / Korndurchmesser), a_min (kleinster Randradius, der rel_tol erfüllt — der Fehler ist proportional zu e / a), verdict (image / scale), reason. Wird target_mass angegeben, wird anhand des relativen Fehlers rel_err_target entschieden, der entsteht, wenn eine Schale gleicher Form auf diese Masse verkleinert wird. Raises ValueError: Argumentbereiche.
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• poc_powder_scoop_pour — py -3.11 examples/poc_powder_scoop_pour.py
table als Eingabe)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
scoop)spoon_bowl_volume · scoop_synth_side · revolution_volume_side · two_view_volume · scoop_volume_read · scoop_count · tilt_wedge_retained · tilt_pour_rate
*Provenance: scoop.py — DRIVE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.