루덴스코드 Blog

사용자 삽입 이미지

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를 비슷하게 만들수 있을까요???