OpenRTM-aist(C++版、Python版、Java版)に関するトラブルシューティング

OpenRTM-aist(C++版、Python版、Java版)に関するトラブルシューティングをまとめました。

OpenRTM-aist(共通)

OS共通

コンポーネントは起動しているはずなのにゾンビオブジェクトとして表示される。

コンポーネントは起動しており、ネームサーバにも登録されているのに、RTSystemEditorのネームサービスビュー上ではゾンビオブジェクトとして表示されており、システムエディタにドラッグアンドドロップしても何も表示されない。
[原因]コンポーネントを起動したホストに到達できない
RTSystemEditorが動作しているPCからコンポーネントを起動したホストに何らかの理由で到達できていない可能性があります。
まず、RTSystemEditorが動作しているPCからコンポーネントを起動したホストに対してpingが通るか確認してください。
例えば、以下の3台のホストA,B,Cがあるとします。
    • hostA: コンポーネントが動いているホスト
    • hostB: ネームサーバが動いているホスト
    • hostC: RTSystemEditorが動いているホスト
これらのホストのネットワークが以下のような構成になっており、
[hostA]-(ネットワークI)-[hostB]-(ネットワークI)-[hostC]
かつhostBがネットワークIネットワークII間を適切にルーティングするように設定されていなければ、hostCからhostAへは到達できません。
こういった場合は、hostBを適切に設定してhostCからhostAへ到達できるようにする必要があります。
[原因]コンポーネントを起動したホストでファイヤウォールが有効になっている
コンポーネントが動作しているホストでファイヤウォールが動作している場合、RTSystemEditorとコンポーネントが通信できずにこうした現象が発生する場合があります。
ファイヤウォールの設定を見直すかOFFにするなどして、外部からコンポーネントに通信できるようにしてください。

Windows

インストーラ実行中に「…特権が不足しています。」などと表示されて、インストールが続行できない

Administrator特権を持つユーザーとしてログオンし、インストール作業を行ってください。

コンポーネントがネームサービスに登録されない。

ネームサーバ、コンポーネントを起動後、RTSystemEditorなどでネームサーバに接続し、コンポーネントが登録されていない場合があります。
このような場合は、
まずは、ログレベルを最高にするためrtc.confに
 logger.log_level:PARANOID
を設定し、コンポーネントを起動してみてください。
コンポーネントのログに
 naming_svc NameServer connection succeeded: corba/ホスト名:ポート番号
というメッセージ無ければ、ネームサーバへの登録に失敗しています。
このような場合、以下の原因が考えられます。
rtc.conf の corba.nameservers が正しく設定されていない

コンポーネントが読み込むrtc.confが正しく設定されているかどうか確認してください。利用しようとするネームサーバを openrtm.aist.go.jp というホスト名と仮定すると、以下の行がrtc.confに含まれていなければなりません。

 corba.nameservers: openrtm.aist.go.jp

また、ネームサーバをポート番号を指定して起動した場合には、ポート番号も指定する必要があります。ネームサーバ起動時に指定したポート番号が1234番の場合、以下のように設定する必要があります。

 corba.nameservers: openrtm.aist.go.jp:1234

ポート番号が指定されない場合、デフォルトポート番号2809が使用されます。これはomniORBのネームサーバ(omniNames)のデフォルトポート番号です。もし、omniORB以外のネームサーバを使用する場合は注意してください。
コンポーネント起動したホストからネームサーバを起動したホストへネットワーク接続ができない
コンポーネントを起動したホストからネームサーバを起動したホストへネットワーク接続が出来るか確認してください。
まずは、pingが通るかどうか確認します。もし通らなければネットワークの設定を見直してください。
pingが通っても、ファイヤウォールなどで接続が禁止されている可能性があります。まず、ネームサーバを起動したホスト側のファイヤウォールの設定を見直してください。一番簡単な方法は、ファイヤウォールをOFFにすることです。方法は各OSやファイヤウォールの設定方法を参照してください。
ネットワークインターフェースが2つ以上ある

