Skip to content

VDSim — Theoretical Reference

이 시리즈는 차량 동역학 / 제어 / 수치 적분 / 소프트웨어 아키텍처를 강의 노트 수준의 textbook 으로 정리한 reference 다. 각 chapter 는 self-contained — 모델의 동기, 가정, 유도, 검증, 한계를 본문에서 한 번 완결한다. VDSim 의 구현은 별도 implementation note 박스로 분리되어, 독자는 두 가지 깊이 중 본인 목적에 맞는 trail 만 따라갈 수 있다.

대상 독자:

  • 차량 동역학 / 자율주행 제어를 처음 / 두 번째 배우는 PhD/MS 수준 학습자
  • VDSim 의 API / 채택 / 한계를 파악하려는 사용자 (산업 / 연구)

두 가지 trail — 본문과 구현 노트

각 chapter 는 다음 두 layer 로 구성된다.

A. 본문 — 교과서 (모델 / 식 / 검증)

차량 동역학 일반 reference 로 읽힌다. VDSim 의 특정 채택과 무관한, 모델 자체의 derivation 과 limitation 을 다룬다.

표준 sequence:

0. Learning objectives        (이 chapter 를 마치면 ... 할 수 있다)
0. Prerequisites              (이전 chapter / 외부 reference)
1. 동기                       (왜 이 모델이 필요한가)
2. 가정                       (명시적 list)
3. 유도                       (식 + 직관 + 단위 + 부호)
4. 검증                       (analytical + numerical)
5. 한계                       (어떤 현상을 다루지 못하는가)
6. 다음 chapter 와의 연결
7. 참고문헌
8. Self-check (3-5 문제)

B. VDSim 구현 노트 — implementation note 박스

VDSim 의 구체 채택, 코드 경로, 검증 Task 번호, 사용 패턴 (C++ / Python / YAML). 본문 의존 없이 skim 가능하도록 단독 박스로 분리한다. 박스 양식:

> **[VDSim impl] § X.Y**
>
> - 코드: core/src/bicycle_dynamics.cpp:120-127
> - 검증: Task 17 (RK4 substep + 1-step lag)
> - 사용: 아래 minimal example 참조.

학습 목적이면 본문만 — VDSim 코드를 보지 않아도 self-contained. VDSim 사용자는 본문을 가볍게 훑고 박스만 추적해도 API / 채택 / 검증 통과 여부 파악 가능.


Reading paths — 학습자의 목적별

전체 16 chapter 의 순차 독해 대신, 목적에 따라 4 가지 path 중 하나로 시작하기를 권장한다. 각 path 는 self-contained.

Path A — 차량 동역학 textbook (입문 sequence)

01 → 02 → 03 → 04 → 05 → 06

좌표계 / 부호 → 강체 Newton-Euler → 타이어 Pacejka → (선택) 19 LuGre → 모델 사다리 (Ld1 bicycle → Ld2 7-DOF → Ld3 14-DOF). 차량 동역학 수업의 표준 chapter 순.

Path B — 자율주행 제어 (control sequence)

07 → 08 → 09 → 10

variant dispatch (control ladder) → PI + feed-forward → pure pursuit → driver model (latency / noise). Path A 의 04 이후에 읽으면 dynamics 와 control 의 cascade 가 명확.

Path C — 수치 적분 / 소프트웨어 (engineering sequence)

11 → 12

RK4 + substep + 1-step lag → C++17 ABI / pybind11 / CARLA bridge. 실시간 loop / language binding / ABI 안정성에 관심 있는 reader.

Path D — Multibody / 산업 표준 (advanced sequence)

13 → 14 → 15 → 16

lumped 14-DOF 의 한계 → hardpoint kinematics → ISO 표준 maneuver / DOE → FMI 2.0 co-simulation. Path A 완독 후 권장.


Chapter index — 한 줄 objective

# chapter length prereq learning objective
01 Frames & Conventions 짧음 선형대수 ISO 8855 RH 좌표계와 alpha/kappa 부호 약속을 정확히 정의
02 Rigid-Body Dynamics 01 Body-frame Newton-Euler EoM 을 inertial / body 의 차이와 함께 유도
03 Tire — Pacejka MF96 길음 01, 02 Magic Formula 의 의미와 friction-ellipse rescale 의 가정
19 Tire — LuGre / brush-dynamic 01, 03, 11 Bristle state \(z\), MF96 as \(g()\), presliding vs sliding; VDSim opt-in
25 Tire Contact & Interface 01, 03, 19, 21 Effective rolling radius \(R_e(F_z)\), camber contact migration → \(M_x\), inverted kinematics-in/wrench-out interface
04 Ld1 — Bicycle (5 DOF) 02, 03 Single-track 가정 하의 5 DOF EoM 과 understeer gradient 의 해석해
05 Ld2 — Seven-DOF 04 Per-tire + lateral weight transfer + Ackerman + differential 분기
06 Ld3 — Fourteen-DOF 길음 02, 04 Sprung 3 + unsprung 4 의 lumped vertical 동역학
07 Control Ladder Lc1-Lc8 짧음 std::variant 기반 control input 의 m × n 사다리 매트릭스
08 PI + Feed-Forward Cascade 기초 제어 Lc5 AxTarget / Lc6 VTarget 의 PI + FF + anti-windup
09 Pure Pursuit / Waypoint 기하 Geometric path tracking 의 유도, lookahead scheduling
10 Driver Model 짧음 09 Reaction delay + Gaussian noise 의 cascade 통합
11 Numerical Integration ODE 기초 RK4 + substep + 1-step lag 의 안정성과 오차
12 Software Architecture C++17 Factory + pure virtual ABI, std::variant, pybind11, CARLA plugin
13 Multibody Outlook (Ld4-Ld5) 길음 02, 06 Lumped 의 한계와 hardpoint kinematics / quasi-static compliance 의 동기
14 Hardpoint Kinematics 13 6 가지 standard suspension topology 의 forward kinematics
15 Validation & DOE 짧음 04, 05 ISO 7401 / 4138 / 3888-2 표준 maneuver 와 parameter sweep
16 FMI 2.0 Integration 짧음 12 FMU export / import + co-simulation 의 양방향 통합
17 Actuator Dynamics & Sensing 11, 07 FOPDT·rate·sat·dead-zone, steering servo(PD+inertia+LuGre) vs lag, brake mu(T), sensor delay
18 Runtime Kernel & Co-simulation 17, 12 SimSession kernel·run modes, RealTimeRunner watchdog, UDP wire protocol, GUI data port (JSON vs binary)

