detect_obstacles — DRIVE walkterrain op

• Data kinds: depth → mask

• Call: import fullseye as fs; fs.ledger.detect_obstacles(grid, cell: 'float' = 0.05, clearance: 'float' = 0.12, ground: 'str' = 'plane', ground_radius: 'float' = 0.4, trim: 'float' = 0.3, min_area: 'float' = 0.01, extent=None) (implementation को सीधे call करना हो तो import terrain; terrain.detect_obstacles(grid, cell: 'float' = 0.05, clearance: 'float' = 0.12, ground: 'str' = 'plane', ground_radius: 'float' = 0.4, trim: 'float' = 0.3, min_area: 'float' = 0.01, extent=None), registry से लेना हो तो opsdrive.get("detect_obstacles"))

• Ledger के ज़रिए return value: fullseye.ledger.detect_obstacles(...) केवल घोषित out type mask का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.detect_obstacles.raw(...) का उपयोग करें, या terrain.detect_obstacles को सीधे call करें।

• GPU: नहीं (केवल CPU reference implementation)

उपयोग

चलने योग्य ज़मीन से *clearance* से अधिक ऊपर उठी cells को segment करता है।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

The ground model isolates obstacles from a sloped surface: ground='plane' (default) fits a robust ground_plane (best when the ground is planar — flat or ramp); ground='opening' uses the morphological ground_surface envelope (best for rough/curved terrain); or pass a precomputed ground height array. So a ramp is not an obstacle but a box, curb, or rock on it is. Returns (mask, obstacles): a boolean obstacle mask and a list of per-obstacle dicts sorted largest-first, each with area_cells / area (m²) / height (peak rise above ground) / centroid_cell (row, col) / bbox_cells (i0, j0, i1, j1), plus centroid_xy in world units when *extent* (from elevation_map) is given. Blobs smaller than *min_area* (m²) are dropped as noise.

★ground_radius は ground='opening' のときだけ読まれ、trim は 'plane' のときだけ。空の入力(grid が 0 要素)は空の mask と空の listを返す(理由: 観測の無い地図には障害物も無く、形だけを保つ)。

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• walking_ops_tour — py -3.11 examples/walking_ops_tour.py

वे अगले ops जिनसे type जुड़ता है (mask को input के रूप में लेते हैं)

spin_from_marker_sequence · carla_transform_matrix · carla_pose_to_world · carla_camera_pose · carla_xy_yaw · carla_scene_load · town_chain · osm_parse

इसी category के (walkterrain)

elevation_map · fill_gaps · elevation_traversability · foothold_score · ground_surface · ground_plane · fuse_elevation · roughness_map


*Provenance: terrain.py — DRIVE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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