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(p,resolution) は、1 メートルあたりのセル数で指定される Resolution プロパティを使用してオブジェクトを作成します。

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

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

入力引数

すべて展開する

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

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

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

占有マップ オブジェクト。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 として指定します。

オブジェクト関数

checkOccupancyCheck occupancy values for locations
getOccupancyGet occupancy value of locations
grid2localグリッド インデックスをローカル座標に変換
grid2worldグリッド インデックスをワールド座標に変換
inflateInflate each occupied grid location
insertRayInsert ray from laser scan observation
local2gridConvert local coordinates to grid indices
local2worldローカル座標をワールド座標に変換
moveMove map in world frame
occupancyMatrix占有グリッドを行列に変換
raycastCompute cell indices along a ray
rayIntersectionFind intersection points of rays and occupied map cells
setOccupancySet occupancy value of locations
showShow occupancy grid values
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 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 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 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 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 contains an object of type image.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2015a で導入

すべて展開する

将来のリリースで動作変更