RTC群の説明

 RTC群の構成と、RTC間の情報の流れは以下のようです。(上:シミュレーション/下:実機)

RTCs_v400_simu

RTCs_v400_real


個々のRTCの機能の概要 

(各RTCの名前をクリックすると詳しい説明が見れます。)
InventGUI 地図情報の入力とSTART/GOAL情報の入力を受付けると共に、各種指令を与えたり、計画した経路、走行軌跡や障害物情報などを2Dグリッド地図上に表示するためのGUI用のRTC。(Java版)
MapBuilder 指定された位置サイズの3Dグリッド地図を設定し、VRML形式で与えられている環境の幾何情報から、指定されたXYZ範囲内での各グリッドにおける障害物の存否を検査し、障害物が存在するグリッドには1.0、存在しないグリッドには0.0を障害物存在確率の初期値として与える。また、各RTCに2D/3Dいずれかの地図データを初期送信する。
MapMaintenance 3Dグリッド地図の障害物存在確率を維持し、観測情報により更新した情報を各RTCへ送信する。現状では、更新されたグリッドの確率と、閾値を越えて変化したグリッドの情報(2D/3D地図差分)を出力している。
GlobalPathPlanning 2Dグリッド地図とスタート,ゴール位置姿勢を入力としてポテンシャルベースで8連結計画経路を生成する.
LocalPathPlanning 計画経路,現在位置,障害物情報を入力として,逸脱からの復帰,障害物回避のための8連結局所経路を生成し、連結点を間引きした局所経路点列を出力する。
Odometry 受け取った位置姿勢推定と左右車輪回転角からオドメトリを計算し出力する。
Localization 受け取った各種位置姿勢推定を融合した位置姿勢を生成し出力する。現状では位置姿勢推定はオドメトリのみであるので、単にそれを伝達する。(ただし、シミュレーションの場合はシミュレーション上の位置姿勢データとのマージも可能である。)
DriveControl 局所経路点列を補間(3次Bスプラインと円弧直線による2バージョンある)して、車輪型の移動ロボットが滑らかに走行できる滑らか経路を生成し、移動ロボットの現在位置姿勢と経路の曲率と障害物からの距離を考慮して、経路を追従させるための速度指令(並進速度vと旋回速度ω)を計算し出力する。
MotorControl 速度指令から左右車輪の目標角速度を計算し、PD制御により左右車輪への出力を求める。OpenHRP3は各ジョイントをトルク制御するので、トルクを出力する.
ObstacleDetection ロボット走行空間における物体障害物検知を目的とする。受け取った距離データと位置姿勢推定を入力として観測範囲内の3Dグリッドの障害物存在確率を計算し出力する。
BumpDetection ロボット走行面(床など)における凹凸障害物検知を目的とする。受け取った距離データと位置姿勢推定を入力として観測範囲内の3Dグリッドの障害物存在確率を計算し出力する。また、床面の凹凸が検知されると、各RTCに走行Stop指令を送る。Bumpセンサーを載せたPanTilt台の向きを動的に変更するための指令を送る。
PanTiltControl Bumpセンサーを載せたPanTilt台の、「PAN」「TILT」のトルク制御を行うためのトルク値を算出送信する。
RangeSensorSimulator OpenHRP3より取得したRangeセンサーのセンシングデータを、設定されたパラメータでデータ型の変換とフィルタリングを行い、距離データとして出力する。(Obstacle/bump両センサーを使用の場合は当RTCを2つ使用。)
Port接続情報 各RTCのPort接続をする際の、接続一覧情報をPDF化しています。(PortConnectionより取得ください。)

RTC間の情報の流れ

OpenRTMは2種類のデータ転送メカニズムを提供しています。DriveControlRTCからMotorControlRTCに常時、一定の周期でロボット並進/旋回速度を渡すようなときに便利なデータポートと、ObstacleDetectionRTCが障害物を検出したときに他のRTCに伝えるときのようにイベント的な情報の受け渡しに便利なサービスポートです。上の図では、データポートによる情報の入出力を赤い矢印で、サービスポートによる情報の入出力を青/黒い矢印で示しています。


RTCのパラメータ

RTCの多くは独自のパラメータを持ちますが、いろいろ設定を変更してテストしたくなるであろうパラメータは、OpenRTMが提供するコンフィギュレーションパラメータとして定義しています。この場合、ソースコードで設定したデフォルト値よりも、RtSystemEditor上で設定される値が優先します。例えば、MotorControlRTCのPゲインをプログラム中で10.0に設定していたとしても、RtSystemEditor上でPゲインが5.0に設定されていれば、シミュレーションはPゲイン=5.0として実行されます。