루덴스코드 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

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

사용자 삽입 이미지

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

more..


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

Comment +0