![]() |
RMVL
2.6.0-dev
Robotic Manipulation and Vision Library
|
二维分层代价地图 更多...
#include <rmvl/nav/map.hpp>
Public 成员函数 | |
| Costmap () | |
| 构造空代价地图 | |
| Costmap (const GridMap &static_map, CostmapOptions options={}) | |
| 使用静态占据栅格构造代价地图 | |
| MapStatus | reset (const GridMap &static_map, CostmapOptions options={}) |
| 重建几何信息、静态层和空白局部障碍层 | |
| MapStatus | setStaticMap (const GridMap &static_map) |
| 使用几何信息一致的新地图更新静态层 | |
| bool | valid () const noexcept |
| const CostmapOptions & | options () const noexcept |
| uint32_t | width () const noexcept |
| uint32_t | height () const noexcept |
| std::string_view | frameId () 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 |
| 获取栅格中心的世界坐标 | |
| MapStatus | markObstacle (Cell cell) noexcept |
| 在局部障碍层标记一个栅格障碍 | |
| MapStatus | markObstacle (double world_x, double world_y) noexcept |
| 在局部障碍层标记一个世界坐标障碍 | |
| MapStatus | clearObstacles () noexcept |
| MapStatus | clearRay (double start_x, double start_y, double end_x, double end_y) |
| 清除局部障碍层中的一条世界坐标射线 | |
| void | updateCosts () |
| 合并静态层和局部障碍层,并根据配置重新计算膨胀代价 | |
| std::optional< uint8_t > | at (uint32_t x, uint32_t y) const noexcept |
| 获取主代价地图栅格值 | |
| bool | collides (const std::vector< msg::Point > &footprint, const msg::Pose &pose) const |
| 检测机器人 footprint 是否发生碰撞 | |
| msg::OccupancyGrid | message () const |
| 将当前主代价地图导出为 OccupancyGrid | |
二维分层代价地图
内部维护静态层和局部障碍层,updateCosts() 将两层合并后执行障碍膨胀。 局部障碍支持单点标记和射线清除,适合批量接收传感器观测后统一更新主代价地图。
| rm::nav::Costmap::Costmap | ( | ) |
构造空代价地图
|
explicit |
|
noexcept |
获取主代价地图栅格值
| [in] | x | 栅格横向索引 |
| [in] | y | 栅格纵向索引 |
|
noexcept |
| MapStatus rm::nav::Costmap::clearRay | ( | double | start_x, |
| double | start_y, | ||
| double | end_x, | ||
| double | end_y ) |
清除局部障碍层中的一条世界坐标射线
射线会裁剪到地图边界,且不修改静态层。
| [in] | start_x | 射线起点的世界坐标 X,单位为米 |
| [in] | start_y | 射线起点的世界坐标 Y,单位为米 |
| [in] | end_x | 射线终点的世界坐标 X,单位为米 |
| [in] | end_y | 射线终点的世界坐标 Y,单位为米 |
| bool rm::nav::Costmap::collides | ( | const std::vector< msg::Point > & | footprint, |
| const msg::Pose & | pose ) const |
检测机器人 footprint 是否发生碰撞
| [in] | footprint | 机器人局部坐标系中的闭合多边形顶点,无需重复首顶点 |
| [in] | pose | 机器人在地图坐标系中的平面位姿 |
|
noexcept |
|
noexcept |
|
noexcept |
获取栅格中心的世界坐标
| [in] | x | 栅格横向索引 |
| [in] | y | 栅格纵向索引 |
在局部障碍层标记一个栅格障碍
| [in] | cell | 障碍所在的离散栅格 |
|
noexcept |
在局部障碍层标记一个世界坐标障碍
| [in] | world_x | 障碍的世界坐标 X,单位为米 |
| [in] | world_y | 障碍的世界坐标 Y,单位为米 |
| msg::OccupancyGrid rm::nav::Costmap::message | ( | ) | const |
将当前主代价地图导出为 OccupancyGrid
|
noexcept |
| MapStatus rm::nav::Costmap::reset | ( | const GridMap & | static_map, |
| CostmapOptions | options = {} ) |
重建几何信息、静态层和空白局部障碍层
| [in] | static_map | 静态占据栅格 |
| [in] | options | 代价地图配置 |
使用几何信息一致的新地图更新静态层
| [in] | static_map | 新的静态占据栅格 |
| void rm::nav::Costmap::updateCosts | ( | ) |
合并静态层和局部障碍层,并根据配置重新计算膨胀代价
|
noexcept |
|
noexcept |
|
noexcept |
将世界坐标转换为栅格坐标
| [in] | world_x | 世界坐标 X,单位为米 |
| [in] | world_y | 世界坐标 Y,单位为米 |