ホストにネットワークインターフェースが2つ以上ある場合、CORBAにどちらのインターフェースを使用するか教えてやる必要があります。
これは、ネームサーバ側、コンポーネント側両者ともに考慮しなければなりません。
今仮にそれぞれのホストが2つずつインターフェースを持っているとして、各インターフェースのアドレスが以下のように設定されていると仮定します(maskは255.255.255.0と仮定)。
ネームサーバhost: eth0:192.168.0.1, eth1:192.168.100.1
コンポーネントhost: eth0:192.168.0.2, eth1:192.168.11.96
この場合、ネームサーバhostとコンポーネントhostは 192.168.0 のネットワークで接続されているはずです。
従って、
ネームサーバには eth0:192.168.0.1
コンポーネントには eth0:192.168.0.2
のインターフェースを使うように教えてあげる必要があります。
ネームサーバ側では、ネームサーバを起動する際に OMNIORB_USEHOSTNAME という環境変数を設定する必要があります。

 (csh系)
 > setenv OMNIORB_USEHOSTNAME 192.168.0.1
 (bash系)
 > export OMNIORB_USEHOSTNAME=192.168.0.1
 > rtm-naming もしくは omniNames でネームサーバを起動

直接、rtm-naming (UNIX系) もしくは rtm-naming.bat (Windows) に書き込んでも良いでしょう。
一方、コンポーネント側はrtc.confにcorba.endpointの設定を記述することで、使用するインターフェースを指定することが出来ます。

 corba.endpoint: インターフェースIPアドレス:ポート番号
 corba:endpoint: 192.168.0.2:       (ポート番号を指定しない場合)
 corba:endpoint: 192.168.0.2:1234   (ポート番号を指定する場合)

ポート番号は特に指定しなくても構いませんが、IPアドレスの後の:(コロン)を忘れずに付けてください。

OpenRTM-aist(C++版)

Windows

&aname(cmakecompilererrro)

CMake実行時にコンパイラが見つからない

CMake実行時に以下のエラーが発生する。

 No CMAKE_CXX_COMPILER could be found. 

まずは、<プロジェクトディレクトリ>/<buildディレクトリ>/CMakeFiles/CMakeError.log

を確認してください。

(原因1) 間違ったコンパイラを指定した

CMakeを実行 (Configure) する際に、コンパイラをしてします。インストールされているVisual Studioとは異なるコンパイラを指定した場合には、コンパイラが見つからず、No CMAKE_CXX_COMPILER could be found. のようなエラーが発生します。

CMakeError.log を見ると、以下のように、コンパイラチェック開始直後にエラーが発生します。

 Microsoft (R) Build Engine バージョン 4.6.1586.0
 [Microsoft .NET Framework、バージョン 4.0.30319.42000]
 Copyright (C) Microsoft Corporation. All rights reserved.
 
 2017/04/08 10:47:04 にビルドを開始しました。
 ノード 1 上のプロジェクト "C:\workspace\Flip\build\CMakeFiles\3.7.2\CompilerIdC\CompilerIdC.vcxproj" (既定のターゲット)。
 C:\workspace\Flip\build\CMakeFiles\3.7.2\CompilerIdC\CompilerIdC.vcxproj(18,3): error MSB4019: インポートされたプロジェクト 
 "C:\Microsoft.Cpp.Default.props" が見つかりませんでした。<Import> 宣言のパスが正しいかどうか、およびファイルがディスクに存在しているかどうかを確認してください。
 プロジェクト "C:\workspace\Flip\build\CMakeFiles\3.7.2\CompilerIdC\CompilerIdC.vcxproj" (既定のターゲット) のビルドが終了しました -- 失敗。
 
 ビルドに失敗しました。
 
 "C:\workspace\Flip\build\CMakeFiles\3.7.2\CompilerIdC\CompilerIdC.vcxproj" (既定のターゲット) (1) ->
  C:\workspace\Flip\build\CMakeFiles\3.7.2\CompilerIdC\CompilerIdC.vcxproj(18,3): error MSB4019: インポートされたプロジェクト 
 "C:\Microsoft.Cpp.Default.props" が見つかりませんでした。<Import> 宣言のパスが正しいかどうか、およびファイルがディスクに存在しているかどうかを確認してください。
  
     0 個の警告
     1 エラー
 
 経過時間 00:00:00.50

