2. The Mindstorms Architecture

2.1. 기본 하드웨어(The Basic Hardware)

노파심에서 말하지만, 레고 마인드스톰 키트는 레고사에서 200달러 정도에 팔리고 있습니다. 일단 구입했다면, CPU와 LCD, 여러 연결선이 붙어있는 큰 블럭(RCX로 알려진..)과 모터 2개, 그리고 바깥 세상과 대화할 수 있게끔 해 주는 광 센서와 터치 센서 몇 개까지, 많은 레고 부품들을 가지고 있는 셈이 됩니다.

현재 RCX 키트는 1.5버전까지 나와있으며, 2001년 봄에 2.0버전으로 대체될 것입니다. 그 때가 얼마 남지 않았지만, 이 문서에서 제가 "RCX"라 하는 것은 "RCX 1.x버전"을 의미합니다. 1.0버전과 1.5버전의 차이는 거의 없으나, 1.5버전과 2.0버전은 아직 정확히 알려진 것은 없지만 눈에 띄게 차이가 날 것 같습니다.

혹시 보다 자세하게 하드웨어를 알아보고 싶다면(생각해 보세요: RCX를 완전히 분해해 그 작동원리를 알고 싶어하는 사람들이 세세하게 신경써야 할 것들을..) 다음 2개의 사이트를 방문하기 바랍니다: Russell Nelson's Lego Mindstorms InternalsKekoa Proudfoot's RCX Internals. 이 두 사이트가 없었다면, 아래에 있는 소프트웨어 대부분도 없었을 것입니다.

2.2. 표준 RCX 프로그래밍(Standard RCX Programming)

다양한 Linux 도구들을 이해하기 위한 핵심은 우선 MS Windows에서 어떻게 마인드스톰 키트가 작동하는지를 알아야 한다는 것입니다. 요약하자면, 레고는 당신(더 정확히는 12-14세의..)에게 building-block metaphor를 이용, 그림 그리듯이 코드를 작성할 수 있게 해 주는 MS Windows 소프트웨어를 제공합니다. 이렇게 일단 프로그램이 작성되면 소프트웨어는 그 프로그램을 바이트-코드(byte-code)로 컴파일합니다. 이 바이트-코드가 로봇에 적재되어 그 곳에 있는 RCX 펌웨어(firmware)에 의해 처리되고, 그 명령어에 기반하여 기계를 제어합니다. 게다가 바이트-코드의 분석을 통해, RCX 펌웨어는 OS처럼 많은 기능들을 하게 됩니다: 하드웨어의 제어나, 쓰레딩(threading), 특히나 로봇과의 의사소통에 사용되는 IR 포트(port)도 제어합니다. 또한 IR 포트나 특별한 원격제어로부터 특정 명령어(숙달된 프로그램이 아닌..)를 받아, 그에 따라 로봇을 움직이는 능력도 가집니다.

표준 펌웨어는 현재 1.0버전입니다. (1.5버전의 RIS를 구입했다 하더라도..) 그것에는 제법 심각한 제한이 있습니다- 예를 들자면, 각각의 변수들이 RAM이 아닌 레지스터에 저장되기 때문에, 32개의 변수밖에 가질 수 없습니다. 하지만, 그것으로도 꽤 흥미있는 것들을 해 볼 수 있고, 2.0버전(현재 레고에서 그 베타버전을 구할 수 있습니다.)에서는 이런 제한들을 눈에 띄게 줄이고, 1.x대의 하드웨어와도 호환되게끔 할 것입니다.

2.3. Linux 도구들을 사용하기에 적합한 곳(Where the Linux Tools Fit In)

다양한 Linux 마인드스톰 프로그램들이 이전 섹션에서 언급했던 일련의 소프트웨어를 여러 부분에서 대체할 수 있습니다. 몇몇은 OS와 유사한 시스템이나 언어 번역기(interpreter)를 지니고 있어 기본 펌웨어를 완벽하게 대체할 수 있습니다. 표준 레고 바이트-코드에 대응하는 바이트-코드를 생성하여, 표준 펌웨어로 번역(interpret)하는 것들도 있습니다. 마지막으로, 로봇 자체에는 동작을 위해 어떤 도구들도 주지 않으면서, 호스트 PC에서 로봇을 제어할 수 있게끔 단순한 원격제어 코드를 생성하는 것들도 있습니다. 이들은 또한 표준 레고 펌웨어를 사용합니다.

