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 で提供されています。

インストール

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

  • 環境変数 PKG_PATH に http://www.openrtm.org/pub/pkgsrc/packages/QNX/i386/6.5.0/All をセット
    • 6.5.0 は QNX のバージョンですので適宜読み替えてください
  • pkg_add -v OpenRTM-aist-1.1.0-RELESE で OpenRTM-aist をインストール
    • omniORB も同時にインストールされます

 # 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をインストール

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

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

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

Choreonoid

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

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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