datum_tilt_check — DRIVE granular op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.datum_tilt_check(result, warn_deg: 'float' = 1.0) -> 'dict' (to call the implementation directly, import granular; granular.datum_tilt_check(result, warn_deg: 'float' = 1.0) -> 'dict'; from the registry, opsdrive.get("datum_tilt_check"))

Usage

Judges from the return value of repose_angle_silhouette (left/right slope angles and ground tilt) whether the reference plane is tilted.

The tilt β of uneven ground (datum) adds to the angle of repose (the same trap as in the existing volume PoC). For shear type (z' = z + x tan β) the left and right slopes are atan(tan φ ± tan β); for camera roll (rotation type) φ ± β —— in both cases the left–right difference ≈ 2β, so a warning is raised when the left–right difference exceeds warn_deg. The two models differ at first order (at β = 5 degrees and φ = 30 degrees the left slope is 33.62 vs 35.00 degrees, measured), so both corrected values are returned, and which one to use is decided by the origin of the ground (the datum of a height map, or camera tilt):

phi_shear_deg (subtraction of tan, uses ground_deg), phi_roll_deg (subtraction of angles = the left–right mean itself), beta_shear_deg (β read from the left–right tan difference = atan((tan L − tan R)/2)), beta_roll_deg (= left–right difference / 2). Raises ValueError: missing field / angle out of range / warn_deg ≤ 0.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_geodetic_height_frames — py -3.11 examples/poc_geodetic_height_frames.py

• poc_granular_heap_repose — py -3.11 examples/poc_granular_heap_repose.py

Ops the type connects to (they accept table as input)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Same category (granular)

heap_volume_cone · heap_mass · heap_volume_heightmap · beverloo_rate · beverloo_fit · discharge_synth · dispense_mass_from_video · hopper_discharge_rate


*Provenance: granular.py — DRIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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