레고 마인드스톰의 기원에 대해서 함 조사해 보았다. 


Seymour Papert 는 1980년에  Mindstorms: Children, Computers, and Powerful Ideas 이란 책을 발간했다.
Papert는 수학자와 교육자로서 아이들이 컴퓨터를 이용하여 자연적인 지식과 툴들을 가지고 기계들의 동작원리를 구현할 수 있도록 돕는 것에 관심이 많았다. 
이런 노력의 결과로 책을 쓰게 되었다. 나중에는 이 책의 이름을 따서 레고 마인드스톰이 불려지게 되었다.

Papert은 사실 심리학자 Jean Piaget의 학생이었다. Piaget는 당시 아이들에게 수학과 물리을 가르치는 기존의 교육 방식에 비판적인 생각을 하고 있었다. 
지식과 정보는 다른 것이고, 아이들의 심리적인 저항을 무시하는 교육이론은 실패한다고 주장했다. 
그의 영향을 받은 Papert는 여기에 'Media'의 역할을 중요하게 여겼다. 

이런 이론을 constuctionism (교육학에서는 구성주의라는 단어로 번역되어 사용하고 있다. 건설적이라는 표현을 쓰는 곳도 있다.)라고 한다.
물리적 환경에 미디어를 통해서 지식을 실현할 수 있는 것을 생각했다. 즉, 어떤 실체가 있고, 그 실체를 만들어가면서 개념을 이해하는 것이라 생각했다.
실체를 Construction set(레고 블럭 같은 것)이라 불렀고 지식을 쌓아가는 인지구조적인 능력을 어떠한 Media를 통해서 만들어낼 수 있음을 믿었다.
이런한 개념은 컴퓨터계에서는 아주 유명한 Alan Kay 에게 영향을 미치게 되었고, PC가 만들어지는 데 큰 영향을 주게 되었다.

Papert는 또한 관찰을 통해서 아이들은 어렸을때 재미있게 집중력있게 잘 알려줄 수 있다면, 빨리 배울 수 있다고 확신했다. 외국어인 프랑스어를 가르치면서 효과를 발휘하면서 확신을 가졌다.

그래서 LOGO 라는 프로그래밍 언어를 만들었고, 그것을 이용해서 그림을 그릴 수 있는 로봇 거북이를 Mathland 라는 제품으로 만들었다.

LOGO 라는 언어는 Media를 이용해서 실체인 거북이를 움직하게 하거나 그림을 그리도록 하는 것이었다. 

이 제품은 Papert가 MIT에서 교육용 프로젝트에 참여할 때 큰 도움이 되었다. 그는 MIT의 인공지능 연구소의 공동 설립자가 되었는데, 얼마 안가 Media 랩으로 바뀌게 된다.
레고는 바로 Media 랩으로부터 마인드스톰을 전수받게 되고 지금의 모습으로 연결된 것이라 할 수 있다. 

LOGO는 사고를 의식화시키는 것을 제공하고 아이들에게 자연스러운 학습 환경이 무엇인지 알려줄 수 있었다. 
계획했던 대로 눈으로 확인할 수 있는 직관력, 흥미 유발과 학습의 효과를 중요시 여김으로서 수학과 물리 학문에 대해서 재미를 느끼게 하려고 노력했다.
(LOGO는 LISP 언어로부터 영향을 받고 SmallTalk와 Etoys, 스크래치 언어에 영향을 주었다.)

지금의 레고 마인드스톰 제품 NXT 2.0(NXT-G)은 Seymour Papert의 철학을 그대로 담아내고 있다.  


 

http://www.papert.org/
http://en.wikipedia.org/wiki/Mindstorms:_Children,_Computers,_and_Powerful_Ideas
http://www.wired.com/geekdad/2007/03/the_origins_of_/
http://en.wikipedia.org/wiki/Construction_set
http://www.medientheorie.com/doc/papert_mindstorms.pdf
http://www.mathnet.or.kr/mathnet/kms_tex/982345.pdf
http://web.edunet4u.net/~javamath/
http://www.google.co.kr/url?sa=t&source=web&cd=11&sqi=2&ved=0CHcQFjAK&url=http%3A%2F%2Fwww.kice.re.kr%2Fko%2Fdownload.do%3Fattach_id%3D12816&rct=j&q=Mindstorms%3A%20Children%2C%20Computers%2C%20and%20Powerful%20Ideas.%20%20%EB%B2%88%EC%97%AD&ei=pCpuTs_nJrLKiALPno2kDg&usg=AFQjCNHVATkzEt2ixkSs5ET6QF7KZhTnaw&cad=rja
Mindstorms: Children, Computers, And Powerful Ideas 책

Posted by '김용환'
,


