RT컴포넌트 작성(NXTway편)


머릿말

  • NXT MINDSTORM과 OpenRTM의 Bluetooth 컴포넌트와 접속해 NXT MINDSTORM을 컨트롤하는 방법을 설명합니다.
  • NXT MINDSTORM에 대한 소프트웨어의 인스톨 방법 및 기본적인 조작, RT컴포넌트와 접속하는 방법을 설명합니다.
    gaiyou.png

환경 구축

LEGO의 조립

nxtOSEK환경 설정(Windows XP/Vista)

kannkyousetumei.png

  • Cygwin의 인스톨
    • Cygwin은 Windows환경에서 각종의 Linux 소프트웨어를 실행할 수 있는 프로그램입니다.
    • Download : http://www.cygwin.com/
    • 설정 옵션
      • Root Directory : 「c:\cygwin」
      • Select Packages : Devel 카테고리에 있는 「make 3.81-1」과 Libs카테고리에 있는 「libintl3」을 선택해 인스톨합니다.
  • GNU ARM의 인스톨(반드시 4.0.2)
    • GNU ARM은 NXT의 ARM7 코어 프로세서(AT91SAM7S256)에 대응한 GCC 컴파일러 패키지
    • Download : http://www.gnuarm.com/bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4.exe
    • 설정 옵션
      • Diriectory : 「c:\cygwin\GNUARM」
      • Select Components : 「Floating Point Unit」선택하지 않음
      • Select Additional Tasks : 「Install Cygwin DLLs...」선택하지 않음
  • NeXTTool의 다운로드
    • NeXTTool은 NXT와 통신용 PC 콘솔으로 *.rxe(어플리케이션)과 *.rfw(펌웨어)를 NXT에 업로드 할 수 있습니다.
    • Download : http://bricxcc.sourceforge.net/nexttool.zip
    • 설정 옵션
      • 압축해제 디렉토리 : 「c:\cygwin\nexttool」
  • 확장 NXT 펌웨어의 다운로드
    • 확장 NXT 펌웨어는 표준 NXT 펌웨어를 베이스로 기능을 확장한 것입니다.
    • NXT의 ARM7코어 CPU의 네이티브 코드도 실행할 수 있습니다.
    • Download : http://bricxcc.sourceforge.net/lms_arm_jch.zip
    • 설정 옵션
      • 「lms_arm_nbcnxc_107.rfw」만을 복사합니다.
      • 복사 디렉토리 : 「c:\cygwin\nexttool」
  • 「sg.exe」파일 추가

확장 NXT 펌웨어의 NXT에 업로드

  • NXT 펌웨어 업데이트 모드
    • 전원이 ON인 상태에서 리셋 버튼을 안전핀으로 5초정도 누릅니다.
      resetButton.jpg
    • NXT 스피커에 작은 클릭 소리가 들립니다.
    • NXT와 PC의 USB 접속
  • Cygwin기동 및 확장 펌웨어 업로드 cygwin-icon.gifcygwin를 기동합니다.
    • 이하의 커맨드를 입력
       $cd c:\cygwin\nexttool
       $./NeXTTool.exe /COM=usb -firmware=lms_arm_nbcnxc_107.rfw
    • 업로드가 완료되면 NXT의 LCD화면이 모래바람 같이 됩니다.
    • NXT의 버튼이 조작할 수 없는 경우는 NXT의 배터리를 빼서 다시 장착하는 것으로 확장 NXT 펌웨어가 기동

NXTway 소스 수정 및 컴파일

