36 #include <IceUtil/Time.h>
39 #include <VirtualRobot/Safety.h>
40 #include <VirtualRobot/VirtualRobot.h>
49 #include <RobotAPI/interface/components/ObstacleAvoidance/DynamicObstacleManagerInterface.h>
84 Eigen::Vector2f target_pos;
86 Eigen::Vector2f target_vel;
89 float target_angular_dist;
90 Eigen::Vector2f agent_pos;
92 double agent_safety_margin = 0;
93 float min_vel_near_target = 50;
94 float min_vel_general = 100;
96 float max_rot_vel = 0.3;
97 float pos_near_threshold = 250;
98 float pos_reached_threshold = 8;
99 float ori_reached_threshold = 0.1;
105 Eigen::Vector3f start;
106 std::vector<Eigen::Vector3f> path;
113 Eigen::Vector2f target_local;
114 Eigen::Vector2f modulated_local;
115 Eigen::Vector2f target_global;
116 Eigen::Vector2f modulated_global;
119 float err_angular_dist;
129 void moveTo(
float target_pos_x,
132 float pos_reached_threshold,
133 float ori_reached_threshold,
134 const Ice::Current& = Ice::Current{})
override;
136 void move(
float target_vel_x,
138 float target_rot_vel,
139 const Ice::Current& = Ice::Current{})
override;
142 float target_pos_delta_y,
143 float target_delta_ori,
144 float pos_reached_threshold,
145 float ori_reached_threshold,
146 const Ice::Current& = Ice::Current{})
override;
150 const Ice::Current& = Ice::Current{})
override;
152 void stopPlatform(
const Ice::Current& = Ice::Current{})
override;
164 void schedule_high_level_control_loop(
control_mode mode);
166 void high_level_control_loop();
168 velocities get_velocities();
170 void update_agent_dependent_values();
172 Eigen::Vector2f get_target_velocity()
const;
174 float get_target_rotational_velocity()
const;
176 bool target_position_reached()
const;
178 bool target_orientation_reached()
const;
180 bool target_reached()
const;
184 void visualize(
const velocities& vels);
186 bool is_near_target(
const Eigen::Vector2f& control_velocity)
const noexcept;
192 PlatformUnitInterfacePrx m_platform;
194 DynamicObstacleManagerInterfacePrx m_obsman;
196 ObstacleAwarePlatformUnit::control_loop m_control_loop;
197 ObstacleAwarePlatformUnit::control_data m_control_data;