Fawkes API  Fawkes Development Version
NavGraphGeneratorInterface.h
1 
2 /***************************************************************************
3  * NavGraphGeneratorInterface.h - Fawkes BlackBoard Interface - NavGraphGeneratorInterface
4  *
5  * Templated created: Thu Oct 12 10:49:19 2006
6  * Copyright 2015 Tim Niemueller
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef __INTERFACES_NAVGRAPHGENERATORINTERFACE_H_
25 #define __INTERFACES_NAVGRAPHGENERATORINTERFACE_H_
26 
27 #include <interface/interface.h>
28 #include <interface/message.h>
29 #include <interface/field_iterator.h>
30 
31 namespace fawkes {
32 
34 {
35  /// @cond INTERNALS
36  INTERFACE_MGMT_FRIENDS(NavGraphGeneratorInterface)
37  /// @endcond
38  public:
39  /* constants */
40 
41  /** Drive modes enum */
42  typedef enum {
44  The node is will not be initially connected.
45 
46  The difference to UNCONNECTED is that we do not connect the
47  nodes just now, but will do so later, e.g. by adding
48  edges. Note that it is an error not to connect the node later.
49  */,
51  The node is marked as unconnected and will not be connected to
52  another node. This kind of nodes is useful to mark points and
53  possibly assign properties without needing to travel to it.
54 
55  The difference to NOT_CONNECTED is that the nodes will be
56  explicitly marked as not being connected and it is an error to
57  connect them.
58  */,
60  Connect point to the node on the graph closest to the given
61  point.
62  */,
64  Connect point to the edge in which segment it lies, i.e. search
65  for an edge where we can find a perpendicular line going
66  through the given point and any point on the edge's line
67  segment. If no such segment is found, the point cannot be
68  added.
69  */,
71  First try the CLOSEST_EDGE method. If that yields no result,
72  use the CLOSEST_NODE method as a fallback.
73  */
75  const char * tostring_ConnectionMode(ConnectionMode value) const;
76 
77  /** Post-processing filtering type. */
78  typedef enum {
80  If enabled, filters out all edges after the map generation that
81  pass too close by an occupied cell of the map. Use this to get
82  rid of connections which "pass through walls".
83  Note that this step is done before adding points of interest.
84  Therefore edges going to POIs might still pass through or close
85  by occupied cells.
86 
87  Parameters:
88  distance: minimum distance from edges to occupied map grid
89  cells to consider it safe.
90  */,
92  If enabled, filters out all nodes which are not connected to
93  any other node. These can occur, for example, after performing
94  the FILTER_EDGES_BY_MAP filter.
95  */,
97  Sometimes after applying other filters one can end up with
98  multiple disconnected graphs. Enabling this filter will keep
99  only the largest connected graph and simply remove all nodes
100  and edges from smaller graphs not connected to the largest.
101  */
102  } FilterType;
103  const char * tostring_FilterType(FilterType value) const;
104 
105  /**
106  When adding edges, the mode defines how to add edges.
107  */
108  typedef enum {
110  Only insert edge if it does not intersect with any other
111  existing edge in the graph.
112  */,
114  If the new edge intersects with one or more edges, add new
115  points at the intersections and split the edges for this
116  point.
117  */,
118  FORCE /**<
119  The edge is added as-is, it may overlap or intersect with
120  other edges.
121  */
122  } EdgeMode;
123  const char * tostring_EdgeMode(EdgeMode value) const;
124 
125  private:
126  /** Internal data storage, do NOT modify! */
127  typedef struct __attribute__((packed)) {
128  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
129  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
130  uint32_t msgid; /**<
131  The ID of the message that is currently being processed or
132  was processed last.
133  */
134  bool final; /**<
135  True, if the last generation triggered by a ComputeMessage has
136  been completed, false if it is still running. Also check the
137  msgid field if this field applies to the correct message.
138  */
139  } NavGraphGeneratorInterface_data_t;
140 
141  NavGraphGeneratorInterface_data_t *data;
142 
143  interface_enum_map_t enum_map_ConnectionMode;
144  interface_enum_map_t enum_map_FilterType;
145  interface_enum_map_t enum_map_EdgeMode;
146  public:
147  /* messages */
148  class ClearMessage : public Message
149  {
150  private:
151  /** Internal data storage, do NOT modify! */
152  typedef struct __attribute__((packed)) {
153  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
154  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
155  } ClearMessage_data_t;
156 
157  ClearMessage_data_t *data;
158 
159  interface_enum_map_t enum_map_ConnectionMode;
160  interface_enum_map_t enum_map_FilterType;
161  interface_enum_map_t enum_map_EdgeMode;
162  public:
163  ClearMessage();
164  ~ClearMessage();
165 
166  ClearMessage(const ClearMessage *m);
167  /* Methods */
168  virtual Message * clone() const;
169  };
170 
172  {
173  private:
174  /** Internal data storage, do NOT modify! */
175  typedef struct __attribute__((packed)) {
176  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
177  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
178  float p1_x; /**< X coordinate of bbox start point in global frame. */
179  float p1_y; /**< Y coordinate of bbox start point in global frame. */
180  float p2_x; /**< X coordinate of bbox end point in global frame. */
181  float p2_y; /**< Y coordinate of bbox end point in global frame. */
182  } SetBoundingBoxMessage_data_t;
183 
184  SetBoundingBoxMessage_data_t *data;
185 
186  interface_enum_map_t enum_map_ConnectionMode;
187  interface_enum_map_t enum_map_FilterType;
188  interface_enum_map_t enum_map_EdgeMode;
189  public:
190  SetBoundingBoxMessage(const float ini_p1_x, const float ini_p1_y, const float ini_p2_x, const float ini_p2_y);
193 
195  /* Methods */
196  float p1_x() const;
197  void set_p1_x(const float new_p1_x);
198  size_t maxlenof_p1_x() const;
199  float p1_y() const;
200  void set_p1_y(const float new_p1_y);
201  size_t maxlenof_p1_y() const;
202  float p2_x() const;
203  void set_p2_x(const float new_p2_x);
204  size_t maxlenof_p2_x() const;
205  float p2_y() const;
206  void set_p2_y(const float new_p2_y);
207  size_t maxlenof_p2_y() const;
208  virtual Message * clone() const;
209  };
210 
211  class SetFilterMessage : public Message
212  {
213  private:
214  /** Internal data storage, do NOT modify! */
215  typedef struct __attribute__((packed)) {
216  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
217  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
218  int32_t filter; /**< Which filter to
219  enable/disable. */
220  bool enable; /**< True to enable, false to
221  disable */
222  } SetFilterMessage_data_t;
223 
224  SetFilterMessage_data_t *data;
225 
226  interface_enum_map_t enum_map_ConnectionMode;
227  interface_enum_map_t enum_map_FilterType;
228  interface_enum_map_t enum_map_EdgeMode;
229  public:
230  SetFilterMessage(const FilterType ini_filter, const bool ini_enable);
232  ~SetFilterMessage();
233 
235  /* Methods */
236  FilterType filter() const;
237  void set_filter(const FilterType new_filter);
238  size_t maxlenof_filter() const;
239  bool is_enable() const;
240  void set_enable(const bool new_enable);
241  size_t maxlenof_enable() const;
242  virtual Message * clone() const;
243  };
244 
246  {
247  private:
248  /** Internal data storage, do NOT modify! */
249  typedef struct __attribute__((packed)) {
250  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
251  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
252  int32_t filter; /**< Which filter to
253  enable/disable. */
254  char param[32]; /**< Parameter name, see FilterType
255  description for possible values. */
256  float value; /**< True to enable, false to
257  disable */
258  } SetFilterParamFloatMessage_data_t;
259 
260  SetFilterParamFloatMessage_data_t *data;
261 
262  interface_enum_map_t enum_map_ConnectionMode;
263  interface_enum_map_t enum_map_FilterType;
264  interface_enum_map_t enum_map_EdgeMode;
265  public:
266  SetFilterParamFloatMessage(const FilterType ini_filter, const char * ini_param, const float ini_value);
269 
271  /* Methods */
272  FilterType filter() const;
273  void set_filter(const FilterType new_filter);
274  size_t maxlenof_filter() const;
275  char * param() const;
276  void set_param(const char * new_param);
277  size_t maxlenof_param() const;
278  float value() const;
279  void set_value(const float new_value);
280  size_t maxlenof_value() const;
281  virtual Message * clone() const;
282  };
283 
285  {
286  private:
287  /** Internal data storage, do NOT modify! */
288  typedef struct __attribute__((packed)) {
289  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
290  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
291  float max_line_point_distance; /**<
292  For points generated on lines found in the map, do not exceed
293  this threshold in terms of maximum distance of points on line.
294  */
295  } AddMapObstaclesMessage_data_t;
296 
297  AddMapObstaclesMessage_data_t *data;
298 
299  interface_enum_map_t enum_map_ConnectionMode;
300  interface_enum_map_t enum_map_FilterType;
301  interface_enum_map_t enum_map_EdgeMode;
302  public:
303  AddMapObstaclesMessage(const float ini_max_line_point_distance);
306 
308  /* Methods */
309  float max_line_point_distance() const;
310  void set_max_line_point_distance(const float new_max_line_point_distance);
311  size_t maxlenof_max_line_point_distance() const;
312  virtual Message * clone() const;
313  };
314 
316  {
317  private:
318  /** Internal data storage, do NOT modify! */
319  typedef struct __attribute__((packed)) {
320  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
321  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
322  char name[64]; /**<
323  ID of the obstacle. Can later be used to remove it again.
324  */
325  float x; /**< X coordinate of obstacle in global frame. */
326  float y; /**< Y coordinate of obstacle in global frame. */
327  } AddObstacleMessage_data_t;
328 
329  AddObstacleMessage_data_t *data;
330 
331  interface_enum_map_t enum_map_ConnectionMode;
332  interface_enum_map_t enum_map_FilterType;
333  interface_enum_map_t enum_map_EdgeMode;
334  public:
335  AddObstacleMessage(const char * ini_name, const float ini_x, const float ini_y);
338 
340  /* Methods */
341  char * name() const;
342  void set_name(const char * new_name);
343  size_t maxlenof_name() const;
344  float x() const;
345  void set_x(const float new_x);
346  size_t maxlenof_x() const;
347  float y() const;
348  void set_y(const float new_y);
349  size_t maxlenof_y() const;
350  virtual Message * clone() const;
351  };
352 
354  {
355  private:
356  /** Internal data storage, do NOT modify! */
357  typedef struct __attribute__((packed)) {
358  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
359  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
360  char name[64]; /**<
361  ID of the obstacle to remove.
362  */
363  } RemoveObstacleMessage_data_t;
364 
365  RemoveObstacleMessage_data_t *data;
366 
367  interface_enum_map_t enum_map_ConnectionMode;
368  interface_enum_map_t enum_map_FilterType;
369  interface_enum_map_t enum_map_EdgeMode;
370  public:
371  RemoveObstacleMessage(const char * ini_name);
374 
376  /* Methods */
377  char * name() const;
378  void set_name(const char * new_name);
379  size_t maxlenof_name() const;
380  virtual Message * clone() const;
381  };
382 
384  {
385  private:
386  /** Internal data storage, do NOT modify! */
387  typedef struct __attribute__((packed)) {
388  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
389  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
390  char name[64]; /**<
391  ID of the obstacle. Can later be used to remove it again.
392  */
393  float x; /**< X coordinate of obstacle in global frame. */
394  float y; /**< Y coordinate of obstacle in global frame. */
395  int32_t mode; /**<
396  The connection mode to use to connect the POI with the graph.
397  */
398  } AddPointOfInterestMessage_data_t;
399 
400  AddPointOfInterestMessage_data_t *data;
401 
402  interface_enum_map_t enum_map_ConnectionMode;
403  interface_enum_map_t enum_map_FilterType;
404  interface_enum_map_t enum_map_EdgeMode;
405  public:
406  AddPointOfInterestMessage(const char * ini_name, const float ini_x, const float ini_y, const ConnectionMode ini_mode);
409 
411  /* Methods */
412  char * name() const;
413  void set_name(const char * new_name);
414  size_t maxlenof_name() const;
415  float x() const;
416  void set_x(const float new_x);
417  size_t maxlenof_x() const;
418  float y() const;
419  void set_y(const float new_y);
420  size_t maxlenof_y() const;
421  ConnectionMode mode() const;
422  void set_mode(const ConnectionMode new_mode);
423  size_t maxlenof_mode() const;
424  virtual Message * clone() const;
425  };
426 
428  {
429  private:
430  /** Internal data storage, do NOT modify! */
431  typedef struct __attribute__((packed)) {
432  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
433  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
434  char name[64]; /**<
435  ID of the obstacle. Can later be used to remove it again.
436  */
437  float x; /**< X coordinate of obstacle in global frame. */
438  float y; /**< Y coordinate of obstacle in global frame. */
439  float ori; /**< Orientation for target point (rad). */
440  int32_t mode; /**<
441  The connection mode to use to connect the POI with the graph.
442  */
443  } AddPointOfInterestWithOriMessage_data_t;
444 
445  AddPointOfInterestWithOriMessage_data_t *data;
446 
447  interface_enum_map_t enum_map_ConnectionMode;
448  interface_enum_map_t enum_map_FilterType;
449  interface_enum_map_t enum_map_EdgeMode;
450  public:
451  AddPointOfInterestWithOriMessage(const char * ini_name, const float ini_x, const float ini_y, const float ini_ori, const ConnectionMode ini_mode);
454 
456  /* Methods */
457  char * name() const;
458  void set_name(const char * new_name);
459  size_t maxlenof_name() const;
460  float x() const;
461  void set_x(const float new_x);
462  size_t maxlenof_x() const;
463  float y() const;
464  void set_y(const float new_y);
465  size_t maxlenof_y() const;
466  float ori() const;
467  void set_ori(const float new_ori);
468  size_t maxlenof_ori() const;
469  ConnectionMode mode() const;
470  void set_mode(const ConnectionMode new_mode);
471  size_t maxlenof_mode() const;
472  virtual Message * clone() const;
473  };
474 
476  {
477  private:
478  /** Internal data storage, do NOT modify! */
479  typedef struct __attribute__((packed)) {
480  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
481  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
482  char name[64]; /**<
483  ID of the point of interest.
484  */
485  char property_name[64]; /**< Name of the property to set. */
486  char property_value[1024]; /**< Value of the property
487  to set. */
488  } SetPointOfInterestPropertyMessage_data_t;
489 
490  SetPointOfInterestPropertyMessage_data_t *data;
491 
492  interface_enum_map_t enum_map_ConnectionMode;
493  interface_enum_map_t enum_map_FilterType;
494  interface_enum_map_t enum_map_EdgeMode;
495  public:
496  SetPointOfInterestPropertyMessage(const char * ini_name, const char * ini_property_name, const char * ini_property_value);
499 
501  /* Methods */
502  char * name() const;
503  void set_name(const char * new_name);
504  size_t maxlenof_name() const;
505  char * property_name() const;
506  void set_property_name(const char * new_property_name);
507  size_t maxlenof_property_name() const;
508  char * property_value() const;
509  void set_property_value(const char * new_property_value);
510  size_t maxlenof_property_value() const;
511  virtual Message * clone() const;
512  };
513 
514  class AddEdgeMessage : public Message
515  {
516  private:
517  /** Internal data storage, do NOT modify! */
518  typedef struct __attribute__((packed)) {
519  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
520  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
521  char p1[64]; /**< ID of first node. */
522  char p2[64]; /**< ID of second node. */
523  bool directed; /**<
524  True to create a directed edge from p1 to p2, otherwise the edge
525  is assumed to be undirected.
526  */
527  int32_t mode; /**< The edge insertion mode. */
528  } AddEdgeMessage_data_t;
529 
530  AddEdgeMessage_data_t *data;
531 
532  interface_enum_map_t enum_map_ConnectionMode;
533  interface_enum_map_t enum_map_FilterType;
534  interface_enum_map_t enum_map_EdgeMode;
535  public:
536  AddEdgeMessage(const char * ini_p1, const char * ini_p2, const bool ini_directed, const EdgeMode ini_mode);
537  AddEdgeMessage();
538  ~AddEdgeMessage();
539 
540  AddEdgeMessage(const AddEdgeMessage *m);
541  /* Methods */
542  char * p1() const;
543  void set_p1(const char * new_p1);
544  size_t maxlenof_p1() const;
545  char * p2() const;
546  void set_p2(const char * new_p2);
547  size_t maxlenof_p2() const;
548  bool is_directed() const;
549  void set_directed(const bool new_directed);
550  size_t maxlenof_directed() const;
551  EdgeMode mode() const;
552  void set_mode(const EdgeMode new_mode);
553  size_t maxlenof_mode() const;
554  virtual Message * clone() const;
555  };
556 
558  {
559  private:
560  /** Internal data storage, do NOT modify! */
561  typedef struct __attribute__((packed)) {
562  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
563  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
564  char property_name[64]; /**< Name of the property to set. */
565  char property_value[1024]; /**< Value of the property
566  to set. */
567  } SetGraphDefaultPropertyMessage_data_t;
568 
569  SetGraphDefaultPropertyMessage_data_t *data;
570 
571  interface_enum_map_t enum_map_ConnectionMode;
572  interface_enum_map_t enum_map_FilterType;
573  interface_enum_map_t enum_map_EdgeMode;
574  public:
575  SetGraphDefaultPropertyMessage(const char * ini_property_name, const char * ini_property_value);
578 
580  /* Methods */
581  char * property_name() const;
582  void set_property_name(const char * new_property_name);
583  size_t maxlenof_property_name() const;
584  char * property_value() const;
585  void set_property_value(const char * new_property_value);
586  size_t maxlenof_property_value() const;
587  virtual Message * clone() const;
588  };
589 
591  {
592  private:
593  /** Internal data storage, do NOT modify! */
594  typedef struct __attribute__((packed)) {
595  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
596  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
597  bool enable_copy; /**< True to enable copying
598  (default) false to disable). */
599  } SetCopyGraphDefaultPropertiesMessage_data_t;
600 
601  SetCopyGraphDefaultPropertiesMessage_data_t *data;
602 
603  interface_enum_map_t enum_map_ConnectionMode;
604  interface_enum_map_t enum_map_FilterType;
605  interface_enum_map_t enum_map_EdgeMode;
606  public:
607  SetCopyGraphDefaultPropertiesMessage(const bool ini_enable_copy);
610 
612  /* Methods */
613  bool is_enable_copy() const;
614  void set_enable_copy(const bool new_enable_copy);
615  size_t maxlenof_enable_copy() const;
616  virtual Message * clone() const;
617  };
618 
620  {
621  private:
622  /** Internal data storage, do NOT modify! */
623  typedef struct __attribute__((packed)) {
624  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
625  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
626  char name[64]; /**<
627  ID of the obstacle to remove.
628  */
629  } RemovePointOfInterestMessage_data_t;
630 
631  RemovePointOfInterestMessage_data_t *data;
632 
633  interface_enum_map_t enum_map_ConnectionMode;
634  interface_enum_map_t enum_map_FilterType;
635  interface_enum_map_t enum_map_EdgeMode;
636  public:
637  RemovePointOfInterestMessage(const char * ini_name);
640 
642  /* Methods */
643  char * name() const;
644  void set_name(const char * new_name);
645  size_t maxlenof_name() const;
646  virtual Message * clone() const;
647  };
648 
649  class ComputeMessage : public Message
650  {
651  private:
652  /** Internal data storage, do NOT modify! */
653  typedef struct __attribute__((packed)) {
654  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
655  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
656  } ComputeMessage_data_t;
657 
658  ComputeMessage_data_t *data;
659 
660  interface_enum_map_t enum_map_ConnectionMode;
661  interface_enum_map_t enum_map_FilterType;
662  interface_enum_map_t enum_map_EdgeMode;
663  public:
664  ComputeMessage();
665  ~ComputeMessage();
666 
667  ComputeMessage(const ComputeMessage *m);
668  /* Methods */
669  virtual Message * clone() const;
670  };
671 
672  virtual bool message_valid(const Message *message) const;
673  private:
676 
677  public:
678  /* Methods */
679  uint32_t msgid() const;
680  void set_msgid(const uint32_t new_msgid);
681  size_t maxlenof_msgid() const;
682  bool is_final() const;
683  void set_final(const bool new_final);
684  size_t maxlenof_final() const;
685  virtual Message * create_message(const char *type) const;
686 
687  virtual void copy_values(const Interface *other);
688  virtual const char * enum_tostring(const char *enumtype, int val) const;
689 
690 };
691 
692 } // end namespace fawkes
693 
694 #endif
void set_msgid(const uint32_t new_msgid)
Set msgid value.
SetFilterParamFloatMessage Fawkes BlackBoard Interface Message.
RemovePointOfInterestMessage Fawkes BlackBoard Interface Message.
AddPointOfInterestMessage Fawkes BlackBoard Interface Message.
The node is marked as unconnected and will not be connected to another node.
EdgeMode
When adding edges, the mode defines how to add edges.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
Definition: message.h:44
const char * tostring_EdgeMode(EdgeMode value) const
Convert EdgeMode constant to string.
AddPointOfInterestWithOriMessage Fawkes BlackBoard Interface Message.
SetGraphDefaultPropertyMessage Fawkes BlackBoard Interface Message.
SetCopyGraphDefaultPropertiesMessage Fawkes BlackBoard Interface Message.
Fawkes library namespace.
SetFilterMessage Fawkes BlackBoard Interface Message.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
SetBoundingBoxMessage Fawkes BlackBoard Interface Message.
If enabled, filters out all nodes which are not connected to any other node.
size_t maxlenof_msgid() const
Get maximum length of msgid value.
const char * tostring_FilterType(FilterType value) const
Convert FilterType constant to string.
Sometimes after applying other filters one can end up with multiple disconnected graphs.
The node is will not be initially connected.
Base class for all Fawkes BlackBoard interfaces.
Definition: interface.h:79
If enabled, filters out all edges after the map generation that pass too close by an occupied cell of...
virtual Message * create_message(const char *type) const
Create message based on type name.
AddObstacleMessage Fawkes BlackBoard Interface Message.
SetPointOfInterestPropertyMessage Fawkes BlackBoard Interface Message.
uint32_t msgid() const
Get msgid value.
The edge is added as-is, it may overlap or intersect with other edges.
NavGraphGeneratorInterface Fawkes BlackBoard Interface.
ComputeMessage Fawkes BlackBoard Interface Message.
const char * type() const
Get type of interface.
Definition: interface.cpp:651
void set_final(const bool new_final)
Set final value.
virtual void copy_values(const Interface *other)
Copy values from other interface.
size_t maxlenof_final() const
Get maximum length of final value.
Only insert edge if it does not intersect with any other existing edge in the graph.
FilterType
Post-processing filtering type.
const char * tostring_ConnectionMode(ConnectionMode value) const
Convert ConnectionMode constant to string.
ClearMessage Fawkes BlackBoard Interface Message.
AddMapObstaclesMessage Fawkes BlackBoard Interface Message.
Connect point to the node on the graph closest to the given point.
If the new edge intersects with one or more edges, add new points at the intersections and split the ...
AddEdgeMessage Fawkes BlackBoard Interface Message.
Connect point to the edge in which segment it lies, i.e.
RemoveObstacleMessage Fawkes BlackBoard Interface Message.
std::map< int, std::string > interface_enum_map_t
Map of enum integer to string values.
Definition: types.h:53
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.