対応方法:
正しいコンパイラを指定します。
  1. インストールされているOpenRTMを確認
    • → 32bitか、64bitか?
  2. インストールされているVisual Studioを確認
    • → Visual Studio 2008 (VC9), 2010 (VC10), 2012 (VC11), 2013 (VC12), 2015 (VC14), 2017 (VC15)
  3. CMakeのキャッシュを削除
    • コンパイラの指定を変更する際には必ずキャッシュを削除する必要があります。
  4. CMake Configure で正しいコンパイラを指定
    • 32bit/64bit はインストールされているOpenRTMに合わせる
      • 32bit は無印 (例: Visual Studio 10 2010)
      • 64bit はWin64 (例: Visual Studio 10 2010 Win64)
(原因2) Visual C++がインストールされていない

Visual Studioインストール時に、C++コンパイラを含むVisual C++がインストールがインストールされていない場合があります。

対応方法:
Visual C++をインストールします

再度インストーラを(手元にすでになければダウンロードしてから)起動し、「変更」インストールを行います。 インストールをカスタマイズするを選択して、インストール対象に Visual C++が含まれていることを確認してからインストールを行います。

この原因の場合も、CMakeError.log の出力内容は(原因1)と同じです。

(原因3) rc.exeが実行できない

まれに、インストールされているコンパイラをCMake実行時に正しく指定しているのにもかかわらず、No CMAKE_CXX_COMPILER could be found. のようなエラーが発生することがあります。 原因の一つとして、複数のバージョンのVisual Studioをインストール・アンインストール等を行った際に、まれにツールチェーンの設定に不整合が発生し、以下のようなエラー rc.exeが実行できない が発生することがあります。

   C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c
   CMakeCCompilerId.c
 Link:
   C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdC.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdC.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdC.lib" /MACHINE:X64 Debug\CMakeCCompilerId.obj
 LINK : fatal error LNK1158: 'rc.exe' を実行できません。 [C:\workspace\Flip\build\CMakeFiles\3.7.2\CompilerIdC\CompilerIdC.vcxproj]
 プロジェクト "C:\workspace\Flip\build\CMakeFiles\3.7.2\CompilerIdC\CompilerIdC.vcxproj" (既定のターゲット) のビルドが終了しました -- 失敗。
 
 ビルドに失敗しました。

対応方法:
rc.exeとrcdll.dllをコピーする

これに対する対処方法としては、rc.exeとrcdll.dllを対象コンパイラのツールディレクトリにコピーする方法があります。

  1. rc.exe, rcdll.dll を探す
    • エクスプローラーを開き C:\Program Files (又は C:\Program Files (x86)) を開きrc.exeを検索する。rcdll.dllは同じディレクトリにあるはずなので探すのはrc.exeのみでよい。
    • 通常は C:\Program Files (x86)\Windows Kits の下にいくつかのrc.exeが見つかるが x86 というディレクトリ下にあるものが対象。
    • 検索結果にて対象のrc.exeを右クリックし「ファイルの場所を開く(I)」を選択
  2. コンパイラのツールディレクトリを開く
    • 別のエクスプローラを開き、ツールのbinディレクトリを開く
    • 上のログの例では、C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe から、ツールのディレクトリが C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin (binディレクトリが対象、x86?amd64は無視してよい) であることがわかる。
  3. rc.exe, rcdll.dll をコピーする
    • 1.で開いたエクスプローラから rc.exe, rcdll.dll を2.で開いたツールディレクトリにコピーする

アプリケーションエラー「アプリケーションを正しく初期化できませんでした。…」

