1- #ifndef INCLUDE_MAP_HPP_
2- #define INCLUDE_MAP_HPP_
1+ #ifndef MAP_HPP_
2+ #define MAP_HPP_
33
4- #include < string>
5- #include < vector>
6- #include < memory>
7- #include < functional>
8- #include < nlohmann/json.hpp>
94#include " common_interfaces_cpp/hal/odometry.hpp"
105#include " common_interfaces_cpp/hal/laser.hpp"
6+ #include < memory>
7+ #include < vector>
8+ #include < string>
9+ #include < mutex>
10+ #include < array>
11+ #include < thread>
12+ #include < atomic>
13+ #include < nlohmann/json.hpp>
1114
1215class Target {
1316public:
14- Target (const std::string& id, const Pose3d& pose, bool active = false , bool reached = false );
15- std::string getId () const ;
16- Pose3d getPose () const ;
17- bool isReached () const ;
18- void setReached (bool value);
19-
20- std::string id;
21- Pose3d pose;
22- bool reached;
23- bool active;
17+ Target (std::string id, Pose3d pose, bool active = false , bool reached = false );
18+
19+ std::string get_id () const ;
20+ Pose3d get_pose () const ;
21+ bool is_reached () const ;
22+ void set_reached (bool value);
23+ bool is_active () const ;
24+ void set_active (bool value);
25+
26+ private:
27+ std::string id_;
28+ Pose3d pose_;
29+ bool active_;
30+ bool reached_;
2431};
2532
2633class Map {
2734public:
28- Map (std::function<LaserData()> laser_cb, std::function<Pose3d()> pose_cb);
29-
30- void setCar (double x, double y);
31- void setObs (double x, double y);
32- void setAvg (double x, double y);
33- void setTargetPos (double x, double y);
34-
35- std::string get_json_data ();
36- std::shared_ptr<Target> getNextTarget ();
35+ Map (std::shared_ptr<LaserNode> laser, std::shared_ptr<OdometryNode> odom);
36+ ~Map ();
37+
38+ void set_car (double newx, double newy);
39+ void set_obs (double newx, double newy);
40+ void set_avg (double newx, double newy);
41+ void set_target_pos (double newx, double newy);
42+ void set_target_x (double x);
43+ void set_target_y (double y);
44+
45+ std::array<double , 2 > get_next_target ();
46+ void mark_current_target_reached ();
3747 void reset ();
3848
39- double targetx, targety ;
49+ nlohmann::json get_json_data () ;
4050
4151private:
42- std::vector<double > setPose (const Pose3d& pose);
43- std::pair<nlohmann::json, double > setLaserValues ();
52+ void load_targets ();
53+ void laser_poll_loop ();
54+
55+ double carx_, cary_;
56+ double obsx_, obsy_;
57+ double avgx_, avgy_;
58+ double targetx_, targety_;
4459
45- double carx, cary, obsx, obsy, avgx, avgy;
4660 std::vector<std::shared_ptr<Target>> targets_;
47- nlohmann::json payload_;
61+ std::shared_ptr<LaserNode> laser_;
62+ std::shared_ptr<OdometryNode> odom_;
63+
64+ LaserData cached_laser_;
65+ std::mutex laser_mtx_;
66+ std::thread laser_thread_;
67+ std::atomic<bool > laser_running_;
4868
49- std::function<LaserData()> laser_callback_;
50- std::function<Pose3d()> pose_callback_;
69+ std::mutex map_mtx_;
5170};
5271
5372#endif
0 commit comments