Main Content

validatorVehicleCostmap

2 次元コストマップに基づいた状態バリデーター

R2019b 以降

説明

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

作成

構文

説明

validator = validatorVehicleCostmap は、SE2 状態空間と関連付けられているビークル コスト マップ バリデーターを既定の設定で作成します。

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

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

プロパティ

すべて展開する

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

状態の検証に使用されるマップ。vehicleCostmap (Automated Driving Toolbox) オブジェクトとして指定します。

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

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

状態ベクトルでの theta 座標に対する状態変数のマッピング。正の整数として指定します。たとえば、状態ベクトルが [x y theta] として与えられた場合、theta 座標は 3 となります。

オブジェクト関数

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

すべて折りたたむ

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

例のマップを読み込みます。単純なマップを使用してビークル コスト マップを作成します。1 メートルのインフレーション半径を指定します。

load exampleMaps.mat
map = vehicleCostmap(double(simpleMap));
map.CollisionChecker = inflationCollisionChecker("InflationRadius",1);
plot(map)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 2 objects of type image, patch. This object represents Inflated Areas.

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

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

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 3 objects of type image, patch, line. This object represents Inflated Areas.

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

validator = validatorVehicleCostmap(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 xlabel X, ylabel Y contains 4 objects of type image, patch, line. One or more of the lines displays its values using only markers This object represents Inflated Areas.

拡張機能

バージョン履歴

R2019b で導入