Notation — 시리즈 공통

본문 식 안에서는 다음 약속을 expand 없이 사용한다.

좌표계와 부호

  • ISO 8855 RH — body frame: x forward, y leftward, z up.
  • World frame — ENU (East-North-Up) RH.
  • Quaternion — body → world. Eigen convention 으로 Quat::Identity() = no rotation.
  • Euler angles — ZYX intrinsic (yaw → pitch → roll).
  • Wheel index — FL = 0, FR = 1, RL = 2, RR = 3.

자주 헷갈리는 부호

항목 VDSim (ISO 8855) 비교
좌선회 시 yaw rate r r > 0
좌선회 시 front slip angle alpha alpha > 0
좌선회 시 front lateral force Fy Fy < 0 (restoring) Rajamani (SAE Y-right) 는 부호 반대
Roll φ 양의 방향 차체 right side 가 아래 SAE 호환
Pitch θ 양의 방향 nose-up brake → nose-dive → θ < 0

Greek / 변수

  • 질량 / 관성m, m_s, m_u (total / sprung / unsprung per corner), Izz, Ixx, Iyy (sprung body inertia diagonal).
  • 기하L, a, b (wheelbase, CG-to-front-axle, CG-to-rear-axle. L = a + b), Tw_f, Tw_r (track width), h_cg, R (nominal kinematic wheel radius).
  • 운동vx, vy, r (body-frame velocity x/y + yaw rate), delta (front steer angle, rad).
  • 타이어alpha (slip angle, rad), kappa (slip ratio), Fz, Fx, Fy, Mz, mu (friction). mu_long, mu_lat per-axis scaling.

약자 (본문에서 expand 하지 않음)

  • MF96 — Pacejka Magic Formula 1996 simple form.
  • DOF — degree of freedom.
  • EoM — equation of motion.
  • ABI — application binary interface.
  • K&C — kinematics and compliance (suspension chart).

핵심 참고 문헌

각 chapter 의 §참고 절은 이 list 의 책 / paper 를 우선 인용한다.

  1. Genta, G. Motor Vehicle Dynamics: Modeling and Simulation, World Scientific, 2014. 차량 동역학 표준.
  2. Rajamani, R. Vehicle Dynamics and Control, 2nd ed., Springer, 2012. SAE Y-right convention (본 시리즈와 alpha 부호 반대).
  3. Pacejka, H.B. Tire and Vehicle Dynamics, 3rd ed., Butterworth-Heinemann, 2012. MF96 / MF2002 의 정본.
  4. Milliken, W.F. & Milliken, D.L. Race Car Vehicle Dynamics, SAE International, 1995. weight transfer / Ackerman / differential 의 직관.
  5. Reimpell, J., Stoll, H., Betzler, J. The Automotive Chassis: Engineering Principles, Butterworth-Heinemann, 2001. suspension geometry / K&C.
  6. Featherstone, R. Rigid Body Dynamics Algorithms, Springer, 2008. multibody (Ld4-Ld5).
  7. Thrun, S., Burgard, W., Fox, D. Probabilistic Robotics, MIT Press, 2005. noise convention (R = process noise, Q = observation noise).

VDSim 코드 매핑

본문 implementation note 박스가 자주 가리키는 파일.

파일 역할
core/include/vdsim/types.hpp Eigen typedef + wheel index constants
core/include/vdsim/state.hpp State struct (모든 사다리 cover)
core/include/vdsim/params.hpp VehicleParams / TireParams / SolverParams
core/include/vdsim/interfaces.hpp IVehicleDynamics + ITireModel + IContactProvider
core/include/vdsim/control.hpp ControlInput = variant
core/include/vdsim/control_converter.hpp LongAxController / LongVxController / PurePursuit / DriverModel
core/include/vdsim/multibody.hpp Ld4-Ld5 의 hardpoint / joint / bushing struct
core/src/pacejka_mf96.cpp MF96 + combined slip + Mz + camber
core/src/bicycle_dynamics.cpp Ld1 본체
core/src/seven_dof_dynamics.cpp Ld2 본체
core/src/fourteen_dof_dynamics.cpp Ld3 본체
core/src/control_converter.cpp Lc5 / Lc6 / Lc7 / DriverModel

시리즈 상태

chapter 본문 (교과서) 구현 노트 박스 self-check
01 – 16 draft 1차 완성 본문에 inline 형태로 분산 (분리 작업 진행 중) 미구비

본문 ↔ 구현 노트 박스 분리, self-check 문제, math appendix (변환 식 derivation), worked examples, Adams Car 실측 fit case study 가 follow-up.