tacsim op• Data kinds: rgb × matrix × scalar → table
• Call: import fullseye as fs; fs.ledger.membrane_recover(rgb, lights, pitch: 'float', ambient: 'float' = 0.0, albedo: 'float' = 1.0) -> 'dict' (to call the implementation directly, import tacsim; tacsim.membrane_recover(rgb, lights, pitch: 'float', ambient: 'float' = 0.0, albedo: 'float' = 1.0) -> 'dict'; from the registry, opsdrive.get("membrane_recover"))
Visuotactile RGB (H, W, 3) → treats the 3 channels as images under 3 lights and obtains normals with photometric.photometric_stereo (lit_only) → height with photometric.integrate_normals (Frankot-Chellappa) (pixel units × pitch = m).
ambient and albedo are calibration values: albedo·ambient is subtracted from the image before solving (Woodham's linear model has no ambient term of the synthetic albedo·(N·L + ambient), so without the subtraction the normals lean towards z and the tilt comes out systematically smaller by ambient/sin(elevation) ≈ 3.7 % (0.03/0.82) —— this corresponds to reference-frame calibration on real hardware. It was the cause of δ being 3.5 % low in the prototype).
Returns: normals (H, W, 3), albedo (H, W), height (H, W) [m, relative value with mean 0], pitch. Raises ValueError: rgb is not (H, W, 3), pitch ≤ 0, ambient < 0. Empty input (rgb with 0 elements) raises ValueError.
• 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.
• poc_peg_insertion_tactile — py -3.11 examples/poc_peg_insertion_tactile.py
• poc_tacsim_elastic_membrane — py -3.11 examples/poc_tacsim_elastic_membrane.py
table as input)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
tacsim)combined_modulus · hertz_sphere · hertz_force · hertz_cylinder · hertz_surface_uz · hertz_pressure · membrane_indent_sphere · membrane_indent_shape
*Provenance: tacsim.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.