루덴스코드 Blog

상당히 멋있는 레고로 만든 Blade Runner "Spinner" car 를 보았다.
레고는 어린이를 위한 블록 장난감 정도로 여겨지지만 사실 이 레고를 사용한 다양한 예술품들이 만들어지고 있다. 그저 아이의 장난감으로 마쳐지기엔 너무나 훌륭한 재료랄까. 레고를 이용한 다양한 공학적, 예술적, 창의적 모델들을 보고 있자만 역시 그 장난감을 아들과 함께 공유하고픈 생각이 들게 된다. 사실은 아이에게 사 준다는 핑계로 내 장난감을 가지고 싶은 것일까?

사용자 삽입 이미지
레고로 만들지 못할 것이 없다는 말이 떠오른다. 단순한 장난감으로 인식하기에 블록은 그것을 사용해 만들어 낼 수 있는 그림을 가진 사람에게는 훌륭한 창조의 재료가 된다. 블록은 어떤이에겐 성냥갑같은 아파트밖에 보여주지 않지만 어떤 이들은 그 블록을 보며 바로 이런 "작품"을 보게 된다.

사용자 삽입 이미지
사용자 삽입 이미지
[VIA:BBG]

Joel Johnson 가 포스팅한 Blade Runner "Spinner"에 대한 자료
http://electoy.tistory.com/96
JelicleLim(2008.7.9)

Comment +0

사용자 삽입 이미지

LEGO Mindstorms

NXT 를 위한

몇가지 프로그램

방법들


LEGO Mindstorms NXT 프로그램에는 크게 세가지 방법이 있다. NXT-G, ROBOLAB 그리고 ROBOTC가 있다. 이 외에도 open source 로 나온 몇가지 방법이 더 있다.


NXT-G

NXT-G는 National Instruments 사에서 개발한 그래픽 인터페이스를 가진 프로그램툴이다. 이것을 사용해 플로우차트를 그리듯이 프로그램할 수 있으며, 모터를 제어하거나 딜레이를 주거나 소리를 만드는 등의 일을 할수 있다. 당연히 센서입력과 타이머를 이용한 프로그램이 가능하다. NXT-G는 프로그램이 매우 쉽다.

사용자 삽입 이미지



ROBOLAB

ROBOLAB 은 Tufts University에서 개발된 것으로 Lego RCX를 위해 처음 개발되었다. 현재 보강된 프로그램이 NXT에서 사용가능하다.
ROBOLAB 은 또 다른 그래픽 환경을 가진 프로그램툴이다. NXT-G 보다 더 정교한 프로그램이 가능하다. 그래픽 환경의 프로그램툴을 원한다면 ROBOLAB 은 매우 좋은 프로그램툴이다.

ROBOLAB 은 National Instruments 의 LabVIEW 를 사용해 만들어졌다. LabVIEW 는 NXT-G 와 함께 ROBOLAB 의 기반이 되었다. integer 와 floating 변수를 사용한 계산이 가능하다.
사용자 삽입 이미지



ROBOTC

NXT에 C 언어를 사용하기 원한다면 ROBOTC는 무척 좋은 선택이다. Carnegie Mellon University 의 Robotics Academy 에서 만들어졌으며 www.robotc.net 에서 다운받을 수 있다.
ROBOTC 는 강녁한 실시간 디버거를 가지고 있으며 프로그램과 디버깅에 효과적인 프로그램툴이다.
사용자 삽입 이미지



NXC ... NOT EXACTLY C

NXC(Not eXactly C)는 C언어와 비슷한 NXT를 위한 프로그램툴이다. RCX 에 NQC가 있다면, NXT에는 NXC가 있다. C언어와 유사하지만 C언어는 아니다. NXC는 NXT-G와 동일한 펌웨어를 사용한다. 동일한 펌웨어를 사용하므로 사용자가 NXC로 프로그램하거나 NXT-G의 그래픽 환경에서 프로그램하는 것 모두 가능하다. 또한 두 종류의 프로그램툴을 사용한 프로그램을 같은 브릭에 넣을 수 있다. interger 타입의 변수가 사용가능하며 floating 타입의 변수는 쓸수 없다. LCD 에 글자를 쓰기 적절한 프로그램툴은 아니다.
NXC 와 ROBOTC 는 실시간 디버거를 가진 유일한 프로그램툴이다.
사용자 삽입 이미지



PBLUA

Lua 는 교육분야에서 주목받고 있는 텍스트 기반의 언어다. pbLua 는 NXT를 위한 Lua의 모든 특성을 갖춘 프로그램이다. pbLua를 사용한 프로그램은 ROBOTC 와 NXC 와 유사하다.
사용자 삽입 이미지



