util.h
Go to the documentation of this file.
1
2/**
3 * This file is part of ArmarX.
4 *
5 * ArmarX is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 * ArmarX is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 *
17 * @author Fabian Reister ( fabian dot reister at kit dot edu )
18 * @date 2022
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22
23#pragma once
24
25#include <optional>
26#include <vector>
27
28#include <VirtualRobot/VirtualRobot.h>
29#include <VirtualRobot/Workspace/WorkspaceGrid.h>
30
36
38{
39
40 SceneBounds computeSceneBounds(const VirtualRobot::SceneObjectSetPtr& obstacles,
41 const std::vector<VirtualRobot::RobotPtr>& articulatedObjects,
42 const SceneBounds& init = SceneBounds(),
43 const std::vector<Room>& rooms = {},
44 float margin = 0,
45 bool restrictToRooms = false);
46
47
48 SceneBounds computeSceneBounds(const std::vector<Eigen::Vector2f>& points,
49 const SceneBounds& init,
50 float margin);
51
52 SceneBounds toSceneBounds(const VirtualRobot::WorkspaceGrid::Extends& extends);
53
54 SceneBounds merge(const std::vector<SceneBounds>& sceneBounds);
55
56
57 Costmap toCostmap(const VirtualRobot::WorkspaceGrid& workspaceGrid);
58
59
60 // Costmap mergeUnaligned(const std::vector<Costmap>& costmaps,
61 // const std::vector<float>& weights,
62 // float cellSize = -1,
63 // const Eigen::Array2f& offset = Eigen::Array2f::Zero());
64
65 void checkSameSize(const std::vector<Costmap>& costmaps);
66
67 /**
68 * @brief Defines how the
69 *
70 */
72 {
76 };
77
78 Costmap mergeAligned(const std::vector<Costmap>& costmaps, CostmapMergeMode mode);
79 Costmap mergeAligned(const std::vector<Costmap>& costmaps, const std::vector<float>& weights);
80
81 Costmap scaleCostmap(const Costmap& costmap, float cellSize);
82
83 std::optional<core::Pose2D> sampleValidPositionInMap(const algorithms::Costmap& costmap);
84
85
86 void invalidateOutsideRooms(const std::vector<Room>& rooms, Costmap& costmap);
87 void invalidateOutsideRooms(const std::vector<Room>& rooms,
88 orientation_aware::Costmap3D& costmap);
89
90 /*!
91 * Dilate the costmap mask to bridge over small gaps in the mask
92 */
93 Costmap::Mask dilateMask(const Costmap::Mask& mask, int numIterations);
94
95} // namespace armarx::navigation::algorithms
Eigen::Matrix< bool, Eigen::Dynamic, Eigen::Dynamic > Mask
Definition Costmap.h:60
This file is part of ArmarX.
Costmap::Mask dilateMask(const Costmap::Mask &mask, int numIterations)
Definition util.cpp:519
Costmap toCostmap(const VirtualRobot::WorkspaceGrid &workspaceGrid)
Definition util.cpp:204
SceneBounds merge(const std::vector< SceneBounds > &sceneBounds)
Definition util.cpp:183
Costmap scaleCostmap(const Costmap &costmap, float cellSize)
Definition util.cpp:373
std::optional< core::Pose2D > sampleValidPositionInMap(const algorithms::Costmap &costmap)
Definition util.cpp:431
CostmapMergeMode
Defines how the.
Definition util.h:72
SceneBounds computeSceneBounds(const VirtualRobot::SceneObjectSetPtr &obstacles, const std::vector< VirtualRobot::RobotPtr > &articulatedObjects, const SceneBounds &init, const std::vector< Room > &rooms, const float margin, const bool restrictToRooms)
Definition util.cpp:62
SceneBounds toSceneBounds(const VirtualRobot::WorkspaceGrid::Extends &extends)
Definition util.cpp:176
void invalidateOutsideRooms(const std::vector< Room > &rooms, Costmap &costmap)
Definition util.cpp:493
Costmap mergeAligned(const std::vector< Costmap > &costmaps, CostmapMergeMode mode)
Definition util.cpp:303
void checkSameSize(const std::vector< Costmap > &costmaps)
Definition util.cpp:289