• Title : (AD) Vehicle Dynamics - Dynamic Models
  • Author : Minseok Kim
  • Created : 2026-06-08

Vehicle Dynamics - Dynamic Models

  • 차량의 Kinematic Model이 차량의 기하학적 요소만 고려하였다면, Dynamic Model은 차량 질량, 관성, 타이어 힘 등을 고려한다.
  • Kinematic Model은 “타이어가 항상 미끄러지지 않는다”는 가정을 하지만, 실제 차량은 속도가 증가하면 횡가속도, 타이어 스립이 발생하므로 실제 차량 운동은 차량 질량을 고려한 를 적용해야 한다.
  • Kinematic Models 참고 : (AD) Vehicle Dynamics - Kinematic Models


Linear Tire Model

  • Linear Tire Model은 타이어의 슬립 각(Slip Angle)과 횡력(Lateral Force) 사이의 관계를 선형으로 근사한 모델이다.
  • 타이어 슬립 각()에 의해 횡력()이 발생하고, 슬립각이 충분히 작은 범위에서 횡력이 슬립각에 비례한다고 가정한다.
  • 조향 → 차량이 회전하려고 함 → 관성(Inertia) 때문에 즉시 회전하지 못함 → 슬립각 발생
  • “관성 때문에 차량 속도 방향이 바퀴 방향을 즉시 따라가지 못하면서 생기는 슬립각”을 이용해 횡력을 계산하는 모델

+full

  • : 타이어 중심의 실제 이동 속도 벡터

    • 차량의 운동 상태(관성, 요레이트 등)에 의해 결정되는 순간 속도
  • : 종방향 속도 (Longitudinal Velocity)

    • 타이어 방향으로의 속도 성분
  • : 횡방향 속도 (Lateral Velocity)

    • 타이어 방향에 수직한 속도 성분
    • 타이어가 실제 이동 방향과 다른 방향을 향할 때 발생
  • : 타이어 슬립 각 (Slip Angle)

    • 타이어 속도 벡터와 타이어 방향 사이의 각도
  • : 횡력 (Lateral Tire Force)

    • 슬립각으로 인한 타이어 접지면(타이어 블록)의 탄성 복원력에 의해 생성되는 횡력
  • 위 그래프는 슬립 정도와 횡력의 관계를 나타내며, 타이어는 작은 슬립에서는 고무의 탄성 변형 때문에 힘이 슬립에 비례하여 증가하지만, 마찰 한계에 도달하면 접지면이 미끄러지기 시작하여 힘이 포화되고, 완전 미끄럼 상태에서는 동마찰력 수준으로 감소한다.

  • Linear Tire Model은 그래프의 가장 왼쪽 구간인 작은 슬립에서 선형 관계를 설명하는 모델로, 횡력을 아래와 같이 정의한다.

  • : 타이어 슬립 각
  • : 코너링 강성 (Cornering Stiffness)
    • 타이어가 슬립각을 횡력으로 바꾸는 능력 (단위 슬립각 1 rad당 타이어가 얼마나 큰 횡력을 만들어낼 수 있는가)
    • 고무 강성, 접지면 크기, 타이어 폭, 공기압, 수직하중 등을 고려한 상수
    • 일반적으로 승용차는

Bicycle Dynamic Model

개요

  • Bicycle Dynamic Model은 Bicycle Kinematic Model을 바탕으로, 차량에 작용하는 힘(Force)모멘트(Moment) 를 고려하여 차량의 운동을 계산하는 모델.
  • 일반적으로 저속 영역에서는 Kinematic Model과 유사한 결과를 보이지만, 속도가 증가하여 타이어 슬립이 발생하는 경우에는 Dynamic Model이 실제 차량의 거동을 보다 정확하게 표현할 수 있다.
  • 모델의 제어 입력으로 조향각()과 구동력 또는 가감속도(, )를 주면, Dynamic Model을 통해 차량 상태의 단위 시간당 변화량()을 계산할 수 있다.
  • Bicycle Dynamic Model은 아래 가정을 전재로 한다.
    • 차량 운동은 X/Y 평면으로 제한된다. (차량 상태는 만으로 표현됨)
    • 차량은 강체(Rigid Body)로 가정한다. (차체 변형 없음)
    • 선형 타이어 모델타이어 횡력만 고려한다.
    • 조향각이 충분히 작다고 가정한다. (보통 )
      • , ,
    • 차량의 전진 속도는 일정하다. (가속도 ) +full

