| | |
| | | cp README.md basic_pack |
| | | cp test/test_right_walk2.c basic_pack |
| | | tar -czvf $(tarname) basic_pack |
| | | rm -rf basic_pack |
| | |
| | | #include "usg_common.h" |
| | | #include "IndirectAlg.h" |
| | | #include "graph.h" |
| | | |
| | | |
| | | #define PI 3.14159265 |
| | | |
| | |
| | | |
| | | IndirectAlg::IndirectAlg() {} |
| | | |
| | | IndirectAlg::IndirectAlg(const initializer_list<Edge> & edges, const time_t & _keepTime, const Vector2 & _direction): |
| | | frame(edges), keepTime(_keepTime), direction(_direction), mterminate(false) { |
| | | IndirectAlg::IndirectAlg(const initializer_list<Edge> & edges,const Vector2 & _direction, const time_t & _keepTime, const double _minDistance): |
| | | frame(edges), keepTime(_keepTime), minDistance(_minDistance), direction(_direction), mterminate(false) { |
| | | |
| | | mthread = std::thread(std::bind(&IndirectAlg::threadRoutine, this)); |
| | | |
| | | } |
| | | |
| | | IndirectAlg::IndirectAlg(const initializer_list<Point> & points, const time_t & _keepTime, const Vector2 & _direction): |
| | | keepTime(_keepTime), direction(_direction), mterminate(false) { |
| | | IndirectAlg::IndirectAlg(const initializer_list<Point> & points, const Vector2 & _direction, const time_t & _keepTime, const double _minDistance): |
| | | keepTime(_keepTime), minDistance(_minDistance), direction(_direction), mterminate(false) { |
| | | if (points.size() > 0) { |
| | | std::vector<Edge> edges; |
| | | initializer_list<Point>::iterator iter; |
| | |
| | | status->lastCoordinate = record.coordinate; |
| | | } |
| | | |
| | | if (currentDirection.x == 0 && currentDirection.y == 0) { |
| | | |
| | | if (getVecor2Len(currentDirection) <= minDistance) { |
| | | //没动 |
| | | printRecord(3, record); |
| | | return false; |
| | |
| | | |
| | | |
| | | Figure frame; |
| | | //逆行持续时间,要超过这个时间才算逆行 |
| | | |
| | | // 逆行持续时间,要超过这个时间才算逆行 |
| | | time_t keepTime; |
| | | // 最小移动距离,要超过这个距离才算移动 |
| | | double minDistance; |
| | | // 代表正确行走方向的向量 |
| | | Vector2 direction; |
| | | // 状态缓存 |
| | |
| | | public: |
| | | |
| | | IndirectAlg(); |
| | | IndirectAlg(const std::initializer_list<Edge> & edges, const time_t & _keepTime, const Vector2 & _direction); |
| | | IndirectAlg(const std::initializer_list<Edge> & edges, const Vector2 & _directionconst , const time_t & _keepTime, const double _minDistance); |
| | | /** |
| | | * @points 组成观测区域的彼此相邻的点 |
| | | * @_keepTime 保持时间 |
| | | * @_direction 正确行进的方向方向 |
| | | * @_keepTime 保持时间 |
| | | * @minDistance 最小移动距离,要超过这个距离才算移动 |
| | | */ |
| | | IndirectAlg(const std::initializer_list<Point> & points, const time_t & _keepTime, const Vector2 & _direction); |
| | | IndirectAlg(const std::initializer_list<Point> & points, const Vector2 & _direction, const time_t & _keepTime, const double _minDistance); |
| | | |
| | | ~IndirectAlg(); |
| | | |
| | |
| | | #define __USG_GRAPH_H__ |
| | | |
| | | #include "usg_common.h" |
| | | #include <cmath> |
| | | |
| | | struct Point { |
| | | //public: |
| | |
| | | return {b.x - a.x, b.y - a.y}; |
| | | } |
| | | |
| | | static inline double getVecor2Len(Vector2& v) { |
| | | return sqrt(v.x * v.x + v.y * v.y); |
| | | } |
| | | |
| | | |
| | | |
| | | #endif |
| | |
| | | include $(ROOT)/Make.defines.$(PLATFORM) |
| | | |
| | | |
| | | PROGS = test_right_walk test_right_walk3 |
| | | PROGS = test_right_walk test_right_walk3 |
| | | |
| | | |
| | | |
| | |
| | | int test2() { |
| | | // IndirectAlg indirectAlg({ {{0.0, 0.0}, {1000.0, 0.0}}, {{1000.0, 0.0}, {1000.0, 1000.0}}, {{1000.0, 1000.0}, {0.0, 1000.0}}, {{0.0, 1000.0}, {0.0, 0.0}} }, 5, {1, 1}); |
| | | |
| | | IndirectAlg indirectAlg((std::initializer_list<Point>){{0.0, 0.0}, {1000.0, 0.0}, {1000.0, 1000.0}, {0.0, 1000.0} }, 5, {1, 1}); |
| | | IndirectAlg indirectAlg((std::initializer_list<Point>){{0.0, 0.0}, {1000.0, 0.0}, {1000.0, 1000.0}, {0.0, 1000.0} }, |
| | | {1, 1}, 5, 2); |
| | | |
| | | int i = 0; |
| | | time_t start_time; |
| | |
| | | int test2() { |
| | | // IndirectAlg indirectAlg({ {{0.0, 0.0}, {1000.0, 0.0}}, {{1000.0, 0.0}, {1000.0, 1000.0}}, {{1000.0, 1000.0}, {0.0, 1000.0}}, {{0.0, 1000.0}, {0.0, 0.0}} }, 5, {1, 1}); |
| | | /** |
| | | * 第一个参数@points 组成观测区域的彼此相邻的点 |
| | | * 第二个参数@_keepTime 保持时间 |
| | | * 第三个参数@_direction 正确行进的方向方向 |
| | | * @points 组成观测区域的彼此相邻的点 |
| | | * @_direction 正确行进的方向方向 |
| | | * @_keepTime 保持时间 |
| | | * @ minDistance 最小移动距离 |
| | | */ |
| | | IndirectAlg indirectAlg((std::initializer_list<Point>){{0.0, 0.0}, {1000.0, 0.0}, {1000.0, 1000.0}, {0.0, 1000.0} }, 5, {1, 1}); |
| | | IndirectAlg indirectAlg((std::initializer_list<Point>){{0.0, 0.0}, {1000.0, 0.0}, {1000.0, 1000.0}, {0.0, 1000.0} }, |
| | | {1, 1}, 5, 1); |
| | | |
| | | int i = 0; |
| | | // time_t start_time; |
| | |
| | | |
| | | void test3() { |
| | | |
| | | std::ifstream fin("test3.txt"); |
| | | std::ifstream fin("test.txt"); |
| | | char line[1024]; |
| | | //std::string line; |
| | | char *targetIdStr; |
| | |
| | | //{"x":148,"y":45},{"x":148,"y":539},{"x":769,"y":539},{"x":769,"y":45} |
| | | //{148, 45}, {148, 539}, {769, 539}, {769, 45} |
| | | Record record; |
| | | IndirectAlg indirectAlg((std::initializer_list<Point>){}, 3, {621, 0}); |
| | | IndirectAlg indirectAlg((std::initializer_list<Point>){}, {621, 0}, 3, 0); |
| | | |
| | | // const char *delim = " "; |
| | | while(fin.getline(line, 1024)) { |
| | |
| | | // printf("key = %s, value=%s\n", key, value); |
| | | } |
| | | fin.close(); |
| | | sleep(30); |
| | | } |
| | | |
| | | |