ネームサーバ起動しようとして、rtm-naming.batを実行すると、上記のようなエラーが出る場合があります。このエラーは起動環境上にVC++ライブラリのランタイムコンポーネントがないために起こります。VC++関連の開発環境(Microsoft Visual Studio 、Visual C++ Expressなど)をインストールしていない環境ではOpenRTM-aist(C++版)を動作させることはできませんので、必ずVC++関連の開発環境をインストールしてください。
OpenRTM-aist(C++版)には、VC8(VS2005)ベースのものと、VC9(VS2008)ベースのものがあります。OpenRTM-aist-X.X.X-jp_vc8.msi(X.X.Xはバージョンです。)などのVC8ベースのインストーラを使用した場合はMicrosoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) を、OpenRTM-aist-X.X.X-jp_vc9.msi(X.X.Xはバージョンです。)などのVC9ベースのインストーラを使用した場合はMicrosoft Visual C++ 2008 再頒布可能パッケージ (x86) をインストールしてください。

「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。…」

サンプルのRTコンポーネントなどを起動しようとして、xxxComp.exeを実行すると、上記のようなエラーが出る場合があります。このエラーは起動環境上にVC++ライブラリのランタイムコンポーネントがないために起こります。VC++関連の開発環境(Microsoft Visual Studio,Visual C++ Expressなど)をインストールしていない環境ではOpenRTM-aist(C++版)を動作させることはできませんので、必ずVC++関連の開発環境をインストールしてください。
OpenRTM-aist(C++版)には、VC8(VS2005)ベースのものと、VC9(VS2008)ベースのものがあります。OpenRTM-aist-X.X.X-jp_vc8.msi(X.X.Xはバージョンです。)などのVC8ベースのインストーラを使用した場合はMicrosoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) を、OpenRTM-aist-X.X.X-jp_vc9.msi(X.X.Xはバージョンです。)などのVC9ベースのインストーラを使用した場合はMicrosoft Visual C++ 2008 再頒布可能パッケージ (x86) をインストールしてください。

Visual C++ 2005 Express Editionでビルド時に「'windows.h'が見つからない」というエラー

Visual C++ 2005 Express Editionでビルド時に次のようなエラーが出る場合があります。

 >c:\program files\omniorb\include\omnithread\nt.h(35) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory

これは1.Microsoft Platform SDKがインストールがされていない、あるいは2.インクルードファイルパス・ライブラリパスの設定不備が原因と考えられます。
1.Microsoft Platform SDKがインストールがされていない
対応方法:
Microsoft Platform SDKをインストールする。その際は、こちらを参考にしてください。あるいは、次の2.にしたがってください。
2.インクルードファイルパス・ライブラリパスの設定不備
対応方法:
インストールをする順序などの関係で、Visual C++ 2005 Express Editionのインストールディレクトリとは違う場所にMicrosoft Platform SDKがインストールされてしまうなどの事情で、Visual C++ 2005 Express Edition のコンパイラがMicrosoft Platform SDKのインクルードファイルやライブラリをたぐれなくなっている場合があります。この場合は、インクルードファイルサーチパスやライブラリサーチパスにMicrosoft Platform SDKのインストールディレクトリを追加することで問題を解決できます。
インクルードファイルサーチパスの追加方法
Visual C++ 2005 Express Editionのメニューバー→「ツール」→「オプション」を選択し、「オプション」ウィンドウを開きます。左のツリービューから「プロジェクトおよびソリューション」→「VC++ディレクトリ」を選択します。
右上のプルダウンメニュー「ディレクトリを表示するプロジェクト」を「インクルード ファイル」として、Microsoft Platform SDKのインクルードファイルのディレクトリ(例えば、「C:\Program Files\Microsoft Platform SDK\Include」)をインクルードファイルのサーチパスに追加します。
ライブラリファイルサーチパスの追加方法
同様にして、「オプション」の左のツリービュー「VC++ディレクトリ」を選択した状態で、右上のプルダウンメニュー「ディレクトリを表示するプロジェクト」を「ライブラリ ファイル」として、Microsoft Platform SDKのライブラリファイルのディレクトリ(例えば、「C:\Program Files\Microsoft Platform SDK\Lib」)をライブラリファイルのサーチパスに追加します。
なお、サーチパスの具体的な追加方法などはVisual C++ 2005 Express Editionのヘルプ等を参照してください。

