How to use OpenRTM on T-Kernel

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

はじめに


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

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


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

Teamacaron環境設定

本書はTeamacaron開発キットを実行環境の一例として記載します。
Teamacaron開発キット付属のマニュアル(取扱説明書)を参照して起動
ディスクを作成してください。

TeamacaronでRTCを実行するために必要な設定変更を行います。
ホストPCとTeamacaronをRS-232Cクロスケーブルで接続してホストPC上
で通信ソフトウェア(TeraTermなど)を起動してくだTeraTerm

ネットワーク設定

通信ソフトウェアのコンソールから以下のコマンドを実行して
Teamacaron向けのネットワーク設定を行ってください。
      [/SYS]% netconf -c

システム設定

通信ソフトウェアのコンソールから以下のコマンドを実行してください。
      [/SYS]% sysconf TMaxSemId 500
[/SYS]% sysconf TMaxFlgId 500
[/SYS]% sysconf TMaxTskId 500
[注]デフォルト値ではシステムリソースが不足して複数のRTCを実行できないなど
支障が出るため、上限を引き上げてください。

[サンプル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など)を起動してくだTeraTerm
通信ソフトウェアのコンソールから以下のコマンドを実行してください。
    [/SYS]% /SYS/TkEcTestComp -f /SYS/rtc.conf &

RTSystemEditorを起動してTkEcTestCoTkEcTestCompください。

通信ソフトウェアのコンソールに以下が出力されるのを確認してください。
    [time] XXXmsec (min:XXX, max:XXX)

[サンプル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など)を起動してくだTeraTerm
通信ソフトウェアのコンソールから以下のコマンドを実行してください。
    [/SYS]% devconf DEBUGMODE 0
[/SYS]% exit
[IMS]% exit -1

RTSystemEditorを起動してrtc_hokuyoaistCompが表示されるのを確認してください。

TeamacaronとURGシリーズセンサをRS-232Cケーブルで接続してください。

URGシリーズセンサとTeamacaronの電源を入れなおしてください。

RTSystemEditorでrtc_hokuyoaistCompをアクティブ化してください。

実行コンテキストの変更方法

OpenRTM on T-Kernel version 1.0.2にてリアルタイム実行を改善させた
実行コンテキスト(EC)を提供しています。
onExecuteの実行時間に依存せずに周期実行させたいときはrtc.confの
exec_cxt.periodic.typeにTkTkPeriodicExecutionContext定してください。

  ---- rtc.conf ----
exec_cxt.periodic.type:PeriodicExecutionContext

exec_cxt.periodic.type:TkPeriodicExecutionContext

TkPeriodicExecutionContextへ切り替えることでリアルタイム実行の精度を
あげることができます。T-Kernelが提供するリアルタイム実行をフルに利用
するためには、RTCが動作するプロセスレベルではなく、デバイスドライバ
のレベルで実装する必要があります。
この場合はタスク単位での優先度制御、周期ハンドラが利用可能になります。

(補足) タイマー割り込み間隔の変更方法

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が追加されました。
(参考) httphttp://www.t-engine.org/ja/specifications

[END]