Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

validatorOccupancyMap

2 次元グリッド マップに基づいた状態バリデーター

説明

validatorOccupancyMap オブジェクトは、2 次元占有マップ内の値に基づいて、状態および離散化された運動を検証します。マップの占有されている場所は、無効な状態として解釈されます。

作成

構文

説明

validator = validatorOccupancyMap は、SE2 状態空間と関連付けられている 2 次元占有マップ バリデーターを既定の設定で作成します。

validator = validatorOccupancyMap(stateSpace) は、nav.StateSpace から派生した特定の状態空間定義でバリデーターを作成します。

validator = validatorOccupancyMap(stateSpace,Name,Value) は、ペアの引数 Name,Value を使用して Map プロパティまたは XYIndices プロパティを指定します。

プロパティ

すべて展開する

状態を検証するための状態空間。nav.StateSpace のサブクラスとして指定します。提供されている状態空間オブジェクトには以下が含まれます。

状態の検証に使用されるマップ。binaryOccupancyMap または occupancyMap オブジェクトとして指定します。

状態間のサンプリングおよび状態有効性チェックの間隔。正の数値スカラーとして指定します。

状態ベクトルでの xy 座標に対する状態変数のマッピング。2 要素ベクトル [xIdx yIdx] として指定します。たとえば、状態ベクトルが [r p y x y z] として与えられた場合、xy 座標は [4 5] となります。

オブジェクト関数

copyCreate deep copy of state validator object
isStateValidCheck if state is valid
isMotionValidCheck if path between states is valid

すべて折りたたむ

この例では、環境を通るパスを検証する方法を説明します。

例のマップを読み込みます。単純なマップを使用してバイナリ占有マップを作成します。

load exampleMaps.mat
map = occupancyMap(simpleMap);
show(map)

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.

マップを通る粗いパスを指定します。

path = [2 2 pi/2; 10 15 0; 17 8 -pi/2];
hold on
plot(path(:,1),path(:,2),"--o")

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 2 objects of type image, line.

stateSpaceSE2 定義を使用して状態バリデーターを作成します。マップと、パス セグメントを内挿し検証するための距離を指定します。

validator = validatorOccupancyMap(stateSpaceSE2);
validator.Map = map;
validator.ValidationDistance = 0.1;

パスの点が有効な状態であることをチェックします。3 つの点はすべて自由空間にあるため、有効と見なされます。

isValid = isStateValid(validator,path)
isValid = 3x1 logical array

   1
   1
   1

連続する各パス状態の間の運動をチェックします。関数 isMotionValid は、状態間のパスに沿って内挿を行います。パス セグメントが無効な場合は、パスに沿った最後の有効な点をプロットします。

startStates = [path(1,:);path(2,:)];
endStates = [path(2,:);path(3,:)];
    for i = 1:2
        [isPathValid, lastValid] = isMotionValid(validator,startStates(i,:),endStates(i,:));
        if ~isPathValid
            plot(lastValid(1),lastValid(2),'or')
        end
    end
hold off

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 3 objects of type image, line. One or more of the lines displays its values using only markers

拡張機能

バージョン履歴

R2019b で導入