32 #include <shared_mutex>
35 #include <Eigen/Geometry>
38 #include <Ice/Current.h>
41 #include <ArmarXCore/interface/observers/ObserverInterface.h>
49 #include <RobotAPI/interface/components/ObstacleAvoidance/DynamicObstacleManagerInterface.h>
50 #include <RobotAPI/interface/components/ObstacleAvoidance/ObstacleDetectionInterface.h>
60 virtual public DynamicObstacleManagerInterface,
69 void add_decayable_obstacle(
const Eigen::Vector2f&,
float,
float,
float,
const Ice::Current& = Ice::Current())
override;
70 void add_decayable_line_segment(
const Eigen::Vector2f&,
const Eigen::Vector2f&,
const Ice::Current& = Ice::Current())
override;
73 void directly_update_obstacle(
const std::string& name,
const Eigen::Vector2f&,
float,
float,
float,
const Ice::Current& = Ice::Current())
override;
74 void remove_obstacle(
const std::string& name,
const Ice::Current& = Ice::Current())
override;
76 float distanceToObstacle(
const Eigen::Vector2f& agentPosition,
float safetyRadius,
const Eigen::Vector2f& goal,
const Ice::Current& = Ice::Current())
override;
86 void update_decayable_obstacles();
94 const std::string m_obstacle_manager_layer_name =
"DynamicObstacleManagerObstacles";
96 unsigned long m_obstacle_index;
98 std::vector<ManagedObstaclePtr> m_managed_obstacles;
99 std::shared_mutex m_managed_obstacles_mutex;
102 unsigned int m_decay_after_ms;
103 unsigned int m_periodic_task_interval;
104 unsigned int m_decay_factor;
105 unsigned int m_access_bonus;
106 unsigned int m_min_value_for_accepting;
108 float m_min_coverage_of_obstacles;
109 float m_min_coverage_of_line_samples_in_obstacle;
110 unsigned int m_min_size_of_obstacles;
111 unsigned int m_min_length_of_lines;
112 unsigned int m_max_size_of_obstacles;
113 unsigned int m_max_length_of_lines;
114 unsigned int m_thickness_of_lines;
115 unsigned int m_security_margin_for_obstacles;
116 unsigned int m_security_margin_for_lines;
118 bool m_remove_enabled;
119 bool m_only_visualize;
120 bool m_allow_spwan_inside;