내가 소개할 레고 마인드 스톰은 개발자 뿐 아니라 학생들에게 재미를 줄 뿐 아니라 새로운 경험을 할 수 있는 장난감이라는 생각이 들었다. 또한 교육용으로 아주 좋은 제품이라 생각되어 소개를 한다. 
짧은 2달 동안 직접 마인드 스톰을 2달 정도 만지막 거리고 안드로이드 폰을 이용해서 마인드스톰을 control하면서 가졌던 지식과 소감을 얘기하고자 한다.


사용자 삽입 이미지



마인드스톰의 시작은 MIT Media 연구소에서 시작되었다. 로봇 개발 시스템 키트라 해서 하드웨어와 소프트웨어를 이용한 셋트로 개발되었다. 당시에 프로그래밍은 Z80처럼 생긴 Brick이라는 보드에서 개발하였다

IMAGE Imgs/index02.GIF


교육 자체가 너무 어렵기 때문에 Visual 툴로 개발할 필요성이 생겼고,  연구와 교육적인 목표로 해서 콜로라도 대학에서 만들게 되었다. Interactive한 기계, 즉 센서를 통한 이벤트를 사람에게 전달하고 그 이벤트를 사람이 쉽게 처리하게 하는 기능을 가지는 것을 개발하려고 했다.
 

IMAGE Imgs/index06.GIF

이툴의 이름은 Virtual Brick이라는 툴로서, 사람이 센서나 모터를 하나의 Component로 지정하고 내가 원하는 프로그램을 할 수 있응 기능을 제공하였다.

IMAGE Imgs/index10.GIF

즉, Interactive하게 할 수 있도록 하는 철학이 반영된 것이다. 
이 단순한 모델의 최초 철학은 지금까지도 잘 전달되었다. 
 



처음 제품이름은 Mindstorms Robotics Invention System kit 이었으나, Lego로 팔리면서 NXT 라고 불리워졌다. 최신 키트는 2009년 8월에 시판된 NXT 2.0으로 NXT와는 조금 다르다. 


 

NXT 2.0의 구성품은 울트라 소닉 (약 2,3미터에 있는 물질을 파악) 센서, RGB 컬러 센서, 2개의 터치 센서, 3개의 모터, 블루투쓰를 지원하는 NXT Bricks 그리고 조립 가능한 brick으로 구성되어 있다.





이 것을 이용해서 로봇을 만들 수 있다. CD에서는 4가지의 로봇 예제를 제공하고 쉽게 만들 수 있다.




4개의 예제로 끝나지 않고, 인터넷을 이용하면 많은 사람들이 자신이 만들었던 예제들을 공유하고, 유투브를 통해서 자신이 만든 것들을 만들어 볼 수 있다. 

대표적인 싸이트는 다음과 같다. 
http://us.mindstorms.lego.com/en-us/community/NXTLog/default.aspx
http://nxtprograms.com/index2.html


레고 마인드스톰은 기존에 사용하던 블럭을 쓰지 않는다. 
 

레고의 단순한 브럭이 아닌 로봇에 맞는 블럭을 이용해서 조립한다는 점에서 로봇에 대한 신선한 경험을 할 수 있다는 것이 매우 새롭다.기존의 블럭이 장난감이라면 레고 마인드스톰의 블럭은 조금 더 산업적으로 연계할 수 있는 장난감이라고 생각이 든다. 다시 말하면 기존의 블럭은 수직이나 수평과 가까운 직선이라면 레고 마인드 스톰의 블럭은 원처럼 자유도는 높지 않지만 길다란 타원의 느낌으로 자유도를 제공한다. 

* 레고 마인드스톰 블럭으로 마든 iphone4 거치대



 

또한  가장 재미있는 점은 프로그래밍이 굉장히 쉽다. 원래 Interactive한 교육용으로 만들어졌던 탓의 그 배경이다.  NXT 2.0안에 들어가 있는 NXT-G라는 툴은 상당히 흥미롭다. NXT-G는 Visual 툴(일종의 저작도구)로서, 프로그래밍 언어를 모르는 사람이 쉽게 프로그래밍을 할 수 있다. 처음에는 텍스트가 아니라 그래픽툴이라 눈에 들어오지 않아서 안쓰려고 했지만, 점차 단순하게 느껴지고 재미가 붙을 수 있다.

Interactive 상에서는 보면, 어떤 것을 센싱했을 때, 어떤 일을 하라고 인간이 지시하는 모델을 따르고 있는데.
사실 이 원칙에 충실하다.


* 레고 마인드 스톰 NXT 2.0 CD에서 제공하는 NXT-G 저작도구 툴



어떤 상황은 if로 만들어지고, 어떤 일을 하라는 것은 명령(action)으로 이어질 수 있다.