NXT측의 소스 수정 및 컴파일, 업로드

  • 소스 수정
    • 「c:\cygwin\nxtOSEK\samples_c++\cpp\NXTway_GS++」폴더에 있는 「sample.cpp」파일에서
      samplecpp.png
    • 「btConnection.connect」로 검색하면 이하의 「Main Task」부분의 함수가 검색됩니다.
       //=============================================================================
       // Main Task
       TASK(TaskMain)
       {
           // establish blutooth connection with a PC to use a PC HID GamePad controller
           BTConnection btConnection(bt, lcd, nxt);
           (void)btConnection.connect(BT_PASS_KEY);
       
           for (U32 i = 5; i <= Lcd::MAX_CURSOR_Y; i++) lcd.clearRow(i);
           lcd.cursor(0,5);
           lcd.putf("snsns", "TOUCH:START/STOP", "STAND IT UP AND", "WAIT FOR A BEEP.");
           lcd.disp();
           SetRelAlarm(Alarm4msec, 1, 4); // Set 4msec periodical Alarm for the drive event
       
           while(1)
           {
               sonarDriver.checkObstacles(sonar);
               clock.wait(40); // 40msec wait
           }
       }
    • 「(void)btConnection.connect(BT_PASS_KEY);」를 이하와 같이 수정합니다.
       (void)btConnection.connect(BT_PASS_KEY, "alias")
    • "alias"의 부분에 자신이 확인할 수 있는 이름을 입력합니다.
  • 컴파일 cygwin-icon.gifcygwin을 기동합니다.
     $cd c:\cygwin\nxtOSEK\samples_c++\cpp\NXTway_GS++
    • cygwin상에서 위의 폴더 「C:\cygwin\nxtOSEK\samples_c++\cpp\NXTway_GS++」에서
       $make all
       ...
       Generating binary image file: nxtway_gs++_rom.bin
       Generating binary image file: nxtway_gs++_ram.bin
       Generating binary image file: nxtway_gs++_.rxe
       $
    • 위와 같은 메세지를 확인하면 컴파일이 완료된 것입니다.
  • NXT에 업로드
    • 확장 NXT 펌웨어가 들어있는 NXT를 USB로 연결합니다.
    • 컴파일한 cygwin의 상태에서
       $sh ./rxeflash.sh
       Executing NeXTTool to upload nxtway_gs++.rxe...
       nxtway_gs++.rxe=34240
       NeXTTool is terminated.
       $
    • 위와 같은 메세지를 확인한다면 업로드 완료

동작 확인

NXT측의 기동

  • 아래의 그림에서 ⑦번의 상태에서 대기합니다.
    NXTStart.jpg
    ;

PC측 RTC의 기동

  • OpenRTM-aist의 Naming Service를 기동합니다.
    NamingServiceStart.png
  • TkJoyStickComp 컴포넌트를 기동합니다.
    TkJoyStickCompStart.png
  • Bluetooth 접속
    • Bluetooth를 PC에 접속합니다.
      BluetoothPlus.png
    • "alias"의 분분에 입력한 네임의 Bluetooth 디바이스를 접속합니다.
      BluetoothPlus2.png
    • Password는 기본적으로 「1234」로 설정되어 있습니다.
      BluetoothPass.png
    • 접속한 Bluetooth의 Comport를 확인합니다.
      BluetoothComport.png
  • Bluetooth 컴포넌트를 기동
    • BluetoothComp.zip을 다운로드
    • BluetoothComp.zip을 압축해제 한 뒤, 「components」폴더에 있는 「NXTBlueToothComp.exe」파일을 실행합니다.
      NXTBluetoothCompStart.png
  • RT System Editor를 기동
    • 아래의 그림과 같이 RT System Editor를 기동합니다.
      RTSystemEditorStart.png
  • Naming Service 추가
    • 아래의 그림과 같이 추가 버튼을 눌러 「127.0.0.1」를 추가합니다.
      NamingServicetuika.png
  • 컴포넌트 배치
    • 아래의 그림과 같이 컴포넌트를 배치합니다.
      Componenthiichi.png
  • TkJoyStickComp와 Bluetooth컴포넌트를 연결
    • 아래의 그림과 같이 TkJoyStickComp와 BluetoothComp를 연결합니다.
      Componentsetuzoku.png
    • Bluetooth 컴포넌트의 Configuration View에서 「m_COM」변수에 확인한 Comport의 번호를 입력합니다.
      Setupm_COM.jpg
  • Activate
    Activate.png
    • 연결이 완료되면 NXT는 아래의 그림과 같이 됩니다.
      8.png

ダウンロード

最新バージョン : 2.1.0-RELESE

統計

Webサイト統計
ユーザ数:3399
プロジェクト統計
RTコンポーネント309
RTミドルウエア35
ツール25
文書・仕様書2

OpenRTM@Github

OpenRTM-aist GitHubサイト

ROS

Robot Operating System

Choreonoid

モーションエディタ/シミュレータ

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク

産総研が提供するRTC集

東京オープンソースロボティクス協会