idm_platoon_simulate — DRIVE traffic op

• Data kinds: any → table

• Call: import fullseye as fs; fs.ledger.idm_platoon_simulate(lead_v_of_t, n_followers: 'int', *, params_per_vehicle, dt: 'float', t_end: 'float', reaction_delay: 'float' = 0.0, seed: 'Optional[int]' = None) -> 'Dict[str, object]' (implementation को सीधे call करना हो तो import drivetraffic; drivetraffic.idm_platoon_simulate(lead_v_of_t, n_followers: 'int', *, params_per_vehicle, dt: 'float', t_end: 'float', reaction_delay: 'float' = 0.0, seed: 'Optional[int]' = None) -> 'Dict[str, object]', registry से लेना हो तो opsdrive.get("idm_platoon_simulate"))

उपयोग

आगे वाली car के speed profile के पीछे IDM के अनुसरण करने वाले वाहनों की कतार integrate करता है (car 0 = आगे वाली, 1..n = पीछे चलने वाली)।

तर्क

• lead_v_of_t: अगले वाहन की गति [m/s]। callable(t) -> v या समय-श्रेणी जितनी लंबाई का array।

• params_per_vehicle: प्रत्येक अनुगामी वाहन का dict (लंबाई n), या सभी वाहनों के लिए साझा एक dict। कुंजियाँ v0, T, a, b, s0 (अनिवार्य), delta (डिफ़ॉल्ट 4), length (आगे वाली कार की लंबाई के रूप में उपयोग; डिफ़ॉल्ट 4.5 m, मान्यता), reaction_delay (न हो तो तर्क reaction_delay), speed_noise (इच्छित गति v0 पर गुणा किया जाने वाला 1 + N(0, speed_noise²) का सापेक्ष विचलन;

> 0 होने पर seed अनिवार्य = नियतात्मक)। अगले वाहन की लंबाई के लिए params_per_vehicle के पहले वाहन का length उपयोग होता है।

• reaction_delay: प्रतिक्रिया विलंब [s]। चरण dt के पूर्णांक गुणज में गोल किया जाता है (m = round(delay/dt))। वाहन i समय k पर समय k − m पर अपनी गति, अंतराल और सापेक्ष गति देखकर त्वरण तय करता है (t < 0 के लिए मान लिया जाता है कि प्रारंभिक स्थिर अवस्था जारी थी)।

समाकलन (ballistic update): v_{k+1} = max(0, v_k + a_k dt), x_{k+1} = x_k + v_k dt + ½ a_k dt² (जिस चरण में गति ऋणात्मक हो जाती, उसमें रुकने की स्थिति x_k − v_k²/(2 a_k) पर रोका जाता है)। अगले वाहन की स्थिति गति का समलंबी समाकल है। प्रारंभिक अवस्था: सभी वाहन v_lead(0) पर चलते हैं, और हर अनुगामी वाहन का अंतराल उस गति का संतुलन अंतराल idm_equilibrium_gap है। अंतराल 0 या कम होने पर (पीछे से टक्कर), उस वाहन को संपर्क स्थिति (अंतराल 0) पर रोक दिया जाता है और उसके बाद हिलाया नहीं जाता (गति और त्वरण 0; आगे और पीछे के वाहनों का समाकलन जारी रहता है, और पीछे वाले के लिए रुका हुआ वाहन आगे वाला वाहन बन जाता है)। वाहनों को एक-दूसरे पर नहीं चढ़ाया जाता —— चढ़े हुए समाकलन करने से स्थिति का कोई अर्थ नहीं रहता।

लौटाया गया dict: t (K,), x, v, a, gap (K, n+1) (gap[:, 0] = inf), params (वास्तव में उपयोग किए गए प्रति वाहन प्राचल, गति विचलन सहित), delay_steps (n,), collision (bool), collision_time (पहला समय or None), collisions (पीछे से टक्करों की (時刻, 車番) सूची; वाहन क्रमांक i वह वाहन है जो आगे वाले वाहन i−1 से टकराया), crashed (n+1,) bool।

संदर्भ (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_driving_traffic — py -3.11 examples/poc_driving_traffic.py

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

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

इसी category के (traffic)

idm_accel · idm_equilibrium_gap · driver_style · lateral_wobble · ou_estimate · social_force_step · pedestrian_crossing · occlusion_reveal_distance


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

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