센서 포착 -> 모터 동작



계속 이 동작을 하게 하는 것은 for로 할 수 있는데. 이 원칙에 따라서 어플을 개발할 수 있다. 

NXT-G는 그냥 컴포넌트를 놓고 연결만 하면 동작하는 구조로 되어 있다. 
Action 컴포넌트의 속성에 대해서도 쉽게 지정할 수 있다. 울트라 소식 센서의 경우는 센싱의 길이를 1m에서 10cm로 줄일 수 있도 있다.  

개발자는 if 문이나 for 문, 모터나 센서를 지칭하는 component들이 눈에 보이고 쉬워보인다. 

아이들이 접근할 때는 c언어를 가르켜 주는 것은 어쩌면 처음부터 어려운 숙제를 주는 것은 아닐까 생각이 든다. 단순히 특정 동작에 대한 집중력만을 가르켜 주는 것이 배우는 데 확실한 방법이 된다. 

NXT-G외에도 수많은 툴이나 언어를 이용하면 NXT 2.0을 구동할 수 있다. 

- LabVIEW Toolkit
- Lego::NXT
- Ada
- Next Byte Codes & Not eXactly C
- RobotC
- NXTGCC
- URBI
- leJOS NXJ
- nxtOSEK
- MATLAB and Simulink
- Lua
- FLL NXT Navigation
- ruby-nxt
- Robotics. NXT
-  Microsoft Robotics Studio Developer Center 


Robolab도 NXT-G처럼 개발이 가능하다. 

사용자 삽입 이미지



주목할 점은 자바(leJOS NXJ)를 이용해서 개발이 가능하다는 점이다.  
이클립스위에 Plugin을 설치하면 자바로 쉽게 개발할 수 있다. 






이를 이용해서 NXT 장치를 내가 원하는 자바 프로그래밍을 쉽게 할 수 있다.  Runtime jar 와 jvm이 내려받게 해서 동작하게 한다. 
다른 언어나 툴도 비슷하게 쉬운 인터페이스와 API를 제공해서 원하는 프로그램을 짜게 할 수 있다. 
레고 마인드 스톰이 API 하나는 정말 쉽게 개발했다는 점이 주목할 만 한다.
(사용자가 사용하는 API는 단순한만큼 내부 구현은 엄청 힘들었으리라 생각이 되긴 한다.)

이런 언어적인 특성뿐 아니라 더 큰 장점이 있다. 

NXT-G cross compiling, image uploading이라는 부분이 너무 편하다는 것이 있다. NXJ는 이미지 업로딩이 편했다. NXT-G에 아래 화살표로 된 버튼을 누르면 크로스 컴파일된 어플리케이션을 이미지화해서 다운로드 하는 점이다. 

MINDSTORMS SOFTWARE DEMO


(나는 전 직장에서 셋탑박스와 모바일 기기의 소프트웨어를 개발하는 일을 하고 있었는데, 임베디드 기기에 많이 싫증나있었다. 무한 반복 컴파일, 굽기는 사람을 코딩의 세계로 보여주지 못하고 노가다나 시간과의 싸움을 알려주었다. 레고 마인드 스톰을 보니.. 이거 완전 물건이라고 생각이 되었다. 왜 이런 생각을 못했을까 하는 생각이 들었다..)

레고 마인드스톰 NXT 2.0의 콘트롤러는 ARM7 계열의 프로세서(atmel)를 탑재하고 있기 때문에 작업 PC의 환경과 다르기 때문에 cross compiling이라는 작업을 거치고 이미지 다운로드 작업(일명 굽기)을 해야 한다. 
그러나, 이런 과정을 상큼히 제거하고 쉽게 구축할 수 있다. 이것은 레고 사의 정말 탁월한 선택이라고 생각한다. 


NXT 2.0은 블루투쓰를 지원하는데, 노트북뿐 아니라 안드로이드 폰에서 NXT 장비를 콘트롤 할 수 있다. 아이폰도 가능하다고 하지만, API의 제약사항때문에 힘들다고 한다. 안드로이드 마켓을 가보면 많은 어플이 있다. 또한 소스도 공개한 안드로이드 어플이 있으니. 공부하기도 쉽다.

적외선과 달리 블루투쓰로 상당히 빨리 통신할 수 있어서 좋았다. 내가 원하는 데로 콘트롤을 하는 재미가 솔솔했다. 
 

* 노트북에서 블루투스를 이용해서 NXT를 콘트롤


* 안드로이드에서는 블루투스를 이용해서 NXT를 콘트롤 

예제 1) 패드 다루듯이 NXT 콘트롤
Screenshot of NXT Remote Control


예제 2) 중력 센서를 이용해서 NXT 를 콘트롤