rtm-namingの実行でエラー発生

症状: rtm-naming.batを実行するとアプリケーションエラーが発生する。
VC++関係のライブラリがインストールされていない可能性が考えられます。
VC++関係のライブラリがインストールされていない
Visual Studio 2005等のアプリケーションがインストールされていない場合は、ここVisual Studio 2005 Express Editionから"Visual C++ 2005 Express Edition"のインストールを行って下さい。

rtm-namingが実行できない

症状:rtm-naming.batを実行しても黒い窓(コマンドプロンプト画面)が一瞬開いて閉じてしまう。
[原因]omniORBがインストールされていない
rtm-naming.bat内では通常omniORBのネームサーバomniNames.exeを実行します。
omniORBがインストールされていないとomniNames.exeもインストールされないので、ネームサーバを実行できません。
ダウンロードページからomniORBをダウンロードしインストールしてください。
[原因]logディレクトリのパス中に2バイト文字が含まれている

rtm-naming.bat内では通常omniORBのネームサーバomniNames.exeを以下のように実行します。

 omniNames.exe -start 2809 -logdir %TEMP%

通常環境変数 %TEMP% はユーザのテンポラリディレクトリ

 C:\Documents and Settings\ユーザ名\Local Settings\Temp

を指します。ここで、ユーザ名が日本語の場合、omniNamesがログファイルを正しく作成できないため、実行できずに終了します。
対応策としては、以下の3つが考えられます。
日本語のユーザ名を使用しない
日本語を使用しないユーザを新たに作り、その環境で実行する。
rtm-naming.batを書き換える
C:\Program Files\OpenRTM-aist\[バージョン番号]\binの下にあるrtm-naming.batの中の以下の部分
 %cosnames% -start %port% -logdir %TEMP%\ 

 %cosnames% -start %port% -logdir [パスに日本語を含まないログディレクトリ]
のように書き換えます。
パスに日本語を含まないログディレクトリは自分に書き込みの権限があるディレクトリで、安全な場所にしてください。たとえば、C:\tmp など。
Java版のorbdを使用する
OpenRTM-aistのJava版とJDKをインストールすると、スタートメニューのJava版のexamplesの中にstart-orbd.vbsが現れます。これは、JDKに付属するCORBAネームサーバを起動するスクリプトです。
このネームサーバには、omniNamesのような日本語のパスの問題は存在しないので、これを使用することでユーザ名が日本語でも、ネームサーバを起動できます。

Unix

パッケージの自動インストールでダウンロードエラーが出る。

OpenRTM-aistに付属する自動インストーラは、パッケージの有無とバージョンを確認し、適当なパッケージがインストールされていない場合に各パッケージのダウンロードサイトからダウンロード及び加工するものです。このため、自動インストーラでインストールする場合には、コンピュータを必ずインターネットに接続してください。
ネットワーク接続が正常でもダウンロードエラーが出る場合、回線の混雑等でウンロードに失敗した場合と、ダウンロードサイト側でファイルの場所や名前が変わった可能性が考えられます。前者の場合は時間帯等をずらして再度自動インストーラを実行してみてください。また後者の場合には、該当するパッケージを探してから個々にダウンロードして手動インストールするか、自動インストーラのダウンロード元アドレスを修正してから改めて起動してください。
なお、ダウンロードサイト側の変更があった場合、変更情報を当方までご連絡いただければ幸いですので、ご協力をお願いします。

configureを実行したがエラーが出て終了する。

configureのエラーの大半は、必要なパッケージが見つからないときに出ます。エラーが出た場合には、必要なパッケージがインストールされているか、autoconfが見つけられるディレクトリにヘッダ,ライブラリがインストールされているかを確認してください。

makeを実行してもビルドが完了しない。またはmakeの実行エラーが出る。

