occupancyMap
2 次元占有マップの作成
説明
occupancyMap は、2 次元占有グリッド マップ オブジェクトを作成します。占有グリッドの各セルは、そのセルの占有確率を表す値をもちます。1 に近い値は、セルに障害物の含まれる確率が高いことを表します。0 に近い値は、セルが占有されておらず障害物のない確率が高いことを表します。
占有マップは、パス計画などのナビゲーション アルゴリズムで使用されます (plannerRRT を参照)。また、衝突のないパスの検出、衝突回避、位置推定の計算を行う地図作成アプリケーションでも使用されます (monteCarloLocalization を参照)。特定の用途に合わせて占有マップを修正できます。
occupancyMap オブジェクトは、ローカル座標、ワールド座標およびグリッド インデックスをサポートします。インデックス (1,1) をもつ最初のグリッド位置は、グリッドの左上隅で開始します。
occupancyMap クラスを使用して、実世界のさまざまな障害物を表す確率値をもつ 2 次元の環境マップを作成します。セルの正確な確率値を指定するか、レーザー スキャナーなどのセンサーからの観測値を含めることができます。
各グリッド セルの占有状態を推定するために、バイナリ ベイズ フィルターを使用して確率値が格納されます。対数オッズ表現が使用され、値が int16 として格納されます。これにより、マップのストレージ サイズが削減され、リアルタイム アプリケーションが可能になります。
作成
構文
説明
は、指定されたグリッド分解能 (1 メートルあたりのセル数) で占有マップを作成します。map = occupancyMap(width,height,resolution)resolution は、Resolutionプロパティを設定します。
は、指定された行数と列数、および分解能 (1 メートルあたりのセル数) で占有マップを作成します。map = occupancyMap(rows,cols,resolution,'grid')rows と cols の値は、GridSizeプロパティを設定します。
は、行列 map = occupancyMap(p)p の値から占有マップを作成します。グリッド サイズは行列のサイズと一致し、各セルの確率値は行列の位置から解釈されます。
は、指定した行列と分解能 (1 メートルあたりのセル数) から占有マップを作成します。map = occupancyMap(p,resolution)
map = occupancyMap( は、別の sourcemap)occupancyMap オブジェクトの値を使用してオブジェクトを作成します。
map = occupancyMap( は、別の sourcemap,resolution)occupancyMap オブジェクトの値を使用してオブジェクトを作成しますが、指定された分解能をもつように行列をリサンプリングします。
入力引数
プロパティ
オブジェクト関数
checkOccupancy | Check if locations are free or occupied |
copy | Create copy of 2-D occupancy map |
getOccupancy | Get occupancy probability of locations |
grid2local | グリッド インデックスをローカル座標に変換 |
grid2world | グリッド インデックスをワールド座標に変換 |
inflate | Inflate each occupied location |
insertRay | Insert ray from laser scan observation |
local2grid | ローカル座標をグリッド インデックスに変換 |
local2world | ローカル座標をワールド座標に変換 |
move | Move map in world frame |
occupancyMatrix | 占有マップを行列に変換 |
raycast | Compute cell indices along a ray |
rayIntersection | Find intersection points of rays and occupied map cells |
setOccupancy | 位置の占有確率を設定 |
show | Display 2-D occupancy map |
syncWith | Sync map with overlapping map |
updateOccupancy | Update occupancy probability at locations |
world2grid | ワールド座標をグリッド インデックスに変換 |
world2local | ワールド座標をローカル座標に変換 |
例
制限
占有値は、制限された分解能 ±0.001 をもちます。値は対数オッズ表現を使用する int16 として格納されます。このデータ型では分解能が制限されますが、MATLAB® で大規模マップを格納するときにメモリを節約できます。setOccupancy、getOccupancy の順に呼び出すと、戻り値が設定値と等しくない場合があります。詳細については、占有グリッドの対数オッズ表現の節を参照してください。
メモリ サイズによる制限がある場合は、代わりに binaryOccupancyMap の使用を検討してください。バイナリ占有マップは、バイナリ値でより少ないメモリを使用しますが、それでも Navigation Toolbox™ のアルゴリズムとその他のアプリケーションで機能します。
拡張機能
バージョン履歴
R2019b で導入
参考
binaryOccupancyMap | mobileRobotPRM (Robotics System Toolbox) | controllerPurePursuit (Robotics System Toolbox) | rosReadOccupancyGrid (ROS Toolbox) | rosWriteOccupancyGrid (ROS Toolbox)
![Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.](../../examples/nav/win64/InsertLaserScansIntoOccupancyMapExample_01.png)
![Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.](../../examples/nav/win64/InsertLaserScansIntoOccupancyMapExample_02.png)

![Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.](../../examples/nav/win64/ConvertPGMImageToMapExample_02.png)