(동영상)  안드로이드 중력 센서를 이용해서 마인드스톰을 콘트롤하는 동영상
http://www.youtube.com/watch?v=L-ff_s5lF3Y






마인드스톰의 콘트롤러를 살펴보자. 프로세서는 두개가 있다. IO를 위한 보조 프로세스를 달아놓아 속도의 향상을 높이려는 시도가 보인다. 


Main processor: Atmel® 32-bit ARM® processor, AT91SAM7S256
- 256 KB FLASH
- 64 KB RAM
- 48 MHz
 
Co-processor: Atmel® 8-bit AVR processor, ATmega48
- 4 KB FLASH
- 512 Byte RAM
- 8 MHz
 
Bluetooth wireless communication CSR BlueCoreTM 4 v2.0 +EDR System
- Supporting the Serial Port Profile (SPP)
- Internal 47 KByte RAM
- External 8 MBit FLASH
- 26 MHz
 
USB 2.0 communication Full speed port (12 Mbit/s)
 
4 input ports 6-wire interface supporting both digital and analog interface
- 1 high speed port, IEC 61158 Type 4/EN 50170 compliant
 
3 output ports 6-wire interface supporting input from encoders
 
Display 100 x 64 pixel LCD black & white graphical display
- View area: 26 X 40.6 mm
 
Loudspeaker Sound output channel with 8-bit resolution
- Supporting a sample rate of 2-16 KHz
 
4 button user-interface Rubber buttons
 
Power source 6 AA batteries
- Alkaline batteries are recommended
- Rechargeable Lithium-Ion battery 1400 mAH is available
 
Connector 6-wire industry-standard connector, RJ12 Right side adjustment
 



나름 훌륭한 제원인데 반해, AA 밧데리 6개가 늘 필요하다는 점, RJ12 잭을 필요로 하면 사야한다는 점이 불편하다. Extreme NXT  라는 외국 서적에는 RJ12 잭을 만드는 법이 나와 있으니. 그 책을 보고 만드는 것도 좋을 것 같다. 







마인드스톰은 개발 싸이트에서는 제공하는 다양한 개발 툴킷을 제공하기 때문이다. 
블루투쓰뿐 아니라 하드웨어, 소프트웨어 (모바일, 오픈소스 펌웨어)개발 킷을 제공해서 마음껏 원하는 동작을 가능케 한다. 또한, 하드웨어 제원까지도 모두 공개하여 원리를 이해할 수 있도록 제공하고 있다. 




테스트를 하다보면, 재미있는 것이 있는데, 멀티태스킹과 같은 괜찮은 기능을 가질 수 없는 부분이 있다. 펌웨어의 단점이기도 한데, 이때는 운영체제를 탑재시켜 멀티태스킹과 같은 비싼 동작을 시킬 수 있다. 