NXJ

NXJ 는 자바기반의 NXT 프로그램툴이다. JAVA 표준을 따르지만 Class 라이브러리는 훨씬 작다.
사용자 삽입 이미지
VIA[botmag]

LEGO Mindstorms NXT 를 위한 몇가지 프로그램 방법들
http://electoy.tistory.com/47
JelicleLim(2007.12.21.)

Comment +12

  • NXT-G는 시작하긴 쉬운데, 프로그램이 아주 조금만 복잡해 져도 오히려 일이 더 많아 지더라구요 ^^
    저는 개인적으로 무료고 펌웨어 바꿀 필요도 없는 NXC가 젤 편하더라구요 ㅋㅋ

    좋은글 감사합니다

    • 복잡한 프로그램이나 제어에는 C 언어를 사용하는게 낫겠지요. NXC, ROBOTC 가 저로서도 제일 관심있게 보고 있는 프로그램툴입니다. ^^
      그 외에 현재 개발중인 또 다른 로봇언어가 있습니다 과연 어떻게 모습을 드러낼지 기대가 됩니다.

  • kera 2008.09.26 21:39 신고

    nxc는 어디서 다운받을수 있나요?

    • http://bricxcc.sourceforge.net/nbc/
      NXC 는 공개된 프로그램툴이라 구글등에서 검색하면 바로 나옵니다. 위 링크로 가면 충분한 자료와 다운이 가능합니다.

  • 2008.10.19 09:38

    비밀댓글입니다

    • NXC 와 센서 두개면 라인트레이서를 만들수는 있지만 아무래도 여러개의 센서를 달아서 속도를 조절하듯이 하기는 어렵겠지요.
      마인드스톰은 전문적인 로봇, 정밀한 조작을 요하는 동작같은 것은 무리입니다. 센서 속도나 모터 인코더나 기타 등등에서 말이지요. 가능한 하드웨어의 한계에도 불구하고 만들수 있는 정도까지 최선을 다한면서 어느 정도까지는 되겠지만 하드웨어적인 면에서 제약이 있는 것은 아무리 소프트웨어를 잘 만들어도 한계는 있습니다.

  • 덕분에 많은 정보 얻어 갑니다. Accel를 사용해서 전자펜을 만들어 볼까 하는데 적당한 개발툴이 없어 고민하고 있었는데 선택 할 수 있는 유용한 정보~ 잘 보고 갑니다

  • 김인환 2012.05.15 00:15 신고

    저는 로보랩을 사용합니다.
    로보랩도 나쁜선택이 아니라고 봅니다. 잘만사용하면 nxt-c정도의 성능은 충분히 내고 배우기쉽고 하니까요
    다소 머리를 많이 써야한다는게 있긴하지만;; 머리 잘돌리시는분이면 로보랩추천!

  • 정은주 2012.10.22 09:42 신고

    안드로이드 어플로 NXT를 컨트롤할수있는 어플을 개발중인데요..
    도저히 이해가 안되는부분들이 너무 많으네요..
    일단은.. 저 위에있는 NXJ 프로그램과 안드로이드 프로젝트간의 호환이 되나요..?
    안드로이드 프로젝트 파일을 하나만들면 그 안에서 NXT를 조종하는 모터값이랑 이런거 다 줘야되는거죠..?
    그건 어떻게하는건지 도통 모르겠습니다.. 그냥.. NXT에 대해 전혀 무지하다고 보시면 될거같아요..
    안드로이드 프로젝트에서 NXT 컨트롤 하는 소스는 어떻게 만드나요..??

    • 질문하신 부분은 여기서 다룰 수준을 넘는듯 하네요. ^^ 저도 계속 로봇쪽을 했더라면 해봤을것 같은데, 지금은 생업이 그쪽이 아닌지라...

      우선 레고 NXT 의 SDK 를 살피면 그 안에서 블루투스 통신 부분을 구현하실 수 있을 겁니다(저는 해본적 없습니다. 이론만 말씀드립니다). 블루투스 통신을 이용해서 안드로이드나 아이폰등에서 NXT를 제어할 수 있을 겁니다.

  • yhwkon 2013.11.20 21:29 신고

    안녕하세요!

    글보고 질문을 드릴려고 하는데요... 제가 labview를 이용해서 nxt큐브를 만들려고하는데..

    혹시 nxc의 코드를 보고 labview를 비슷하게 만들수 있을까요???

터치센서

사용자 삽입 이미지


사용자 삽입 이미지

NXT 의 적외선센서

