![]() |
RMVL
2.6.0-dev
Robotic Manipulation and Vision Library
|
二维占据栅格内存模型 更多...
#include <rmvl/nav/map.hpp>
Public 成员函数 | |
| GridMap () | |
| 构造空地图 | |
| GridMap (const msg::OccupancyGrid &grid) | |
| 使用全量占据栅格构造地图 | |
| GridMap (msg::OccupancyGrid &&grid) | |
| 使用全量占据栅格移动构造地图 | |
| MapStatus | reset (const msg::OccupancyGrid &grid) |
| 装载并校验一张全量地图 | |
| MapStatus | reset (msg::OccupancyGrid &&grid) |
| 移动装载并校验一张全量地图 | |
| bool | valid () const noexcept |
| const msg::OccupancyGrid & | message () const noexcept |
| uint32_t | width () const noexcept |
| uint32_t | height () const noexcept |
| std::string_view | frameId () const noexcept |
| double | resolution () const noexcept |
| uint64_t | revision () const noexcept |
| bool | contains (uint32_t x, uint32_t y) const noexcept |
| 判断栅格坐标是否在地图范围内 | |
| std::optional< Cell > | worldToMap (double world_x, double world_y) const noexcept |
| 将世界坐标转换为栅格坐标 | |
| std::optional< msg::Point > | mapToWorld (uint32_t x, uint32_t y) const noexcept |
| 获取栅格中心的世界坐标 | |
| std::optional< int8_t > | at (uint32_t x, uint32_t y) const noexcept |
| 获取指定栅格值 | |
| MapStatus | set (uint32_t x, uint32_t y, int8_t value) noexcept |
| 设置指定栅格值 | |
| MapStatus | updateProbability (uint32_t x, uint32_t y, double probability) noexcept |
| 使用一次占据概率观测更新指定栅格 | |
| MapStatus | integrateRay (double start_x, double start_y, double end_x, double end_y, bool hit=true, double free_probability=0.3, double occupied_probability=0.7) |
| 融合一条世界坐标射线 | |
| MapStatus | apply (const msg::OccupancyGridUpdate &update) |
| 合并矩形地图增量 | |
| std::optional< msg::OccupancyGridUpdate > | pendingUpdate () const |
| 获取尚未清除的本地地图增量 | |
| void | clearPendingUpdate () noexcept |
| 清除本地增量记录,不修改地图内容和版本 | |
友元 | |
| class | Costmap |
二维占据栅格内存模型
| rm::nav::GridMap::GridMap | ( | ) |
构造空地图
|
explicit |
|
explicit |
| MapStatus rm::nav::GridMap::apply | ( | const msg::OccupancyGridUpdate & | update | ) |
合并矩形地图增量
| [in] | update | 待合并的矩形增量消息 |
update 携带的目标版本。
|
noexcept |
获取指定栅格值
| [in] | x | 栅格横向索引 |
| [in] | y | 栅格纵向索引 |
|
noexcept |
清除本地增量记录,不修改地图内容和版本
|
noexcept |
判断栅格坐标是否在地图范围内
| [in] | x | 栅格横向索引 |
| [in] | y | 栅格纵向索引 |
|
noexcept |
|
noexcept |
| MapStatus rm::nav::GridMap::integrateRay | ( | double | start_x, |
| double | start_y, | ||
| double | end_x, | ||
| double | end_y, | ||
| bool | hit = true, | ||
| double | free_probability = 0.3, | ||
| double | occupied_probability = 0.7 ) |
融合一条世界坐标射线
清除射线途经栅格。当 hit 为 true 且终点位于地图内时,将终点更新为占据。 射线允许从地图外进入或离开地图,并会自动裁剪至地图边界。
| [in] | start_x | 射线起点的世界坐标 X,单位为米 |
| [in] | start_y | 射线起点的世界坐标 Y,单位为米 |
| [in] | end_x | 射线终点的世界坐标 X,单位为米 |
| [in] | end_y | 射线终点的世界坐标 Y,单位为米 |
| [in] | hit | 终点是否观测到障碍 |
| [in] | free_probability | 射线途经栅格为空闲的观测概率 |
| [in] | occupied_probability | 射线终点被占据的观测概率 |
|
noexcept |
获取栅格中心的世界坐标
| [in] | x | 栅格横向索引 |
| [in] | y | 栅格纵向索引 |
|
noexcept |
| std::optional< msg::OccupancyGridUpdate > rm::nav::GridMap::pendingUpdate | ( | ) | const |
获取尚未清除的本地地图增量
| MapStatus rm::nav::GridMap::reset | ( | const msg::OccupancyGrid & | grid | ) |
装载并校验一张全量地图
| [in] | grid | 全量占据栅格消息 |
| MapStatus rm::nav::GridMap::reset | ( | msg::OccupancyGrid && | grid | ) |
移动装载并校验一张全量地图
| [in] | grid | 全量占据栅格消息 |
|
noexcept |
|
noexcept |
|
noexcept |
设置指定栅格值
当栅格值实际发生变化时,本次调用作为一次地图修改,版本递增 1。
| [in] | x | 栅格横向索引 |
| [in] | y | 栅格纵向索引 |
| [in] | value | 栅格值,-1 表示未知,0 表示空闲,100 表示占据 |
value 与原值相同时不修改地图,版本保持不变。
|
noexcept |
使用一次占据概率观测更新指定栅格
未知栅格以 0.5 为先验,使用赔率相乘完成贝叶斯更新
| [in] | x | 栅格横向索引 |
| [in] | y | 栅格纵向索引 |
| [in] | probability | 本次观测为占据的概率,范围为 \([0,\,1]\) |
|
noexcept |
|
noexcept |
|
noexcept |
将世界坐标转换为栅格坐标
| [in] | world_x | 世界坐标 X,单位为米 |
| [in] | world_y | 世界坐标 Y,单位为米 |
|
friend |