Main Content

binaryOccupancyMap

バイナリ値の占有グリッドを作成

説明

binaryOccupancyMap は 2 次元の占有マップ オブジェクトを作成します。これを使用して、障害物を含むロボット ワークスペースを表して可視化できます。センサー データと位置推定の組み込みにより、障害物のおおよその位置の空間的表現が作成されます。

占有グリッドは、パス計画などのロボティクス アルゴリズムで使用します。また、衝突のないパスの検出、衝突回避、位置推定の計算などを行うためのアプリケーションの地図作成にも使用します。特定の用途に合わせて占有グリッドを修正できます。

占有グリッドの各セルには、そのセルの占有ステータスを表す値があります。占有位置は true (1) として表され、フリー位置は false (0) として表されます。

オブジェクトはワールド、ローカル、グリッドの 3 つの基準座標系を追跡します。ワールド座標系の原点は、ワールド座標系を基準としたマップの左下隅を定義する GridLocationInWorld によって定義されます。LocalOriginInWorld プロパティは、ワールド座標系を基準としたローカル座標系の原点の位置を指定します。インデックス (1,1) をもつ最初のグリッド位置は、グリッドの左上隅で開始します。

メモ

このオブジェクトは以前、robotics.BinaryOccupancyGrid という名前でした。

作成

説明

map = binaryOccupancyMap は、幅と高さが 10 m の 2 次元バイナリ占有グリッドを作成します。既定のグリッド分解能は 1 メートルあたり 1 セルです。

map = binaryOccupancyMap(width,height) は、幅 width、高さ height のワークスペースをメートル単位で表す 2 次元バイナリ占有グリッドを作成します。既定のグリッド分解能は 1 メートルあたり 1 セルです。

map = binaryOccupancyMap(width,height,resolution) は、1 メートルあたりのセル数で指定される Resolution プロパティを使用してグリッドを作成します。既定では、マップはワールド座標になっています。

map = binaryOccupancyMap(rows,cols,resolution,"grid") は、サイズ (rows,cols) の 2 次元バイナリ占有グリッドを作成します。

map = binaryOccupancyMap(p) は、行列 p の値からグリッドを作成します。グリッドのサイズは行列のサイズに一致し、各セル値は行列内の位置から解釈されます。p には、0 と 1 からなる任意の数値型または logical 型が含まれます。

map = binaryOccupancyMap(p,resolution) は、1 メートルあたりのセル数で指定される Resolution プロパティを使用して行列からマップを作成します。

map = binaryOccupancyMap(sourcemap) は、別の binaryOccupancyMap オブジェクトの値を使用してオブジェクトを作成します。

map = binaryOccupancyMap(sourcemap,resolution) は、別の binaryOccupancyMap オブジェクトの値を使用してオブジェクトを作成しますが、指定された分解能をもつように行列をリサンプリングします。

map = binaryOccupancyMap(___,Name=Value) は、1 つ以上の名前と値の引数を使用してプロパティを設定します。

入力引数

すべて展開する

マップの幅。正のスカラー (メートル単位) として指定します。

マップの高さ。正のスカラー (メートル単位) として指定します。

マップのグリッドの値。行列として指定します。

占有マップ オブジェクト。binaryOccupancyMap オブジェクトとして指定します。

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

グリッド内の行と列の数。[rows cols] 形式の 2 要素ベクトルとして格納されます。

この プロパティ は読み取り専用です。

グリッド分解能。スカラー (1 メートルあたりのセル数) として格納されます。

この プロパティ は読み取り専用です。

ローカル座標系での x 座標の最小値と最大値。[min max] 形式の 2 要素ベクトルとして格納されます。ローカル座標系は LocalOriginInWorld プロパティによって定義されます。

この プロパティ は読み取り専用です。

ローカル座標系での y 座標の最小値と最大値。[min max] 形式の 2 要素ベクトルとして格納されます。ローカル座標系は LocalOriginInWorld プロパティによって定義されます。

この プロパティ は読み取り専用です。

