23 : target(INVALID_NUM, INVALID_NUM),
24 target_heading(INVALID_NUM),
25 target_frame_id(
"map"),
26 allowed_distance(INVALID_NUM),
32 double target_x,
double target_y,
double allowed_distance_,
33 bool allow_skip_,
double target_heading_)
34 : target(target_x, target_y),
35 target_heading(target_heading_),
36 target_frame_id(
"map"),
37 allowed_distance(allowed_distance_),
38 allow_skip(allow_skip_)
54 s +=
"target=(**Coordinates not set!!**) ";
60 s +=
" (heading: any) ";
65 s +=
" (**allowed_distance not set!!**) ";
67 s += (
allow_skip ?
" allow_skip: YES" :
" allow_skip: NO ");
79 "List of %u waypoints:\n",
static_cast<unsigned int>(
waypoints.size()));
95 counter_seen_reachable(0)
100 TWaypoint::operator=(wp);
115 final_goal_reached(false),
116 waypoint_index_current_goal(-1),
127 "Status for %u waypoints:\n",
128 static_cast<unsigned int>(
waypoints.size()));
137 " final_goal_reached:%s waypoint_index_current_goal=%d\n",
145 outter_radius_non_skippable(.3),
146 inner_radius_non_skippable(.0),
147 outter_radius_reached(.2),
148 inner_radius_reached(.1),
149 heading_arrow_len(1.0),
150 color_regular(
mrpt::utils::TColor(0x00, 0x00, 0xff)),
151 color_current_goal(
mrpt::utils::TColor(0xff, 0x00, 0x20)),
152 color_reached(
mrpt::utils::TColor(0x00, 0x00, 0xc0, 0xd0)),
162 unsigned int idx = 0;
165 auto gl_pt = mrpt::make_aligned_shared<mrpt::opengl::CDisk>(
166 p.allow_skip ?
params.outter_radius
167 :
params.outter_radius_non_skippable,
168 p.allow_skip ?
params.inner_radius
169 :
params.inner_radius_non_skippable,
171 gl_pt->setLocation(
p.target.x,
p.target.y, 0.01);
172 gl_pt->setColor_u8(
params.color_regular);
176 gl_pt->enableShowName(
true);
182 auto o = mrpt::make_aligned_shared<mrpt::opengl::CArrow>(
183 0, 0, 0,
params.heading_arrow_len, 0.0f, 0.0f);
186 p.target.x,
p.target.y, 0.02,
p.target_heading, 0, 0));
199 unsigned int idx = 0;
205 mrpt::make_aligned_shared<mrpt::opengl::CDisk>(
207 ?
params.outter_radius_reached
208 : (
p.allow_skip ?
params.outter_radius
209 :
params.outter_radius_non_skippable),
211 ?
params.inner_radius_reached
212 : (
p.allow_skip ?
params.inner_radius
213 :
params.inner_radius_non_skippable),
215 gl_pt->setLocation(
p.target.x,
p.target.y, 0.01);
220 "WayPt #%2u Reach:%s", idx,
p.reached ?
"YES" :
"NO"));
221 gl_pt->enableShowName(
true);
224 is_cur_goal ?
params.color_current_goal
225 : (
p.reached ?
params.color_reached
231 auto o = mrpt::make_aligned_shared<mrpt::opengl::CArrow>(
232 0, 0, 0,
params.heading_arrow_len, 0.0f, 0.0f);
235 p.target.x,
p.target.y, 0.02,
p.target_heading, 0, 0));
247 c.write(
s,
"waypoint_count", N);
251 for (
unsigned int i = 0; i < N; i++)
256 s,
mrpt::format(
"wp%03u_allowed_distance", i), wp.allowed_distance,
258 c.write(
s,
mrpt::format(
"wp%03u_allow_skip", i), wp.allow_skip, NP);
262 s,
mrpt::format(
"wp%03u_target_frame_id", i), wp.target_frame_id,
265 s,
mrpt::format(
"wp%03u_target_heading", i), wp.target_heading, NP);
274 const unsigned int N =
c.read_int(
s,
"waypoint_count", 0,
true);
277 for (
unsigned int i = 0; i < N; i++)
281 wp.allowed_distance =
c.read_double(
289 wp.target_frame_id =
c.read_string(
291 double hd =
c.read_double(
std::shared_ptr< CDisk > Ptr
A set of object, which are referenced to the coordinates framework established in this object.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
This class allows loading and storing values and vectors of different types from a configuration text...
#define INVALID_TIMESTAMP
Represents an invalid timestamp, where applicable.
GLsizei GLsizei GLuint * obj
GLenum const GLfloat * params
GLsizei const GLchar ** string
double RAD2DEG(const double x)
Radians to degrees.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
std::string format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
A single waypoint within TWaypointSequence.
std::string getAsText() const
get in human-readable format
static const int INVALID_NUM
The default value of fields (used to detect non-set values)
double target_heading
[Default=any heading] Optionally, set to the desired orientation [radians] of the robot at this waypo...
bool allow_skip
[Default=true] Whether it is allowed to the navigator to proceed to a more advanced waypoint in the s...
TWaypoint()
Ctor with default values.
mrpt::math::TPoint2D target
[Must be set by the user] Coordinates of desired target location (world/global coordinates).
double allowed_distance
[Must be set by the user] How close should the robot get to this waypoint for it to be considered rea...
bool isValid() const
Check whether all the minimum mandatory fields have been filled by the user.
void load(const mrpt::utils::CConfigFileBase &c, const std::string &s)
Loads waypoints to a config file section.
std::string getAsText() const
Gets navigation params as a human-readable format.
void save(mrpt::utils::CConfigFileBase &c, const std::string &s) const
Saves waypoints to a config file section.
std::vector< TWaypoint > waypoints
TWaypointSequence()
Ctor with default values.
void getAsOpenglVisualization(mrpt::opengl::CSetOfObjects &obj, const mrpt::nav::TWaypointsRenderingParams ¶ms=mrpt::nav::TWaypointsRenderingParams()) const
Renders the sequence of waypoints (previous contents of obj are cleared)
A waypoint with an execution status.
bool reached
Whether this waypoint has been reached already (to within the allowed distance as per user specificat...
std::string getAsText() const
Gets navigation params as a human-readable format.
TWaypointStatus & operator=(const TWaypoint &wp)
void getAsOpenglVisualization(mrpt::opengl::CSetOfObjects &obj, const mrpt::nav::TWaypointsRenderingParams ¶ms=mrpt::nav::TWaypointsRenderingParams()) const
Renders the sequence of waypoints (previous contents of obj are cleared)
std::string getAsText() const
Gets navigation params as a human-readable format.
TWaypointStatusSequence()
Ctor with default values.
bool final_goal_reached
Whether the final waypoint has been reached successfuly.
std::vector< TWaypointStatus > waypoints
Waypoints parameters and status (reached, skipped, etc.)
int waypoint_index_current_goal
Index in waypoints of the waypoint the navigator is currently trying to reach.
used in getAsOpenglVisualization()
TWaypointsRenderingParams()