강의자료 · 제어공학2
실습 언어

System Modeling

질량이나 저항을 바꿀 때 Transient Response와 Steady-State Value 중 무엇이 변하는지 모델로 판단합니다.

Python 경로는 python-control을 사용합니다. 모듈이 없으면 Colab·Jupyter의 코드 셀에서 %pip install control==0.10.2를 실행하세요.

MATLAB · Control System Toolbox

측정 데이터 step_measurements.csv를 스크립트와 같은 폴더에 둡니다. 파일이 없으면 코드가 내려받습니다.

양수인 Gain과 Time Constant를 구하기 위해 두 매개변수의 로그를 fminsearch로 추정합니다.

실습 전에

01 질량이 커지면 최종 속도도 달라질까요?

설명

저항 계수와 힘이 같으면 Steady-State Velocity는 같고 Time Constant가 변합니다.

02 같은 Motor에서 저항만 바꾸면 어느 계수가 달라질까요?

설명

분모의 전기적 항 Ls+R이 바뀌어 Pole과 DC Gain에 영향을 줍니다.

실습

실습용 노트북 미리보기실습용 노트북 다운로드실습용 mlx 스크립트 미리보기실습용 mlx 스크립트 다운로드

1. Cruise 모델과 단위

시작 조건

m=1000m=1000 kg, b=50b=50 N·s/m, 힘 500 N. State와 Output은 Velocity [m/s]입니다.

진행 방법

  1. A=−b/mA=-b/m, B=1/mB=1/m, C=1C=1, D=0D=0으로 모델을 만들고 500 N의 일정한 힘에 대한 0≤t≤1500\le t\le150 s 응답을 그리세요.
  2. m∈{500,1000,1500}m\in\{500,1000,1500\}만 바꾸고 같은 힘을 입력하세요. mv̇+bv=500m\dot v+bv=500에 v̇=0\dot v=0을 대입해 Steady-State Velocity를 구하고, v̇+(b/m)v=500/m\dot v+(b/m)v=500/m의 계수를 1차 표준형과 대응시켜 Time Constant를 구하세요.
  3. 질량별로 계산한 Steady-State Velocity와 시뮬레이션 마지막 표본 v(150)v(150)를 나란히 기록하세요. 곡선이 계산한 Steady-State Velocity의 약 63.2%에 도달하는 시각을 찾아, 계산한 Time Constant와 대조하세요.

남길 결과

기록 항목과 확인할 점
m [kg]
예상 최종 속도 [m/s]
측정 속도 [m/s]
Time Constant [s]

확인할 점

  • 입력 힘 500을 중복 곱하지 않았는가?
  • 같은 b에서 질량 변화가 Steady-State Velocity보다 Time Constant에 영향을 주는가?

2. Motor 모델의 계수 비교

시작 조건

J=.01J=.01, b=.1b=.1, K=.01K=.01, L=.5L=.5. R∈{.5,1,2}R\in\{.5,1,2\} Ω를 비교하며 입력은 1 V입니다.

진행 방법

  1. G(s)=K(Js+b)(Ls+R)+K2G(s)=\frac K{(Js+b)(Ls+R)+K^2}를 만들고 0≤t≤100\le t\le 10 s 응답을 구하세요.
  2. 각 R에서 Pole·DC Gain·최종 출력값을 표에 적으세요.
  3. 전기 저항과 관성 계수가 식의 어느 항을 바꾸는지 설명하세요.

남길 결과

기록 항목과 확인할 점
R [Ω]
Pole
DC Gain
최종 속도 [rad/s]

확인할 점

  • 모든 조건에서 같은 J·b·K·L·입력을 사용했는가?
  • 장기 출력과 1 V×DC Gain을 비교했는가?

3. 측정한 응답에서 모델 추정하기

시작 조건

센서의 합성 Step 기록 y=1.8(1−e−t/3)+잡음y=1.8(1-e^{-t/3})+\text{잡음}입니다. 0≤t≤150\le t\le 15 s, 151점, 잡음 표준편차 .03, seed=7입니다.

진행 방법

  1. 제공된 측정 배열을 curve_fit의 목표값으로 사용하고, K(1−e−t/τ)K(1-e^{-t/\tau})의 K,τK,\tau를 추정하세요.제공된 step_measurements.csv를 읽고, 시작 코드의 fminsearch로 K,τK,\tau를 추정하세요. 추정 변수의 로그를 최적화하는 코드를 유지합니다.
  2. 전체 00–1515 s와 앞 00–33 s의 표본에 각각 같은 추정을 적용하세요. 구간별 사용 표본 수·추정한 K,τK,\tau를 표로 적으세요.
  3. 각 추정 곡선을 측정값과 같은 시간축에 그리고, 잔차는 측정값−추정값으로 그리세요. 곡선의 최종값과 잔차 형태를 근거로 더 측정하고 싶은 시간 구간 하나를 정하고 이유를 적으세요.

남길 결과

기록 항목과 확인할 점
기록 구간 [s]
추정 Gain
추정 Time Constant [s]
RMSE

확인할 점

  • 실제 측정처럼 합성 자료의 설정값을 모른다고 가정하고 추정했는가?
  • 기록이 짧을 때의 불확실성을 잔차 크기만으로 판단하지 않았는가?

공식 예제·데이터