パッケージのインストールまたはOpenRTM-aist(C++)のビルドが不完全な可能性があります。もう一度パッケージの自動インストーラを起動して、パッケージのインストールからやり直してください。パッケージのインストール中の処理画面に何らかのエラーメッセージが出てきた場合、該当するパッケージだけを手動でインストールするなどしてからconfigureを実行してください。configureを実行してエラーメッセージが出ないことを確認してから、再度makeを実行してビルドを完了させてください。

OpenRTM-aistのインストールに失敗する

古いバージョンのOpenRTM-aistが完全にアンインストールされていない場合、新しいバージョンのインストールができません。古いバージョンを一度アンインストールしてから、再度インストール作業をします。
Vine・Fedora・ubuntu・debian共通:

pkg_install_XXXX.sh を利用してアンインストールする。

 >su
 #pkg_install_XXXX.sh -u

アンインストールの許可を求められるので、y を入力しながら完了させます。 あるいは次の手順に従います。
Vine:
apt-getコマンドでアンインストールする。次の手順でアンインストールを行ってください。
 >su
 #apt-get remove OpenRTM-aist-example
 #apt-get remove OpenRTM-aist-dev
 #apt-get remove OpenRTM-aist-doc
 #apt-get remove OpenRTM-aist
Fedora:
yumコマンドでアンインストールする。次の手順でアンインストールを行ってください。
 >su
 #yum remove OpenRTM-aist-example
 #yum remove OpenRTM-aist-dev
 #yum remove OpenRTM-aist-doc
 #yum remove OpenRTM-aist
ubuntu/debian:
apt-getコマンドでアンインストールする。次の手順でアンインストールを行ってください。
 >su
 #apt-get remove OpenRTM-aist-example
 #apt-get remove OpenRTM-aist-dev
 #apt-get remove OpenRTM-aist-doc
 #apt-get remove OpenRTM-aist

apt-get などを使用してインストール作業を行うときに CD を要求される

Ubuntu、Debian などのディストリビューションで、apt-get や pkg_install_ubuntu.sh, pkg_install_debian.sh を使用してインストール作業をしていると、次のように CD を求められることがあります。 メディア変更:

   'Ubuntu 7.10 _Gutsy Gibbon_ Japanese Remix - Release i386 (20071018)'

とラベルの付いたディスクをドライブ '/cdrom/' に入れて enter を押してください。
もちろん、CD を用意すればよいことなのですが、諸事情により用意できない場合の対処方法を記述します。
この場合はとりあえず、C-c(Ctrl+c) を入力してインストール作業を中断し、以下の手順でインストール作業をやり直してください。
1./etc/apt/sources.list の編集をする

/etc/apt/sources.list の冒頭部分に

 deb cdrom:[Ubuntu 7.10 _Gutsy Gibbon_ Japanese Remix - Release i386 (20071018)]/ gutsy main restricted

あるいは

 deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 NETINST Binary-1 20080218-14:15]/ etch contrib main

というような行がありますので、該当する行頭に # 文字を挿入し、コメントアウトしてください。

 #deb cdrom:[Ubuntu 7.10 _Gutsy Gibbon_ Japanese Remix - Release i386 (20071018)]/ gutsy main restricted

又は、

 #deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 NETINST Binary-1 20080218-14:15]/ etch contrib main

2.インストール作業をやり直す
先ほど中断したインストール作業を始めからやり直してください。

サンプルプログラムのSimpleIOを実行するrun.shが実行できない

run.shに実行ビットが立っていない可能性があります。下記のように実行ビットを立てて実行するか、直接シェルに渡して実行してください。
 > ls -al run.sh
 -rw-r--r--  1 n-ando  n-ando  1146  4 27 15:12 run.sh
 > chmod 755 run.sh
 > ./run.sh
 もしくは
 > sh run.sh

サンプルプログラムSimpleIOを起動したが、正常に動かない。

SimpleIOの実行スクリプトrun.shでは、ターミナルウィンドウをkterm,xterm,gnome-terminalのいずれかに仮定しております。このため、これ以外のターミナルウィンドウを使用している場合は、run.shを適宜書き換えてから実行してください。

OpenRTM-aist(Python版)

Windows

rtm-naming.pyを実行したら、omniNamesが"usage:"を表示して終了してしまう