이러한 센서값을 입력 받는 포트가 4개로 제한되어 있어 포트 확장을 위한 별도 회로를 구상중이다.


센서입력 구조
http://electoy.tistory.com/39
JelicleLim(2007.11.25)

Comment +0

사용자 삽입 이미지


기본적으로 NXT 와 RIS 는 매우 다른 센서 체계를 가진다. 여기는 굳이 필요는 없지만, 참고할 사항을 올린다. RIS 에서 빛센서와 회전센서의 경우 어떤 식으로 신호를 전달했는지를 보인다.





사용자 삽입 이미지

RIS 에서는 센서 입출력을 위한 단자는 단 두개 뿐이다. 그래서 그 두개의 선으로 전원공급과 동시에 신호를 읽는 작업까지 해야 한다. RIS 는 3 + 0.1 의 방식으로 3 ms 동안 전원을 공급하고, 그 다음 짧은 0.1 ms 동안 센서의 값을 읽는 방식으로 신호를 받아들였다. 이런 방식을 사용한 센서는 적외선센서와 회전센서가 있다.



마인드스톰의 빛센서, 회전센서 신호 구성
http://electoy.tistory.com/38
JelicleLim(2007.11.25)

Comment +0

사용자 삽입 이미지












입력 포트는 4개가 있으면, 입력 포트의 구조는 다음과 같다.

사용자 삽입 이미지

1번 핀은 아날로그 입력이 가능하다. 1번 핀은 10비트의 보조 MCU인 AVR의 A/D 와 연결되어 있다. A/D 입력 신호는 아날로그 센서의 Sampling rate 와 동일한다. sampling rate 는 333Hz 가 된다. 2번핀과 3번핀은 GND이고, 4번핀은 4.3V 의 파워를 입력하는 핀이다. 5번과 6번핀은 디지탈 입출력이 가능한 핀으로 RS485 컨트롤러와 연결되어 고속의 데이타전송이 가능하다. 또한 이 5, 6번 핀은 I2C 를 위한 통신으로 사용될 수 있다.

전원의 경우 최대 출력 전류는 180mA 로 제한된다. 각 포트는 약 20mA 정도의 사용이 가능하다.


NXT 의 입력포트 부분
http://electoy.tistory.com/37
JelicleLim(2007.11.25)

Comment +0

사용자 삽입 이미지

마인드스톰 NXT 의 인텔리전트 브릭을 포함한 기본 다이아그램이다. 여기서 조금 더 자세히 살펴보려는 부분은 Input, Output, Bluetooth 등이다.

사용자 삽입 이미지
모터출력을 담당하는 Output 은 다음과 같은 핀배열로 되어 있다. 
1번부터 6번까지의 핀은 각각 1, 2번은 PMW 신호를 전달해 주는 역할을 하고, 5,6번은 인코더의 값을 다시 MCU에 전달해 주는 역할을 한다.
두개의 핀을 사용하는 이유는 정회전과 역회전을 구분하기 위해서이다.
4번핀은 4.3V의 일정한 전압을 공급한다.

VIA[레고]

마인드스톰 Hardware 의 출력단자 부분
http://electoy.tistory.com/36
JelicleLim (2007.11.25.)


Comment +0


우선 로봇을 만든다는 것에 대해 막연한 환상을 가지고 계신 분들이 많은 것 같고, 또 아직 어린 학생들도 있는 것을 고려해서 몇가지 조언을 드립니다.
이 조언은 지극히 개인적인 것이고, 틀릴수도 있습니다. 그저 도움이 되기를 바라는 것 뿐입니다. 왜냐하면 저도 로봇을 전공하고 있고, 박사과정중에 있기 때문에 처음 시작하는 분들께는 작은 도움이 될수 있겠다 생각해서 드리는 것 뿐입니다.

우선 제대로 된 단계를 거치는 것은 결코 시간 낭비가 아닙니다.

무엇이든지 과정은 필요합니다. 초등학교 산수가 안되는 사람이 중학교에 가서 공부를 잘한다는 것은 어불성설입니다. 만약 그런 사람이 있다면 그는 중학교에 가서 다시 초등학교 산수 공부를 한 것일겁니다. 역시 중학교 과정 없이 고등학교 과정에서 두각을 드러낼수 없습니다. 대학 역시 마찬가지고, 로봇을 만드는 것 역시 동일합니다.

