traffic op• 데이터 종류: points × points × points → any
• 호출: import fullseye as fs; fs.ledger.social_force_step(pos, vel, goals, *, dt: 'float', v0, tau: 'float', A: 'float', B: 'float', radius, walls=None)(구현을 직접 호출하려면 import drivetraffic; drivetraffic.social_force_step(pos, vel, goals, *, dt: 'float', v0, tau: 'float', A: 'float', B: 'float', radius, walls=None), 원장에서 가져오려면 opsdrive.get("social_force_step"))
social force의 1스텝(단위 질량당. Helbing & Molnár 1995 / Helbing, Farkas, Vicsek 2000의 형태).
dv_i/dt = (v0_i e_i − v_i)/τ + Σ_j A exp((r_ij − d_ij)/B) n_ij + Σ_W A exp((r_i − d_iW)/B) n_iW
e_i = 목표를 향한 단위 벡터(목표에서 1e-9 m 이내이면 0), r_ij = r_i + r_j, d_ij = |x_i − x_j|, n_ij = (x_i − x_j)/d_ij. 벽 W 는 선분 ((x0, y0), (x1, y1)) 의 열이며, d_iW 와 n_iW 는 최근접점에서 구한다.
적분(지수 적분): 척력 F 를 한 스텝 동안 일정하다고 두고, 선형 부분 (v_d − v)/τ(v_d = v0 e + τ F)를 엄밀하게 푼다:
v' = v_d + (v − v_d) e^{−dt/τ}, x' = x + v_d dt + (v − v_d) τ (1 − e^{−dt/τ}). 한 사람이고 척력이 없으면 v(t) = v0(1 − e^{−t/τ}) 와 dt 에 상관없이 일치한다(게이트). 척력이 있으면 1 차 오차.
인수: pos, vel, goals 는 (N, 2). v0 와 radius 는 스칼라 또는 (N,). walls 는 (M, 2, 2) 또는 None.
반환값: (pos', vel'). 배치가 거울 대칭 또는 점대칭이면 결과도 같은 대칭성을 유지한다(식이 대칭이므로. 게이트로 확인).
Raises ValueError: 형상 불일치, 비유한값, τ, B, dt ≤ 0, A < 0, 반지름 < 0, 두 사람의 위치가 일치.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• gallery_drive_mirrors_crowds — py -3.11 examples/gallery_drive_mirrors_crowds.py
any 를 입력으로 받는 것)course_crank · course_s_curve · course_turnaround · course_slope · course_intersection · course_parallel_parking · course_crossing · course_road
traffic)idm_accel · idm_equilibrium_gap · idm_platoon_simulate · driver_style · lateral_wobble · ou_estimate · pedestrian_crossing · occlusion_reveal_distance
*Provenance: drivetraffic.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.