leJOS (http://lejos.sourceforge.net/index.php) 나 오래 전에 deprecated된 brickOS(http://brickos.sourceforge.net/) 을 이용해서 내가 원하는 기능을 더 수월하게 하거나 나만의 OS를 만들 수 있다.

(brickOS에 대한 관련자료 
http://heehiee.codns.com:9000/060611/0_%B8%B6%C0%CC%C5%A9%B7%CE%BC%D2%C7%C1%C6%AE%C0%E2%C1%F6/2001/2%BF%F9%C8%A3/%C6%AF%BA%B0%B1%E2%C8%B9/%B8%B6%C0%CE%B5%E5%BD%BA%C5%E8%BF%EB%BF%EE%BF%B5%C3%BC%C1%A6_LegOS%BA%D0%BC%AE/0102-370.pdf)


지금까지 정리한 NXT의 장점과 단점을 얘기해본다.


<레고 마인드스톰 NXT 2.0 의 장점>
0. 신기한 마인드스톰의 블럭
  (기존의 블럭과 차원이 다른 블럭)
1. 쉬운 API
   (내부적으로는 복잡한 로직은 잘 감쌌는 소리)
2. 포팅의 편이
  (Development kit를 제공해서 확장성을 높여, 하드웨어 확장성이나 소프트웨어 확장성이 커짐)
3. 블루 투스 지원
4. 이미지 다운로딩이 간결함
5. 다양한 개발 툴킷과 문서를 지원

단점
1. 가격이 비싸다.
2. AA 밧데리를 항상 필요 6개
  (밧데리 비용이 나갈 수 있다.
3. 확장을 위한 부속 부품(센서나 모터,RJ)등이 비싸다.
  중력센서는 10만원, 바퀴는 1만원..
  


마지막으로 레고 마인드스톰을 이용한 데모들을 소개하고자 한다. 
레고를 이용해서 프로토타입을 개발할 수 있고, 장난감으로 사용할 수 있다. 


<그림> 레고 마인드스톰을 이용한 프린터




<그림> 레고 마인드스톰을 이용한 스케치

동영상은 http://www.youtube.com/watch?v=_ogQuLdEcBY&feature=related 




<동영상> 레고로 만든 공장



<동영상> 레고로 만든 공장
http://www.pandora.tv/category.ptv/video/category/c1/05/c2/0078/ch_userid/kogijowa/prgid/42896612


<동영상> 공장을 어떻게 구현했나에 대한 이야기
http://serviceapi.nmv.naver.com/flash/NFPlayer.swf?vid=BBBE73FFD5AF48AB5A3044ADD437F69A4D81&outKey=V125b12203c64efbf8cdbf22ddf79b69b594e521c0607c4f6f368f22ddf79b69b594e



<그림> 자작 위성에 사용



<동영상> 스도쿠 문제 풀기
http://www.youtube.com/watch?v=Mp8Y2yjV4fU



<동영상> 자동차 자동차
http://www.metacafe.com/watch/429097/mobile_phone_bluetooth_remote_controlled_lego_mindstorms_nxt_rov/


<동영상> 마인드스톰 광고
http://www.youtube.com/watch?v=xuk9Ei5PbXk




<동영상> 다리 만들고 건너가기
http://youtu.be/1pslLoNkiL0






* 참조 싸이트

http://l3d.cs.colorado.edu/systems/legosheets/Home.html
http://blog.naver.com/PostView.nhn?blogId=tygermask&logNo=30103186978
http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT_2.0
http://electoy.tistory.com/47
 



Posted by '김용환'
,


NXT-G 설치 프로그램 이후에 새로운 것을 만들기 위해서 다른 싸이트에 접속하지 않아도 된다.
레고 마인드 스톰 싸이트에 접속해서 테스트할 수 있다.


http://mindstorms.lego.com/en-us/support/buildinginstructions/8547-/Bonus%20Model%201.aspx
 




8547- Bonus Model #7 by Fay Rhodes

 
 

 

이거 외에 다른 사람들이 만든 자료들을 보려면 다음의 싸이트에 접속해서 본다.
(멋있는 작품들이 많이 있음)


 http://us.mindstorms.lego.com/en-us/Community/NXTLog/DisplayProjectList.aspx
Posted by '김용환'
,

공장을 만들기 전에 미리 프로토타입으로 만들어서, 레고 마인드스톰으로 테스트해본다고 한다.
총 3개의 동영상 관련 자료들을 공유


 















Posted by '김용환'
,

역시 안드로이드가 아이폰보다 자유도가 좋았다. 안드로이드 쓰는 이유가 있다. !!
마인드스톰 NXT를 콘트롤 할 수 있는 안드로이드 App으로 로 다양하게 테스트해보았다.
관련된 어플 소개.

이 중에 가장 마음에 든 것은 중력센서를 이용한 것과 두개의 폰을 이용해서 마인드스톰을 가지고 통제하는 것이다. 



* nxt remote control  
심플
 어플 다운받기 : http://www.appbrain.com/app/nxt-remote-control/org.jfedor.nxtremotecontrol
 소스 : http://code.google.com/p/nxt-remote-control/

Screenshot of NXT Remote Control



* lego nxt build controller 
모터나 센서에 연결해서 마이크로틱하게 움직일 수 있게 하나, 불편하다. 
(App Inventor 구글 코드 소스였군)
어플 다운받기 : http://www.appbrain.com/app/build-controller-for-nxt/appinventor.ai_norfeldt.LEGO_NXT_Build_Controller
소스 : http://appinventor.googlelabs.com/learn/tutorials/ (정확한것은 아님)
 Screenshot of Build Controller for NXT


* nxt gsensor remote (마음에 듦)
안드로이드 중력 센서를 이용해서 콘트롤 
어플 다운받기 http://www.appbrain.com/app/nxt-gsensor-remote/NXT.GSensor
Screenshot of NXT GSensor Remote


* nxt simple remote
심플
어플 다운받기 : http://www.appbrain.com/app/nxt-simple-remote/NXT.Simple
 Screenshot of NXT Simple Remote
 

* NXT Numeric Remote 
심플 (메일박스로 통신하는 것 같은데..^^;;; )
어플 다운받기 :  http://www.appbrain.com/app/nxt-numeric-remote/NXT.BTNumeric
Screenshot of NXT Numeric Remote


* NXT Mailbox Remote 
어플 다운받기 : http://www.appbrain.com/app/nxt-mailbox-remote/NXT.BTMailbox
 Screenshot of NXT Mailbox Remote

 
* MINDdroid (마음에 듦)
중력 센서 이용, 
어플 다운 :  http://www.appbrain.com/app/minddroid/com.lego.minddroid
 Screenshot of MINDdroid


* NXT Bluetooth Remote Control 
동작은 되는데, A 모터만 돔. 버그 있는듯..
http://www.appbrain.com/app/nxt-bluetooth-remote-control/src.nabr
 Screenshot of NXT Bluetooth Remote Control


* NXT Free
mailbox로 메시지 전달하는데, 따로 어플이 있어야 하나..


* NXT Shake It
통신 연결은 되는데, 작동은 안됨...
어플 다운 : http://www.appbrain.com/app/nxt-shake-it/appinventor.ai_sebastian_trella.NXT_Shake_it


* NXT Speech Control
좋은 기능같은데, 내 발음이 문제가 있는지. 작동이 안되네.. 휴..
어플 다운 : 
http://www.appbrain.com/app/nxt-speech-control/appinventor.ai_sebastian_trella.NXT_Sprachsteuerung_free
Screenshot of NXT Speech Control


* Robobot
작동 안됨
http://www.appbrain.com/app/robobot/org.embox.robobot


*  Stream-O-bot  (마음에 듦)
두개의 안드로이드 폰을 이용해서 nxt를 콘트롤 함.  굿!
하나는 controller, 하나는 카메라로 사용. 카메라를 보면서 운전할 수 있도록 함
어플 다운 : http://www.appbrain.com/app/stream-o-bot/edu.snc.android.mindstorm
Screenshot of Stream-O-Bot

동영상 
http://www.youtube.com/watch?feature=player_embedded&v=C5MSQ-LV40I
 

* SenseBot Lego Mindstorm NXT 
 다운을 받고 싶은데, App 마켓에 없어서 실패.
어플 다운 : http://www.appbrain.com/app/sensebot-lego-mindstorm-nxt/com.msi.manning.ua2esensebot
Screenshot of SenseBot  Lego Mindstorm NXTScreenshot of SenseBot  Lego Mindstorm NXT

안드로이드 인 액션에 들어가는 책에 들어가는 어플이란다. 
http://manning.com/ableson2


*cellbot
여러 로봇을 합쳐서 한번에 동작시키는 툴 (그냥 폰하나와 마인드스톰만 있으면 평범..하지만, 동영상 보면 쿨~~)
어플 다운 : http://www.appbrain.com/app/cellbots/com.cellbots
Screenshot of Cellbots

http://www.youtube.com/watch?v=_x_5WDCpvtA&feature=player_embedded


* NxtRemote
동영상을 보면 괜찮은 것 같음. 
Screenshot of NxtRemote
$3.17. 
어플 다운 : http://www.appbrain.com/app/nxtremote/com.smartphoneremote.nxtremote
 http://www.youtube.com/watch?v=bCBzSsjoSqc&feature=player_embedded



Posted by '김용환'
,

셋팅하는데, 한참 걸렸다. 워낙 블루투쓰에 관심이 없었는데. 추후 안드로이드에서 개발할 때 참조가 될 수 있을 것 같아서, 개념잡기 위해서 테스트해봤다.

우선, NXT 밧데리 소모가 어마어마 해서 바로 밧데로 방전되는 것을 생각하고 진행해야 한다. 다행히 밧데리가 소모되기 전에 셋팅을 끝낼 수 있었다.

노트북은 vaio 제품이고, windows xp 이며, 블루투쓰가 지원하는 모델이다.


(여러번 테스트하면서 얻은 결론이라, 약간 틀릴 수 있다.)

내 BlueTooth 설정에서 장치를 검색하고, 페어링 설정을 한다.
서로 쌍을 이룬 블루투쓰 장치는 비밀 키를 교환해야 한다. NXT의 비밀번호는 1234 이고, 내 노트북도 1234로 지정했다.





마인드스톰 NXT 에서는 다음과 설정해야 한다.
1. 블루투스 메뉴 -> visibility를 선택하고 true(visibility)로 설정
2. 블루투스 메뉴 -> on/off에서 on으로 설정
3. 블루투스 메뉴 -> My contacts 메뉴 -> 컴퓨터 이름 (나는 kim이라고 지정했고, kim 이라는 이름으로 나온다. )으로 접근하고, 내비둔다.
NXT 기기를 살펴보면, 왼쪽 상단 메뉴에 보면, Bluetooth 마크가 보이고 @< 이렇게 떠있는 것을 확인할 수 있다.



PC로 되돌아온다. 아까 등록한 장치관리자에서 포트 정보를 확인한다. Bluetooth 통신 포트가 생겼음을 알 수 있다.
여러번 테스트하다보면 COM port는 여러개로 늘어나기도 한다.


포트 정보를 좀더 확인하라면, 마우스 오른쪽 버튼을 눌러서, bluetooth 통신 포트를 보면 된다.




찾은 NXT에 대한 목록을 확인한다. 아직 연결된 것이 아니다.
아래 그림은 그냥 목록에 있다는 뜻이다.



NXT와 연결한다. 연결하면서 NXT 블루투쓰 보안코드를 넣어야 하는데. 디폴트가 1234여서.. 다음과 적는다.



블루투스 환경에서 NXT 아이콘 를 두번 클릭하면 Dev A의 NXT와 Dev B의 NXT가 보인다.
여기서 Dev A의 NXT 아이콘을 선택하고, 마우스 오른쪽 버튼을 누르고, "연결"을 선택한다.

아래와 같이 정상적으로 연결이 되면, 초록색 -><-이 뜬다. 이게 제대로 뜨지 않으면 연결이 잘 안된 것이다.


그리고, 전체 블루투스 환경에서 보면, 녹색 -><- 으로 되어 있는 것을 확인할 수 있다.
정상적으로 연결된 것임을 확인할 수 있다.





NXT 기기를 살펴보면, 왼쪽 상단 메뉴에 보면, Bluetooth 마크가 보이고 @<> 처럼 보인다. 즉 <> 이 두개가 있어야 연결이 정상적으로 되었음을 알려주는 마크이다.  


아래 링크에서 NXT Vehicle Remote 첨부파일을 다운받아 실행시킨다. 
http://cafe.naver.com/hirobotjks.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=696&

혹시 몰라, 여기에도 저장해둔다.



다음과 같은 메뉴가 뜨는데. 왼쪽 상단에 보면, BlueTooth Connection 밑에 connect라는 버튼이 있다.
이 버튼을 마우스로 클릭했을 때, 팝업이 뜰 수 있다. 이것은 정상적인 포트가 아닌 것을 의미한다.

장치 관리자의 '포트 정보'를 보고 그 포트 단위로 접근하면 된다.

즉 블루투스로 NXT와 노트북이 연결되었음을 확인하고, 위 어플을 이용해서 remote control 하는 것이다.








만약 정상 연결이 되었으면, 중간 아래에 보면, 빨간색 방향표가 나타나는데. 이것이 바로 연결되었음을 알려주는 표식이다. 에러 팝업이 뜨지 않고, 아래 화살표가 나타나면 Connected가 된것이다.
Connection 상태에 connected가 된 것을 확인할 수 있다.


이렇게 왔다 갔다 테스트해보면 정상동적하는지 확인할 수 있다. 밧데리 금방 방전되어서 조금은 당황스럽다.. 모터보다 통신 모듈에 에너지의 수요가 많다니..^^;;

* 블루투스 연결이 안되는 것 같아서 NXT에 firmware 1.29로 올렸다.
* NXT 어플이 아무것도 설치안되어도 노트북의 제어 프로그램만으로 제어가 가능하다.


원리는 어렵지 않다.레고싸이트 (http://mindstorms.lego.com/en-us/support/files/default.aspx)에 블루투스에 대한 개발 정보가 들어가 있다.



Bluetooth Developer Kit를 보면 통신 프로토콜이 있다. 이를 가지고 통신하면서 제어하는 것이다.
아주 간단하게 되어 있는 거라, 통신쪽을 조금 안다면 쉽게 개발할 수 있을 것 같다.



이제 로보트나 좀 만들어봐야겠다.


Posted by '김용환'
,



* 아이폰

<nxtblock>
http://www.nxtblock.com/p/downloads.html
클라이언트는 : NXT-G와 비슷한 개념에서 만들었지만,loop와 switch는 없다고 함


<아이폰-사파리>
아이폰2대와 GWT, Safari를 이용해서 센터를 바탕으로로봇을 통제하는 것
http://blog.naver.com/PostView.nhn?blogId=onnex&logNo=105599851


<legodrive>
cydia에서만 돌아가는 어플
http://www.saygin.gen.tr/personal/Lego-Robot-with-iPhone-Bluetooth/
http://wn.com/Lego_Robot_with_iPhone_Bluetooth_LegoDrive


<inxt>
http://www.youtube.com/watch?v=gzTY5UjUCm8
http://itunes.apple.com/us/app/inxt-remote/id317399938?mt=8
4.2에서 문제가 많은 것으로 알려져 있음
서버에 버그가 많아서 평이 좋지 않음


<nxt drive>
http://www.youtube.com/watch?v=XrAQ7uodQeo
정체를 모르겠음


<kleebots>
가입을 통해서 이것저것 할 수 있게 하는데, 테스트해 볼 필요 있음
http://www.kleekbots.com/
http://www.robots-dreams.com/2010/12/kleekbots-control-lego-mindstorms-robots-with-the-iphone-video.html


<아이폰을 이용한 NXT 통신>
할 수 있다 가능성이 있는 내용.
http://www.xyster.net/blog/?p=59#comments
http://www.xyster.net/blog/


<Lego nxt 블루투쓰 리모트 콘트롤 셋업 화면>
http://www.youtube.com/watch?v=W6nQ0y3MauM&feature=related

 

 

* 안드로이드
<app inventor에 있는 nxt drive>
블루투쓰를 이용해서 마인스톰 통제하는 것
http://appinventor.googlelabs.com/learn/reference/components/legomindstorms.html
http://code.google.com/p/app-inventor-for-android/source/browse/trunk/src/components/runtime/components/android/NxtDrive.java?r=50


<NxtRemote 3.0 어플>
http://mac.softpedia.com/get/Utilities/Lego-NXT-Remote.shtml
http://www.appbrain.com/app/nxtremote/com.smartphoneremote.nxtremote

<NXT Remote Control>
http://www.appbrain.com/app/nxt-remote-control/org.jfedor.nxtremotecontrol

이외 엄청많은 어플들...

 

* MS의 Robotics Developer Studio(MRDS)
Lego Mindstorms NXT 2.0 Bot controlled using MRDS
http://www.codeproject.com/KB/system/LegoMindstorms2MRDS.aspx?display=Mobile
http://www.youtube.com/watch?v=YUXAIZXGfQk

 

 

 

Posted by '김용환'
,

먼저 블럭으로 잘 만들어둔다.






color lamp를 못찾아서 시간이 많이 걸렸다.
애기들은 어떻게 color lamp를 찾았지?

나와 같이 고생했던 사람들이 있을 수 있으니, 올려놔야지.


첫번째 메뉴는 Common 메뉴이다.


아래 하단을 보면, 구분 메뉴가 있는데. 이 부분을 내가 미처 못봤다..
하단에 동그라미, 네모세개, 바두개 있는 게. 구분자이다.


두번째 네모 세개 메뉴를 아래와 같이 나온다.




두번째 Complete 메뉴에서 2번째 Action을 선택하면, color lamp가 있는지 확인할 수 있을 것이다.



color sensor와는 첫번째 common 메뉴에 있다.



바 2개는 custom 방식이다.




이제 shooterbot 로봇의 알고리즘이다.



c나 java 코드로 하면 10줄이나 될란가? 
이렇게 그림을  통해서 개념을 익히는 데는 참 좋은 툴인거 같다.
java의 창시자 제임스 고슬링이 요즘 블로그에서 언어에 대한 개념을 가르치는 교육용 프로그램에 관심이 많던데.. 이런 툴이 있으면 확실히 감을 잡을 수는 있을 것 같다. 

위의 NXT-G에 대해서 간단히 설명한다.

1. 아래 줄
파란색 등을 보이면서, 울트라소닉 센서로 BC 모터를 사용하여 왼쪽 방향으로 계속 돌게 한다.

2. 윗줄 앞부분
울트라소닉 센서로 주변에 무엇인가 있다고 찾아내면, 파란색 등을 보이며, 정지하고 object 소리를 낸다.
그리고, 1초를 쉰다.

3, 윗줄 뒷부분
또 한번 울트라소닉센서에 의해서 발견되면(즉, 2번 센서 체크를 의미) 빨간색 등을 보이게 하고
alarm 소리를 내고, A 모터를 이용해서 총을 발사한다..


이미지를 다운로드 하고, 실행시키면 정상적으로 돌아가는지 확인 가능하다.


테스트를 해보니. 울트라소닉센서가 상당히 민감하고, 잘 돌아가는 것 같다.


시나리오는 검은색 작은 가방으로 유인해서 내게 쏘게 한다.. 잘 돌아간다.
 (마지막에 엉뚱한거 쏘는 거는 빨래한테 쏘는 것임. 버그 아님)




Posted by '김용환'
,

난 이거 어딨나 했는데, 제공되는 프로그램에 다 있었다.^^;;;;
나처럼 실수하지 않도록 설명을 적어야지.

Shooterbot은 센서를 가지고 공으로 공격하는 로봇이다.





API 대신 프로그램 아이콘 같은 것을 호출 해서 쉽게 사용할 수 있다는 점은 교육용으로 훌륭한 것 같다.


메뉴 오른쪽에 보면, Robo Center 밑에 Vehicles 밑에 Shooterbot 의 Go를 누르면.. 된다.


그러면 아래 그림이 나오고 잘 따라하라고 나온다.




그냥 따라하니. 블럭으로 잘 만들고, 센서달고, 슛때리면 Good~
Posted by '김용환'
,