mindstorms_with_matlab_logo.png



안녕하세요? 교주 LGS입니다. o(^o^)o

MATLAB과 Mindstorms를 신나게 가지고 놀고 계신가요? ㅋ

이번 강좌에서는 실시간으로 MATLAB에서 마인드스톰을 조작는 방법과 마인드스톰의 데이터를 MATLAB로 읽어 들이는 방법에 대해서 설명하겠습니다.

마인드스톰의 Intelligent Brick에는 기본적으로 Bluetooth 모듈이 탑재 되어있습니다.

이 블루투스 모듈을 통해 무선으로 실시간으로 컴퓨터와 인텔리젼트 브릭이 통신을 할 수 있다 거거죠~ ^^

블루투스를 통해 컴퓨터 뿐만 아니라 다른 Intelligent Brick과도 통신이 가능합니다.

차근차근 따라하시면 전혀 어려움이 없으니 잘 따라오세요~


우선 윈도의 시작버튼 -> 장치 및 프린터를 클릭하여 아래 칭을 띄웁니다.


communication01.png 


왼쪽 위의 "장치 추가" 버튼을 눌러 주세요~

그러면 주변장치가 검색이 되고...


communication02.png 


검색된 주번 장치중 마인드스톰 Intelligent Brick의 이름을 선택후 다음을 클릭합니다.

(저는 Mindstorms with MATLAB - Getting Started 강좌때 인텔리젼트 브릭의 이름을 LGS로 바뀌어 놓아서 LGS로 떴습니다. 

기본적인 셋팅을 건들이지 않으셨다면 NXT로 뜰겁니다.)


communication03.png 


다음 화면에서 [장치의 연결 코드 입력]을 클릭합니다.

Intelligent Brick을 보시면 기본 연결코드가 1234로 되어 있는 것을 보실 수 있습니다.

communication07.png


코드를 입력하는 곳에 1234를 입력하고 다음을 클릭하세요.

communication08.png


컴퓨터가 인텔리젼트 브릭과 연결을 시도할 때 마인드스톰 Intelligent Brick의 주황색 버튼을 손으로 누릅니다.

연결이 정상적으로 되었다면 최종적으로 NXT가 올바른 장치로 등록이 된 것을 확인할 수 있습니다. 


communication05.png 



자~ 이제 Simulink Model을 통해 실시간으로 Simulink와 인텔리젼트 브릭이 통신을 하는지 확인해보자구요~ o(^o^)o

아래와 같이 Simulink Model을 구성해주세요~


communication09.png


LEGO Mindstorms NTX에서 제공하는 Servo 모터에는 incremental encoder(증분형 엔코더)가 내장되어 있어 모터의 각도를 알수 있습니다.

Simulink Encoder 블럭은 모터의 각도를 읽는 블럭이구요 각도는 라디안이 아니라 degree 각도로 값을 돌려줍니다.

LCD 블럭은 Intelligent Brick의 LCD에 값을 표시해주는 블럭이구요~

Scope로 모터의 각도를 실시간으로 그래프로 볼 수 있습니다.

그리고 [To Workspace] 블럭으로 Encoder 값을 MATLAB Workspace에 저장해보겠습니다. ^^

[To Workspace] 블럭을 더블 클릭하셔서 Save format을 Structure Withe Time으로 변경해주세요


communication10.png


Signal Builder 블럭으로 모터를 돌리는 시그날을 만들어 보겠습니다. 

(Signal Builder 블럭은 Simulink Library Browser의 Sources 항목에 있습니다.)

Signal Builder 블럭을 더블 클릭하면 Signal을 손쉽게 만들수 있는 Signal Builder 창이 뜹니다.


communication11.png


사각파로 모터를 돌려볼께요~ o(^o^)o

Signal Builder의 메뉴에서 Signal -> Replace with -> Square... 를 선택하시고


communication12.png


위와 같이 Setting 하고 Signal을 만들겠습니다. 각 항목의 의미는 숫자를 바꾸어 가면서 Signal을 만들어 보면 금방 파악하실 거예요~


communication13.png


얼마 동안 컴퓨터와 통신을 할 것인가하는 Running Time도 원하는 값으로 변경해주시면 됩니다. (저는 10초간만 통신을 해보겠습니다.)

계속적으로 Intelligent Brick과 통신하시려면 10.0 부분을 Inf로 바꾸어 주시면 되요


자~ 이제 지난시간에 보셨듯이 Menu -> Tools -> Run on Target Hardware -> Prepare to Run.. 을 클릭하시면

legodemo11.png


설정창이 뜨구요~ 이번에는 Enable External mode를 체크해주세요~

COM port는 자동으로 하셔도되고 만약 연결이 원하지 않다면 Manual로 바꾸셔서 COM Port를 직접 지정해주셔도 됩니다.

연결 COM Port는 제어판의 장치관리자에서 확인 가능하시구요~

communication06.png 


OK버튼을 눌러서 위의 설정창을 닫으시고  다시 Simulink에서 Menu -> Tools -> Run on Target Hardware -> Run을 클릭하시면

자동으로 Simulink 모델이 LEGO 마인드스톰에 맞게 Compile되어서 Intelligent Brick으로 Upload되게 됩니다. (Embedded coder)


legodemo09.png


모터를 손으로 이리저리 돌려 보세요~ o(^o^)o

10초간의 Running time이 끝나고 Scope를 더블 클릭하여 열어보면...


communication14.png


Encoder 값을 Simulink에서 확인할 수 있습니다.

그리고 MATLAB Workspace로 가보시면 Simout으로 Encoder 값이 기록된 것을 볼수 있어요~



다음 시간에는 이번 강좌를 바탕으로 Step Input에 대한 Motor 데이터를 획득해서 Parameter Estimation 해보고

Identified 된 System을 가지고 모터 각도를 Control 해보도록 하겠습니다. ^^

다음시간에 뵈요~ 뾰로롱~


profile