ワールド座標系での x 座標の最小値と最大値。[min max] 形式の 2 要素ベクトルとして格納されます。これらの値は、グリッドの x 座標のワールド範囲を示します。

この プロパティ は読み取り専用です。

y 座標の最小値と最大値。形式 [min max] の 2 要素ベクトルとして格納されます。これらの値は、グリッドの y 座標のワールド範囲を示します。

ワールド座標でのグリッドの左下隅の位置。2 要素ベクトル [xGrid yGrid] として指定します。

ワールド座標でのローカル座標系の原点の位置。2 要素ベクトル [xLocal yLocal] として指定します。ビークルの移動に伴ってローカル座標系を移動するには関数 move を使用します。

ローカル座標でのグリッドの左下隅の位置。2 要素ベクトル [xLocal yLocal] として指定します。

マップの外の領域を含む、マップ位置が指定されていない場合の既定値。0 または 1 として指定します。

オブジェクト関数

copyCreate copy of binary occupancy map
checkOccupancyCheck if locations are free or occupied
getOccupancyGet occupancy value of locations
grid2localグリッド インデックスをローカル座標に変換
grid2worldグリッド インデックスをワールド座標に変換
inflate各占有位置のインフレーション
insertRayInsert ray from laser scan observation
local2gridローカル座標をグリッド インデックスに変換
local2worldローカル座標をワールド座標に変換
moveMove map in world frame
occupancyMatrix占有グリッドを行列に変換
raycastCompute cell indices along a ray
rayIntersectionFind intersection points of rays and occupied map cells
setOccupancy位置の占有値を設定
showDisplay binary occupancy map
syncWithSync map with overlapping map
world2gridワールド座標をグリッド インデックスに変換
world2localワールド座標をローカル座標に変換

すべて折りたたむ

10 m x 10 m の空のマップを作成します。

map = binaryOccupancyMap(10,10,10);

ワールド位置の占有を設定し、マップを表示します。

x = [1.2; 2.3; 3.4; 4.5; 5.6];
y = [5.0; 4.0; 3.0; 2.0; 1.0];

setOccupancy(map, [x y], ones(5,1))
figure
show(map)

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

占有位置を指定した半径でインフレートします。

inflate(map, 0.5)
figure
show(map)

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

ワールド位置からグリッド位置を取得します。

ij = world2grid(map, [x y]);

グリッド位置をフリー位置に設定します。

setOccupancy(map, ij, zeros(5,1), 'grid')
figure
show(map)

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

この例では、地図作成およびパス計画で使用するためにイメージをバイナリ占有グリッドに変換する方法を説明します。

イメージをインポートします。

image = imread('imageMap.png');

グレースケールに変換した後、指定のしきい値に基づいて白黒イメージに変換します。

grayimage = rgb2gray(image);
bwimage = grayimage < 0.5;

白黒イメージをバイナリ占有グリッドの行列入力として使用します。

grid = binaryOccupancyMap(bwimage);

show(grid)

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

この例では、.pgm ファイルを MATLAB で使用するために binaryOccupancyMap オブジェクトに変換する方法を示します。

imread を使用してイメージをインポートします。このイメージは非常に大きいため、関連する領域をトリミングしなければなりません。

image = imread('playpen_map.pgm');
imageCropped = image(750:1250,750:1250);
imshow(imageCropped)

Figure contains an axes object. The axes object contains an object of type image.

不明な領域 (グレー) は削除して、空き領域として扱わなければなりません。しきい値に基づいて logical 行列を作成します。この値はイメージによって異なる場合があります。占有スペースは 1 として設定しなければなりません (イメージでは白)。

imageBW = imageCropped < 100;
imshow(imageBW)

Figure contains an axes object. The axes object contains an object of type image.

調整したマップ イメージを使用して binaryOccupancyMap オブジェクトを作成します。

map = binaryOccupancyMap(imageBW);
show(map)

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

拡張機能

バージョン履歴

R2015a で導入

すべて展開する