State-Space Equation

  • 상태공간모델(State-Space Equation)은 시스템의 미래 상태가 현재 상태와 입력에 의해 결정되는 동적 시스템 표현 방법.
  • Kinematic Model 에서는 차량의 움직임은 순수 기하학으로 정의되므로 현재 위치, 자세, 조향각만으로 다음 상태가 결정된다.
  • 반면, Dynamic Model 에서는 차량의 실제 물리 현상을 고려하므로 현재 조향 입력만으로는 미래 상태를 결정할 수 없고, 현재 차량이 어떤 운동 상태에 있는지도 알아야 한다.
  • 따라서, Dynamic Model은 차량의 횡속도 와 각속도 상태변수로 정의하여 이를 정의하기 위해 상태공간모델을 사용해 표현한다.

+full

Lateral Dynamics

횡방향 힘의 합

  • 뉴턴 제 2법칙을 이용하여 횡방향 힘의 합을 나타내면 아래와 같다. ()
  • : 차량의 질량
  • : 차량의 횡방향 가속도
  • 은 “차량을 원운동시키기 위해 필요한 횡력(구심력)”
  • 이를 만큼 조향된 전륜과 후륜을 함께 나타내면 아래와 같다.

횡방향 가속도

  • 차량의 CoG 기준 속도를 라고 할 때, 차량의 횡방향 가속도 는 아래와 같이 계산됨.
  • : 차량 속도의 시간에 대한 미분 (가속도)
  • : 차량의 각속도 ( )

Leteral Dynamics

  • 횡방향 힘의 합을 횡방향 가속도를 이용해 표현하면 아래와 같다.
  • 여기서, 작은 조향각을 가정하면

Yaw Dynamics

  • 전륜과 후륜이 만드는 횡력이 차량 중심에 대해 어떤 회전 모멘트를 발생시키고, 그 결과 차량의 회전 속도가 어떻게 변하는지를 계산함.
  • 기준점(CoG) 기준 타이어의 힘()에 의한 모멘트(회전 토크, )가 발생하고 이를 이용해 회전 가속도 를 구할 수 있다.
  • 뉴턴의 회전 운동 법칙
  • : 모멘트, 회전 토크 (차량을 돌리기위한 힘)
  • : 차량의 회전 관성 (Moment of Inertia)
  • : 회전 각가속도 ()
  • 차량의 회전 모멘트 를 표현하면 아래와 같다.

Vehicle Yaw Moment of Inertia

  • 차량의 회전 관성 는 각속도 변화에 대한 저항이라 볼 수 있으며, 가 커질수록 차량이 쉽게 회전하지 않는다.
  • 질량 을 가진 점질량이 회전축으로부터 만큼 떨어져 있을 때, 회전 관성 는 아래와 같이 정의된다.
    • (회전축에서 멀리 있는 질량일수록 회전을 더 방해하기 때문에 )
  • 이를 이용해 수많은 질량이 분포되어있는 실제 물체(연속체)의 회전 관성을 구하면,
  • 차량을 균일한 밀도의 직사각형으로 가정하여 아래와 같이 회전 관성을 근사할 수 있다.
  • : 차량 전체 길이
  • : 차량 전체 폭
  • : 차량 질량
  • 만약 질량 , 길이 , 폭 의 차량이면 이 된다.
  • 일반적으로 무게에 따라 소형차는 1500~2200, 중대형 세단은 2200 ~5000 의 회전 관성 값을 가진다.

Tire Foreces

  • 타이어에 작용하는 횡력 를 유도함.

Tire Slip Angle

  • 전륜, 후륜의 슬립 각 은 각 타이어가 바라보는 방향과 실제 이동 방향의 차이를 말함.
  • : 전륜 조향각

  • : 차량 중심의 종방향 속도

  • : 차량 중심의 횡방향 속도

  • : 차량의 각속도 ( )

  • : 차량 중심으로부터 전륜, 후륜까지의 거리

  • 슬립 각 역시 소각도 근사를 적용하면 아래와 같다. ()

