OpenHRP の構成

OpenHRPはネットワークで分散されているソフトウェアであり、以下にあげられるサーバ群からなります.ただしこれらのサーバに対する各種操作はOpenHRPの標準GUIフロントエンドであるGrxUIが行いますので,通常の利用ではユーザはこれらのサーバ群の存在を意識する必要はありません.

サーバ

DynamicsSimulator

Dynamics Simulatorはリンク系の順動力学を計算し、得られた関節加速度を積分して関節速度、関節値を更新 します。任意の開リンク機 構、閉リンク機構を扱うことが出来ます。また、リンク間の干渉が発生すると、 それらの間に相対速度がある場合は衝突計算により相対速度をなくした後、相対加速度が発生しないために必要 な接触力を計算します。動力学計算の結果の一部はセンサ出力として取り出すことが出来ます。

CollisionDetector

CollisionDetectorサーバは、トライアングルメッシュとして表現された幾何モデルを用いてロボットと環境との接触の検出を行います。シミュレーション実行時に DynamicsSimulatorサーバから呼ばれます。干渉チェックアルゴリズムは OPCODEを使用しています。DynamicsSimulatorサーバ のユーザが、CollisionDetectorを直接呼ぶ必要性はありません。DynamicsSimulatorから呼び出され、接触計算および 反力のベクトル計算を行います。

ModelLoader

ロボットの機構や形状のモデルを記述したモデルファイルを読み込むためのサーバです。 テキスト記述されたモデルファイルをパースし、プログラム上扱いやすいデータ構造として提供します。 システム全体に渡って利用されます。

VisionSimulator

VisionSimulatorサーバは、ロボットに取り付けられている視覚センサ(カメラ)のシミュレーションを行います。

Controller

ロボットの制御プログラムを実装するサーバです。 シミュレーションにおいて各ロボットに関連づけて利用されます。 ユーザはこのControllerを開発することで、独自の制御プログラムをシミュレーションすることが可能となります。

CORBA

OpenHRPはCORBA(Common Object Request Broker Architecture)を用いた分散オブジェクトシステムを実現して います。OpenHRPは全てのサーバがCORBAオブジェクトとして実装されているので、それぞれのサーバを別々の マシンで走らせて計算負荷を分散させることが可能です。また、サーバ間の通信をCORBAで行うため、OpenHRP はプラットフォーム独立なシステム構成となり、そのためにそれぞれのサーバを最も適切な言語およびOSで 開発し、接続することに成功しました。現在はWindows版と Linux版が利用可能です。

サーバを利用するためには各サーバのインターフェースが記述されたIDLファイルが必要です。OpenHRPでは、 idl/OpenHRPディレクトリに設置してあります。IDLファイルをIDLコンパイラに かけることにより、各種言語向けのスタブやスケルトンに変換されます。

シミュレーションにあたって

OpenHRPでシミュレーションをするにあたっては、以下の三つの要素をそろえる必要があります。

モデル

モデルはシミュレータ上のロボットや環境の形状や動力学パラメータをVRMLファイルを使用して表します。 ファイル形式の詳細はロボット,環境モデル記述形式を,モデルの作成に関してはGrxUIを用いたモデル作成をご参照ください。

コントローラ

モデルによって表されるロボットを動かすプログラムがコントローラです。これによりロボットの動作制御則 が定義されることになります。OpenHRPではコントローラをOpenRTM を使用して作成します。具体的な方法はユーザマニュアルを参照してください。

プロジェクト

上記のとおり、GrxUIは各種サーバのクライアントとなりモデルやコントローラを制御します。そこでその制御 を指示するものはプロジェクトと言います。プロジェクトはGrxUIを使用して編集します。具体的な作成方法はプロジェクトの作成を参照して下さい.

Simulation

シミュレーション世界を管理するアイテムで、シミュレーションを何秒行うか、重力はいくつかといった設定を行います。

WorldState

シミュレーション結果を管理するアイテムで、結果を記録する時間間隔を設定します。

Model

上記で説明したモデルです。ただしここでは、どのモデルを使い、それが環境モデルなのか、ロボットモデルな のかや、そのモデルの関節角度等を設定します。

Collision-Pair

衝突計算を設定します。どのモデルとどのモデルで行うか、またはどのリンクとどのリンクで行うかを設定します。