車輪型移動ロボットが自律的に目的地まで移動できるためには、目的地までの経路を計画し、その経路にそって走行するために車輪の回転を制御し、センサを使って周囲の状況を観測し、自身がどこにいるのかを推定するなどの機能が必要です。
我々はこういった機能をRTC(RTコンポーネント)と呼ばれるソフトウェアモジュールとして開発しています。RTCとはロボット制御などのソフトウェアを効率よく再利用性高く実装するためのツールであるOpenRTM(ロボットプログラム用のミドルウェア)の基本要素です。
開発した機能モジュールはOpenHRP3によりシミュレーションします。OpenHRP3は、多くのゲーム用のシミュレータなどと違って車輪と地面の接触力などを重力の影響のもとで忠実に計算して移動ロボットの動きをシミュレーションしますので、OpenHRP3の仮想世界の中で移動ロボットがうまく動けば、同じRTCで同じパラメータを使って現実の世界で実機がうまく制御できることが期待できます。
ここで公開するOpenINVENT RTC群(下図のオレンジの四角い箱)と、シミュレーションに必要なモデル群(下図の緑の6角形の箱[OpenINVENT-1.0.0の場合])をOpenRTM-aist-1.0.0とOpenHRP-3.1.0が動作するマシンに導入すれば、現在地から目的地まで走行する基本動作のほか、移動ロボットの重心位置が変化したときや、制御パラメータを変更したときの移動動作の変化をシミュレーションすることができます。
さらに、距離センサ用RTC(下図の紫の四角い箱)を導入すれば障害物を検知し回避走行する動作も体験できます。

シミュレーション実行時にはすべてのRTCが同時に活動しますが、情報の流れを追って簡単に処理の内容を説明します。
まず、2D地図生成RTCが環境モデルから移動ロボットの移動できるか否かを示すグリッド状の2D地図を生成し、他のRTCに供給します。
大域的および局所的経路生成RTCは受け取った2D地図をもとに現在地から目的地にいたる8連結経路をポテンシャルベースの手法で生成します。
それを受け取った移動指令生成RTCは、直線円弧近似orスプラインにより滑らかな経路を生成し、それに沿って安全な速度で走行するための車体の目標並進/旋回速度(ver1系では、左右車輪の目標角速度)を計算します。
車体の目標並進/旋回速度(ver1系では、左右車輪の目標角速度)は逐次、運動制御RTCに渡され、運動制御RTCは現在の車輪角速度と比較してPD制御に基づいて左右車輪に与えるトルクを計算し、ControllerBridgeを介して、OpenHRP3に与えます。
OpenHRP3は車輪と床面の摩擦などを考慮した動力学計算により、車輪が何度回転し、そのときロボットがどこに移動するかシミュレーションします。その結果はOpenHRP3のGUIであるGrxUIに表示されます。
また同時にOpenHRP3は車輪が何度回転したかをControllerBridgeを介して運動制御RTCに返してくれますので、それを受け取った移動指令生成RTCはそれに基づいて自身がどのように動いたかを推定(オドメトリ)します。その結果は移動用GUIの画面に表示されます。
推定している現在位置が計画した経路からそれたときは、もとの経路にもどるための経路を再生成しながら、目的地を目指し、ある近さまで来たときに自身で目的地に到達したと判断し、目標角速度を0に設定し、走行停止となります。
また、障害物検知RTCを使うことで、距離センサーを使用して障害物検知が行え、未知の障害物が見つかれば新たな経路を生成し直して目的地に向かって走行します。
![]() |
![]() |
![]() |
![]() |
| MPEG1 Simple Map 24MByte | MPEG1 17MByte | MPEG1 10倍速 9MByte | MPEG1 25MByte |
| 3次元環境モデルから2次元グリッド地図の作成 | 2次元グリッド地図上での経路生成 | オドメトリによる自律走行と距離センサによる障害物回避 | 実機による実験 |
これらは7個のOpenINVENT(旧版:ver1.0.0) RTコンポーネントと(株)SECが開発している距離センサ用RTコンポーネントにより実現しています。