メインコンテンツに移動
ホーム >> OpenRTM-aist (C++版) 1.x系のインストール >> QNX へのインストール

QNX へのインストール

qnx_logo.png

QNX

QNX(キューエヌエックス、またはキューニックス)は主に組み込みシステム向けに販売されている、商用リアルタイムOSです。 POSIX準拠のUNIX系OSで、組込み用OSでありながら一般的なUNIX同様プロセス型のオペレーティング・システムです。 カーネルはマイクロカーネルであり、様々な機能はサーバとしてモジュール化され、用途に応じて必要なサーバのみを動作させるため、コンパクトなシステムを構成することができます。 x86ファミリ、MIPS、PowerPC、SH-4、ARM、StrongARM、XScaleなど様々なCPU上で動作可能であり、さらに機能安全規格 IEC61508 に準拠し認証を取得しているため、安全認証が必要な安全関連系にも利用することができます。

QNXには教育機関向けの無償ライセンスプログラムもあり、大学などでは比較的気軽に利用することができます。

pkgsrc

pkgsrcはUNIX用のパッケージマネジメントシステムの一つであり、FreeBSDのports collectionから派生し、現在はNetBSDのパッケージマネジメント・システムとして利用されています。 pkgsrc自体は、特定のOSに依存するものではなく、NetBSD, Solaris, Linux, Mac OS X, FreeBSD, OpenBSD, IRIX, BSD/OS, AIX, Interix, DragonFlyBSD, OSF/1, HP-UX, QNX, Haiku, MINIX 3, IllumosといったUNIX系の様々なOS上で利用できます。

pkgsrc for QNX

QNXにはパッケージ管理システムはなく、QNXのユーザフォーラムにおいて QNX 用の pkgsrc がメンテナンスされています。

OSをインストール後、pkgsrcをリポジトリからチェックアウトするなどして、システムに配置します。(リポジトリへのアクセスには、QNX forumのアカウントが必要になります。) svnリポジトリからのチェックアウトは大変時間がかかるので、pkgsrc_HEAD650_r396.tgz をダウンロードして利用することもできますが、事前にpkgsrcの最新バージョンをチェックすることをおすすめします。

 # cd /usr/
 # svn checkout --username <username> http://community.qnx.com/svn/repos/pkgsrc/HEAD_650/pkgsrc
 # (cd pkgsrc/bootstrap && ./bootstrap)
 # (cd pkgsrc/misc/figlet && bmake install)
 # pkg_info
 または
 # cd /usr
 # tar xvzf <somewhere>/pkgsrc_HEAD650_r396.tgz
 # (cd pkgsrc/bootstrap && ./bootstrap)
 # (cd pkgsrc/misc/figlet && bmake install)
 # pkg_info

OpenRTM-aist のpkgsrcによるインストール

pkgsrcはバイナリパッケージによるインストールと、ソースからビルドしてインストールする方法があります。 すべてのパッケージがバイナリで提供されているわけではないので、必要に応じてソースからビルドする必要があります。

OpenRTM.orgのpkgsrcリポジトリ

OpenRTM-aistはopenrtm.orgの以下のURLにおいてバイナリパッケージを提供しています。

OpenRTM-aistで必要なomniORBも、上述の配布サイトにはバイナリパッケージが無いため、openrtm.orgで提供されています。

インストール

インストール方法は以下のとおりです。

 # export PKG_PATH=http://www.openrtm.org/pub/pkgsrc/packages/QNX/i386/6.5.0/All
 # pkg_add -v OpenRTM-aist-1.1.0-RELESE
 1.1.0-RELESEの部分は適宜インストールするバージョンに置き換えてください。
 Running install with PRE-INSTALL for omniORB-4.1.6.
 bin/omkdepend
 bin/omnicpp
   : omniORBのインストールが始まる
 man/man1/omniidl.1
 Running install with PRE-INSTALL for omniORB-4.1.6.
 Package omniORB-4.1.6 registered in /var/db/pkg/omniORB-4.1.6
   : OpenRTM-aistのインストールが始まる
 lib/libcoil.so
 lib/libcoil.la
 lib/libcoil-1.1.0.so
  :
 share/openrtm-1.1/doc/IDLReference-en/html/unionSDOPackage_1_1Numeric.html
 etc/rtc.conf.sample
 Package OpenRTM-aist-1.1.0-RELEASE registered in /var/db/pkg/OpenRTM-aist-1.1.0-RELEASE
 #
 # pkg_info|grep OpenRTM
 OpenRTM-aist-1.1.0-RELEASE RT-Middleware and OMG RTC framework

以上でインストールは終了です。

テスト

/usr/pkg/share/openrtm-1.1/examples の下にサンプルプログラムがインストールされています。 これを利用してOpenRTM-aistの動作確認を行います。

ネームサーバの起動

まず、ネームサーバを起動します。

 # rtm-naming
 あるいは
 # cp /usr/pkg/share/examples/rc.d/omninames /etc/rc.d/
 # chmod 755 /etc/rc.d/omninames
 # /etc/rc.d/omninames

後者では、omninamesの起動スクリプトをrcディレクトリ (/etc/rc.d) にコピーしてからそれを起動しています。 なお、このスクリプトはネームサーバの停止を行うこともできます。

 # /etc/rc.d/omninames stop

ConsoleOut

まず、ConsoleOutコンポーネントを起動してみます。 下の例ではホームディレクトリに tmp ディレクトリを作り、そこにコピーしてから実行しています。

 # cd ; mkdir tmp ; cd tmp
 # cp -r /usr/pkg/share/openrtm-1.1/example .
 # cd example
 # ./ConsoleOutComp
 succeed.
 =================================================
  Component Profile
 -------------------------------------------------
 InstanceID:     ConsoleOut0
 Implementation: ConsoleOut
 Description:    Console output component
  :
 =================================================
 Port0 (name): ConsoleOut0.in
 -------------------------------------------------
 - properties -
 port.port_type: DataInPort
 dataport.data_type: IDL:RTC/TimedLong:1.0
 dataport.subscription_type: Any
 dataport.dataflow_type: push,pull
 dataport.interface_type: corba_cdr
 -------------------------------------------------

ConsoleIn

 # cd ; cd tmp/example
 # ./ConsoleInComp
 Creating a component: "ConsoleIn"....succeed.
 =================================================
  Component Profile
 -------------------------------------------------
 InstanceID:     ConsoleIn0
 Implementation: ConsoleIn
 Description:    Console input component
  :
 =================================================
 Port0 (name): ConsoleIn0.out
 -------------------------------------------------
 - properties -
 port.port_type: DataOutPort
 dataport.data_type: IDL:RTC/TimedLong:1.0
 dataport.subscription_type: flush,new,periodic
 dataport.dataflow_type: push,pull
 dataport.interface_type: corba_cdr
 -------------------------------------------------
  :
 Please input number:

ここで、別のPC上でRTSystemEditorを起動し、ポートを接続、アクティベートします。 ConsoleInのプロンプトに対して数字を入力すると、ConsoleOutから出力されます。

qnx_test.png
QNX上で動作するConsoleInとConsoleOutコンポーネント

typo 発見しました

x pkg_add -v OpenRTM-aist-1.1.0-RELESE でOpenRTM-aistをインストール

o pkg_add -v OpenRTM-aist-1.1.0-RELEASE でOpenRTM-aistをインストール

上記の正しい方を使ったらインストールできました.