症状
rtm-naming.pyを"C:\Documents and Settings\Hoge\My Documents"等ディレクトリ名に空白が入っているディレクトリから実行した場合、omniNamesは"usage:"を表示して終了してしまいます。
対処方法
これは、rtm-naming.pyのバグによるものです。上記の症状がでた場合、下記のどちらかの方法で対処して下さい。
対処法その1
C:\の直下(または、パス名に空白が入っていない場所)に"RTMNaming"等適当なフォルダを作成しrtm-naming.pyを実行してください。
対処法その2
C:\Python<version>\Lib\site-packages\OpenRTM\rtm-namingのrtm-naming.pyの48行目を下記のように編集してください。
 rtm-naming.py 48行目
  cmd = "omniNames -start "+str(port)+" -logdir \""+str(currdir)+"\" &"

python.exeが起動しない

環境変数PathにPythonインストールフォルダを追加しておいて下さい(C:\Python26など)。

Cygwinをインストールしている環境ではpython.exeが複数存在する場合がある

Cygwinをインストールしている環境では、Cygwin上にもpython.exeが存在する場合があります。その場合は、通例Cygwin上のpython.exeへのサーチパスが優先されるよう設定されるため、環境変数Pathを適切に設定しているのにもかかわらず、今回導入したはずのPythonとは違うバージョンの(すなわちCygwin上の)python.exeが起動してしまう場合があります。この場合、Pythonのバージョンの違いによる不具合が発生してしまいます。この問題は非常に原因が特定しづらいのが特徴です。このようにCygwinなどをインストールしている環境でOpenRTM-aist Python版を使う場合は、該当バージョンのpythonインストールフォルダからpython.exeが起動していることを確認してください。
確認方法の例:
python -Vでバージョンを調べる、(Cygwinのある環境では)which pythonでどのpython.exeが実行されているかを確認する...など
この障害が発見された場合の対処:
Pythonインストールフォルダ(C:\Python26など)をシステム環境変数Path(*ユーザー環境変数Pathではなく)の先頭に追加することで解決できます。

Python2.6+omniORBpy-3.4でomniORBのインポート時に"ImportError: DLL load failed"エラーが発生する。

mscr71.dllが見つからないために発生するエラーです。msvcr71.dllをこちらから入手して、パスが通ったところにコピーして下さい。

「MSVCP71.dll が見つからなかったため、…」というエラーで終了する

WINDOWS\system32フォルダ内にmsvcp71.dllがないために発生するエラーです。msvcp71.dllをこちら から入手してください。

「Can't open file: ./rtc.conf」などと表示される。

RTコンポーネントの起動フォルダ(あるいはサーチパス上)にrtc.confが見つからないため、起動できない状態です。この場合、次のように表示されます。
 Can't open file: ./rtc.conf
 Can't open file: /etc/rtc.conf
 Can't open file: /etc/rtc/rtc.conf
 Can't open file: /usr/local/etc/rtc.conf
 Can't open file: /usr/local/etc/rtc/rtc.conf
これはrtc.confを捜すサーチパスがデフォルトの状態であり、上記の順番で探したものの見つからなかったためにこの表示がなされます。これを避けるためには、たとえば
 corba.nameservers: localhost
 naming.formats: %n.rtc
という内容のファイルrtc.confを作成し、上記サーチパス上(通例はカレント=コンポーネントと同じフォルダ)に配置します。

コンポーネントがネームサービスに登録されない

rtc.confの改行コードがCRLFになっている可能性が考えられます。
以下のコマンドにてrtc.confの確認を行い、CRLFという文字列が表示された場合、新たにrtc.confの作成を行って下さい。
 $ file rtc.conf

OpenRTM-aist(Java版)

OS共通

Java版コンポーネントでデータ転送に時間がかかる

Java版のRTコンポーネントとC++版など他の言語のコンポーネントとの間で、特に大きなデータ(100kB以上でみられることが多い。)を送受信する場合に、極端に速度が低下する場合があります。これはJavaのCORBA側の問題であることが知られており、タイムアウトを適切に設定することにより回避することができます。
Java版のRTCが読み込むrtc.confに以下のように記述することで、JavaのCORBAのタイムアウトを設定します。
 corba.args: -ORBTCPReadTimeouts 1:60000:300:1