로봇을 만드는 것이 아무것도 필요없는 상태에서 그저 몇군데 인터넷 사이트에서 보여주는 이상한 모터에 철판 단 사람 모형을 만드는 것이라고 생각한다면 큰 잘못입니다. 이런 모형은 굳이 초등학생이라도 손재주만 있으면 만들수 있습니다. 초등학생에게 조금 무리라면 고등학생 정도에 선반작업에 약간만 시간을 투자하면 만드는 건 별 문제가 없습니다. 모터 달고, 철판 깍고, 자르고, 구부리고, 나사돌리면 됩니다. 물론 그전에 깍아야 하고 잘라야 할 철판에 그림 그리는 것은 해봐야겠죠. 그 다음엔 모터 살 돈과 철판 깍을 돈이 필요하겠군요. 하지만 이것만 된다고 다 되는 것은 아닙니다.

사용자 삽입 이미지

우선 모터를 돌리는 것이 전부가 아니라 모터를 돌릴때 어떻게 돌릴것 인지가 문제가 되죠. 여기서 모터를 제어한다고 하는 제어의 개념이 나옵니다. 한번 손으로 책상 위에 있는 연필을 잡는다고 생각하고 움직여 보세요. 우리는 자연스럽게 손을 움직입니다. 어깨쪽에 있는 관절에 있는 근육을 움직여 아래쪽에 처져있는 팔을 위로 올립니다. 올리면서 다른 관절은 어떻게 되나요? 다른 관절도 자연스럽게 조금씩 움직여 집니다. 팔꿈치에 있는 관절은 거의 180도가 되게 서서히 펴집니다. 손목도 역시 조금씩 움직여서 손이 최종 위치에 도달할 때쯤 연필을 잡기에 적당한 위치에 있게 됩니다. 손에 있는 각 손가락 마디 역시 연필을 쥐기 적당한 상태로 움직여 있습니다.

이걸 모터에 적용한다고 생각해 보세요. 우선 어깨쪽, 팔꿈치, 팔목 이 세군데에 각각 3개씩의 모터가 붙어서 x축 회전, y축 회전, z축 회전을 해주어야 합니다. 손가락 다섯개에 대한 것은 제외하더라도 벌써 여기서만 9개의 모터가 각각 움직이면서 서로가 서로의 동작에 대해서 반응하면서 적당한 위치로 움직여 줘야 하는 겁니다.

모터를 9개를 다는 것보다 이 달려진 모터 9개를 움직이는 게 훨씬 어렵고 힘드는 일입니다. 사실 로보틱스를 생각한다면 바로 이 부분에 촛점을 두어야 합니다. 모터 9개를 제어하기 위해서 PID 제어라는 것을 하게 되는 거죠. 물론 여기서 필요 없는 부분은 삭제할 수도 있고, 수정할 수도 있고, 또 다른 모터를 추가하기도 해서 자신이 필요로 하는 어떤 구조물을 설계하고, 그 구조물을 움직이기 위한 제어를 하게 됩니다.

그러기 위해서 제대로 된 공부가 필요합니다. 우선 지금 초등학생이면 산수공부를 열심히 하세요. 주변 친구들이 하는 것 외에 조금 어려운 참고서를 선생님께 추천받아서 문제를 다 풀어보세요.
중학생이나 고등학생이라도 역시 동일합니다. 산수공부를 할때 주의 할 점은 단지 문제만 많이 푸는게 능사가 아니라 왜 그런지 원리를 철저히 이해해야 합니다. 고등학교때 배우는 많은 부분이 사실은 매우 중요한 부분들 입니다. 외국에서는 대학과정에서 배우는 것들이 많이 들어가 있습니다. 그러다보니 정작 원리는 이해하지 못하고 편법으로 문제만 빨리 푸는 연습만 합니다. 최악입니다. 점수는 잘 나와서 스스로 수학은 잘 한다고 생각하지만 정작 머리는 돌대가리가 되서 대학에 들어오는 사람이 많습니다. 원리를 철저히 이해하도록 노력하세요. 동시에 증명문제는 더 잘 이해해 두세요.

그리고 로봇을 공부하기 위한 기초과정에 레고닥터라는 곳에 마련되어 있습니다. 거의 유아때 부터 시작해서 기계의 작동원리부터 로보랩까지 다양한 과정이 준비되어 있는데 그 과정을 문의하고 참여하면 많은 도움을 얻을 수 있을 겁니다. 사실 인터넷에서 볼수 있는 많은 사이트나 블로그, 개인 홈등은 다분히 이런 고등학생 이하의 학생들이 이해하기는 조금 어려운 부분이 많습니다. 그리고 그들에게 자세히 설명해 달라고 부탁하는 것도 무리입니다. 전문적인 교육전공자도 아니고, 정말 초짜에게 모든 것을 가르쳐 달라고 부탁하려면 그들의 생계를 책임질 정도로 해주지 않은 이상 부탁하지 마십시오. 최근에는 문화센터들에서도 로봇을 교육하는 프로그램을 꽤 가지고 있는 걸로 알고 있습니다. 고등학교에서도 선생님을 주축으로 로봇동아리들이 만들어지고 있구요. 잘 찾아보시고 이용해 보세요.

