drawable_marble_widget.h
Go to the documentation of this file.
00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
00002 
00003 /* -- BEGIN LICENSE BLOCK ----------------------------------------------
00004 
00005 Copyright (c) 2013, TB
00006 All rights reserved.
00007 
00008 Redistribution and use in source and binary forms are permitted
00009 provided that the above copyright notice and this paragraph are
00010 duplicated in all such forms and that any documentation,
00011 advertising materials, and other materials related to such
00012 distribution and use acknowledge that the software was developed
00013 by TB.  The name of the
00014 TB may not be used to endorse or promote products derived
00015 from this software without specific prior written permission.
00016 THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00017 IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00018 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00019 
00020   -- END LICENSE BLOCK ----------------------------------------------*/
00021 
00022 //----------------------------------------------------------------------
00030 //----------------------------------------------------------------------
00031 
00032 
00033 #ifndef DRAWABLE_MARBLEWIDGET_H
00034 #define DRAWABLE_MARBLEWIDGET_H
00035 
00036 #include "marble/MarbleWidget.h"
00037 #include "marble/GeoPainter.h"
00038 #include "marble/GeoDataLineString.h"
00039 
00040 #include <QList>
00041 #include <QPolygonF>
00042 #include <QQueue>
00043 
00044 #include <visualization_msgs/Marker.h>
00045 #include <visualization_msgs/MarkerArray.h>
00046 #include <sensor_msgs/NavSatFix.h>
00047 #include <std_msgs/ColorRGBA.h>
00048 
00049 #include "visualisation_marker/circle.h"
00050 #include "visualisation_marker/colored_polygon.h"
00051 
00052 using namespace Marble;
00053 
00054 namespace rqt_marble_plugin {
00055 
00056 class DrawableMarbleWidget : public MarbleWidget
00057 {
00058   Q_OBJECT
00059 
00060 public:
00061   DrawableMarbleWidget(QWidget *parent=0);
00062 
00063   void setCurrentPosition( GeoDataCoordinates& postion );
00064   void setMatchedPosition( GeoDataCoordinates& postion );
00065 
00066   void visualizationMarkerArrayCallback(const visualization_msgs::MarkerArrayConstPtr &markers);
00067   void visualizationCallback(const visualization_msgs::MarkerConstPtr &marker);
00068 
00069   void referenceGpsCallback(const sensor_msgs::NavSatFixConstPtr &reference);
00070 
00071 
00072 
00073 protected:
00074   virtual void customPaint(GeoPainter *painter);
00075 
00076 private:
00077   void addMarker(const visualization_msgs::Marker& marker);
00078   QImage roateCar(QImage* car_image);
00079 
00080   void loadImage(QImage& car, std::string& path );
00081   bool posChanged(double x1, double y1, double x2, double y2, double threshold);
00082   std::pair<double, double> toGpsCoordinates(double x, double y);
00083   void getColor(QColor &outputColor, std_msgs::ColorRGBA color_msg);
00084 
00085   std::string getMarkerId(visualization_msgs::Marker marker);
00086   void removeOldCircles(const ros::Time &actual_time);
00087   void removeOldPolygons(const ros::Time &actual_time);
00088   void addLineStrip(const visualization_msgs::Marker &marker);
00089   void addLineList(const visualization_msgs::Marker &marker);
00090   void addSphereList(const visualization_msgs::Marker &marker);
00091   void addSphere(const visualization_msgs::Marker &marker);
00092 
00094   std::pair<double, double> GetAbsoluteCoordinates( double x , double y , double ref_lat , double ref_lon, double ref_bearing = 0. );
00095   std::pair<double, double> GetNewPointBearingDistance(double a_lat, double a_lon, double bearing, double distance);
00096 
00097   QImage m_arrow;
00098   QImage m_current_pos_icon;
00099   QImage m_matched;
00100 
00101 
00102   std::map<std::string, PolygonSet> m_marker_line;
00103   std::map<std::string, CircleSet> m_marker_circle;
00104 
00105   GeoDataCoordinates m_current_pos;
00106   GeoDataCoordinates m_matched_pos;
00107   GeoDataCoordinates m_last_matched_position;
00108 
00109 
00110   double m_ref_lat;
00111   double m_ref_lon;
00112 
00113 
00114   Q_DISABLE_COPY(DrawableMarbleWidget);
00115 };
00116 
00117 }
00118 
00119 #endif //DRAWABLE_MARBLEWIDGET_H


marble_plugin
Author(s): Tobias Bär
autogenerated on Thu Aug 27 2015 13:56:10