Linear Tire Model

  • 슬립각이 작을 때, 횡력은 슬립각에 비례한다고 가정한다.
  • 는 코너링 강성(Cornering Stiffness)이며, 위 식을 전륜과 후륜에 적용하면 아래와 같다.
  • 위 식에 Slip Angle을 대입하면 아래와 같다.
  • 식을 정리하면 다음과 같다.
  • 따라서, 조향각 이 증가하면 힘 가 증가하고, 횡속도 와 각속도 가 증가하면 는 감소하는 관계를 확인할 수 있다.
  • 즉 차량이 이미 충분히 회전하고 있다면, 슬립각이 감소하면서 횡력도 감소한다.

State-Space Representation

Leteral Dynamics 정리

  • Linear Tire Model 의 힘 , 을 Leteral Dynamics 식에 대입하면,

Yaw Dynamics 정리

  • , 을 Yaw Dynamics 식에 대입하면,

State-Space Model

  • 상태공간 모델을 이용하여 Bicycle Dynamic Model을 표현한다.
  • : 상태 변화율 (가속도 등)
  • : 현재 상태
  • : 제어 입력
  • : 현재 상태가 만드는 변화
  • : 제어 입력이 만드는 변화
  • Bicycle Dynamic Model에서의 상태벡터와 입출력은 다음과 같이 정의 할 수 있다. (2-State)
  • 위에서 구한 Leteral Dynamics 와 Yaw Dynamics 를 이용하여 행렬 를 정의 한다.
  • 따라서 횡방향 속도 와 각속도 의 상태 변화율을 정의하는 상태공간 모델의 최종 형태는 아래와 같다.

차량 자세 추정

  • 다음 과정을 통해 Dynamic Bicycle Model 을 고려한 차량의 위치와 자세를 계산할 수 있다.

1. Dynamic Model 계산

  • Dynamic Model 을 이용해 횡가속도 와 각가속도 를 구한다.
  • 여기서 횡가속도 와 각가속도 적분하여 현재 상태 횡속도 와 각속도 를 구할 수 있다.

2. Yaw 계산

  • 차량의 heading 방향인 yaw 각도 는 각속도 적분하여 구할 수 있다.

3. 속도의 전역좌표계 변환

  • 차량 좌표계 기준에서 속도 로 표현하며, 차량은 각도 만큼 회전되어 있으므로 전역 각도 만큼 회전 변환하여 전역좌표계의 속도를 구한다.
  • 이는 Kinematic Model의 슬립 각 를 고려하는 것과 같다.

4. 위치 계산

  • 전역좌표계 속도 적분하여 위치 를 계산한다.

최종적으로 Yaw angle()과 횡속도()는 Dynamics가 결정하고, 위치 는 그 결과를 Kinematic 관계식으로 적분하여 얻는다.

Dynamic Model 시뮬레이션

System Parameters

# -----------------------------
# Vehicle Parameters
# -----------------------------
# 차량 무게
m = 1500 # 1500kg
# 회전 관성 (Yaw Moment of Inertia)
Iz = 2500.0
# CoG 좌표
lf = L * 0.5
lr = L * 0.5
# 코너링 강성 (Cornering Stiffness)
Cf = 80000
Cr = 80000

State Update

# -----------------------------
# Dynamic Bicycle Model
# -----------------------------
vy_dot = (
	-(Cf + Cr)/(m*vx) * vy
	+ ((Cr*lr - Cf*lf)/(m*vx) - vx) * r
	+ (Cf/m) * delta
)
r_dot = (
	(-lf*Cf + lr*Cr)/(Iz*vx) * vy
	- (lf**2*Cf + lr**2*Cr)/(Iz*vx) * r
	+ (lf*Cf/Iz) * delta
)
 
# -----------------------------
# Integrate states (적분하여 속도 업데이트)
# -----------------------------
self.vy += vy_dot * dt
self.r += r_dot * dt
 
# -----------------------------
# 최종 Heading 업데이트
# -----------------------------
self.yaw += self.r * dt
 
# -----------------------------
# Global velocity
# -----------------------------
x_dot = vx*np.cos(self.yaw) - self.vy*np.sin(self.yaw)
y_dot = vx*np.sin(self.yaw) + self.vy*np.cos(self.yaw)
 
# 최종 위치 업데이트
self.x += x_dot * dt
self.y += y_dot * dt

참고