OpenRTM-aist (Java版) に関するFAQ

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 に適用する方法

ダウンロード

最新バージョン : 2.1.0-RELESE

統計

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

OpenRTM@Github

OpenRTM-aist GitHubサイト

ROS

Robot Operating System

Choreonoid

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

DAQ-Middleware

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

産総研が提供するRTC集

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