- 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 - 종합 예제
바로 직전 강좌에서 이야기한 에니메인션을 시뮬링크에서 구현해보겠습니다. 사실 그리 깔끔한 방법은 아닙니다만,.ㅜ.ㅜ.... 뭐 간단해서요^^ 일단 카트형진자 시스템을 시뮬링크로 구현한 블럭(참조)에서
위 그림처럼 구현될 것인데요.
먼저 위에 표시된 부분은 Annotation으로 역시 한 번 이야기했었습니다.(참고글). 지금은
표시된 부분에 첫그림이 위치하도록 되어 있는데요
위의 코드가 삽입되어있습니다.
다음, 저 부분은 cart와 pole이라는 이름을 가진 fill로 채워진 box속성을 넣어줍니다. 이유는 function문은 외부변수를 참조할 수 없기 때문입니다. 그리고
위의 function에는
test1이라고 이름을 붙인 에니메이션을 실제로 구현하는 코드가 들어갑니다. 코드 내용은
function y = test1(pos_cart, theta, cart, pole) l = 5; r = 0.1; x_cart = [-1 -1 1 1]; updatedX_cart = x_cart + pos_cart; temp_x = [l*cos(3/2*pi+theta-atan(r/l)) r*cos(pi+theta) r*cos(theta) l*cos(3/2*pi+theta+atan(r/l))]; temp_y = [l*sin(3/2*pi+theta-atan(r/l)) r*sin(pi+theta) r*sin(theta) l*sin(3/2*pi+theta+atan(r/l))]; updatedX_pole = pos_cart + temp_x; updatedY_pole = temp_y; set(cart, 'Xdata', updatedX_cart); set(pole, 'Xdata', updatedX_pole,'Ydata', updatedY_pole); drawnow; y = 1;
입니다.
그리고, 시뮬레이션을 실행하면, 또 step size 어쩌는 워닝이 뜨는데요. 시뮬레이션 속도도 좀 조절할겸해서 파라미터를 약간 만져주죠. 위 그림에서 simulation메뉴의 Confi~~~어쩌는 곳에 가서
저 부분을
Fixed-step으로 간격은 0.01로 잡아줍니다. 그리고 시뮬레이션을 하면 --- 아... 아까 처음에 만든 annotation을 먼저 클릭하고, 다음 실행해야합니다. 그러면, 상황에 맞는 에니메이션을 보실 수 있습니다. 문제는 좀 느리다는 것인데요. 순전히 PC속도에 따라갑니다. 라고 말씀드리고 싶지만(ㅜ.ㅜ) 사실 에니메이션을 구현하도록 제가 소개한 방법이 시뮬링크에서 구현하기엔 너무 느리기 때문입니다...ㅜ.ㅜ 뭐 그래도 보시기에 지장은 없습니다....
'Software > MATLAB' 카테고리의 다른 글
[MATLAB 연재] 12. GUI 시작하기 (82) | 2010.04.21 |
---|---|
MATLAB figure 창의 변화하는 그래프를 동영상(avi)으로 녹화/저장하기 (36) | 2010.04.08 |
[MATLAB 연재] 11. LQR 툴박스를 사용하여 제어기 구현하기 (10) | 2010.04.07 |
[MATLAB 연재] 9. 애니메이션 구현하기 (42) | 2010.04.07 |
[MATLAB 연재] 8. 동역학 시뮬레이션 하기 (36) | 2010.04.07 |
[MATLAB 연재] 7. Function 문의 사용 (34) | 2010.03.31 |
RAND 함수를 이용하여 오차 생성하기 (24) | 2010.03.19 |