rally_simulate — DRIVE racket op

• Data kinds: table × table × table → table

• Call: import fullseye as fs; fs.ledger.rally_simulate(bp: 'dict', rp: 'dict', tp: 'dict', *, perceive=None, strategies=None, retries: 'int' = 6, x_racket: 'float' = 1.55, hit_height=(0.05, 0.45), T_flight: 'float' = 0.42, target_x: 'float' = 0.75, max_hits: 'int' = 60, dt: 'float' = 0.0002, fps: 'float' = 100.0, seed: 'int' = 0, y_jitter: 'float' = 0.25, plan_spin: 'bool' = True, table_ip=None, replan_every: 'int' = 5) -> 'dict' (implementation को सीधे call करना हो तो import racket; racket.rally_simulate(bp: 'dict', rp: 'dict', tp: 'dict', *, perceive=None, strategies=None, retries: 'int' = 6, x_racket: 'float' = 1.55, hit_height=(0.05, 0.45), T_flight: 'float' = 0.42, target_x: 'float' = 0.75, max_hits: 'int' = 60, dt: 'float' = 0.0002, fps: 'float' = 100.0, seed: 'int' = 0, y_jitter: 'float' = 0.25, plan_spin: 'bool' = True, table_ip=None, replan_every: 'int' = 5) -> 'dict', registry से लेना हो तो opsdrive.get("rally_simulate"))

उपयोग

2 rackets (x = −x_r और +x_r पर, blades प्रतिद्वंद्वी की ओर) आपस में rally करते हैं।

हर फ्रेम (1/fps) पर प्राप्तकर्ता पक्ष की धारणा perceive(t, p, v, ω) गेंद की अवस्था लौटाती है; उससे गति के समीकरण + मेज़ पर उछाल द्वारा अपने तल x = ±x_r पर पहुँचने का बिंदु व समय अनुमानित कर रैकेट को (सीमा सहित) चलाया जाता है। गेंद तल पर पहुँचने पर, प्रतिद्वंद्वी के कोर्ट पर (∓target_x, y*) पर T_flight में गिरने वाले वेग को लक्ष्य कर शॉट मारा जाता है (y* यादृच्छिक है; plan_spin हो तो शॉट के बाद की स्पिन को शामिल कर लक्ष्य मिलाया जाता है)। strategies = (side 0 की रणनीति, side 1 की रणनीति) (None हो तो दोनों के लिए strategy_feeder)। retries > 0 हो तो मारने से पहले shot_is_legal से आगे देखा जाता है, और चूकने वाले लक्ष्य को वापस लेकर दूसरे लक्ष्य (रणनीति फिर से चुनकर) से दोहराया जाता है। रिटर्न मान {"hits", "end_reason", "shots": [...], "t", "p" (N,3), "racket_pos" (N,2,3), "hit_times", "rewinds"}।

खाली इनपुट (bp खाली dict) पर ValueError उठता है।

संदर्भ (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 करते हैं)

• poc_ball_bounce — py -3.11 examples/poc_ball_bounce.py

• poc_table_tennis_rally_loop — py -3.11 examples/poc_table_tennis_rally_loop.py

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

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

इसी category के (racket)

racket_params · racket_impact · racket_hit_check · aim_velocity · racket_plan · racket_move · strategy_attacker · strategy_feeder


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

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