*
* OpenRTM on T-Kernel
*
* README
*
* Changes:
* - 2012-02-23 <openrtm-tk> v1.0.2向けに加筆修正.
* - 2011-11-08 <openrtm-tk> 新規作成.
*

(1) はじめに

本書はOpenRTM on T-Kernelの実行手順を説明したものです。

・OpenRTM on T-Kernelのライブラリをソースからコンパイルして開発環境
　にインストールする手順は "INSTALL" を参照してください。
・RTCのサンプルとしてT-Kernel対応させたRTC:HokuyoAistを含めています。
　TeamacaronのシリアルポートにURGセンサーを接続して距離データを取得
　できます。
・RTC:HokuyoAist-tkの距離データを受け取るサンプルはRtcUrgViewerを参照
　ください。Linux(Ubuntu 10.04)で動作を確認しています。
　- RtcUrgViewer
　　http://sourceforge.jp/projects/rtm-t-kernel/releases/?package_id=12614
　　→ rtcurgviewer-X.YY.ZZ.tar.bz2
　　　・RTC:HokuyoAistから受け取った距離データをGUI表示するRTCです。
　　　・北陽電機さまが公開されているUrgViewerを改造してRTC化しました。
　　　　http://www.hokuyo-aut.co.jp/02sensor/07scanner/download/index.html
・本書で扱うハードウェアの入手元は以下です。
　- Teamacaron [パーソナルメディア]
　　http://www.t-engine4u.com/products/teamacaron.html
　- URG-04LX [北陽電機]
　　http://www.hokuyo-aut.co.jp/02sensor/07scanner/urg_04lx.html

(2) OpenRTM on T-Kernel環境のインストール

INSTALLに記載されている手順にしたがってインストールしてください。


(3) Teamacaron環境設定
  本書はTeamacaron開発キットを実行環境の一例として記載します。
  Teamacaron開発キット付属のマニュアル(取扱説明書)を参照して起動
  ディスクを作成してください。
  
  TeamacaronでRTCを実行するために必要な設定変更を行います。
  ホストPCとTeamacaronをRS-232Cクロスケーブルで接続してホストPC上
  で通信ソフトウェア(TeraTermなど)を起動してください。
  
  ネットワーク設定
    通信ソフトウェアのコンソールから以下のコマンドを実行して
    Teamacaron向けのネットワーク設定を行ってください。
      [/SYS]% netconf -c
  
  システム設定
    通信ソフトウェアのコンソールから以下のコマンドを実行してください。
      [/SYS]% sysconf TMaxSemId 500
      [/SYS]% sysconf TMaxFlgId 500
      [/SYS]% sysconf TMaxTskId 500
    [注]デフォルト値ではシステムリソースが不足して複数のRTCを実行できないなど
      支障が出るため、上限を引き上げてください。


(4) [サンプルRTC] TkEcTestComp を動作させる

(4-1) 実行準備
  設定ファイルの作成
    rtc.confファイルを以下の内容で作成してください。
      corba.nameservers: XXX.XXX.XXX.XXX	←ネームサーバのIPアドレスを指定する。
      naming.formats: %n.rtc
      logger.enable: NO
      exec_cxt.periodic.rate:10			←実行周期(Hz)を指定する。
      exec_cxt.periodic.type:TkPeriodicExecutionContext		←ECを指定する(6節参照)。
    
  ファイルの転送
    通信ソフトウェアのコンソールから以下のコマンドを実行して
    ファイルの転送を行ってください。
      [/SYS]% recv -cd TkEcTestComp
      [/SYS]% recv -cd rtc.conf
      
      [注]使用しているPCのOSで転送方法が異なります。
          詳細はTeamacaron開発キット付属のマニュアルを参照してください。

(4-2) TkEcTestCompの実行
  ホストPCとTeamacaronをRS-232Cクロスケーブルで接続してホストPC上
  で通信ソフトウェア(TeraTermなど)を起動してください。
  
  通信ソフトウェアのコンソールから以下のコマンドを実行してください。
    [/SYS]% /SYS/TkEcTestComp -f /SYS/rtc.conf &
  
  RTSystemEditorを起動してTkEcTestCompをアクティベートしてください。
  
  通信ソフトウェアのコンソールに以下が出力されるのを確認してください。
    [time] XXXmsec (min:XXX, max:XXX)


(5) [サンプルRTC] RTC:HokuyoAist-tk を動作させる

