granular op• Data kinds: scalar × scalar → table
• Call: import fullseye as fs; fs.ledger.heap_scene_mjcf(n_spheres: 'int' = 1200, radius: 'float' = 0.004, *, mu_slide: 'float' = 0.16, mu_roll: 'float' = 0.09, density: 'float' = 2500.0, orifice_d: 'float' = 0.048, orifice_height: 'float' = 0.06, bin_radius: 'float' = 0.05, timestep: 'float' = 0.0015, base_roll: 'float' = 0.01, base_slide: 'float' = 1.0, solver_iterations: 'int' = 50, solver: 'str' = 'CG', cone: 'str' = 'elliptic', condim: 'int' = 6, contact_tc: 'float' = 0.006, seed: 'int' = 0) -> 'dict' (implementation को सीधे call करना हो तो import granular; granular.heap_scene_mjcf(n_spheres: 'int' = 1200, radius: 'float' = 0.004, *, mu_slide: 'float' = 0.16, mu_roll: 'float' = 0.09, density: 'float' = 2500.0, orifice_d: 'float' = 0.048, orifice_height: 'float' = 0.06, bin_radius: 'float' = 0.05, timestep: 'float' = 0.0015, base_roll: 'float' = 0.01, base_slide: 'float' = 1.0, solver_iterations: 'int' = 50, solver: 'str' = 'CG', cone: 'str' = 'elliptic', condim: 'int' = 6, contact_tc: 'float' = 0.006, seed: 'int' = 0) -> 'dict', registry से लेना हो तो opsdrive.get("heap_scene_mjcf"))
समतल तले वाले hopper (चौकोर छेद, भुजा orifice_d) में rigid गोलों के ढेर वाले scene का MJCF string (mujoco आवश्यक नहीं, ledger में दर्ज)।
गोले बेलनाकार bin (त्रिज्या bin_radius, तल-प्लेट की ऊँचाई orifice_height) के अंदर परतों में रखे जाते हैं। वे तल-प्लेट के छेद से नीचे बहकर समतल पर ढेर बनाते हैं (ढेर छेद तक पहुँचने पर रुक जाता है —— वास्तविक hopper के नीचे के ढेर की तरह)। छेद 4 प्लेटों से घिरा वर्ग है (Beverloo का सूत्र गोल छेद का D₀ लेता है; वर्ग की तुलना समतुल्य व्यास से की जाती है)। घर्षण (mu_slide, 0.005, mu_roll·R) है: MuJoCo का लुढ़कन घर्षण गुणांक लंबाई की इकाई में है (बलाघूर्ण / अभिलंब बल), इसलिए DEM के आयामहीन μ_r (Sunday आदि 2020 का 0.09) को त्रिज्या से गुणा किया जाता है। आधार एक खुरदरी मेज़ है (समतल का फिसलन घर्षण base_slide डिफ़ॉल्ट 1.0, लुढ़कन base_roll [m] डिफ़ॉल्ट 0.01; विश्राम कोण के प्रयोगों में तल पर रेगमाल चिपकाने जैसी भूमिका)। चिकनी मेज़ (μ 0.16) पर पहले गिरे गोले लुढ़ककर भाग गए और ढेर नहीं बना (मापा गया: 1,200 गोले 0.15 m त्रिज्या की एक परत में फैल गए)। लुढ़कन प्रतिरोध फिसलन घर्षण की सीमा μ_s g पर संतृप्त होता है (एक गोले का माप: लुढ़कन गुणांक 0.01 हो या 0.1, 1 m/s से 0.32 m चलता है = मंदन 1.6 m/s²), इसलिए आधार को रोकने वाला फिसलन घर्षण है। contact_tc = नरम संपर्क का समय-स्थिरांक [s] (solref)।
इसे कम से कम 2·timestep रखें: 0.004 s पर timestep 2 ms (= सीमा) के साथ, 3.5 mm त्रिज्या के 2,000 गोले अपसारी हो गए (अधिकतम गति 12.6 m/s, मापा गया)। डिफ़ॉल्ट solver CG + दीर्घवृत्तीय शंकु है (Newton में घने ढेर के 700 गोलों पर 280 s से अधिक → रोक दिया गया, मापा गया)।
लौटाता है: xml (string), positions (प्रारंभिक केंद्र (n, 3)), info (n, radius, mu_slide, mu_roll, orifice_d, bin_radius, orifice_height, timestep, mass_each, mass_total, column_top, bulk_density_bin)। Raises ValueError: contact_tc < 2 timestep / छेद bin में नहीं समाता / गोले bin में नहीं समाते / solver या शंकु की वर्तनी गलत।
• 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 में दिए गए हैं।
• poc_granular_heap_repose — py -3.11 examples/poc_granular_heap_repose.py
table को input के रूप में लेते हैं)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
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. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.