38 #include <IceUtil/Time.h>
41 #include <VirtualRobot/Nodes/RobotNode.h>
50 #include <RobotAPI/interface/components/ObstacleAvoidance/ObstacleAvoidanceInterface.h>
88 Eigen::Vector2f target_pos;
90 Eigen::Vector2f target_vel;
93 float target_angular_dist;
94 Eigen::Vector2f agent_pos;
96 double agent_safety_margin = 0;
97 float min_vel_near_target = 50;
98 float min_vel_general = 100;
100 float max_rot_vel = 0.3;
101 float pos_near_threshold = 250;
102 float pos_reached_threshold = 8;
103 float ori_reached_threshold = 0.1;
105 std::deque<std::tuple<Eigen::Vector2f, Eigen::Vector2f>> vel_history;
106 unsigned amount_smoothing = 50;
107 unsigned amount_max_vel = 3;
108 float adaptive_max_vel_exp = 0;
113 Eigen::Vector3f start;
114 std::vector<Eigen::Vector3f> path;
120 Eigen::Vector2f target_local;
121 Eigen::Vector2f modulated_local;
122 Eigen::Vector2f target_global;
123 Eigen::Vector2f modulated_global;
126 float err_angular_dist;
148 float pos_reached_threshold,
149 float ori_reached_threshold,
150 const Ice::Current& = Ice::Current{})
158 float target_rot_vel,
159 const Ice::Current& = Ice::Current{})
165 float target_pos_delta_x,
166 float target_pos_delta_y,
167 float target_delta_ori,
168 float pos_reached_threshold,
169 float ori_reached_threshold,
170 const Ice::Current& = Ice::Current{})
178 const Ice::Current& = Ice::Current{})
214 high_level_control_loop();
220 update_agent_dependent_values();
223 get_target_velocity()
227 get_target_rotational_velocity()
231 target_position_reached()
235 target_orientation_reached()
243 post_process_vel(
const Eigen::Vector2f& target_vel,
const Eigen::Vector2f& modulated_vel);
246 calculate_mean_modulated_vel()
250 calculate_adaptive_smoothing_buffer_size()
254 calculate_adaptive_max_vel()
261 visualize(
const velocities& vels);
264 is_near_target(
const Eigen::Vector2f& control_velocity)
274 PlatformUnitInterfacePrx m_platform;
275 ObstacleAvoidanceInterfacePrx m_obstacle_avoidance;
278 ObstacleAvoidingPlatformUnit::control_loop m_control_loop;
279 ObstacleAvoidingPlatformUnit::control_data m_control_data;
281 mutable PIDController m_rot_pid_controller{1.0, 0.00009, 0.0};