System Modeling · 학습
실행 준비
Python 경로는 python-control을 사용합니다. 모듈이 없으면 Colab·Jupyter의 코드 셀에서 %pip install control==0.10.2를 실행하세요.
이번에 배울 내용
질량이나 저항을 바꿀 때 Transient Response와 Steady-State Value 중 무엇이 변하는지 모델로 판단합니다.
전체 흐름
물리식·단위 → State Space 모델 → 측정 응답 → 계수 추정·잔차
물리식에서 입력과 상태 정하기
Cruise 모델 에서 입력은 힘, 상태·출력은 속도입니다. , 입니다. 일정한 힘의 최종 속도는 , Time Constant는 입니다.
질량을 늘려도 최종 속도는 같지만 속도가 변하는 데 더 오래 걸립니다.
모델이 측정과 맞는지 보기
Unit Step 응답 에서 는 Steady State 값이고, 는 그 값의 약 63.2%에 도달하는 시간입니다. 측정한 응답에 이 식을 맞춰 두 매개변수를 추정합니다.
이 예제의 처음 3초 기록에는 응답이 계속 증가하는 부분만 담깁니다. 15초 기록을 함께 사용했을 때 추정한 최종값과 Time Constant가 얼마나 달라지는지 비교합니다.
풀이 예제
kg, N·s/m, 힘 500 N. State와 Output은 Velocity [m/s]입니다.
import numpy as np
import matplotlib.pyplot as plt
import control as ctl
s = ctl.tf('s')
m=1000.; b=50.; force=500.
G=ctl.ss([[-b/m]],[[1/m]],[[1]],[[0]])
t=np.linspace(0,150,1501)
t,v=ctl.step_response(force*G,t)
plt.plot(t,v); plt.xlabel('Time [s]'); plt.ylabel('Speed [m/s]'); plt.grid()