Java (JDK1.5以降) ではデフォルトで、100:3000:300:20 となっていますが、これを 1:60000:300:1 に変更するという意味です。各項目は左から、
  • CORBAデータをreadするときに、0byteであったときにRead Thread が休止させられる時間(ms)
  • CORBAデータのread時にRead Threadが待たされる累積最大時間 (ms)
  • GIOPのヘッダーをreadするときのタイムアウト(ms)
  • CORBAデータをreadするときに、Read Threadが休止させられたときに、次回の休止の時間を増加する割合(%)
という意味になっています。したがって、1:60000:300:1
  • readして0byteのとき、Read Thread を 1ms休止する
  • Read Thread が待つ最大累積時間は 6000ms
  • GIOPのヘッダをreadするときのタイムアウト時間は 300ms
  • Read Thread の休止時間は1%づつ増加させる
という意味になります。
大きなデータの場合、1回のreadでデータが読み切れないので、通常何回かreadを行います。
次のデータはすぐには来ませんので、readは読み込みバイト数を0byteとして戻りますが、通常1ms以内には次のデータはやってきます。デフォルトの設定だとRead Threadが100ms待たされますが、そんなに長時間待つ必要はなく1ms程度待てば、すぐに次のデータを読み込むことができます。
デフォルト設定の場合、100ms待って、さらにもう一度読み込みreadが0を返すので、さらに100ms+20%の120ms待ちます。データが大きすぎれば、これを12回繰り返すと最大累積時間の3000msに達してしまうので、タイムアウトしてしまいますし、データが小さくても、データの分割数×100msの時間がかかってしまうので、非常に遅くなります。
JavaのCORBAではデータを100kBで分割するので、これを超えるデータをやり取りする際には、上記の設定をrtc.confにて行っておいたほうがよいでしょう。

Windows

「java -version」がインストールしたJDKのバージョンと異なる。

すでにJDKよりも新しいバージョンのJRE(Java Runtime Environment)がインストールされている場合は、JDKをインストールしても「java -version」がJREのままになることがあります。この場合のインストールの確認方法を説明します。
「プログラムの追加と削除」での確認方法
Windowsのコントロールパネルから「プログラムの追加と削除」を呼び出し、JDK5がインストールされていることを確認してください。

add_or_delete_ja.png
JDK5を「プログラムの追加と削除」で確認

マイコンピュータからの確認方法
JDKをデフォルトでインストールした場合には、通常
 C:\Program Files\Java\jdk1.6.0_21
というようなパスにインストールされるので、マイコンピュータで直接そのフォルダの存在を確認します。

confirm_Java_ja.png
マイコンピュータからJDK5を確認


Unix

FedoraCoreでJavaをインストールする際の対応

OSがFedoraCoreの場合、yumにてjavaをインストールするとGCJ(The GNU Compiler for Java )がインストールされてしまい、そのGCJを使用するといくつかの不具合が生じる事があります。
不具合が発生した場合は、まず、Oracle の Java が使用されているかの確認をしてください。
参考:
JDKインストールのためのヒント
UNIX系環境で簡易に Oracle のJavaをEclipseに適用する方法

最新バージョン

初めての方へ

Windows msi(インストーラ) パッケージ (サンプルの実行ができます。)

C++,Python,Java,
Toolsを含む
1.1.2-RELEASE

RTコンポーネントを開発するためには開発環境のインストールが必要です。詳細はダウンロードページ

統計

Webサイト統計
ユーザ数:1604
プロジェクト統計
RTコンポーネント286
RTミドルウエア21
ツール20
文書・仕様書1

OpenHRP3

動力学シミュレータ

Choreonoid

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

OpenHRI

対話制御コンポーネント群

OpenRTP

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

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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

VirCA

遠隔空間同士を接続し、実験を行うことが可能な仮想空間プラットホーム