Planner2D.cpp
Go to the documentation of this file.
1#include "Planner2D.h"
2
3#include <algorithm>
4#include <cmath>
5#include <cstddef>
6#include <string>
7
8#include <VirtualRobot/CollisionDetection/CollisionModel.h> // IWYU pragma: keep
9#include <VirtualRobot/SceneObjectSet.h> // IWYU pragma: keep
10#include <VirtualRobot/VirtualRobot.h>
11
13
15{
16
18 {
19 sceneBoundsMin.setZero();
20 sceneBoundsMax.setZero();
23 }
24
25 void
26 Planner2D::setObstacles(VirtualRobot::SceneObjectSetPtr obstacles)
27 {
28 this->obstacles = obstacles;
29 if (obstacles)
30 {
31 for (size_t i = 0; i < obstacles->getCollisionModels().size(); i++)
32 {
33 VirtualRobot::BoundingBox bb = obstacles->getCollisionModels()[i]->getBoundingBox();
34 sceneBoundsMin.x() = std::min(bb.getMin().x(), sceneBoundsMin.x());
35 sceneBoundsMin.y() = std::min(bb.getMin().y(), sceneBoundsMin.y());
36 sceneBoundsMax.x() = std::max(bb.getMax().x(), sceneBoundsMax.x());
37 sceneBoundsMax.y() = std::max(bb.getMax().y(), sceneBoundsMax.y());
38 }
39 }
40 }
41
42 void
47
48 void
50 {
51 this->robotColModelName = robotColModelName;
52 }
53
54 Eigen::Matrix4f
55 Planner2D::positionToMatrix4f(Eigen::Vector2f pos)
56 {
57 Eigen::Matrix4f result = Eigen::Matrix4f::Identity();
58 result(0, 3) = pos.x();
59 result(1, 3) = pos.y();
60 return result;
61 }
62
63 void
64 Planner2D::setParameter(const std::string& s, float p)
65 {
66 parameters[s] = p;
67 }
68
69 bool
70 Planner2D::hasParameter(const std::string& s)
71 {
72 return (parameters.find(s) != parameters.end());
73 }
74
75 float
76 Planner2D::getParameter(const std::string& s)
77 {
78 if (!hasParameter(s))
79 {
80 ARMARX_WARNING << "Parameter " << s << " not set, returning 0";
81 return 0.0f;
82 }
83 return parameters[s];
84 }
85
86} // namespace armarx::navigation::algorithm::astar
std::map< std::string, float > parameters
Definition Planner2D.h:76
void setRobotColModel(const std::string &robotColModelName)
set name of RobotNode which should be used for collision detection
Definition Planner2D.cpp:49
VirtualRobot::SceneObjectSetPtr obstacles
Definition Planner2D.h:72
Eigen::Matrix4f positionToMatrix4f(Eigen::Vector2f pos)
Definition Planner2D.cpp:55
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Planner2D(VirtualRobot::RobotPtr robot, VirtualRobot::SceneObjectSetPtr obstacles=VirtualRobot::SceneObjectSetPtr())
Initialize Planner with robot and obstacles.
Definition Planner2D.cpp:17
void setParameter(const std::string &s, float p)
set a float parameter that is identified with a string
Definition Planner2D.cpp:64
bool hasParameter(const std::string &s)
check if a parameter is set
Definition Planner2D.cpp:70
float getParameter(const std::string &s)
get the corresponding float parameter (0 is returned when parameter string is not present)
Definition Planner2D.cpp:76
void setObstacles(VirtualRobot::SceneObjectSetPtr obstacles)
Update obstacles.
Definition Planner2D.cpp:26
void setRobot(VirtualRobot::RobotPtr robot)
update robot
Definition Planner2D.cpp:43
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
Definition Logging.h:193
std::shared_ptr< class Robot > RobotPtr
Definition Bus.h:19