#ifndef VISUALIZATION_H_ #define VISUALIZATION_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "read_configs.h" #include "map_stitcher.h" #include "map_builder.h" class Visualizer { public: enum class TrajectoryType { Frame = 0, KCC = 1, Odom = 2, }; Visualizer(rclcpp::Node::SharedPtr node, VisualizationConfig& config); void AddNewPoseToPath( Eigen::Vector3d& pose, double time_double, nav_msgs::msg::Path& path, std::string& frame_id); void UpdateOdomPose(Eigen::Vector3d& pose, double time_double); void UpdateKccPose(Eigen::Vector3d& pose, double time_double); void UpdateFramePose(Aligned& frame_poses, std::vector& timestamps); void ConvertMapToOccupancyMsgs(OccupancyData& map, nav_msgs::msg::OccupancyGrid& msgs); void UpdateMap(MapBuilder& map_builder); void PublishImage(cv::Mat& image, double time_double); void GetTrajectoryTxt(std::vector>& lines, TrajectoryType trajectory_type); private: rclcpp::Node::SharedPtr node_; std::string frame_id_; rclcpp::Publisher::SharedPtr kcc_pose_pub_; rclcpp::Publisher::SharedPtr frame_pose_pub_; rclcpp::Publisher::SharedPtr map_pub_; rclcpp::Publisher::SharedPtr image_pub_; nav_msgs::msg::Path odom_pose_msgs_; nav_msgs::msg::Path kcc_pose_msgs_; nav_msgs::msg::Path frame_pose_msgs_; nav_msgs::msg::OccupancyGrid occupancy_map_msgs_; }; #endif // VISUALIZATION_H_