29 #include "Eigen/Geometry" 30 #include "opencv2/opencv.hpp" 35 namespace localization {
71 this->attitude = Eigen::Quaterniond::Identity();
92 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
100 void set(
const std::vector<float> &map_resolutions,
101 const unsigned int map_node_size_x,
102 const unsigned int map_node_size_y,
const double map_min_x,
103 const double map_min_y,
const double map_max_x,
104 const double map_max_y) {
105 this->map_resolutions = map_resolutions;
106 this->map_node_size_x = map_node_size_x;
107 this->map_node_size_y = map_node_size_y;
108 this->map_min_x = map_min_x;
109 this->map_min_y = map_min_y;
110 this->map_max_x = map_max_x;
111 this->map_max_y = map_max_y;
117 unsigned int map_node_size_x = 0;
119 unsigned int map_node_size_y = 0;
121 double map_min_x = 0;
122 double map_min_y = 0;
123 double map_max_x = 0;
124 double map_max_y = 0;
134 unsigned int level = 0;
136 unsigned int node_north_id = 0;
137 unsigned int node_east_id = 0;
146 typedef std::list<std::pair<MapImageKey, cv::Mat>>::iterator
ListIterator;
151 void Set(
const MapImageKey &key,
const cv::Mat &image);
154 unsigned int _capacity;
155 std::map<MapImageKey, ListIterator> _map;
156 std::list<std::pair<MapImageKey, cv::Mat>> _list;
169 bool Init(
const std::string &map_folder,
const std::string &map_visual_folder,
170 const VisualMapParam &map_param,
const unsigned int resolution_id,
172 const unsigned int loc_info_num = 1);
175 void SetAutoPlay(
bool auto_play);
177 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
180 void Preprocess(
const std::string &map_folder,
181 const std::string &map_visual_folder);
186 void DrawTrajectory(
const cv::Point &bias);
193 void GenerateMutiResolutionImages(
const std::vector<std::string> &src_files,
194 const int base_path_length,
195 const std::string &dst_folder);
196 void InitOtherParams(
const int x_min,
const int y_min,
const int x_max,
197 const int y_max,
const int level,
198 const std::string &path);
199 bool InitOtherParams(
const std::string ¶ms_file);
205 cv::Mat *cloud_img, cv::Mat *cloud_img_mask);
209 const unsigned int resolution_id,
216 void RotateImg(
const cv::Mat &in_img, cv::Mat *out_img,
double angle);
218 void SetViewCenter(
const double center_x,
const double center_y);
219 void UpdateViewCenter(
const double move_x,
const double move_y);
220 void SetScale(
const double scale);
221 void UpdateScale(
const double factor);
222 bool UpdateCarLocId();
223 bool UpdateCarLocId(
const unsigned int car_loc_id);
224 bool UpdateTrajectoryGroups();
225 void ProcessKey(
int key);
227 inline void QuaternionToEuler(
const double quaternion[4],
double att[3]) {
229 2 * (quaternion[2] * quaternion[3] + quaternion[0] * quaternion[1]);
231 2 * (quaternion[1] * quaternion[3] - quaternion[0] * quaternion[2]);
233 quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] -
234 quaternion[2] * quaternion[2] + quaternion[3] * quaternion[3];
236 2 * (quaternion[1] * quaternion[2] - quaternion[0] * quaternion[3]);
238 quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] +
239 quaternion[2] * quaternion[2] - quaternion[3] * quaternion[3];
241 att[0] = asin(dcm21);
242 att[1] = atan2(-dcm20, dcm22);
243 att[2] = atan2(dcm01, dcm11);
249 std::string map_folder_;
250 std::string map_visual_folder_;
252 unsigned int zone_id_ = 50;
253 unsigned int resolution_id_ = 0;
255 std::string image_visual_resolution_path_;
256 std::string image_visual_leaf_path_;
262 std::string window_name_ =
"Local Visualizer";
263 cv::Mat image_window_;
265 cv::Mat subMat_[3][3];
266 cv::Mat tips_window_;
269 double cur_scale_ = 1.0;
275 bool is_init_ =
false;
276 bool follow_car_ =
true;
277 bool auto_play_ =
false;
282 cv::Mat cloud_img_mask_;
286 unsigned int loc_info_num_ = 1;
287 unsigned int car_loc_id_ = 0;
288 unsigned int expected_car_loc_id_ = 0;
290 std::vector<std::map<double, Eigen::Vector2d>> trajectory_groups_;
292 bool is_draw_car_ =
true;
293 bool is_draw_trajectory_ =
true;
294 bool is_draw_std_ =
true;
295 std::vector<cv::Mat> car_img_mats_;
std::vector< EigenType, Eigen::aligned_allocator< EigenType > > EigenVector
Definition: eigen_defs.h:32
std::list< std::pair< MapImageKey, cv::Mat > >::iterator ListIterator
Definition: visualization_engine.h:146
The data structure to store info of a localization.
Definition: visualization_engine.h:42
double timestamp
Definition: visualization_engine.h:85
The cache to load map images.
Definition: visualization_engine.h:144
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Eigen::Vector3d std_var
Definition: visualization_engine.h:83
Eigen::Vector2d Vector2d
Definition: base_map_fwd.h:36
bool operator<(const edge &a, const edge &b)
Definition: segment_graph.h:53
Eigen::Vector3d Vector3d
Definition: frame_transform.h:27
Eigen::Affine3d pose
Definition: visualization_engine.h:82
std::string description
Definition: visualization_engine.h:84
std::vector< float > map_resolutions
The pixel resolutions in the map in meters.
Definition: visualization_engine.h:115
MapImageCache(int capacity)
Definition: visualization_engine.h:149
The data structure to store parameters of a map.
Definition: visualization_engine.h:99
unsigned int frame_id
Definition: visualization_engine.h:86
EigenVector< Eigen::Vector3d > EigenVector3dVec
Definition: eigen_defs.h:38
bool is_has_attitude
Definition: visualization_engine.h:88
bool Init(const char *binary_name)
Eigen::Quaterniond attitude
Definition: visualization_engine.h:81
The engine to draw all elements for visualization.
Definition: visualization_engine.h:163
PointXYZIL Point
Definition: types.h:61
bool is_valid
Definition: visualization_engine.h:87
bool is_has_std
Definition: visualization_engine.h:89
Eigen::Affine3d Affine3d
Definition: base_map_fwd.h:34
Eigen::Translation3d location
Definition: visualization_engine.h:80
The key structure of a map image .
Definition: visualization_engine.h:131