- MATLAB
- 1. MATLAB 각 Window 사용법
- MATLAB
- 3. 데이터의 3D 출력
- MATLAB
- 4. 조건문 및 반복문의 사용. 에러대비
- MATLAB
- 5. Simulink의 기초
- MATLAB
- 6. Simulink의 기초 2
- MATLAB
- 7. Function 문의 사용
- MATLAB
- 8. 동역학 시뮬레이션하기
- MATLAB
- 9. 애니메이션 구현하기
- MATLAB
- 13. GUI - Slider 사용하기
- MATLAB
- 16. GUI - 종합 예제
동역학 방정식 !
이떤 사물(혹은 시스템)을 역학적으로 해석해서 미분방정식의 형태로 표현한 것을 동역학 방정식이라고 합니다. 실제로는 참 복잡한 형태를 가지게 되지만, 우리는 그저 간단히 어떻게 동역학을 유도하는지는 생략하교(^^) 어떻게 MATLAB에서 시뮬레이션할 것인지를 이야기해보겠습니다. 이미 이전에 카트형 진자시스템에 대한 이야기를 했었는데요.
이때 사용한 동역학방정식
을 이용하겠습니다. 일단 위 식을 그대로 simulink로 꾸미면, algebraric loop가 있다는 warnning을 보게 됩니다. 왜냐면, 자기자신을 참조(ddot_x, ddot_theta)하기 때문이지요. 그래서 최고차 미분항으로 정리할 필요가 있습니다.
간단히 행렬로 표현하고, 역행렬을 이용해서 위와 같이 정리할 수 있습니다.
그리고, 역행렬을 구해버리면
끝나는 거지요. 여기서 몇몇 파라미터는 예전에 제가 사용한 것으로 고정하고
위 식에서
를 대입하여 정리하면
를 얻을 수 있습니다. 여기서 실제로는 저렇게 수치화시키지 않습니다. MATLAB/Simulink에서 변수로 사용할 수 있도록 하는데요. 우리는 그저 연습이니, 빨리(^^) 구현할 수 있도록 그냥 숫자로 모두 표현해버린 것입니다.
Simulink로 동역학 표현 !
사람들 마다 사용하는 목적이 다르겠지만, simulink는 이런 경우 미분방정식을 풀기 위해서 사용한다고 말할 수 있습니다. 그만큼 미분방정식의 형태로 표현되는 동역학 방정식의 구현에 큰 장점을 보이는데요.
이전의 시뮬링크기초에 관한 글(참조1, 참조2)을 참조하셔서 위의 형태로 꾸며주면 됩니다. 위에 표시된 부분은 제어입력 F인데, 지금은 제어입력을 구현하지 않으므로 '0'을 인가하면 됩니다.
위에 표시된 부분은 ddot_x인데요. 동역학과 잘 비교하시면 됩니다.
그래서 위와 같이 넣어주시고요.
위에 표시된 부분은 ddot_theta로서
로 구현하시면 됩니다.
저부분은 theta의 초기치를 넣는 부분입니다. 초기치를 주지 않으면, 시뮬레이션 하면 가만히 '0'의 상태에 머물러 있는것을 볼 수 있거든요. 그래서 좀 움직이라고, 초기치를 줘야죠.
simulink내부는 라디안단위이기 때문에 10도의 초기치를 위와같이 표현해서 넣어둡니다.
그리고, 위 gain은 라디안으로 각도를 관찰해야해서 좀 불편하니까 Scope에서는 도의 단위로 확인할 수 있도록 변환하는 것입니다.
그리고, 시뮬레이션을 시작해서 결과를 확인하면
이렇네요. 그냥 진자를 어떤 각도에 두고 자유운동을 시켜본겁니다.^^
'Software > MATLAB' 카테고리의 다른 글
[MATLAB 연재] 11. LQR 툴박스를 사용하여 제어기 구현하기 (10) | 2010.04.07 |
---|---|
[MATLAB 연재] 10. 애니메이션을 이용한 동역학 시뮬레이션하기 (26) | 2010.04.07 |
[MATLAB 연재] 9. 애니메이션 구현하기 (42) | 2010.04.07 |
[MATLAB 연재] 7. Function 문의 사용 (34) | 2010.03.31 |
RAND 함수를 이용하여 오차 생성하기 (24) | 2010.03.19 |
[MATLAB 연재] 6. Simulink의 기초 2 (64) | 2010.03.17 |
[MATLAB 연재] 5. Simulink의 기초 (78) | 2010.03.16 |