Program Listing for File pose_plugin.h
↰ Return to documentation for file (include/mapviz_plugins/pose_plugin.h
)
#ifndef MAPVIZ_PLUGINS__POSE_PLUGIN_H_
#define MAPVIZ_PLUGINS__POSE_PLUGIN_H_
// Include mapviz_plugin.h first to ensure GL deps are included in the right order
#include <mapviz/mapviz_plugin.h>
#include <mapviz/map_canvas.h>
#include <mapviz_plugins/point_drawing_plugin.h>
// QT libraries
#include <QGLWidget>
#include <QObject>
#include <QWidget>
// ROS libraries
#include <rclcpp/rclcpp.hpp>
#include <tf2/transform_datatypes.h>
#include <geometry_msgs/msg/pose_stamped.hpp>
#include <swri_transform_util/local_xy_util.h>
// C++ standard libraries
#include <list>
#include <string>
#include <vector>
// QT autogenerated files
#include "ui_pose_config.h"
namespace mapviz_plugins
{
class PosePlugin : public mapviz_plugins::PointDrawingPlugin
{
Q_OBJECT
public:
PosePlugin();
~PosePlugin() override = default;
bool Initialize(QGLWidget* canvas) override;
void Shutdown() override {}
void Draw(double x, double y, double scale) override;
void LoadConfig(const YAML::Node& node, const std::string& path) override;
void SaveConfig(YAML::Emitter& emitter, const std::string& path) override;
QWidget* GetConfigWidget(QWidget* parent) override;
protected:
void PrintError(const std::string& message) override;
void PrintInfo(const std::string& message) override;
void PrintWarning(const std::string& message) override;
protected Q_SLOTS:
void SelectTopic();
void TopicEdited();
private:
Ui::pose_config ui_;
QWidget* config_widget_;
std::string topic_;
rmw_qos_profile_t qos_;
rclcpp::Subscription<geometry_msgs::msg::PoseStamped>::SharedPtr pose_sub_;
bool has_message_;
void connectCallback(const std::string& topic, const rmw_qos_profile_t& qos);
void PoseCallback(const geometry_msgs::msg::PoseStamped::SharedPtr pose);
};
} // namespace mapviz_plugins
#endif // MAPVIZ_PLUGINS__POSE_PLUGIN_H_