Revision 3aee55de devices/DiWheelDrive/amiro_map.hpp

View differences:

devices/DiWheelDrive/amiro_map.hpp
3 3

  
4 4
#include "global.hpp"
5 5
#include "linefollow.hpp"
6
#include <amiroosconf.h>
7
#include <ch.hpp>
8
#include <cstdint>
9
#include <math.h>
10 6

  
11 7

  
12 8
namespace amiro {
......
16 12
    uint8_t flag;
17 13
    uint8_t left;
18 14
    uint8_t right;
15
    union edge {
16
      struct edge_id{
17
        uint8_t left;
18
        uint8_t right;
19
      } edge_id;
20
      uint8_t arr[2];
21
    } edge;
19 22
    uint8_t visited;
20 23
    types::position pL; // Left
21 24
    types::position pR; // Right
22 25
    types::position pB; // Back
26
    union p{
27
      struct{types::position pL, pR, pB;} points;
28
      types::position arr[3];
29
    } p;
23 30
  };
24 31

  
25 32
  struct map_state {
......
75 82
    Internally the update will be called.
76 83
    If there are no nodes in the node list they will be created.
77 84
   */
78
  uint8_t trackUpdate(uint16_t WL, uint16_t WR, LineFollowStrategy strategy, ut_states state);
85
  uint8_t trackUpdate(uint16_t WL, uint16_t WR, LineFollowStrategy strategy, ut_states ut_state);
86

  
87

  
88

  
89

  
79 90

  
80 91
private:
81 92
  Global *global;
......
109 120
   *
110 121
   */
111 122
  uint32_t calculateDist(types::position *p1, types::position *p2);
112
  };
123

  
124
  // add node/fxp to the nodeList and return its id
125
  uint8_t addNode(uint8_t l, uint8_t r, uint8_t flags);
126

  
127
  // Calculate dist and elength if possibel
128
  void calTravelState();
129

  
130
  // Check if all nodes have followers
131
  // Calculate validity check
132
  void checkMap();
133

  
134
  void switchToNext(types::position *p1);
135

  
136
  // Copy contents of point from to point to (x, y, f_x)
137
  void copyPoint(types::position *from, types::position *to);
138

  
139
  // Create the first fxp with flag 1
140
  void createInitNode();
141

  
142
  uint8_t getNearest(types::position *p1);
143

  
144
  // Either create new fxpoint or assign point to existing one
145
  uint8_t assignFxp(types::position *p1);
146
};
147

  
113 148
}; // namespace amiro
114 149

  
115 150
#endif /* AMIRO_MAP */

Also available in: Unified diff