Mac에서 Lego Mindstorms NXT 환경 구축 in2018

6205 단어 MacET 로봇Lego

목표


대학 강의에는 NXT를 이용한 강의가 있지만 강의가 제공하는 자료가 낡아 Mac의 사람들이 환경을 구축할 수 없는 상황이다.
따라서 비망록으로 자신의 환경을 구축하는 방법을 보존한다.
오류 처리에 관하여 제때에 추가하다.

환경

  • MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
  • macOS 10.13 (High Sierra)
  • 단계


    1. 와인 설치


    Windows 실행 파일입니다.
    brew를 사용하기 위해서는 가져오지 않은 사람이 직접 조사해서 가져오기를 바랍니다.
    다음 명령을 실행하여 wine을 가져옵니다.
    $ brew install wine
    
    실행 후 /usr/local/bin/wineconsole 파일의 존재를 확인합니다.

    2. YAGARTO 설치


    컴파일 도구인 YAGARTO를 다운로드합니다.
    그 전에 NXT의 사용 환경을 요약하는 디렉토리를 만듭니다.
    필자는 메인 디렉터리 바로 아래에 NXT라는 디렉터리를 만들었다.
    여기 웹 사이트yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_intelmac_20111119.dmg다운로드
    다운로드 후 dmgyagarto-4.6.2을 실행하여 방금 만든 NXT로 옮겨 실행합니다.
    그러면 yagarto-4.6.2 이라는 디렉토리가 나타납니다.
    디렉토리의 이름을 yagarto 로 변경합니다.

    3.nxtoSEK 다운로드


    여기의 사이트에서 다운로드합니다.
    필자는 다운로드했다nxtOSEK_v218.zip.
    다운로드가 끝나면 2 제작NXT의 바로 아래에 배치됩니다.
    이때 NXT 은 다음과 같습니다.
    NXT
    ├── nxtOSEK
    ├── yagarto
    └── yagarto-4.6.2.app
    
    그러나 현재 상황은 필요한 서류가 부족하다.
    따라서 여기에서 다운로드osek_os-1.1.lzh.
    이후 해동된 toppers_osek/sg/sg.exeNXT/nxtOSEK/toppers_osek/sg 로 복사합니다.
    이때 NXT/nxtOSEK/toppers_osek/sg 은 다음과 같습니다.
    NXT/nxtOSEK/toppers_osek/sg
    ├── impl_oil
    ├── lego_nxt.sgt
    └── sg.exe
    

    4. NeXTTool 설치


    NXT에 프로그램을 보낼 수 있습니다.NeXT Tools이 아니라 NeXTTool이니 틀리지 마세요.Download for Mac OSX (universal binary) 어딘가에서 다운로드.

    다운로드 후 2 제작NXT의 바로 아래에 배치됩니다.
    이때 NXT 은 다음과 같습니다.
    NXT
    ├── nexttool
    ├── nxtOSEK
    ├── yagarto
    └── yagarto-4.6.2.app
    

    5.NXT Fantom Driver 설치


    컴퓨터에서 NXT를 식별할 수 있습니다.
    여기의 사이트에서 다운로드합니다.
    책장 밑에 있으니 빠뜨리지 마세요.

    다운로드 후 해동을 실행합니다MAC legodriver.pkg.

    6.make의 준비


    현재 상태를 유지하면 Cygwin을 사용하기 때문에 Mac도 문제가 없도록 변경합니다.
    다음 네 곳을 찾아 변경을 진행하며 각각의 설정에 따라 변경을 원합니다.
    NXT/nxtOSEK/ecrobot/tool_gcc.mak
    9行目
    - GNUARM_ROOT = /cygdrive/C/cygwin/GNUARM
    + GNUARM_ROOT = /Users/vivid344/NXT/yagarto  # YAGARTOのパス
    
    14行目
    - NEXTTOOL_ROOT = /cygdrive/C/cygwin/nexttool
    + NEXTTOOL_ROOT = /Users/vivid344/NXT  # nexttoolがあるパス
    
    21行目
    - TARGET_PREFIX :=arm-elf
    + TARGET_PREFIX :=arm-none-eabi
    
    38行目
    - NEXTTOOL  = NeXTTool.exe
    + NEXTTOOL  = nexttool
    
    또한 Wine와cygpath에서 현재 상태라면 오류가 발생하기 때문에 변경합니다.
    C로 개발할 때 다음 2곳의 수정을 진행한다.
    NXT/nxtOSEK/ecrobot/ecrobot.mak
    312行目
    - WINECONSOLE := /Applications/Wine.app/Contents/MacOS/startwine wineconsole
    + WINECONSOLE := /usr/local/bin/wineconsole
    
    335〜336行目
    - $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg $(shell cygpath -m -w ${TOPPERS_OSEK_OIL_SOURCE}) \
    -         -os=ECC2 -I$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/impl_oil -template=$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/lego_nxt.sgt
    +   $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg.exe $(TOPPERS_OSEK_OIL_SOURCE) -os=ECC2 -I${TOPPERS_OSEK_ROOT_SG}/sg/impl_oil -template=${TOPPERS_OSEK_ROOT_SG}/sg/lego_nxt.sgt
    
    C++로 개발할 때 아래 2곳의 수정을 진행한다.
    NXT/nxtOSEK/ecrobot/ecrobot++.mak
    316行目
    - WINECONSOLE := /Applications/Wine.app/Contents/MacOS/startwine wineconsole
    + WINECONSOLE := /usr/local/bin/wineconsole
    
    339〜340行目
    - $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg $(shell cygpath -m -w ${TOPPERS_OSEK_OIL_SOURCE}) \
    -         -os=ECC2 -I$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/impl_oil -template=$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/lego_nxt.sgt
    +   $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg.exe $(TOPPERS_OSEK_OIL_SOURCE) -os=ECC2 -I${TOPPERS_OSEK_ROOT_SG}/sg/impl_oil -template=${TOPPERS_OSEK_ROOT_SG}/sg/lego_nxt.sgt
    
    이어서 각 함수를 호출하는 데 필요한 파일을 생성합니다.NXT/nxtOSEK/ecrobot/c에서 다음 명령을 실행합니다.
    $ make all
    $ make release
    
    NXT/nxtOSEK/ecrobot/c++,NXT/nxtOSEK/ecrobot/bios,NXT/nxtOSEK/ecrobot/nxtway_gs_balancer/에서도 마찬가지다.

    7. 실제 생성


    C에서 진행하는 사람NXT/nxtOSEK/samples_c/helloworldC++로 진행하는 사람NXT/nxtOSEK/samples_c++/cpp/Helloworld에서 다음 명령을 실행합니다.
    $ make all
    
    실행 후 생성.rxe 파일을 확인합니다.
    생성되지 않은 경우 6에서 변경된 부분이 잘못될 수 있습니다.

    8. 로봇으로 실행


    NXT와 PC를 USB로 연결하여 NXT의 전원을 켭니다.
    다음 명령을 수행합니다.
    $ ./rxeflash.sh
    
    이후 로봇 측에서 실행해 이 파일이 있는지 확인한다.
    여기서 마치겠습니다.

    총결산


    이상은 필자의 환경에서 구축할 수 있다.
    앞으로 새로운 개발을 진행할 때 NXT/nxtOSEK/ 아래에서 개발한다.
    또한 Makefile의NXTOSEK_ROOT를 각 환경으로 개작한 후make를 진행한다.

    참고 자료


    ET 로봇 컴퓨터 개발 환경 구축 for Mac

    좋은 웹페이지 즐겨찾기