20 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
57 using Grid = Eigen::MatrixXf;
65 const std::optional<Mask>& mask = std::nullopt,
78 const std::optional<Mask>& mask = std::nullopt);
89 std::optional<Costmap::Vertex>
103 const Parameters&
params() const noexcept;
111 const Eigen::Vector2f costmap_P_center{
117 return global_T_costmap * Eigen::Translation2f(costmap_P_center);
131 bool add(
const Costmap& other,
float weight = 1.0);
146 const std::optional<Mask>&
getMask() const noexcept;
168 const
std::vector<
float>& weights) const;
173 return global_T_costmap;
179 global_T_costmap = globalPose;
200 std::optional<Vertex>
207 std::optional<Mask> mask;
211 const Parameters parameters;
212 core::Pose2D global_T_costmap = core::Pose2D::Identity();
std::optional< Vertex > findClosestCollisionFreeVertex(const Position &position, float maxDistance) const
Find the closest collision-free position to a given position.
const Grid & getGrid() const
Costmap mergeInto(const std::vector< Costmap > &costmaps, const std::vector< float > &weights) const
Merge a list of costmaps into this costmap.
bool addCostmapWithSameSizeAndPose(const Costmap &other, AddMode mode)
void validateSizes() const
const core::Pose2D & origin() const
static Costmap WithSameDimsAs(const Costmap &other, const Grid &grid, const std::optional< Mask > &mask=std::nullopt)
Create a costmap with the same dimensions and parameters as the given one.
const SceneBounds & getLocalSceneBounds() const noexcept
friend class SocialCostmapBuilder
bool isInCollision(const Position &p) const
void cutToValidBoundingBox()
core::Pose2D centerPose() const
Position toPositionLocal(const Index &index) const
std::pair< Index, Index > getValidBoundingBox() const
Vertex toVertex(const Position &globalPosition) const
void excludeUnreachable(const Position &position)
std::size_t numberOfValidElements() const
const Parameters & params() const noexcept
Eigen::Matrix< bool, Eigen::Dynamic, Eigen::Dynamic > Mask
std::optional< Costmap::Mask > & getMutableMask() noexcept
friend class CostmapBuilder
Position toPositionGlobal(const Index &index) const
const std::optional< Mask > & getMask() const noexcept
std::optional< Costmap::Vertex > toVertexOrInvalid(const Eigen::Vector2f &globalPosition) const
void filter(const Filter &filter)
void forEachCellParallel(const std::function< void(const Index &)> &f) const
void setOrigin(const core::Pose2D &globalPose)
bool isValid(const Index &index) const noexcept
checks whether the cell is masked out
bool add(const Costmap &other, float weight=1.0)
std::pair< int, int > toIndexUnsanitized(const Eigen::Vector2f &globalPosition) const
Costmap(const Grid &grid, const Parameters ¶meters, const SceneBounds &sceneBounds, const std::optional< Mask > &mask=std::nullopt, const core::Pose2D &origin=core::Pose2D::Identity())
void forEachCell(const std::function< void(const Index &)> &f) const
std::optional< float > value(const Index &index) const
This file is part of ArmarX.
This file is part of ArmarX.
static Filter gaussian(int radius=2, float sigma=1.)
Filter & setUseMinimum(bool value)
float cellSize
How big each cell is in the uniform grid.