<障害物回避とconfigurationパラメータ反映例(OpenINVENT-3.0.0以降)>

以下に、OpenINVENT-3.0.0以降で追加されたBumpDetectionRTCの機能と、ObstacleDetectionRTC、RangeSensorRTCなどを用いた、障害物回避(特に床面の凹凸を検知する障害物など)のシミュレーションの概要と、コンフィグレーションパラメータを変更した際に、どの値を変えるとどのように挙動が変わるのかなど簡単に説明します。これを参考に、かつRTCのドキュメントを参照にし、色々なケースをお試し頂けると幸いです。(シミュレーションMovie[MPEG2(104MB)]/[MPEG1(18MB)])

  1. 今回、GrxUIでは「EnvSampleWithBumpAndObstacle.wrl」モデルを利用した、「GrxUI_EnvSampleMap-RH2_withObstacleAndBumpSensor.xml」プロジェクトを利用しています。

  2. MapBuilderでも同様に、「EnvSampleWithBumpAndObstacle.wrl」モデルを使用しています。

  3. スクリプトとして、「RtcHandle/EnvSampleMap-RH2_withObstacleAndBumpSensor.py」を使用しています。OpenRTM-python環境が無い場合は、RH2モデルを使用し、MapBuilderのコンフィグレーションパラメータ「MapModel」のデフォルト値を上記の環境モデルに指定して起動してください。

    一連の操作手順は、他の操作例と起動手順を元にご理解頂いている前提で話を進めていきます。

  4. 凹凸障害物回避シミュレーションの流れ(Configurationパラメータはデフォルトを使用)

    Simu01

    準備が整い、シミュレーションをSTARTします。距離センサーで障害物を検知しながら走行を開始します。

    Simu02

    正面にある、床面の凹(5cmのくぼみ)がBump障害物としてBumpDetectionRTCにより検知(InventGUIの緑色がセンシング、赤色が障害物を表す)されます。DriveControlにはBumpDetectionより「停止」指令が送信されるため、ロボットは走行を停止します。その間にLocalPathPlanningRTCが障害物を避ける新たな経路を作成しています(InventGUIの青グリッド)。その後、InventGUIの「GO」ボタンが押されると、走行が再開されます。

    Simu03

    途中のもう一つの凸Bump障害物の検知と経路再生成後に、正面奥にある壁が障害物としてObstacleDetectionRTCに検知されます。再度経路が再生成され、以降GOAL地点まで走行を続けます。

  5. デフォルトconfigurationパラメータ(BumpDetectionRTC/ObstacleDetectionRTC)

    上述のシミュレーションで使用されたコンフィグレーションパラメータ値(上:BumpDetection、下:ObstacleDetection)です。

    BumpConfig-def

    ObstacleConfig-def

    以降、コンフィグレーションパラメータを変更した場合、上述までのデフォルトの場合とどのように挙動が変わるのかを見ていきます。


  6. Bump障害物検知用センサーの斜め下方の角度「SensorAngle」と「SearchWidth」を変更した場合(BumpDetectionRTC)

    パラメータ詳細はBumpDetectionドキュメントを参照願います。今回は以下のように変更した例です。

    BumpConfig-case01

    これにより、Bumpセンサーはより、足元に近い位置をセンシングし、かつ、その領域を3倍に広げたことになります。(以下の緑のセンシング表示)

    BumpSimu-case01-1

    シミュレーションを行うと、前方の床面の凹(5cmのくぼみ)が障害物として検知されますが、デフォルトの時よりもロボットに近い位置で、かつ、広く検知しています。結果、障害物に近づきすきてしまい、ポテンシャルの影響で経路再生成が出来ず(青いグリッドが表示されない)その場で停止したまま動けない状態になります。画面中央はDriveControlのコンソールですが、「NO_PATH_FOR_GOAL」が表示されています。

    BumpSimu-case01-2


  7. Bump障害物検知の境界値「BumpLimit」を変更した場合(BumpDetectionRTC)

    今度は、コンフィグレーションパラメータの「BumpLimit」値をデフォルトの"4cm"から"6cm"に変更した例です。

    BumpConfig-case02

    サンプルの環境では、凹凸障害物を2つ(中央左側の床面の凹くぼみ、中央の凸障害物)しています。各々の深さと高さが「5cm」で作成しているため、Bumpセンサーで検知障害物とみなすための境界値をデフォルトで"4cm"としていました。この値を"5cm"を越える値に変更した場合に、他の条件が同じでも、Bump障害物としてみなされず、結果ロボットが障害物を回避できずに走行する例となります。

    BumpSimu-case02

    分かりやすいように、GrxUI側ではRangeSensorのビームを表示していますが、床面の凹くぼみをセンシングしても、Bump障害物が検知されず、InventGUIに障害物情報が何も表示されていないのが分かります。結果、このまま走行し続け、ロボットが穴に落ちるような状態になります。


  8. Obstalce障害物検知用センサーの「レンジ」と「長さ」を変更した場合(ObstacleDetectionRTC)

    パラメータ詳細はObstacleDetectionドキュメントを参照願います。今回は以下のように変更した例です。

    ObstacleConfig-case01

    これにより、Obstacleセンサーはより遠くまで、かつ広い視野角でセンシング出来るようになり、事前に障害物情報を把握しやすくなります。

    ObstacleSimu-case01

    デフォルトの場合のInventGUIの画面と比べると、明らかに広い領域をセンシングしていることが分かります。


その他にも、幾つかパラメータが用意されています。

例えば、センサーが検知したものは、その回数により確率値の増減に影響し、境界値を越えると「障害物」として判定しますが、その「増減量」であったり、「障害物と判定する境界値」などを変更すると違った挙動が得られます。または、DriveControlRTCなどの障害物付近での走行パラメータを変更する場合なども、違った走行挙動になります。

ドキュメント等を参照しながら、色々なパラメータを変更されたご利用をされることを期待しています。