본문 바로가기

matlab

(91)
Rotary type Inverted Pendulum (로터리 역진자) 시스템 2009. 4. 17. 20:57 로터리 역진자 시스템은 여러가지 펜들럼 시스템중에서 구동부인 모터를 적용하기에 가장 편한 시스템입니다. 이유는 모터가 회전(물론 리니어 모터도 있지만)하는 놈이니까 그에 맞춰서 적절히 기어만 달아주면 되기 때문입니다. 그러나 로터리역진자는 그 폴이 넘어지는 방향이 직선이기 때문에 암과의 조인트부분을 좀 튼튼히 만들어줄 필요가 있습니다. 그렇게 하더라도 방향전환시 카트형에 비하면 접선 방향으로 좀 많은 충격이 나타납니다. 또한 로터리 펜들럼은 카트형에 비하면 상대적으로 작은 크기로 만들어 낼수도 있습니다. 위의 그림을 보면 폴(Pole)이 있고 그 각도를 측정하는 엔코더가 있습니다. 쓰러지는 폴을 잡기 위해서 암(Arm)이 있고 암을 구동하는 엔코더 내장형 모터가 있습니다. 제어의 용이성을 위해 폴 반대편..
Embedded Block을 이용해보자. 2009. 4. 15. 22:35 MATLAB/Simulink로 각종 시뮬레이션을 하다보면, M-File을 직접 입력해야만 하는 상황이 꼭 오게 되는데요. 희한하게도 간혹 MATLAB 유저들중에는 Simulink 블럭만으로 이를 해결할려고 하는 경향을 가지고 있는걸 보게 됩니다. 전 잘 모르겠는데, 아주 실행시간이 많이 걸리는 코드의 경우 Simulink로 시뮬레이션을 해야하는 상황이라면, Simulink로만 블럭을 꾸밀수록 그 실행속도가 빨라진다고들 하더군요. 이건 미확인입니다. 말씀드렸듯이 전 잘 모르겠습니다. ^^. 그런데, 대부분은 그렇게 해결이 또한 가능하긴 하죠. 먼저 몇몇개의 Function 블럭을 보면, 위 function블럭은 fcn 블럭이라고 하는데요. MATLAB의 수학함수들을 가지고 위의 예시처럼 꾸밀 수 있습니다...
MATLAB/Simulink 기동시 읽기나 쓰기 실패(에러)하는 경우 2009. 4. 15. 05:00 MATLAB/Simulink는 기본적으로 영문윈도에서 구동되도록 되어있다네요... 그래서인지 Simulink 화일의 쓰기 오류가 발생하는 경우는 컴퓨터이름이나 혹은 윈도 계정이 한글로 되어있는 경우 발생합니다. 보통 이 에러를 한번이상 만나서 고생하신 분들은 컴을 포맷할 때 컴퓨터 이름을 한글이 아니라 영어로 적게 되는데요. 만약 한글로 된 컴퓨터 이름이나 계정이라면 일단 bdclose; slCharacterEncoding('ISO-8859-1'); 이 명령어로 해결을 시도해봅니다. 단점은 다음에 컴을 포맷하고 다시 MATLAB을 설치할때 다시 저렇게 명령어를 계속 입력해야하는 불편함이 있지요. 그래서 그냥 컴퓨터 이름을 영문으로 하시는것도 좋습니다.^^ 그러나 가끔 이전에 한글로된 컴퓨터 이름이나 혹은..
미분(차분) 및 적분하기 2009. 4. 15. 04:56 MATLAB에서 미분(차분) 및 적분하는 간단한 코드를 소개하겠습니다. 어떤 형태든 계측기를 사용하든지 하면 ADC든 혹은 해당 계측기의 통신방법을 통해 데이터를 받게 됩니다. 이때, 미분-디지털값이 들어오니까 엄밀히 말하면 차분-과 적분을 수행하게 됩니다. 이를 MATLAB에서 간단히 수행해 보겠습니다. 먼저 대상 함수를 만들어야 할테니 간단히 y = sin(omega * t)를 대상으로 하겠습니다. 이때 샘플타임을 10ms로 하죠. ts = 0.01; t=0:ts:10; omega = pi/5; y = sin(omega*t); 이제 미분해 보겠습니다. MATLAB 명령어 " diff " 를 사용할 겁니다. 이는 단순히 앞선값에서 바로 뒤의 값을 빼는 것입니다. 차분을 할려면 그 상태에서 샘플 타임으로..
sptool을 이용한 간단한 필터적용법 (filter) 2009. 4. 15. 04:04 MATLAB에서 Filter를 간단히 적용할 수 있는 툴박스가 있습니다. 바로 sptool이죠. 필터적용을 간단히 할 거라면 꽤 유용한 툴입니다. 간단히 sptool 라고 command창에서 입력하면 되죠. 그러면 이와같은 창이 뜹니다. 별도의 신호를 등록해서 filtering할 테니, file 메뉴를 선택하고 import를 선택하면 와 같은 창이 뜨구요... 거기서 신호를 선택하고 그 신호의 샘플주파수를 설정해주면 됩니다. 지금은 그냥 툴박스가 제공하는 예제신호를 가지고 하죠 첫번째 그림의 첫번째 신호를 선택하면 view를 통해보면 신호가 보입니다. 이를 필터에 적용시키기 위해 표시된 edit를 누립니다. 물론 원하는 필터를 선택해야겠지만. 지금은 lowpass필터를 적용해보죠 edit를 누르면 나오는..
cftool 명령으로 Curve Fitting 간단히 하기 2009. 4. 15. 03:59 cftool 위의 저 명령이 curve fitting 툴박스 명령어입니다. 간단하게 사용할때 아주 유용하지요^^ 그냥 정말 초간단하게 커브피팅을 해 보겠습니다. 먼저 커브피팅할 예제가 있어야겠네요 시간간격마다 임의의 직선스러운 놈을 하나 만들겠습니다. 이제 "cftool"이라는 명령어를 사용합니다. 그러면 위와 같은 그림이 나타나는데 표시된 Data라는 버튼을 눌러 데이터셋을 등록시켜야합니다. 저기서 X, Y를 등록시키면 이렇게 됩니다. 그리고 Create data set 버튼을 눌러줍니다. 그러면 데이터가 등록된 것이 보일것입니다. 이제 저 창을 닫고 다시 본래의 창으로 가서 Fitting을 누릅니다. 새로 뜬 창에서 New Fit을 누릅니다. 그러면 어떤 방식으로 할 것인가가 나오는데 여러 복잡하고 ..
Figure에서 Legend사용시 아랫첨자 구현하기 2009. 4. 15. 03:49 먼저 위 그림을 보면 우상단에이렇게 그림이 나와있는 것을 볼것입니다. 아랫첨자죠?^^ 저 legend를 구현한 것이 아래 명령입니다. 별다른 설명이 없어도 바로 아실듯^^ legend('u_{psi}', 'u_{theta}', 'u_{phi}'); 이 글은 제 이전 홈페이지에 2008년 7월 6일 올렸던 내용입니다. 티스토리로 이전하면서 몇몇 글들을 이렇게 옮기고 있습니다.
Simulink에서 Annotation 사용하기 2009. 4. 15. 02:52 물론 안써도 무방하지만, 사용하면 폼도 나고 어떤 경우는 생각보다 편리하기 시뮬링크를 꾸밀수 있는 도구가 Annotation입니다. 시뮬링크에서 새창을 만들면 순백색 하얀 도화지가 나오죠...^^ 여기서 삽입할 장소를 선택하고 그 위치에서 더블클릭을 하면 이렇게 됩니다. 거기다 원하는 글자를 넣어보죠 그리고 오른쪽 버튼을 누르면 "Annotation Properties"라는 메뉴가 나타납니다. 그걸 눌러보면 이런 창이 하나 나오죠 "Drop Shadow"라는 기능은 이렇게 그림자 효과를 보여주고 "Font"라는 기능은 이름 그대로 폰트선택과 글자색 크기를 지정할 수 있습니다. 밑에 창에 명령어를 주면 Annotation을 클릭하면 실행되요. 워크스페이스에 실행된 결과가 보이죠?^^ 역시 뭐 꼭 필요한건 ..

반응형