|
|
This file is part of ArmarX. More...
Classes | |
| struct | ClutterParameters |
| struct | CorridorParameters |
| struct | NamedPose |
| A pose from the room's navigation graph, kept with its name so a failing request can be reported as something a reader recognises rather than a pair of coordinates. More... | |
| struct | Record |
| What one planning request produced. More... | |
| struct | Request |
| struct | RoomScene |
| The room as the planner sees it, assembled from PriorKnowledgeData. More... | |
| struct | SamplingParameters |
| struct | SerpentineParameters |
Enumerations | |
| enum class | RequestKind { Uniform , NearObstacle , Location , CorridorExit } |
Functions | |
| int | addClutter (analysis::Scene &scene, const ClutterParameters ¶meters, std::mt19937 &rng) |
| Scatter boxes through the room to create tight passages. | |
| RoomScene | buildRoomScene (const std::filesystem::path &priorKnowledge, const std::string &room, const std::vector< std::string > &sceneFiles, float wallThickness=200.F) |
| Build the scene for a room from PriorKnowledgeData. | |
| bool | contains (const algorithms::SceneBounds &bounds, const Eigen::Vector2f &point) |
| Whether a point lies within the bounds, edges included. | |
| algorithms::SceneBounds | makeCorridor (analysis::Scene &scene, const CorridorParameters ¶meters) |
| A dead-end corridor opening into the rest of the room. | |
| float | makeSerpentine (analysis::Scene &scene, const SerpentineParameters ¶meters, float robotRadius) |
| Replace the room's contents with transverse walls whose openings alternate sides. | |
| Record | measure (const Request &request, const std::optional< global_planning::GlobalPlannerResult > &result, const algorithms::Costmap &costmap, float plannedSeconds) |
| Measure a planning result against the costmap. | |
| std::vector< Request > | sampleRequests (RequestKind kind, int count, const algorithms::Costmap &costmap, const RoomScene &room, const SamplingParameters ¶meters, std::mt19937 &rng) |
Draw count requests of the given kind. | |
| std::string | summarize (const std::vector< Record > &records, float checkerClearance) |
| Aggregate over a sweep, grouped by request kind. | |
| std::string | toString (const RequestKind kind) |
| void | writeRecord (std::ostream &out, const Record &record) |
| One JSON object per line, so a sweep streams to disk and can be diffed across revisions. | |
Variables | |
| constexpr std::size_t | roomWallCount = 4 |
Number of wall boxes buildRoomScene puts at the front of the obstacle list. | |
This file is part of ArmarX.
ArmarX is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
ArmarX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
|
strong |
| Enumerator | |
|---|---|
| Uniform | Start and goal drawn uniformly from the cells in open space, i.e. whose clearance is at least |
| NearObstacle | Start and goal drawn from cells whose clearance sits just above zero, so the poses hug obstacle edges. This is where the smoother is actually under load. |
| Location | Pairs of poses from the room's navigation graph – the requests the robot really receives here. |
| CorridorExit | Start inside a narrow corridor, goal out in the open. Directional on purpose. Every other kind draws both endpoints from the same population, which never produces the case where the robot is boxed in at the start and free at the end – and that asymmetry is the point, because the optimizer holds the start fixed. A start deep in a corridor constrains the first segments in a way no amount of optimizing downstream can relieve. |
Definition at line 31 of file Sampling.h.
| int addClutter | ( | analysis::Scene & | scene, |
| const ClutterParameters & | parameters, | ||
| std::mt19937 & | rng ) |
Scatter boxes through the room to create tight passages.
Seeded from the caller's generator, so a cluttered sweep is as reproducible as a plain one. Returns the number actually placed, which falls short of count once the room saturates.
Definition at line 304 of file RoomScene.cpp.
Here is the call graph for this function:| RoomScene buildRoomScene | ( | const std::filesystem::path & | priorKnowledge, |
| const std::string & | room, | ||
| const std::vector< std::string > & | sceneFiles, | ||
| float | wallThickness = 200.F ) |
Build the scene for a room from PriorKnowledgeData.
Each object's oriented bounding box is transformed by the object's pose and projected to the ground plane. Room walls come from the room polygon's axis-aligned bounds.
| priorKnowledge | Root of the PriorKnowledgeData data/PriorKnowledgeData directory. |
| room | Room path within the scene collections, e.g. 50_19/R007. |
| sceneFiles | Scene descriptions to merge, e.g. static_scene, mobile_kitchen. |
| wallThickness | Thickness [mm] of the boxes standing in for the room walls. |
Definition at line 106 of file RoomScene.cpp.
Here is the call graph for this function:
Here is the caller graph for this function:| bool contains | ( | const algorithms::SceneBounds & | bounds, |
| const Eigen::Vector2f & | point ) |
Whether a point lies within the bounds, edges included.
Definition at line 99 of file RoomScene.cpp.
Here is the caller graph for this function:| algorithms::SceneBounds makeCorridor | ( | analysis::Scene & | scene, |
| const CorridorParameters & | parameters ) |
A dead-end corridor opening into the rest of the room.
Models the case the serpentine does not: the robot starts inside tight space and has to get out. The difference matters because the optimizer holds the start fixed, so a start deep in a corridor constrains the path in a way a start in open space never does – the first segments have one free endpoint each and no room either side.
Removes the furniture, keeping only the room walls.
Definition at line 386 of file RoomScene.cpp.
| float makeSerpentine | ( | analysis::Scene & | scene, |
| const SerpentineParameters & | parameters, | ||
| float | robotRadius ) |
Replace the room's contents with transverse walls whose openings alternate sides.
Forces a serpentine path: every wall is a tight passage followed by a reversal, so a single request exercises threading and turning repeatedly. Furniture is removed rather than added to, so the passage width is the only thing constraining the path and the scene stays interpretable.
Definition at line 421 of file RoomScene.cpp.
| Record measure | ( | const Request & | request, |
| const std::optional< global_planning::GlobalPlannerResult > & | result, | ||
| const algorithms::Costmap & | costmap, | ||
| const float | plannedSeconds ) |
Measure a planning result against the costmap.
Definition at line 137 of file Metrics.cpp.
Here is the call graph for this function:
Here is the caller graph for this function:| std::vector< Request > sampleRequests | ( | RequestKind | kind, |
| int | count, | ||
| const algorithms::Costmap & | costmap, | ||
| const RoomScene & | room, | ||
| const SamplingParameters & | parameters, | ||
| std::mt19937 & | rng ) |
Draw count requests of the given kind.
Deterministic for a given seed, so a sweep can be repeated across revisions and the per-request records compared directly.
Definition at line 88 of file Sampling.cpp.
Here is the call graph for this function:
Here is the caller graph for this function:Aggregate over a sweep, grouped by request kind.
| checkerClearance | The clearance [mm] the trajectory checker enforces, used to separate requests the smoother could never have satisfied from ones it failed. |
Definition at line 294 of file Metrics.cpp.
Here is the call graph for this function:| std::string toString | ( | const RequestKind | kind | ) |
| void writeRecord | ( | std::ostream & | out, |
| const Record & | record ) |
One JSON object per line, so a sweep streams to disk and can be diffed across revisions.
Definition at line 245 of file Metrics.cpp.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineconstexpr |
Number of wall boxes buildRoomScene puts at the front of the obstacle list.
Definition at line 66 of file RoomScene.h.