2.4. Linux 호스트를 위한 하드웨어 사양(Hardware Requirements for the Linux Host)

대부분의 도구들이 명령어 입력 기반이기 때문에, 하드웨어 요구사항은 극히 적습니다- 어떤 Linux 시스템에서도 돌릴 수 있습니다.

하나 예외가 있다면 시리얼 포트(serial port)인데, 몇몇 새로 나온 "legacy free" 머신에는 없을 수도 있겠지만 대부분이 가지고 있을 것입니다. RCX에의 모든 의사소통은 시리얼 포트로 연결되는 IR 타워(tower)를 통해 이루어 집니다. 결국, 시리얼 포트를 가지고 있지 않다면, 어댑터를 사지 않는 이상 RCX를 사용할 수 없습니다. 뿐만 아니라 어떤 환경에서는 IRQ나 시리얼 포트의 충돌이 문제가 될 수도 있습니다. 모뎀이 /dev/ttyS0를 사용한다면 그런 일이 일어날 수 있습니다. 이럴 때에 3가지의 해결방법이 있습니다: 먼저, IR 타워를 두번째 시리얼 포트에 연결해 보기 바랍니다. 대부분 이것으로 가능합니다. 혹시 해결되지 않았다면, 모뎀과 RCX를 동시에 사용하지 말기 바랍니다. 그것도 소용없다면, 커널 컴파일 옵션에서 ("extended dumb serial driver options" 아래에 있는..) "support for sharing serial interrupts." 부분을 확인하기 바랍니다. 확실히 선택했다면 다시 컴파일하세요.

Mac은 표준 시리얼 포트를 가지고 있지 않기 때문에, LinuxPPC 유저들은 어댑터를 구해야 하고, 이 도구들을 사용하기 위해 약간 수정을 해 줘야 합니다. NQC의 제작자이자 Mac 유저인 Dave Baum이 이에 대한 방법을 썼습니다.

2.5. 사이버마스터와 스카우트(The CyberMaster and Scout)

RIS에 그치지 않고, 레고사는 또 다른 2개의 로봇 제작 시스템을 만들었습니다- 사이버마스터(CyberMaster, 유럽에서만 판매)와 스카우트(Scout)입니다. 불행하게도, 저는 여기 나오는 도구들 중 하나(NQC, 5절에 언급될..)만이 이들과 작동한다고 알고 있습니다. 즉, 스카우트의 구입을 생각하고 있다면, 재정적으로 몹시 어렵지 않은 이상 RCX와 함께 구입하기 바랍니다- 조금 더 투자하면 가치를 느낄 것입니다.

2.6. 마인드스톰 비전 커맨드(Mindstorms Vision Command)

비전 커맨드(Vision Command) 키트는 USB 카메라로 뭔가 재미있는 것들을 해 보기 위한 마인드스톰 제품군의 새로운 확장팩입니다. 불행하게도, 아직 Linux에서 USB 카메라(특히, USB Quickcam)의 지원이 불안정하기 때문에, 이도 아직 Linux에서 지원되지 않습니다. 혹시 당신이 직접 도전하고 싶다면, 비슷한 Quickcam의 드라이버가 있는 이 페이지를 방문하기 바랍니다.

2.7. MS Windows CD에 대해 알아두어야 할 것(Important Note about the MS Windows CD)

아래에서 언급된 대부분의 프로그램이 공식적인 레고 펌웨어를 사용하기 때문에, 아마 MS Windows CD가 필요할 것입니다. 그렇다고 매번 MS Windows로 부팅할 필요는 없습니다- 시간을 보장해 줍니다 :) 하지만, (혹시 그 중에서 NQC나 RCX.pm을 사용한다면..), 배터리가 나갔을 때 펌웨어를 얻기 위해 CD를 마운트(mount)해야될 수도 있습니다. 이런 과정이 번거롭게 느껴진다면, CD에서 firm0309.lgo를 찾아 Linux 파티션의 안전한 곳에 복사해 두기 바랍니다.