scoop_scene_mjcf — DRIVE scoop op

• Datenarten: scalar × scalar → table

• Aufruf: import fullseye as fs; fs.ledger.scoop_scene_mjcf(n_spheres: 'int' = 500, radius: 'float' = 0.002, *, a: 'float' = 0.03, h: 'float' = 0.012, rim_height: 'float' = 0.1, mu_slide: 'float' = 0.16, mu_roll: 'float' = 0.09, density: 'float' = 2500.0, bowl_mu: 'float' = 0.5, tile: 'float' = 0.006, drop_gap: 'float' = 0.0003, timestep: 'float' = 0.0015, contact_tc: 'float' = 0.006, solver_iterations: 'int' = 50, solver: 'str' = 'CG', cone: 'str' = 'elliptic', condim: 'int' = 6, seed: 'int' = 0) -> 'dict' (die Implementierung direkt: import scoop; scoop.scoop_scene_mjcf(n_spheres: 'int' = 500, radius: 'float' = 0.002, *, a: 'float' = 0.03, h: 'float' = 0.012, rim_height: 'float' = 0.1, mu_slide: 'float' = 0.16, mu_roll: 'float' = 0.09, density: 'float' = 2500.0, bowl_mu: 'float' = 0.5, tile: 'float' = 0.006, drop_gap: 'float' = 0.0003, timestep: 'float' = 0.0015, contact_tc: 'float' = 0.006, solver_iterations: 'int' = 50, solver: 'str' = 'CG', cone: 'str' = 'elliptic', condim: 'int' = 6, seed: 'int' = 0) -> 'dict'; aus dem Register: opsdrive.get("scoop_scene_mjcf"))

Verwendung

MJCF-Zeichenkette einer Szene, in der eine Kugelkappenschale (Randradius a, Tiefe h, Randhöhe rim_height) mit dünnen Plattenkacheln belegt wird und n_spheres Starrkörperkugeln im Gitter innerhalb der Schale gestapelt und senkrecht von oben losgelassen werden (kein mujoco nötig, im Register (Ledger) geführt).

Die Schale besteht aus 2 mm dicken Platten, die eine kugelförmige Innenfläche (Radius R = (a² + h²) / 2h) tangieren und für jeden Breitenring in Azimutrichtung angeordnet sind (tile = nominelle Kantenlänge der Platte, um den Faktor 1.35 überlappt, damit keine Lücken entstehen). Die Kugeln werden vom Boden aus in Lagen auf einem versetzten Gitter gestapelt (mit Abstand r + drop_gap zur Schaleninnenfläche), oberhalb des Randes im Zylinder des Randes — beim Loslassen fällt die Säule über dem Rand zu einem Haufen zusammen, überlaufende Kugeln rollen über den Rand und verteilen sich auf dem Boden (Höhe 0). Beim Fallenlassen von oben prallten sie ab und schleuderten sogar den Schaleninhalt hinaus (nur 172 von 500 blieben, kein Haufen entstand, gemessen), daher wird der ruhige Zustand direkt nach dem Aufschöpfen nachgebildet. Die Reibungskonvention entspricht granulars heap_scene_mjcf (Rollreibung ist dimensionsloses μ_r × Radius).

Rückgabe: xml, positions (Anfangsmittelpunkte), info (n, radius, a, h, R, rim_height, bottom_height, mass_each, timestep, n_tiles, V_struck). Raises ValueError: contact_tc < 2 timestep / h > a / Tippfehler / Kugeln passen nicht hinein.

Referenzen (Beispieldaten, Literatur)

• 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.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_powder_scoop_pour — py -3.11 examples/poc_powder_scoop_pour.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

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

Gleiche Kategorie (scoop)

spoon_bowl_volume · scoop_synth_side · revolution_volume_side · two_view_volume · scoop_volume_read · scoop_count · scoop_image_limit · tilt_wedge_retained


*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.