(5-1) 実行準備
  設定ファイルの作成
    rtc.confファイルを以下の内容で作成してください。
      corba.nameservers: XXX.XXX.XXX.XXX	←環境に合わせて変更してください。
      naming.formats: %n.rtc
      logger.enable: NO
      exec_cxt.periodic.rate:5			←実行周期(Hz)を指定してください。
      exec_cxt.periodic.type:TkPeriodicExecutionContext
      Sensor.rtc_hokuyoaist.config_file: /SYS/rtc_hokuyoaist.conf
    
    rtc_hokuyoaist.confファイルを以下の内容で作成してください。
      configuration.active_config: default
      
      conf.default.port_opts: type=serial,device=rsa,baud=19200,timeout=1
      conf.default.start_angle: 0.0
      conf.default.end_angle: 0.0
      conf.default.cluster_count: 1
      conf.default.enable_intensity: 0
      conf.default.high_sensitivity: 0
      conf.default.pull_mode: 0
      conf.default.new_data_mode: 0
      conf.default.error_time: 5
      conf.default.x: 0.0
      conf.default.y: 0.0
      conf.default.z: 0.0
      conf.default.roll: 0.0
      conf.default.pitch: 0.0
      conf.default.yaw: 0.0
      
      conf.__widget__.port_opts: text
      conf.__widget__.start_angle: spin
      conf.__widget__.end_angle: spin
      conf.__widget__.cluster_count: spin
      conf.__widget__.enable_intensity: spin
      conf.__widget__.high_sensitivity: spin
      conf.__widget__.pull_mode: spin
      conf.__widget__.new_data_mode: spin
      conf.__widget__.error_time: spin
      conf.__widget__.x: spin
      conf.__widget__.y: spin
      conf.__widget__.z: spin
      conf.__widget__.roll: spin
      conf.__widget__.pitch: spin
      conf.__widget__.yaw: spin
      
      conf.__constraints__.cluster_count: 1<=x
      conf.__constraints__.enable_intensity: 0<=x<=1
      conf.__constraints__.enable_intensity: 0<=x<=1
      conf.__constraints__.high_sensitivity: 0<=x<=1
      conf.__constraints__.pull_mode: 0<=x<=1
      conf.__constraints__.new_data_mode: 0<=x<=1
      conf.__constraints__.error_time: 0<=x
  
  STARTUP.CLIの修正
    $BD/kernel/config/em1d512/STARTUP-tshell.CLIをSTARTUP.CLIに変更してください。
    カーネル起動後、STARTUP.CLIに記載したコマンドが自動実行されます。
    
    STARTUP.CLIファイルを以下の内容で修正してください。
      *
      alias do /SYS/$$PROGRAM.BOX/DLED /SYS/USR 0
      *
      /SYS/rtc_hokuyoaistComp -f /SYS/rtc.conf &	←この1行を追加してください。
      *
      if &DBG == 0
              do
              exit
      else
              do &
      endif
  
  ファイルの転送
    通信ソフトウェアのコンソールから以下のコマンドを実行して
    ファイルの転送を行ってください。
      [/SYS]% recv -cd rtc_hokuyoaistComp
      [/SYS]% recv -cd rtc.conf
      [/SYS]% recv -cd rtc_hokuyoaist.conf
      [/SYS]% recv -cd STARTUP.CLI
      
      [注]使用しているホストPCのOSで転送方法が異なります。
          詳細はTeamacaron開発キット付属のマニュアルを参照してください。

(5-2) rtc_hokuyoaistCompの実行
  ホストPCとTeamacaronをRS-232Cクロスケーブルで接続してホストPC上
  で通信ソフトウェア(TeraTermなど)を起動してください。
  
  通信ソフトウェアのコンソールから以下のコマンドを実行してください。
    [/SYS]% devconf DEBUGMODE 0
    [/SYS]% exit
    [IMS]% exit -1
  
  RTSystemEditorを起動してrtc_hokuyoaistCompが表示されるのを確認してください。
  
  TeamacaronとURGシリーズセンサをRS-232Cケーブルで接続してください。
  
  URGシリーズセンサとTeamacaronの電源を入れなおしてください。
  
  RTSystemEditorでrtc_hokuyoaistCompをアクティブ化してください。


(6) 実行コンテキストの変更方法
  OpenRTM on T-Kernel version 1.0.2にてリアルタイム実行を改善させた
  実行コンテキスト(EC)を提供しています。
  onExecuteの実行時間に依存せずに周期実行させたいときはrtc.confの
  exec_cxt.periodic.typeにTkPeriodicExecutionContextを指定してください。
  ---- rtc.conf ----
  exec_cxt.periodic.type:PeriodicExecutionContext
    ↓
  exec_cxt.periodic.type:TkPeriodicExecutionContext
  
  TkPeriodicExecutionContextへ切り替えることでリアルタイム実行の精度を
  あげることができます。T-Kernelが提供するリアルタイム実行をフルに利用
  するためには、RTCが動作するプロセスレベルではなく、デバイスドライバ
  のレベルで実装する必要があります。
  この場合はタスク単位での優先度制御、周期ハンドラが利用可能になります。


(7) タイマー割り込み間隔の変更
  Teamacaronに実装されているT-Kernelはタイマー割り込み間隔が10ミリ秒
  に設定されています。TTimPeriodの値を変更することで1ミリ秒とすること
  ができます。
  ---- SYSCONF ----
  TTimPeriod      10      # タイマー割り込み間隔(ミリ秒)
  
  通信ソフトウェアのコンソールから以下のコマンドを実行してください。
    [/SYS]% sysconf TTimPeriod	1
  
  [注]Teamacaronに実装されているT-KernelはT-Kernel 1.0準拠です。
    このため時間管理の最小単位は1ミリ秒です。T-Kernel 2.0仕様でマイクロ
    秒単位のAPIが追加されました。
    (参考) http://www.t-engine.org/ja/specifications

[END]