레고닥터에 대해서는 자세히 설명하지 않겠습니다. 레고를 아이들 장난감 정도로 생각하시는데, 정작 레고를 통해서 기계의 원리를 이해하게 된다면 괜찮은 교육교제가 됩니다. 그리고 레고닥터는 그런 원리를 이해할 수 있는 좋은 수단이기도 합니다. 이러고나니까 왠지 제가 레고닥터를 선전하는 것 같이 되어버렸네요. ^^ 전혀 아닙니다. 저는 박사과정중에 있고, 레고닥터와는 아무 상관이 없습니다. ^^

인터넷 검색에서 [레고닥터], [레고닥타]로 검색하시면 원하는 정보가 나올겁니다. 자세한 것은 인터넷 검색을 통해서 찾아보세요. 다른 학원 다니는 것보다 이곳에서 공부를 하는게 더 낫겠다는 생각입니다. 물론 관심을 가진 아이가 부모님께 이런 공부를 하고 싶다고 하면 왠만한 부모님은 들어주시겠죠. 로보랩 전까지는 그렇게 큰 부담되지 않은 학원일 겁니다. 여기서 기초적인 단계를 충분히 쌓아서 내공을 기른 다음, 제대로 된 자신만의 로봇을 만들고 싶다면 그때 다시 시작해도 됩니다. 그때는 이미 여러가지 기본을 닦은 다음이니 질문도 잘 할수 있을것이고, 문제 해결을 위한 방법도 알수 있게 될겁니다. 그리고 무슨 공부를 해야 하는지도 알수 있고, 답변을 해주는 사람의 말을 이해할수도 있겠죠. 시간을 조급하게 잡지말고 하나씩 하나씩 차근차근 공부해 나가기를 바랍니다. 최근에 레고에서 마인드스톰 NXT 를 출시했습니다. 지금 제가 붙잡고 씨름하고 있는 녀석이죠. ^^ 쉽게 프로그램 가능하고 로봇에 대한 호기심을 충족시키기에 무척 괜찮은 완구입니다. 조금 비싼 완구지만 사면 제 값을 하는 녀석 같으니 추천합니다. ^^


로봇이나 전자, 기계쪽에 관심을 가진 초등학생, 중학생, 고등학생을 위한 조언
http://electoy.tistory.com/21
JelicleLim (2006.10.06)

Comment +4

  • 2009.02.12 07:52

    비밀댓글입니다

  • 2009.02.12 07:58

    비밀댓글입니다

    • 사실, 아이가 그다지 원하지 않는다면 억지로 시킬 필요는 없다고 보여집니다. 원한다면 레고는 좋은 교구가 될수 있지만 억지로 시키는 레고는 오히려 아이들에게 힘든 스트레스가 될수도 있을테니 말이죠.
      이제 초2면 굳이 지금 억지로 시키는 것 보다는 나중에라도 아이가 원할때 시켜도 늦지 않습니다. 차라리 전혀 모르고 대학와서 시작해도 전혀 늦지 않다는 것이 제 생각입니다. 아이가 대학올때 쯤이면 이 보다 훨씬 발전된 기술로 교육을 받게 될 테니까요...
      굳이 원하지 않는 것을 억지로 시킬 필요는 없다는 것이 제 개인적인 생각입니다.

    • 사실 제 아이한테도 레고를 시작해보았는데, 아이가 별로 흥미를 갖지 않더군요... ^^
      조물이라는 찰흙같은 모형만드는 것을 오히려 좋아해서 그걸 시키고 있습니다. 아직 어린이집을 다니는 아이입니다. ^^

굳이 볼 필요도 없는 내용이다. CD 넣고 순서대로 죽 따라가면 다 된다. ^^
행여나 하는 마음에 순서를 여기 차례대로 올려본다.

사용자 삽입 이미지

마인드스톰을 넣고 Autorun.exe 를 실행시키면 위와 같은 화면이 뜬다. 보통은 자동실행이 될것이다. 필자의 경우 자동실행이 번거로워서 현재 그 옵션을 꺼둔 상태다. 그래서 찾아가서 Autorun.exe 를 실행시켜야 했다. 당연히 여기서 English 를 누르면 진행된다.

more..


마인드스톰NXT CD설치 순서
http://electoy.tistory.com/20
JelicleLim(2007.11.20)

Comment +0