Giter Club home page Giter Club logo

polygon_coverage_planning's Introduction

polygon_coverage_planning

This package contains implementations to compute coverage patterns and shortest paths in general polygon with holes. Please cite our accompanying publication when using it.

Bähnemann, Rik, et al.
"Revisiting boustrophedon coverage path planning as a generalized traveling salesman problem."
Field and Service Robotics. Springer, Singapore, 2021.

Coverage Planning in RVIZ

Watch the application video:

Watch the video

Installation on Ubuntu 20.04 and ROS noetic

Install ROS noetic. Install mono.

Create a workspace and download the package.

cd ~
mkdir -p catkin_ws/src
cd catkin_ws
catkin init
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin config --extend /opt/ros/noetic
cd src
git clone [email protected]:ethz-asl/polygon_coverage_planning.git

Install all remaining dependencies:

cd polygon_coverage_planning/install
./prepare-jenkins-slave.sh

Finally, build the workspace.

catkin build

Getting Started

The package has a ROS interface for shortest path planning and coverage planning. First source your workspace to execute any of the nodes.

source ~/catkin_ws/devel/setup.bash

Coverage Planning

roslaunch polygon_coverage_ros coverage_planner.launch

The polygon can be set via

  • ROS service call rosservice call /coverage_planner/set_polygon
  • ROS parameter /coverage_planner/polygon or
  • RVIZ Polygon Tool as in the video above.

The plan is generated via

  • ROS service call rosservice call /coverage_planner/plan_path or
  • clicking start and goal points using the RVIZ clicked_point tool as in the video above.

The resulting waypointlist is published as geometry_msgs/PoseArray on topic /waypoint_list.

To publish the waypoint list

  • call rosservice call /coverage_planner/publish_path_points or
  • set publish_plan_on_planning_complete: true in coverage.yaml

Euclidean Shortest Path Planning

roslaunch polygon_coverage_ros shortest_path_planner.launch

Setting the polygon and planning the path is the same as for Coverage Planning.

Licensing

This repository is subject to GNU General Public License version 3 or later due to its dependencies.

CGAL dependencies

The underlying (exact) geometric operations rely on CGAL 5.0.3 which is restricted by GNU General Public License version 3 or later. In particular the dependencies are:

  • Algebraic Foundations (LGPL)
  • 2D and 3D Linear Geometry Kernel (LPGL)
  • 2D Polygon (LPGL)
  • Geometric Object Generators (LPGL)
  • STL Extensions (LGPL)
  • 2D Triangulation (GPL)
  • 2D Regularized Boolean Set-Operations (GPL)
  • 2D Straight Skeleton and Polygon Offsetting (GPL)
  • 2D Arrangement (GPL), see also

Fogel, Efi, Dan Halperin, and Ron Wein. CGAL arrangements and their applications: A step-by-step guide. Vol. 7. Springer Science & Business Media, 2012. Bungiu, Francisc, et al. "Efficient computation of visibility polygons." arXiv preprint arXiv:1403.3905 (2014).

GTSP solver

The underlying optimization uses the memetic solver presented in

Gutin, Gregory, and Daniel Karapetyan.
"A memetic algorithm for the generalized traveling salesman problem."
Natural Computing 9.1 (2010): 47-60.

It is free of charge for non-commercial purposes only.

polygon_coverage_planning's People

Contributors

kledom avatar luliu1 avatar rikba avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

polygon_coverage_planning's Issues

build error on 16.04 and Kinetic

Hi,

I am having the following error output while trying to build on ROS Kinetic, sorry for this really long output:

______________________________________________________________________________________________________________________________________________________
Errors     << rviz_polygon_tool:make /home/user/catkin_ws/logs/rviz_polygon_tool/build.make.000.log                                                   
In file included from /usr/include/eigen3/Eigen/Core:316:0,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Dimension.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Bbox_2.h:31,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/basic_classes.h:32,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Cartesian/Cartesian_base.h:30,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Simple_cartesian.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Exact_predicates_exact_constructions_kernel.h:29,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/polygon_coverage_geometry/include/polygon_coverage_geometry/cgal_definitions.h:23,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:27,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:60:39: warning: ignoring attributes on template argument ‘__m128 {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128>  { enum { value = true }; };
                                       ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:61:40: warning: ignoring attributes on template argument ‘__m128i {aka __vector(2) long long int}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128i> { enum { value = true }; };
                                        ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:62:40: warning: ignoring attributes on template argument ‘__m128d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128d> { enum { value = true }; };
                                        ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:160:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4f> { typedef float  type; enum {size=4, alignment=Aligned16}; typedef Packet4f half; };
                                           ^
In file included from /usr/include/eigen3/Eigen/Core:316:0,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Dimension.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Bbox_2.h:31,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/basic_classes.h:32,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Cartesian/Cartesian_base.h:30,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Simple_cartesian.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Exact_predicates_exact_constructions_kernel.h:29,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/polygon_coverage_geometry/include/polygon_coverage_geometry/cgal_definitions.h:23,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:27,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:161:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, alignment=Aligned16}; typedef Packet2d half; };
                                           ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:162:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4i> { typedef int    type; enum {size=4, alignment=Aligned16}; typedef Packet4i half; };
                                           ^
In file included from /usr/include/eigen3/Eigen/Core:316:0,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Dimension.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Bbox_2.h:31,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/basic_classes.h:32,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Cartesian/Cartesian_base.h:30,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Simple_cartesian.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Exact_predicates_exact_constructions_kernel.h:29,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/polygon_coverage_geometry/include/polygon_coverage_geometry/cgal_definitions.h:23,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/../../src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:27,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/moc_polygon_tool.cpp:9,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/rviz_polygon_tool_automoc.cpp:2:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:60:39: warning: ignoring attributes on template argument ‘__m128 {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128>  { enum { value = true }; };
                                       ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:61:40: warning: ignoring attributes on template argument ‘__m128i {aka __vector(2) long long int}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128i> { enum { value = true }; };
                                        ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:62:40: warning: ignoring attributes on template argument ‘__m128d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128d> { enum { value = true }; };
                                        ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:160:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4f> { typedef float  type; enum {size=4, alignment=Aligned16}; typedef Packet4f half; };
                                           ^
In file included from /usr/include/eigen3/Eigen/Core:316:0,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Dimension.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Bbox_2.h:31,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/basic_classes.h:32,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Cartesian/Cartesian_base.h:30,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Simple_cartesian.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Exact_predicates_exact_constructions_kernel.h:29,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/polygon_coverage_geometry/include/polygon_coverage_geometry/cgal_definitions.h:23,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/../../src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:27,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/moc_polygon_tool.cpp:9,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/rviz_polygon_tool_automoc.cpp:2:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:161:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, alignment=Aligned16}; typedef Packet2d half; };
                                           ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:162:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4i> { typedef int    type; enum {size=4, alignment=Aligned16}; typedef Packet4i half; };
                                           ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:468:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet4f>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:476:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet4i>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:484:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet2d>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:468:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet4f>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:476:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet4i>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:484:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet2d>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:755:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet4f>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:778:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet4i>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:801:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet2d>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:815:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4f,4>& kernel) {
                                  ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:820:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet2d,2>& kernel) {
                                  ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:827:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4i,4>& kernel) {
                                  ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:755:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet4f>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:778:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet4i>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:801:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet2d>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:815:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4f,4>& kernel) {
                                  ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:820:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet2d,2>& kernel) {
                                  ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:827:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4i,4>& kernel) {
                                  ^
In file included from /usr/include/eigen3/Eigen/Core:318:0,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Dimension.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Bbox_2.h:31,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/basic_classes.h:32,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Cartesian/Cartesian_base.h:30,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Simple_cartesian.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Exact_predicates_exact_constructions_kernel.h:29,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/polygon_coverage_geometry/include/polygon_coverage_geometry/cgal_definitions.h:23,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:27,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:232:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet4f, Packet2cf, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:241:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet2cf, Packet4f, false,false>
                                                               ^
In file included from /usr/include/eigen3/Eigen/Core:318:0,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Dimension.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Bbox_2.h:31,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/basic_classes.h:32,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Cartesian/Cartesian_base.h:30,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Simple_cartesian.h:29,
                 from /home/user/catkin_ws/devel/.private/cgal_catkin/include/CGAL/Exact_predicates_exact_constructions_kernel.h:29,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/polygon_coverage_geometry/include/polygon_coverage_geometry/cgal_definitions.h:23,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/../../src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:27,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/moc_polygon_tool.cpp:9,
                 from /home/user/catkin_ws/build/rviz_polygon_tool/rviz_polygon_tool_automoc.cpp:2:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:232:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet4f, Packet2cf, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:241:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet2cf, Packet4f, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:433:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet2d, Packet1cd, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:442:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet1cd, Packet2d, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:433:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet2d, Packet1cd, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:442:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet1cd, Packet2d, false,false>
                                                               ^
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc: In member function ‘virtual int rviz_polygon_tool::PolygonTool::processKeyEvent(QKeyEvent*, rviz::RenderPanel*)’:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:21: error: no match for ‘operator==’ (operand types are ‘QString’ and ‘char’)
   if (event->text() == 'h') {
       ~~~~~~~~~~~~~~^~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note: candidate: bool QString::operator==(const char*) const <near match>
 inline bool QString::operator==(const char *s) const
             ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note: candidate: bool QString::operator==(const QByteArray&) const <near match>
 inline QT_ASCII_CAST_WARN bool QString::operator==(const QByteArray &s) const
                                ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid user-defined conversion from ‘char’ to ‘const QByteArray&’ [-fpermissive]
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note: candidate is: QByteArray::QByteArray(const char*, int) <near match>
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   if (event->text() == 'h') {
                        ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   initializing argument 1 of ‘QByteArray::QByteArray(const char*, int)’
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note: candidate: bool QString::operator==(QLatin1String) const
     bool operator==(QLatin1String s) const;
          ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note:   no known conversion for argument 1 from ‘char’ to ‘QLatin1String’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1:0,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note: candidate: bool operator==(QKeySequence::StandardKey, QKeyEvent*)
 inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeySequence::StandardKey’
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note: candidate: bool operator==(QKeyEvent*, QKeySequence::StandardKey)
 inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeyEvent*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:50:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note: candidate: constexpr bool operator==(const QVector2D&, const QVector2D&)
 Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QVector2D&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QVariant:1:0,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:36,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note: candidate: bool operator==(const QVariant&, const QVariantComparisonHelper&)
 inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note:   no known conversion for argument 2 from ‘char’ to ‘const QVariantComparisonHelper&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note: candidate: template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)
 bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: note:   mismatched types ‘const T*’ and ‘QString’
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)
 bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note: candidate: bool operator==(const QHashDummyValue&, const QHashDummyValue&)
 inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QHashDummyValue&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note: candidate: template<class T1, class T2> constexpr bool operator==(const QPair<T, U>&, const QPair<T, U>&)
 Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
                                         ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: note:   ‘QString’ is not derived from ‘const QPair<T, U>’
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note: candidate: constexpr bool operator==(const QRectF&, const QRectF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRectF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note: candidate: constexpr bool operator==(const QRect&, const QRect&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRect&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note: candidate: constexpr bool operator==(const QPointF&, const QPointF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPointF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note: candidate: constexpr bool operator==(const QPoint&, const QPoint&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPoint&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:37:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note: candidate: constexpr bool operator==(const QMarginsF&, const QMarginsF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMarginsF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note: candidate: constexpr bool operator==(const QMargins&, const QMargins&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMargins&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note: candidate: constexpr bool operator==(const QSizeF&, const QSizeF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSizeF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note: candidate: constexpr bool operator==(const QSize&, const QSize&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSize&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmetatype.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note: candidate: template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)
 bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: note:   ‘QString’ is not derived from ‘const QVarLengthArray<T, Prealloc1>’
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:47:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)
 inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: note:   ‘QString’ is not derived from ‘const QScopedPointer<T, Cleanup>’
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note: candidate: bool operator==(const QStringRef&, QLatin1String)
 inline bool operator==(const QStringRef &s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note: candidate: bool operator==(QLatin1String, const QStringRef&)
 Q_CORE_EXPORT bool operator==(QLatin1String s1, const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note: candidate: bool operator==(const QStringRef&, const QString&)
 inline bool operator==(const QStringRef &s1,const QString &s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note: candidate: bool operator==(const QString&, const QStringRef&) <near match>
 Q_CORE_EXPORT bool operator==(const QString &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid user-defined conversion from ‘char’ to ‘const QStringRef&’ [-fpermissive]
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note: candidate is: QStringRef::QStringRef(const QString*) <near match>
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
   if (event->text() == 'h') {
                        ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   initializing argument 1 of ‘QStringRef::QStringRef(const QString*)’
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note: candidate: bool operator==(const QStringRef&, const QStringRef&)
 Q_CORE_EXPORT bool operator==(const QStringRef &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note: candidate: bool operator==(const char*, QLatin1String)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note: candidate: bool operator==(QLatin1String, QLatin1String)
 inline bool operator==(QLatin1String s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note: candidate: bool operator==(const QString&, QString::Null)
 inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note:   no known conversion for argument 2 from ‘char’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note: candidate: bool operator==(QString::Null, const QString&)
 inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note: candidate: bool operator==(QString::Null, QString::Null)
 inline bool operator==(QString::Null, QString::Null) { return true; }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note: candidate: bool operator==(const char*, const QStringRef&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note: candidate: bool operator==(const char*, const QString&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note: candidate: bool operator==(const char*, const QByteArray&)
 inline bool operator==(const char *a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note: candidate: bool operator==(const QByteArray&, const char*)
 inline bool operator==(const QByteArray &a1, const char *a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note: candidate: bool operator==(const QByteArray&, const QByteArray&)
 inline bool operator==(const QByteArray &a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note: candidate: constexpr bool operator==(QChar, QChar)
 Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) { return c1.ucs == c2.ucs; }
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note:   no known conversion for argument 1 from ‘QString’ to ‘QChar’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note: candidate: bool operator==(const QString&, const QString&) <near match>
     friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2);
                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid user-defined conversion from ‘char’ to ‘const QString&’ [-fpermissive]
   if (event->text() == 'h') {
                        ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note: candidate is: QString::QString(const char*) <near match>
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   if (event->text() == 'h') {
                        ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:236:24: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   initializing argument 1 of ‘QString::QString(const char*)’
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:28: error: no match for ‘operator==’ (operand types are ‘QString’ and ‘char’)
   } else if (event->text() == 'n') {
              ~~~~~~~~~~~~~~^~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note: candidate: bool QString::operator==(const char*) const <near match>
 inline bool QString::operator==(const char *s) const
             ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note: candidate: bool QString::operator==(const QByteArray&) const <near match>
 inline QT_ASCII_CAST_WARN bool QString::operator==(const QByteArray &s) const
                                ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid user-defined conversion from ‘char’ to ‘const QByteArray&’ [-fpermissive]
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note: candidate is: QByteArray::QByteArray(const char*, int) <near match>
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'n') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   initializing argument 1 of ‘QByteArray::QByteArray(const char*, int)’
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note: candidate: bool QString::operator==(QLatin1String) const
     bool operator==(QLatin1String s) const;
          ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note:   no known conversion for argument 1 from ‘char’ to ‘QLatin1String’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1:0,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note: candidate: bool operator==(QKeySequence::StandardKey, QKeyEvent*)
 inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeySequence::StandardKey’
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note: candidate: bool operator==(QKeyEvent*, QKeySequence::StandardKey)
 inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeyEvent*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:50:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note: candidate: constexpr bool operator==(const QVector2D&, const QVector2D&)
 Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QVector2D&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QVariant:1:0,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:36,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note: candidate: bool operator==(const QVariant&, const QVariantComparisonHelper&)
 inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note:   no known conversion for argument 2 from ‘char’ to ‘const QVariantComparisonHelper&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note: candidate: template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)
 bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: note:   mismatched types ‘const T*’ and ‘QString’
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)
 bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note: candidate: bool operator==(const QHashDummyValue&, const QHashDummyValue&)
 inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QHashDummyValue&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note: candidate: template<class T1, class T2> constexpr bool operator==(const QPair<T, U>&, const QPair<T, U>&)
 Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
                                         ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: note:   ‘QString’ is not derived from ‘const QPair<T, U>’
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note: candidate: constexpr bool operator==(const QRectF&, const QRectF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRectF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note: candidate: constexpr bool operator==(const QRect&, const QRect&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRect&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note: candidate: constexpr bool operator==(const QPointF&, const QPointF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPointF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note: candidate: constexpr bool operator==(const QPoint&, const QPoint&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPoint&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:37:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note: candidate: constexpr bool operator==(const QMarginsF&, const QMarginsF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMarginsF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note: candidate: constexpr bool operator==(const QMargins&, const QMargins&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMargins&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note: candidate: constexpr bool operator==(const QSizeF&, const QSizeF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSizeF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note: candidate: constexpr bool operator==(const QSize&, const QSize&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSize&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmetatype.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note: candidate: template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)
 bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: note:   ‘QString’ is not derived from ‘const QVarLengthArray<T, Prealloc1>’
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:47:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)
 inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: note:   ‘QString’ is not derived from ‘const QScopedPointer<T, Cleanup>’
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note: candidate: bool operator==(const QStringRef&, QLatin1String)
 inline bool operator==(const QStringRef &s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note: candidate: bool operator==(QLatin1String, const QStringRef&)
 Q_CORE_EXPORT bool operator==(QLatin1String s1, const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note: candidate: bool operator==(const QStringRef&, const QString&)
 inline bool operator==(const QStringRef &s1,const QString &s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note: candidate: bool operator==(const QString&, const QStringRef&) <near match>
 Q_CORE_EXPORT bool operator==(const QString &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid user-defined conversion from ‘char’ to ‘const QStringRef&’ [-fpermissive]
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note: candidate is: QStringRef::QStringRef(const QString*) <near match>
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
   } else if (event->text() == 'n') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   initializing argument 1 of ‘QStringRef::QStringRef(const QString*)’
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note: candidate: bool operator==(const QStringRef&, const QStringRef&)
 Q_CORE_EXPORT bool operator==(const QStringRef &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note: candidate: bool operator==(const char*, QLatin1String)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note: candidate: bool operator==(QLatin1String, QLatin1String)
 inline bool operator==(QLatin1String s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note: candidate: bool operator==(const QString&, QString::Null)
 inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note:   no known conversion for argument 2 from ‘char’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note: candidate: bool operator==(QString::Null, const QString&)
 inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note: candidate: bool operator==(QString::Null, QString::Null)
 inline bool operator==(QString::Null, QString::Null) { return true; }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note: candidate: bool operator==(const char*, const QStringRef&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note: candidate: bool operator==(const char*, const QString&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note: candidate: bool operator==(const char*, const QByteArray&)
 inline bool operator==(const char *a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note: candidate: bool operator==(const QByteArray&, const char*)
 inline bool operator==(const QByteArray &a1, const char *a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note: candidate: bool operator==(const QByteArray&, const QByteArray&)
 inline bool operator==(const QByteArray &a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note: candidate: constexpr bool operator==(QChar, QChar)
 Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) { return c1.ucs == c2.ucs; }
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note:   no known conversion for argument 1 from ‘QString’ to ‘QChar’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note: candidate: bool operator==(const QString&, const QString&) <near match>
     friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2);
                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid user-defined conversion from ‘char’ to ‘const QString&’ [-fpermissive]
   } else if (event->text() == 'n') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note: candidate is: QString::QString(const char*) <near match>
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'n') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:238:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   initializing argument 1 of ‘QString::QString(const char*)’
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:28: error: no match for ‘operator==’ (operand types are ‘QString’ and ‘char’)
   } else if (event->text() == 'v') {
              ~~~~~~~~~~~~~~^~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note: candidate: bool QString::operator==(const char*) const <near match>
 inline bool QString::operator==(const char *s) const
             ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note: candidate: bool QString::operator==(const QByteArray&) const <near match>
 inline QT_ASCII_CAST_WARN bool QString::operator==(const QByteArray &s) const
                                ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid user-defined conversion from ‘char’ to ‘const QByteArray&’ [-fpermissive]
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note: candidate is: QByteArray::QByteArray(const char*, int) <near match>
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'v') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   initializing argument 1 of ‘QByteArray::QByteArray(const char*, int)’
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note: candidate: bool QString::operator==(QLatin1String) const
     bool operator==(QLatin1String s) const;
          ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note:   no known conversion for argument 1 from ‘char’ to ‘QLatin1String’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1:0,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note: candidate: bool operator==(QKeySequence::StandardKey, QKeyEvent*)
 inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeySequence::StandardKey’
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note: candidate: bool operator==(QKeyEvent*, QKeySequence::StandardKey)
 inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeyEvent*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:50:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note: candidate: constexpr bool operator==(const QVector2D&, const QVector2D&)
 Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QVector2D&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QVariant:1:0,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:36,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note: candidate: bool operator==(const QVariant&, const QVariantComparisonHelper&)
 inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note:   no known conversion for argument 2 from ‘char’ to ‘const QVariantComparisonHelper&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note: candidate: template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)
 bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: note:   mismatched types ‘const T*’ and ‘QString’
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)
 bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note: candidate: bool operator==(const QHashDummyValue&, const QHashDummyValue&)
 inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QHashDummyValue&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note: candidate: template<class T1, class T2> constexpr bool operator==(const QPair<T, U>&, const QPair<T, U>&)
 Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
                                         ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: note:   ‘QString’ is not derived from ‘const QPair<T, U>’
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note: candidate: constexpr bool operator==(const QRectF&, const QRectF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRectF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note: candidate: constexpr bool operator==(const QRect&, const QRect&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRect&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note: candidate: constexpr bool operator==(const QPointF&, const QPointF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPointF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note: candidate: constexpr bool operator==(const QPoint&, const QPoint&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPoint&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:37:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note: candidate: constexpr bool operator==(const QMarginsF&, const QMarginsF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMarginsF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note: candidate: constexpr bool operator==(const QMargins&, const QMargins&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMargins&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note: candidate: constexpr bool operator==(const QSizeF&, const QSizeF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSizeF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note: candidate: constexpr bool operator==(const QSize&, const QSize&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSize&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmetatype.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note: candidate: template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)
 bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: note:   ‘QString’ is not derived from ‘const QVarLengthArray<T, Prealloc1>’
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:47:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)
 inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: note:   ‘QString’ is not derived from ‘const QScopedPointer<T, Cleanup>’
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note: candidate: bool operator==(const QStringRef&, QLatin1String)
 inline bool operator==(const QStringRef &s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note: candidate: bool operator==(QLatin1String, const QStringRef&)
 Q_CORE_EXPORT bool operator==(QLatin1String s1, const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note: candidate: bool operator==(const QStringRef&, const QString&)
 inline bool operator==(const QStringRef &s1,const QString &s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note: candidate: bool operator==(const QString&, const QStringRef&) <near match>
 Q_CORE_EXPORT bool operator==(const QString &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid user-defined conversion from ‘char’ to ‘const QStringRef&’ [-fpermissive]
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note: candidate is: QStringRef::QStringRef(const QString*) <near match>
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
   } else if (event->text() == 'v') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   initializing argument 1 of ‘QStringRef::QStringRef(const QString*)’
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note: candidate: bool operator==(const QStringRef&, const QStringRef&)
 Q_CORE_EXPORT bool operator==(const QStringRef &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note: candidate: bool operator==(const char*, QLatin1String)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note: candidate: bool operator==(QLatin1String, QLatin1String)
 inline bool operator==(QLatin1String s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note: candidate: bool operator==(const QString&, QString::Null)
 inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note:   no known conversion for argument 2 from ‘char’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note: candidate: bool operator==(QString::Null, const QString&)
 inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note: candidate: bool operator==(QString::Null, QString::Null)
 inline bool operator==(QString::Null, QString::Null) { return true; }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note: candidate: bool operator==(const char*, const QStringRef&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note: candidate: bool operator==(const char*, const QString&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note: candidate: bool operator==(const char*, const QByteArray&)
 inline bool operator==(const char *a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note: candidate: bool operator==(const QByteArray&, const char*)
 inline bool operator==(const QByteArray &a1, const char *a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note: candidate: bool operator==(const QByteArray&, const QByteArray&)
 inline bool operator==(const QByteArray &a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note: candidate: constexpr bool operator==(QChar, QChar)
 Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) { return c1.ucs == c2.ucs; }
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note:   no known conversion for argument 1 from ‘QString’ to ‘QChar’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note: candidate: bool operator==(const QString&, const QString&) <near match>
     friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2);
                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid user-defined conversion from ‘char’ to ‘const QString&’ [-fpermissive]
   } else if (event->text() == 'v') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note: candidate is: QString::QString(const char*) <near match>
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'v') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:240:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   initializing argument 1 of ‘QString::QString(const char*)’
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:28: error: no match for ‘operator==’ (operand types are ‘QString’ and ‘char’)
   } else if (event->text() == 'r') {
              ~~~~~~~~~~~~~~^~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note: candidate: bool QString::operator==(const char*) const <near match>
 inline bool QString::operator==(const char *s) const
             ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note: candidate: bool QString::operator==(const QByteArray&) const <near match>
 inline QT_ASCII_CAST_WARN bool QString::operator==(const QByteArray &s) const
                                ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid user-defined conversion from ‘char’ to ‘const QByteArray&’ [-fpermissive]
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note: candidate is: QByteArray::QByteArray(const char*, int) <near match>
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'r') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   initializing argument 1 of ‘QByteArray::QByteArray(const char*, int)’
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note: candidate: bool QString::operator==(QLatin1String) const
     bool operator==(QLatin1String s) const;
          ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note:   no known conversion for argument 1 from ‘char’ to ‘QLatin1String’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1:0,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note: candidate: bool operator==(QKeySequence::StandardKey, QKeyEvent*)
 inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeySequence::StandardKey’
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note: candidate: bool operator==(QKeyEvent*, QKeySequence::StandardKey)
 inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeyEvent*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:50:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note: candidate: constexpr bool operator==(const QVector2D&, const QVector2D&)
 Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QVector2D&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QVariant:1:0,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:36,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note: candidate: bool operator==(const QVariant&, const QVariantComparisonHelper&)
 inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note:   no known conversion for argument 2 from ‘char’ to ‘const QVariantComparisonHelper&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note: candidate: template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)
 bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: note:   mismatched types ‘const T*’ and ‘QString’
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)
 bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note: candidate: bool operator==(const QHashDummyValue&, const QHashDummyValue&)
 inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QHashDummyValue&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note: candidate: template<class T1, class T2> constexpr bool operator==(const QPair<T, U>&, const QPair<T, U>&)
 Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
                                         ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: note:   ‘QString’ is not derived from ‘const QPair<T, U>’
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note: candidate: constexpr bool operator==(const QRectF&, const QRectF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRectF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note: candidate: constexpr bool operator==(const QRect&, const QRect&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRect&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note: candidate: constexpr bool operator==(const QPointF&, const QPointF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPointF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note: candidate: constexpr bool operator==(const QPoint&, const QPoint&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPoint&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:37:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note: candidate: constexpr bool operator==(const QMarginsF&, const QMarginsF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMarginsF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note: candidate: constexpr bool operator==(const QMargins&, const QMargins&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMargins&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note: candidate: constexpr bool operator==(const QSizeF&, const QSizeF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSizeF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note: candidate: constexpr bool operator==(const QSize&, const QSize&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSize&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmetatype.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note: candidate: template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)
 bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: note:   ‘QString’ is not derived from ‘const QVarLengthArray<T, Prealloc1>’
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:47:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)
 inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: note:   ‘QString’ is not derived from ‘const QScopedPointer<T, Cleanup>’
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note: candidate: bool operator==(const QStringRef&, QLatin1String)
 inline bool operator==(const QStringRef &s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note: candidate: bool operator==(QLatin1String, const QStringRef&)
 Q_CORE_EXPORT bool operator==(QLatin1String s1, const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note: candidate: bool operator==(const QStringRef&, const QString&)
 inline bool operator==(const QStringRef &s1,const QString &s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note: candidate: bool operator==(const QString&, const QStringRef&) <near match>
 Q_CORE_EXPORT bool operator==(const QString &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid user-defined conversion from ‘char’ to ‘const QStringRef&’ [-fpermissive]
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note: candidate is: QStringRef::QStringRef(const QString*) <near match>
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
   } else if (event->text() == 'r') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   initializing argument 1 of ‘QStringRef::QStringRef(const QString*)’
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note: candidate: bool operator==(const QStringRef&, const QStringRef&)
 Q_CORE_EXPORT bool operator==(const QStringRef &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note: candidate: bool operator==(const char*, QLatin1String)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note: candidate: bool operator==(QLatin1String, QLatin1String)
 inline bool operator==(QLatin1String s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note: candidate: bool operator==(const QString&, QString::Null)
 inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note:   no known conversion for argument 2 from ‘char’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note: candidate: bool operator==(QString::Null, const QString&)
 inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note: candidate: bool operator==(QString::Null, QString::Null)
 inline bool operator==(QString::Null, QString::Null) { return true; }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note: candidate: bool operator==(const char*, const QStringRef&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note: candidate: bool operator==(const char*, const QString&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note: candidate: bool operator==(const char*, const QByteArray&)
 inline bool operator==(const char *a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note: candidate: bool operator==(const QByteArray&, const char*)
 inline bool operator==(const QByteArray &a1, const char *a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note: candidate: bool operator==(const QByteArray&, const QByteArray&)
 inline bool operator==(const QByteArray &a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note: candidate: constexpr bool operator==(QChar, QChar)
 Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) { return c1.ucs == c2.ucs; }
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note:   no known conversion for argument 1 from ‘QString’ to ‘QChar’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note: candidate: bool operator==(const QString&, const QString&) <near match>
     friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2);
                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid user-defined conversion from ‘char’ to ‘const QString&’ [-fpermissive]
   } else if (event->text() == 'r') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note: candidate is: QString::QString(const char*) <near match>
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'r') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:242:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   initializing argument 1 of ‘QString::QString(const char*)’
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:28: error: no match for ‘operator==’ (operand types are ‘QString’ and ‘char’)
   } else if (event->text() == 'c') {
              ~~~~~~~~~~~~~~^~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note: candidate: bool QString::operator==(const char*) const <near match>
 inline bool QString::operator==(const char *s) const
             ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1148:13: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note: candidate: bool QString::operator==(const QByteArray&) const <near match>
 inline QT_ASCII_CAST_WARN bool QString::operator==(const QByteArray &s) const
                                ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1213:32: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid user-defined conversion from ‘char’ to ‘const QByteArray&’ [-fpermissive]
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note: candidate is: QByteArray::QByteArray(const char*, int) <near match>
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'c') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:178:5: note:   initializing argument 1 of ‘QByteArray::QByteArray(const char*, int)’
     QByteArray(const char *, int size = -1);
     ^~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note: candidate: bool QString::operator==(QLatin1String) const
     bool operator==(QLatin1String s) const;
          ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:631:10: note:   no known conversion for argument 1 from ‘char’ to ‘QLatin1String’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1:0,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note: candidate: bool operator==(QKeySequence::StandardKey, QKeyEvent*)
 inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:770:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeySequence::StandardKey’
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note: candidate: bool operator==(QKeyEvent*, QKeySequence::StandardKey)
 inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:769:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QKeyEvent*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:50:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QMouseEvent:1,
                 from /opt/ros/kinetic/include/rviz/viewport_mouse_event.h:33,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:39,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note: candidate: constexpr bool operator==(const QVector2D&, const QVector2D&)
 Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtGui/qvector2d.h:200:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QVector2D&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QVariant:1:0,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:36,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note: candidate: bool operator==(const QVariant&, const QVariantComparisonHelper&)
 inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvariant.h:561:13: note:   no known conversion for argument 2 from ‘char’ to ‘const QVariantComparisonHelper&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:782:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note: candidate: template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)
 bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:766:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: note:   mismatched types ‘const T*’ and ‘QString’
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)
 bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:761:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)
 bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:750:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: note:   ‘QString’ is not derived from ‘const QSharedPointer<T>’
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note: candidate: bool operator==(const QHashDummyValue&, const QHashDummyValue&)
 inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:229:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QHashDummyValue&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qhash.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qshareddata.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer.h:39,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note: candidate: template<class T1, class T2> constexpr bool operator==(const QPair<T, U>&, const QPair<T, U>&)
 Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
                                         ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpair.h:98:41: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: note:   ‘QString’ is not derived from ‘const QPair<T, U>’
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note: candidate: constexpr bool operator==(const QRectF&, const QRectF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:825:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRectF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note: candidate: constexpr bool operator==(const QRect&, const QRect&)
 Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:436:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QRect&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:39:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note: candidate: constexpr bool operator==(const QPointF&, const QPointF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:329:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPointF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note: candidate: constexpr bool operator==(const QPoint&, const QPoint&)
 Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:149:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QPoint&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrect.h:37:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpaintdevice.h:38,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpixmap.h:37,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:40,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note: candidate: constexpr bool operator==(const QMarginsF&, const QMarginsF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:366:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMarginsF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note: candidate: constexpr bool operator==(const QMargins&, const QMargins&)
 Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmargins.h:129:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QMargins&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qicon.h:38:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QIcon:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:35,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note: candidate: constexpr bool operator==(const QSizeF&, const QSizeF&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:320:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSizeF&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note: candidate: constexpr bool operator==(const QSize&, const QSize&)
 Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qsize.h:155:30: note:   no known conversion for argument 1 from ‘QString’ to ‘const QSize&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmetatype.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note: candidate: template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)
 bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
      ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvarlengtharray.h:476:6: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: note:   ‘QString’ is not derived from ‘const QVarLengthArray<T, Prealloc1>’
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:47:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)
 inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:174:13: note:   template argument deduction/substitution failed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: note:   ‘QString’ is not derived from ‘const QScopedPointer<T, Cleanup>’
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note: candidate: bool operator==(const QStringRef&, QLatin1String)
 inline bool operator==(const QStringRef &s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1499:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note: candidate: bool operator==(QLatin1String, const QStringRef&)
 Q_CORE_EXPORT bool operator==(QLatin1String s1, const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1496:20: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note: candidate: bool operator==(const QStringRef&, const QString&)
 inline bool operator==(const QStringRef &s1,const QString &s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1492:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note: candidate: bool operator==(const QString&, const QStringRef&) <near match>
 Q_CORE_EXPORT bool operator==(const QString &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1489:20: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid user-defined conversion from ‘char’ to ‘const QStringRef&’ [-fpermissive]
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note: candidate is: QStringRef::QStringRef(const QString*) <near match>
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
   } else if (event->text() == 'c') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid conversion from ‘char’ to ‘const QString*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1483:8: note:   initializing argument 1 of ‘QStringRef::QStringRef(const QString*)’
 inline QStringRef::QStringRef(const QString *aString)
        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note: candidate: bool operator==(const QStringRef&, const QStringRef&)
 Q_CORE_EXPORT bool operator==(const QStringRef &s1,const QStringRef &s2);
                    ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1486:20: note:   no known conversion for argument 1 from ‘QString’ to ‘const QStringRef&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note: candidate: bool operator==(const char*, QLatin1String)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1174:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note: candidate: bool operator==(QLatin1String, QLatin1String)
 inline bool operator==(QLatin1String s1, QLatin1String s2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1117:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QLatin1String’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note: candidate: bool operator==(const QString&, QString::Null)
 inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1112:13: note:   no known conversion for argument 2 from ‘char’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note: candidate: bool operator==(QString::Null, const QString&)
 inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1111:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note: candidate: bool operator==(QString::Null, QString::Null)
 inline bool operator==(QString::Null, QString::Null) { return true; }
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1110:13: note:   no known conversion for argument 1 from ‘QString’ to ‘QString::Null’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note: candidate: bool operator==(const char*, const QStringRef&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1526:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note: candidate: bool operator==(const char*, const QString&)
 inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
                                ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:1161:32: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:42:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note: candidate: bool operator==(const char*, const QByteArray&)
 inline bool operator==(const char *a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:591:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note: candidate: bool operator==(const QByteArray&, const char*)
 inline bool operator==(const QByteArray &a1, const char *a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:589:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note: candidate: bool operator==(const QByteArray&, const QByteArray&)
 inline bool operator==(const QByteArray &a1, const QByteArray &a2)
             ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:587:13: note:   no known conversion for argument 1 from ‘QString’ to ‘const QByteArray&’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note: candidate: constexpr bool operator==(QChar, QChar)
 Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) { return c1.ucs == c2.ucs; }
                              ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:575:30: note:   no known conversion for argument 1 from ‘QString’ to ‘QChar’
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note: candidate: bool operator==(const QString&, const QString&) <near match>
     friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2);
                               ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:624:31: note:   conversion of argument 2 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid user-defined conversion from ‘char’ to ‘const QString&’ [-fpermissive]
   } else if (event->text() == 'c') {
                               ^~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note: candidate is: QString::QString(const char*) <near match>
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   conversion of argument 1 would be ill-formed:
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
   } else if (event->text() == 'c') {
                               ^~~
/home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:244:31: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:41:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /opt/ros/kinetic/include/rviz/properties/property.h:34,
                 from /opt/ros/kinetic/include/rviz/properties/vector_property.h:34,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/include/rviz_polygon_tool/polygon_tool.h:36,
                 from /home/user/catkin_ws/src/polygon_coverage_planning/rviz_polygon_tool/src/polygon_tool.cc:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:649:31: note:   initializing argument 1 of ‘QString::QString(const char*)’
     inline QT_ASCII_CAST_WARN QString(const char *ch)
                               ^~~~~~~
make[2]: *** [CMakeFiles/rviz_polygon_tool.dir/src/polygon_tool.cc.o] Error 1
make[1]: *** [CMakeFiles/rviz_polygon_tool.dir/all] Error 2
make: *** [all] Error 2
cd /home/user/catkin_ws/build/rviz_polygon_tool; catkin build --get-env rviz_polygon_tool | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
......................................................................................................................................................
Failed     << rviz_polygon_tool:make                            [ Exited with code 2 ]                                                                
Failed    <<< rviz_polygon_tool                                 [ 10.3 seconds ]                                                                      
Abandoned <<< polygon_coverage_ros                              [ Unrelated job failed ]                                                              
Finished  <<< polygon_coverage_planners                         [ 23.8 seconds ]                                                                      
[build] Summary: 69 of 71 packages succeeded.                                                                                                         
[build]   Ignored:   5 packages were skipped or are blacklisted.                                                                                      
[build]   Warnings:  None.                                                                                                                            
[build]   Abandoned: 1 packages were abandoned.                                                                                                       
[build]   Failed:    1 packages failed.                                                                                                               
[build] Runtime: 2 minutes and 40.8 seconds total.                                                                                                    
[build] Note: Workspace packages have changed, please re-source setup files to use them.

Hope you can help me, thanks!

Complie Problem

Hello, I have compile problem as following
would you please let me know how to fix it?
ros_interface.cc:26:10: fatal error mav_msgs/conversions.h not found

"[rviz-2] process has died" when confirm "roslaunch polygon_coverage_ros coverage_planner.launch "

Hello, polygon_coverage_planning development team,

When I use this package to confirm the coverage_planner, I meet the error as below and I can not confirm the result like the youtube video.
My environment is:

  • Ubuntu 18.04 x86_64

  • ROS Melodic

Error:
[rviz-2] process has died [pid 11289, exit code -11, cmd /opt/ros/melodic/lib/rviz/rviz -d /home/shiraishi-lab/Documents/15.RosDevelopmentUse/catkin_ws_coverage_planning/src/polygon_coverage_planning/polygon_coverage_ros/cfg/rviz/coverage_planner.rviz __name:=rviz __log:=/home/shiraishi-lab/.ros/log/0f6838d2-c279-11ea-b58f-4c1d96b56f67/rviz-2.log].
log file: /home/shiraishi-lab/.ros/log/0f6838d2-c279-11ea-b58f-4c1d96b56f67/rviz-2*.log

Screenshot from 2020-07-10 15-52-09

Could you please give some advices about how to fix this issue.

Thanks and Best Regards.
Gunma University , Japan
Zhang

ROS2 release

Hi
This package is awesome, will there be any release of ROS2 version?

Best
Samuel

error: Goal node is not at back of solution

Hi,
When I use coverage planner, I meet the error as below.

[ERROR] [1663640010.389049927]: Goal node is not at back of solution.
[ERROR] [1663640010.389990257]: Failed solving graph.
[ERROR] [1663640010.390038090]: Failed calculating plan.

Could you please give me advices about how to fix this issue.
Thanks

my coverage planner yaml is

decomposition_type: 0 # [0: Boustrophedon, 1: Trapezoidal]
cost_function_type: 1 # [0: Euclidean Distance, 1: Time, 2: Number of Waypoints]
v_max: 0.4 # Only for time optimization.
a_max: 0.2 # Only for time optimization.
wall_distance: 0.0
offset_polygons: false
sweep_single_direction: true

Sensor model.

sensor_model_type: 1 # [0: Line, 1: Frustum]
lateral_overlap: 0.6
lateral_footprint: 1.0 # Only for line sensor model.
lateral_fov: 0.84 # Only for frustum sensor model.

latch_topics: true

publish_plan_on_planning_complete: false
publish_visualization_on_planning_complete: true
set_start_goal_from_rviz: true
set_polygon_from_rviz: true

polygons is
example_polygon_epfl_simple.txt

CMake error while catkin_make

I tried to build your project but I'm getting this,

-- +++ processing catkin package: 'polygon_coverage_geometry'
-- ==> add_subdirectory(polygon_coverage_planning/polygon_coverage_geometry)
CMake Error at polygon_coverage_planning/polygon_coverage_geometry/CMakeLists.txt:8 (include):
  include called with wrong number of arguments.  include() only takes one
  file.


-- Marking SHARED_LIBRARY "polygon_coverage_geometry" of package "polygon_coverage_geometry" for installation
-- Marking HEADER FILES in "include" folder of package "polygon_coverage_geometry" for installation
-- +++ processing catkin package: 'polygon_coverage_planners'
-- ==> add_subdirectory(polygon_coverage_planning/polygon_coverage_planners)
CMake Error at polygon_coverage_planning/polygon_coverage_planners/CMakeLists.txt:8 (include):
  include called with wrong number of arguments.  include() only takes one
  file.
.
.
.
CMake Error at polygon_coverage_planning/polygon_coverage_ros/CMakeLists.txt:13 (include):
  include called with wrong number of arguments.  include() only takes one
  file.


-- No yaml_cpp_catkin, using yaml-cpp system library instead.
-- Marking SHARED_LIBRARY "polygon_coverage_ros" of package "polygon_coverage_ros" for installation
-- Marking EXECUTABLE "coverage_planner" of package "polygon_coverage_ros" for installation
-- Marking EXECUTABLE "coverage_planner_exact" of package "polygon_coverage_ros" for installation
-- Marking EXECUTABLE "coverage_planner_exact_preprocessed" of package "polygon_coverage_ros" for installation
-- Marking EXECUTABLE "shortest_path_planner" of package "polygon_coverage_ros" for installation
-- Marking EXECUTABLE "sweep_test" of package "polygon_coverage_ros" for installation
-- Marking HEADER FILES in "include" folder of package "polygon_coverage_ros" for installation
-- Marking SHARED CONTENT FOLDER "launch" of package "polygon_coverage_ros" for installation
-- +++ processing catkin package: 'rviz_polygon_tool'
-- ==> add_subdirectory(polygon_coverage_planning/rviz_polygon_tool)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Using Qt5 based on the rviz_QT_VERSION: 5.9.5
-- Marking SHARED_LIBRARY "rviz_polygon_tool" of package "rviz_polygon_tool" for installation
-- Marking HEADER FILES in "include" folder of package "rviz_polygon_tool" for installation
-- Configuring incomplete, errors occurred!
See also "/home/parth/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/parth/catkin_ws/build/CMakeFiles/CMakeError.log".
Makefile:1664: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

Only posted the parts I thought were important. Let me know if you want me to post the whole message.

Please do let me know if I have done anything wrong. I am not very well-versed in ROS.

coverage planner crashes PC

if i try to create a polygon by calling the '/coverage_planner/set_polygon' service, coverage_planner stops at "Start creating sweep plan graph. After that RAM and SWAP memory fully loaded and crushes the PC.

Also received this error.
Stack overflow in unmanaged: IP: 0x7f8e0c49ffff, fault addr: 0x7ffdd6beeff8
Stack overflow: IP: 0x7f8e0c49ff3a, fault addr: 0x7ffdd6be6ff8
Stacktrace:

Screenshot from 2023-12-20 16-05-25
Screenshot from 2023-12-20 16-05-21
Screenshot from 2023-12-20 16-05-11

Build error while performing patch step for 'gk_ma'

Hi. First of all, thank you for sharing your work.

I've read an issue related to the same problem that I'm dealing with. This is how the patch step error looks like:

Built target gtsp_instances
patching file GkMa/OurHeuristic/Algorithm.cs
Hunk #2 FAILED at 33 (different line endings).
Hunk #3 FAILED at 37.
Hunk #4 FAILED at 76.
3 out of 4 hunks FAILED -- saving rejects to file GkMa/OurHeuristic/Algorithm.cs.rej

I've tried to compile the package with cmake version 3.20.4 and gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0. My question is if anyone has managed to fix this error without having to install another version of cmake or another version of ubuntu.

Thank you in advance,

Best regards,
Esau

wstool update

HOW to handle this? sir? I'm confused with the dependencies_https.rosinstall. How to use this?
ssh: connect to host github.com port 22: Connection timed out
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。(Please confirm that you have the correct access rights and the warehouse exists. )

Exception caught during install: Error processing 'polygon_coverage_planning' : [polygon_coverage_planning] Checkout of [email protected]:ethz-asl/polygon_coverage_planning.git version v2.0.1 into /home/steven/catkin_ws/src/polygon_coverage_planning failed.

ERROR in config: Error processing 'polygon_coverage_planning' : [polygon_coverage_planning] Checkout of [email protected]:ethz-asl/polygon_coverage_planning.git version v2.0.1 into /home/steven/catkin_ws/src/polygon_coverage_planning failed.

Installation Info

Hi

I would like to try it for my homemade ROS lawn mower but the installation is quite different from what i am used to and i would not like to create problems in my existing catkin_ws

Q1. Can the installation be made within another workspace without adaptations

Q2. Where and how i should download the dependencies for dependencies.rosinstall

Could not extract tarball filename from url

Hi,
Thanks for this project. I got the following Cmake error when I was trying to build the code:

CMake Error at /usr/share/cmake-3.5/Modules/ExternalProject.cmake:1888 (message):
  Could not extract tarball filename from url:

    https://polybox.ethz.ch/index.php/s/WRKOqMhr94DlWPU/download
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/ExternalProject.cmake:2459 (_ep_add_download_command)
  CMakeLists.txt:19 (ExternalProject_Add)

I was using Ubuntu 16.04 and ROS kinetic. Any suggestion is appreciated, thank you!

Regards,
Muqing

Unable to load type [polygon_coverage_msgs/PlannerService] error

Hi,

First of all, thank you for creating this wonderful package. I hope you can help me with this problem I am having.

When I want to call the Plan_path service, I receive this error.

ERROR: Unable to load type [polygon_coverage_msgs/PlannerService]. Have you typed 'make' in [polygon_coverage_msgs]

I tried to google this problem for solutions, but sadly I couldn't find one. Do you know how to resolve this error? Thanks in advance

Formulate E-GTSP over straight segments

Treat every straight segment as a node in the GTSP as in

Bochkarev, Stanislav, and Stephen L. Smith. "On minimizing turns in robot coverage path planning." 2016 IEEE International Conference on Automation Science and Engineering (CASE). IEEE, 2016.

or

Lewis, Jeremy S., et al. "Semi-boustrophedon coverage with a dubins vehicle." 2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2017.

This may be computationally more elaborate but would fix the overlapping segments at the border between cells and find even shorter coverage paths.

install dir

I can not find install dir in code.Is there any error in repository? thanks!

Question about Clustering

How is the clustering done? How does the algorithm know how many clusters to make . I would assume it has to do with the size and shape of of the "no fly" zones as well as that of the boundaries of the map. What is the technique though?

Question about workflow with services

Hi!

Thanks for an interesting package and even more so for making it open source! I've been testing it lately and I've been trying to use service calls to create a plan. It seems to me that I'm never receiving a service reply. Here is what I've been trying:

  1. Launchfile (the same as coverage_planner.launch) but with rviz and yaml polygons disabled:
<launch>
  <!-- <arg name="rviz_config" default="$(find polygon_coverage_ros)/cfg/rviz/coverage_planner.rviz"/>

  <node name="rviz" pkg="rviz" type="rviz" output="log" args="-d $(arg rviz_config)"/> -->

  <node name="coverage_planner" pkg="polygon_coverage_ros" type="coverage_planner" output="screen" clear_params="true">

    <rosparam command="load" file="$(find polygon_coverage_ros)/cfg/coverage_planner.yaml"/>
    <!-- Polygon, altitude, and world frame ID -->
    <!-- <rosparam command="load" file="$(find polygon_coverage_ros)/cfg/polygons/example_polygon_epfl_simple.yaml"/> -->

  </node>

</launch>
  1. coverage_planner.yaml:
decomposition_type: 0 # [0: Boustrophedon, 1: Trapezoidal]
cost_function_type: 1 # [0: Euclidean Distance, 1: Time, 2: Number of Waypoints]
v_max: 3.0 # Only for time optimization.
a_max: 1.0 # Only for time optimization.
wall_distance: 0.0
offset_polygons: false
sweep_single_direction: false

# Sensor model.
sensor_model_type: 1 # [0: Line, 1: Frustum]
lateral_overlap: 0.6
lateral_footprint: 1.0 # Only for line sensor model.
lateral_fov: 0.84 # Only for frustum sensor model.

latch_topics: true

publish_plan_on_planning_complete: true
publish_visualization_on_planning_complete: true
set_start_goal_from_rviz: false
set_polygon_from_rviz: false
  1. My snippet that calls the set_polygon:
      rospy.wait_for_service('/coverage_planner/set_polygon')
      try:
        set_poly_srv = rospy.ServiceProxy('/coverage_planner/set_polygon', PolygonService)
        poly = PolygonWithHolesStamped()
        poly.header.stamp = rospy.Time.now()
        poly.header.frame_id="map"
        poly_with_holes = PolygonWithHoles()
        poly_with_holes.hull = self.polygon_stamped.polygon
        poly.polygon = poly_with_holes
        resp = set_poly_srv(poly)
        print resp.sucess
      except rospy.ServiceException as e:
        print("Service call failed: %s"%e)
  1. Screenshot of the polygon I've tried:
    image

  2. The output of the polygon_coverage_planner:

[ WARN] [1603307680.189317961]: No polygon file specified to parameter server (parameter "polygon"). Expecting polygon from service call.
[ INFO] [1603307680.190326519]: Wall distance: 0 m
[ INFO] [1603307680.191113655]: Cost function: Time
[ INFO] [1603307680.191134455]: v_max: 3, a_max: 1
[ INFO] [1603307680.198297393]: Sending visualization messages.
[ WARN] [1603307680.198324438]: Cannot send visualization because altitude not set.
[ WARN] [1603307680.199686138]: No altitude specified. Creating default altitude 1m.
[ INFO] [1603307680.199715917]: Sensor model: frustum
[ INFO] [1603307680.199729712]: Lateral FOV: 0.84
[ INFO] [1603307680.199744418]: Altitude: 1
[ INFO] [1603307680.199756293]: Lateral overlap: 0.6
[ INFO] [1603307680.199774010]: Sweep distance: 0.357258
[ INFO] [1603307680.200020811]: Sweep single direction: 0
[ INFO] [1603307731.053058054]: Setting polygon altitude height to first z variable: 0
[ INFO] [1603307731.053932565]: Successfully loaded polygon.
[ INFO] [1603307731.054032384]: Altitude: 0m
[ INFO] [1603307731.054107685]: Global frame: map
[ INFO] [1603307731.054381034]: Polygon:4 -29.5515 31.0672 -17.7991 99.7963 -40.5039 80.0898 -51.1835 51.8711  0
[ INFO] [1603307731.054489922]: Reset planner.
[ INFO] [1603307731.054570390]: Sensor model: frustum
[ INFO] [1603307731.054678911]: Lateral FOV: 0.84
[ INFO] [1603307731.054755701]: Altitude: 0
[ INFO] [1603307731.054840052]: Lateral overlap: 0.6
[ INFO] [1603307731.054929990]: Sweep distance: 0
[ INFO] [1603307731.055149616]: Start creating sweep plan graph.
[ INFO] [1603307731.068487912]: Successfully created boustrophedon decomposition with 1 polygon(s).

Observations:

  1. My code that calls the service never prints the success variable and it seems that the node is taking 100% of CPU and an increasing value of memory:
    Peek 2020-10-21 21-25

  2. I've tried calling the plan_path service as follows:

rosservice call /coverage_plann/plan_path "start_pose:
    seq: 0
    stamp: {secs: 0, nsecs: 0}
    frame_id: '': 0, nsecs: 0}
  pose:me_id: ''
    position: {x: 0.0, y: 0.0, z: 0.0}
    orientation: {x: 0.0, y: 0.0, z: 0.0, w: 0.0}
start_velocity: {x: 0.0, y: 0.0, z: 0.0}, w: 0.0}
goal_pose:city: {x: 0.0, y: 0.0, z: 0.0}
  header::
    seq: 0ox: {x: 0.0, y: 0.0, z: 0.0}" , w: 0.0}
    stamp: {secs: 0, nsecs: 0}
    frame_id: ''
  pose:
    position: {x: 0.0, y: 0.0, z: 0.0}
    orientation: {x: 0.0, y: 0.0, z: 0.0, w: 0.0}
goal_velocity: {x: 0.0, y: 0.0, z: 0.0}
bounding_box: {x: 0.0, y: 0.0, z: 0.0}" 

without any results. Is there anything I'm missing in my workflow?

Question about video presentation.

On the video presentation you guys made for youtube, you imported the picture of the grass field into rviz. How were you able to do that? I want to import the png file of the map I want to cover so I can do the same thing.

Cannot create hole at outer boundary of polygon

Hi Rik,

I am trying to create a rectangular polygon with a rectangular hole which is bordering the outer boundary of the hull. The yaml file I use to create the polygon is:

polygon:
  header:
    seq: 0
    stamp:
      secs: 0
      nsecs: 0
    frame_id: 'world'
  polygon:
    holes:
    - points:
      - {x: 7.35, y:  -4.3, z:   3.0}
      - {x: 7.35, y: -11.3, z:   3.0}
      - {x: 2.7,  y: -11.3, z:   3.0}
      - {x: 2.7,  y:  -4.3, z:   3.0}
    hull:
      points:
      - {x: 7.35,  y:   5.7, z:   3.0}
      - {x: 7.35,  y: -21.3, z:   3.0}
      - {x: -7.3,  y: -21.3, z:   3.0}
      - {x: -7.3,  y:   5.7, z:   3.0}

I am launching the coverage planner as follows:

<node name="coverage_planner" pkg="polygon_coverage_ros" type="coverage_planner" output="screen" clear_params="true" >
            <remap from="waypoint_list" to="input_waypoints" />
            
            <rosparam command="load" file="$(find polygon_coverage_ros)/cfg/coverage_planner.yaml"/> <!-- Default settings on master branch -->
            <rosparam command="load" file="$(find my_pkg)/cfg/polygons/polygon_with_hole.yaml"/> <!-- above mentioned file-->
            <param name="v_max" value="$(arg v_max)" />
            <param name="a_max" value="$(arg a_max)" />
            <param name="lateral_overlap" value="0.6" />
            <param name="lateral_fov" value="1.398" />
            <param name="publish_plan_on_planning_complete" value="true" />
            <param name="wall_distance" value="$(arg wall_distance)" />
        </node>

When I start the node I get the following output:


SUMMARY
========

CLEAR PARAMETERS
 * /firefly_1/coverage_planner/

PARAMETERS
 * /firefly_1/coverage_planner/a_max: 1.5
 * /firefly_1/coverage_planner/cost_function_type: 1
 * /firefly_1/coverage_planner/decomposition_type: 0
 * /firefly_1/coverage_planner/latch_topics: True
 * /firefly_1/coverage_planner/lateral_footprint: 1.0
 * /firefly_1/coverage_planner/lateral_fov: 1.398
 * /firefly_1/coverage_planner/lateral_overlap: 0.6
 * /firefly_1/coverage_planner/offset_polygons: False
 * /firefly_1/coverage_planner/polygon/header/frame_id: world
 * /firefly_1/coverage_planner/polygon/header/seq: 0
 * /firefly_1/coverage_planner/polygon/header/stamp/nsecs: 0
 * /firefly_1/coverage_planner/polygon/header/stamp/secs: 0
 * /firefly_1/coverage_planner/polygon/polygon/holes: [{'points': [{'y'...
 * /firefly_1/coverage_planner/polygon/polygon/hull/points: [{'y': 5.7, 'x': ...
 * /firefly_1/coverage_planner/publish_plan_on_planning_complete: True
 * /firefly_1/coverage_planner/publish_visualization_on_planning_complete: True
 * /firefly_1/coverage_planner/sensor_model_type: 1
 * /firefly_1/coverage_planner/set_polygon_from_rviz: True
 * /firefly_1/coverage_planner/set_start_goal_from_rviz: True
 * /firefly_1/coverage_planner/sweep_single_direction: False
 * /firefly_1/coverage_planner/v_max: 1.5
 * /firefly_1/coverage_planner/wall_distance: 0.0
 * /firefly_1/enu_simulator_node/enu_frame_offset: [3.0, 3.0, 0.2]
 * /firefly_1/enu_simulator_node/randomize_frame: False
 * /gazebo/enable_ros_network: True
 * /rosdistro: melodic
 * /rosversion: 1.14.3
 * /use_sim_time: True

NODES
  /firefly_1/
    coverage_planner (polygon_coverage_ros/coverage_planner)
    enu_simulator_node (mbzirc2020_rotors_simulator/enu_simulator_node)
    px4_simulator (mav_missions/px4_simulator_node.py)
  /
    gazebo (gazebo_ros/gzserver)

auto-starting new master
process[master]: started with pid [17869]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 713a883a-04ab-11ea-b45c-e86a64114512
process[rosout-1]: started with pid [17883]
started core service [/rosout]
process[gazebo-2]: started with pid [17891]
process[firefly_1/coverage_planner-3]: started with pid [17896]
process[firefly_1/enu_simulator_node-4]: started with pid [17897]
process[firefly_1/px4_simulator-5]: started with pid [17899]
[ INFO] [1573494498.647725784]: Creating an EnuSimulator.
[ INFO] [1573494498.648459565]: Getting parameters.
[ INFO] [1573494498.649372879]: Subscribing to topics
[ INFO] [1573494498.651506140]: Advertising topics
[ INFO] [1573494498.652032958]: Generating frame from parameters.
[ INFO] [1573494498.652143201]: Running the enu simulator.
[ INFO] [1573494498.667259229]: Setting polygon altitude height to first z variable: 3
[ INFO] [1573494498.667938555]: Successfully loaded polygon.
[ INFO] [1573494498.667963250]: Altitude: 3 m
[ INFO] [1573494498.667976934]: Global frame: world
[ INFO] [1573494498.668022803]: Polygon:4 7.35 5.7 7.35 -21.3 -7.3 -21.3 -7.3 5.7  1 4 7.35 -4.3 7.35 -11.3 2.7 -11.3 2.7 -4.3  
[ INFO] [1573494498.668301110]: Wall distance: 0 m
[ INFO] [1573494498.668959320]: Cost function: Time
[ INFO] [1573494498.668976309]: v_max: 1.5, a_max: 1.5
[ INFO] [1573494498.675000585]: Sending visualization messages.
[ WARN] [1573494498.675036391]: Cannot send solution visualization because plan has not been made.
[ INFO] [1573494498.676606265]: Sensor model: frustum
[ INFO] [1573494498.676628057]: Lateral FOV: 1.398
[ INFO] [1573494498.676641520]: Altitude: 3
[ INFO] [1573494498.676656121]: Lateral overlap: 0.6
[ INFO] [1573494498.676669148]: Sweep distance: 2.01739
[ INFO] [1573494498.676961572]: Sweep single direction: 0
[ INFO] [1573494498.676976036]: Reset planner.
[ INFO] [1573494498.676988799]: Sensor model: frustum
[ INFO] [1573494498.677001977]: Lateral FOV: 1.398
[ INFO] [1573494498.677012452]: Altitude: 3
[ INFO] [1573494498.677023356]: Lateral overlap: 0.6
[ INFO] [1573494498.677033628]: Sweep distance: 2.01739
[ INFO] [1573494498.677070646]: Start creating sweep plan graph.
[firefly_1/coverage_planner-3] process has died [pid 17896, exit code -11, cmd /home/christian/catkin_ws/devel/lib/polygon_coverage_ros/coverage_planner waypoint_list:=input_waypoints __name:=coverage_planner __log:=/home/christian/.ros/log/713a883a-04ab-11ea-b45c-e86a64114512/firefly_1-coverage_planner-3.log].

When I set the hole to be inside the outer boundary (e.g. x: 7.49 instead of 7.5) the node does not crash.

Thanks for you help!

Inquiry Continuation of #66 and #67

I am using a simulated turtlebot3. I 'roslaunch turtlebot3_gazebo turtlebot3_world.launch` to open up a simualted turtelbot3 in a world in gazebo.

I then roslaunch polygon_coverage_ros coverage_planner.launch. from issue #66 I have already changed 'world' to 'map' and I still get global status error and TF error.
I don't know how to fix this error at all. from #66(my last unanswered response:"I changed the frame id to "map", I still get the global status error.
Is your explanation that I have to manually set the polygon of the map my
self? To do that, wouldn't I have to know the dimensions of the map to set
the points?, so I have to know the x,y,z values of the extremities of the
map?")

It is also not clear how to use the polygon selection, when I try to create a polygon, it isn't clear how to click away to finish it, no matter what I do, the polygon selction keeps adding edges to the previous polygon I was trying to create.

ros coverage_planner: Buffer zone around polygons

I wonder how to create a buffer zone/save margin around the polygons for the coverage_planner ros node. The hull should be reduced and each hole increased by an amount.

I tried to set wall_distance, but it does not seem to do anything.

Cannot locate node of type [coverage_planner] in package [polygon_coverage_ros]

When I type roslaunch polygon_coverage_ros coverage_planner.launch
terminal shows that,
ERROR: cannot launch node of type [polygon_coverage_ros/coverage_planner]: Cannot locate node of type [coverage_planner] in package [polygon_coverage_ros]. Make sure file exists in package path and permission is set to executable (chmod +x)
[ERROR] [1603716952.200248596]: PluginlibFactory: The plugin for class 'rviz_polygon_tool/PolygonSelection' failed to load. Error: Could not find library corresponding to plugin rviz_polygon_tool/PolygonSelection. Make sure the plugin description XML file has the correct name of the library and that the library actually exists.

Integrate Helsgaun solver

Helsgaun, K.: Solving the equality generalized traveling salesman problem using the Lin–Kernighan–Helsgaun algorithm. Mathematical Programming Computation7(3),269–287 (2015)

Advantage:
No c# / mono dependency

Polygon coverage node crashes when wall_distance not zero

By using the following polygon definition:

polygon:
header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: 'world'
polygon:
holes:
- points:
- {x: 12.0, y: -4.3, z: 3.0}
- {x: 12.0, y: -11.3, z: 3.0}
- {x: 2.7, y: -11.3, z: 3.0}
- {x: 2.7, y: -4.3, z: 3.0}
hull:
points:
- {x: 22.0, y: 5.7, z: 3.0}
- {x: 22.0, y: -21.3, z: 3.0}
- {x: -7.3, y: -21.3, z: 3.0}
- {x: -7.3, y: 5.7, z: 3.0}

and the parameter wall_distance not being zero, the polygon coverage node crashes.
Console output:

roslaunch polygon_coverage_ros coverage_planner.launch
... logging to /home/rsteiner/.ros/log/83c9a626-e8da-11e9-a211-7c763585f93f/roslaunch-rstvivo-2599.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://rstvivo:34963/

SUMMARY
CLEAR PARAMETERS

  • /coverage_planner/

PARAMETERS

  • /coverage_planner/a_max: 1.0
  • /coverage_planner/cost_function_type: 1
  • /coverage_planner/decomposition_type: 0
  • /coverage_planner/latch_topics: True
  • /coverage_planner/lateral_footprint: 1.0
  • /coverage_planner/lateral_fov: 0.84
  • /coverage_planner/lateral_overlap: 0.6
  • /coverage_planner/offset_polygons: False
  • /coverage_planner/polygon/header/frame_id: world
  • /coverage_planner/polygon/header/seq: 0
  • /coverage_planner/polygon/header/stamp/nsecs: 0
  • /coverage_planner/polygon/header/stamp/secs: 0
  • /coverage_planner/polygon/polygon/holes: [{'points': [{'y'...
  • /coverage_planner/polygon/polygon/hull/points: [{'y': 5.7, 'x': ...
  • /coverage_planner/publish_plan_on_planning_complete: False
  • /coverage_planner/publish_visualization_on_planning_complete: True
  • /coverage_planner/sensor_model_type: 1
  • /coverage_planner/set_polygon_from_rviz: True
  • /coverage_planner/set_start_goal_from_rviz: True
  • /coverage_planner/sweep_single_direction: False
  • /coverage_planner/v_max: 3.0
  • /coverage_planner/wall_distance: 1.0
  • /rosdistro: melodic
  • /rosversion: 1.14.3

NODES
/
coverage_planner (polygon_coverage_ros/coverage_planner)
rviz (rviz/rviz)

ROS_MASTER_URI=http://localhost:11311

process[rviz-1]: started with pid [2615]
process[coverage_planner-2]: started with pid [2616]
[ INFO] [1570437712.789966488]: Setting polygon altitude height to first z variable: 3
[ INFO] [1570437712.790666128]: Successfully loaded polygon.
[ INFO] [1570437712.790686737]: Altitude: 3 m
[ INFO] [1570437712.790694143]: Global frame: world
[ INFO] [1570437712.790726507]: Polygon:4 22 5.7 22 -21.3 -7.3 -21.3 -7.3 5.7 1 4 12 -4.3 12 -11.3 2.7 -11.3 2.7 -4.3
[ INFO] [1570437712.790975869]: Wall distance: 1 m
[ INFO] [1570437712.791713847]: Cost function: Time
[ INFO] [1570437712.791750706]: v_max: 3, a_max: 1
[ INFO] [1570437712.797046686]: Sending visualization messages.
[ WARN] [1570437712.797091504]: Cannot send solution visualization because plan has not been made.
[ INFO] [1570437712.798463729]: Sensor model: frustum
[ INFO] [1570437712.798501364]: Lateral FOV: 0.84
[ INFO] [1570437712.798513305]: Altitude: 3
[ INFO] [1570437712.798522766]: Lateral overlap: 0.6
[ INFO] [1570437712.798532113]: Sweep distance: 1.07177
[ INFO] [1570437712.798741218]: Sweep single direction: 0
[ INFO] [1570437712.798772214]: Reset planner.
[ INFO] [1570437712.798780417]: Sensor model: frustum
[ INFO] [1570437712.798790769]: Lateral FOV: 0.84
[ INFO] [1570437712.798799048]: Altitude: 3
[ INFO] [1570437712.798806060]: Lateral overlap: 0.6
[ INFO] [1570437712.798813589]: Sweep distance: 1.07177
[ INFO] [1570437712.798841745]: Start creating sweep plan graph.
[coverage_planner-2] process has died [pid 2616, exit code -11, cmd /home/rsteiner/catkin_ws/devel/lib/polygon_coverage_ros/coverage_planner __name:=coverage_planner __log:=/home/rsteiner/.ros/log/83c9a626-e8da-11e9-a211-7c763585f93f/coverage_planner-2.log].
log file: /home/rsteiner/.ros/log/83c9a626-e8da-11e9-a211-7c763585f93f/coverage_planner-2*.log

When wall_distance: 0.0 everything works fine.

Inquiry on how to create accurate waypoints which exist in a map when using polygon_coverage_ros package

I want to upload an occupancy-grid map to Rviz then use the polygon_coverage_ros package to create a coverage path. I then want to retrieve the accurate waypoints which make up the path so I can actually use them to move the actual robot across the map.Is this possible to do so currently?

As of now I am only able to trace the shape and obstacles of the environment to get a set of waypoints which I can't use to navigate the robot. Which is why I want to upload the actual occupancy-grid map to Rviz and overlay the tracing of the environment boundaries and obstacles, this way, I think( maybe I'm wrong) I'll actually get waypoints which exist in the map.

I ultimately want to compare the coverage time of this coverage path planner package to something else and the only way in which I can do so is what I just outlined at the beginning of the last paragraph. I get a path time which I assume is calculated based off the set velocity parameters and so in (in the config file of the package). This is only a theoretical coverage time and I want to make sure it's actually close to what the robot capable of achieving when tested using the waypoints.

I hope my problem description and goal is clear?

Installation procedure inquiry

ROS Melodic, Ubuntu 18.04
I managed to create all the packages and catkin build. The instructions of how to use it though, really confused me:
[i] Firstly when I roslaunch polygon_coverage_ros coverage_planner.launch, Rivz open up but I get a global status error "Fixed Frame [world] does not exist". and TF warning "No transform from [base_footprint] to frame [world]. Am I to have launch some other files before this?
[ii] I'm using a simulated differential drive robot. I have a simulated world and I have the known map of the world. am I to manually make a representation of the map on RViz?
As you can see, I don't even know where to begin. Can I have a more comprehensive instructions?

further inquiry from issue #66

I changed the frame id to "map", I still get the global status error.
Is your explanation that I have to manually set the polygon of the map my
self? To do that, wouldn't I have to know the dimensions of the map to set
the points?, so I have to know the x,y,z values of the extremities of the
map?

Parameter to enforce single sweep direction

Set the sweep direction in degrees. This should go somewhere here:

bool SweepPlanGraph::computeDecomposition() {
// Create decomposition.
timing::Timer timer_decom("decomposition");
switch (settings_.decomposition_type) {
case DecompositionType::kBCD: {
if (!computeBestBCDFromPolygonWithHoles(settings_.polygon,
&polygon_clusters_)) {
ROS_ERROR_STREAM("Cannot compute boustrophedon decomposition.");
return false;
} else {
ROS_INFO_STREAM("Successfully created boustrophedon decomposition with "
<< polygon_clusters_.size() << " polygon(s).");
}
break;
}
case DecompositionType::kTCD: {
if (!computeBestTCDFromPolygonWithHoles(settings_.polygon,
&polygon_clusters_)) {
ROS_ERROR_STREAM("Cannot compute trapezoidal decomposition.");
return false;
} else {
ROS_INFO_STREAM("Successfully created trapezoidal decomposition with "
<< polygon_clusters_.size() << " polygon(s).");
}
break;
}
default: {
ROS_ERROR_STREAM("No valid decomposition type set.");
return false;
break;
}
}
timer_decom.Stop();
return true;
}

Addresses question by @FrGe2016 in #60

package for ROS melodic faulty

ROS melodic version of package is faulty. As sson as the package plans a path for tha map, riviz shutsdown immediately after sending visualization messages

Build error while applying the patch

Hi! Thanks for sharing your amazing work!!

I'm getting build error when cmake is trying to applying the patch. It's possible that in the new version of the TSP library the line numbers are changed.

Here's the verbose output of catkin build:

____________________________________________________________________________________________________________________________________________________________________________
Errors     << polygon_coverage_solvers:make /home/harshal/cov_planner_ws/logs/polygon_coverage_solvers/build.make.003.log                                                   
/usr/local/bin/cmake -S/home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers -B/home/harshal/cov_planner_ws/build/polygon_coverage_solvers --check-build-system CMakeFiles/Makefile.cmake 0
/usr/local/bin/cmake -E cmake_progress_start /home/harshal/cov_planner_ws/build/polygon_coverage_solvers/CMakeFiles /home/harshal/cov_planner_ws/build/polygon_coverage_solvers//CMakeFiles/progress.marks
/usr/bin/make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
/usr/bin/make  -f CMakeFiles/polygon_coverage_solvers.dir/build.make CMakeFiles/polygon_coverage_solvers.dir/depend
/usr/bin/make  -f CMakeFiles/gk_ma.dir/build.make CMakeFiles/gk_ma.dir/depend
make[2]: Entering directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
cd /home/harshal/cov_planner_ws/build/polygon_coverage_solvers && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers/CMakeFiles/gk_ma.dir/DependInfo.cmake --color=
make[2]: Entering directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
cd /home/harshal/cov_planner_ws/build/polygon_coverage_solvers && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers/CMakeFiles/polygon_coverage_solvers.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
/usr/bin/make  -f CMakeFiles/gk_ma.dir/build.make CMakeFiles/gk_ma.dir/build
make[2]: Leaving directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
make[2]: Entering directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
/usr/bin/make  -f CMakeFiles/polygon_coverage_solvers.dir/build.make CMakeFiles/polygon_coverage_solvers.dir/build
make[2]: Entering directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
make[2]: Nothing to be done for 'CMakeFiles/polygon_coverage_solvers.dir/build'.
make[2]: Leaving directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
[  5%] Performing patch step for 'gk_ma'
cd /home/harshal/cov_planner_ws/build/polygon_coverage_solvers/gk_ma-prefix/src/gk_ma && patch GkMa/OurHeuristic/Algorithm.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Algorithm.patch && "" patch NativeHelper/ClusterOptimisation.cpp /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/ClusterOptimisationCpp.patch && "" patch GkMa/OurHeuristic/Types/Generation.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Generation.patch && "" patch GkMa/OurHeuristic/GeneticAlgorithm.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/GeneticAlgorithm.patch && "" patch GkMa/Helper.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Helper.patch && "" patch NativeHelper/ClusterOptimisation.h /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/ClusterOptimisationH.patch && "" patch NativeHelper/ImprovementManager.h /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/ImprovementManagerH.patch && "" patch NativeHelper/Insert.cpp /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/InsertCpp.patch && "" patch NativeHelper/Insert.h /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/InsertH.patch && "" patch NativeHelper/NativeHelper.cpp /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/NativeHelperCpp.patch && "" patch NativeHelper/Swap.cpp /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/SwapCpp.patch && "" patch NativeHelper/NativeHelper.h /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/NativeHelperH.patch && "" patch GkMa/OurHeuristic/NativeHelper.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/NativeHelper.patch && "" patch GkMa/OurSolver.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/OurSolver.patch && "" patch GkMa/OurHeuristic/Types/Permutation.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Permutation.patch && "" patch GkMa/Program.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Program.patch && "" patch GkMa/Solver.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Solver.patch && "" patch GkMa/Loader/Task.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Task.patch && "" patch GkMa/OurHeuristic/Types/Tour.cs /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers/patches/Tour.patch
[ 25%] Built target polygon_coverage_solvers
patching file GkMa/OurHeuristic/Algorithm.cs
Hunk #2 FAILED at 33.
Hunk #3 FAILED at 37.
Hunk #4 succeeded at 120 (offset 44 lines).
2 out of 4 hunks FAILED -- saving rejects to file GkMa/OurHeuristic/Algorithm.cs.rej
CMakeFiles/gk_ma.dir/build.make:122: recipe for target 'gk_ma-prefix/src/gk_ma-stamp/gk_ma-patch' failed
/usr/bin/make  -f CMakeFiles/gtsp_instances.dir/build.make CMakeFiles/gtsp_instances.dir/depend
make[2]: Leaving directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
make[2]: *** [gk_ma-prefix/src/gk_ma-stamp/gk_ma-patch] Error 1
CMakeFiles/Makefile2:532: recipe for target 'CMakeFiles/gk_ma.dir/all' failed
make[1]: *** [CMakeFiles/gk_ma.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: Entering directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
cd /home/harshal/cov_planner_ws/build/polygon_coverage_solvers && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers /home/harshal/cov_planner_ws/src/polygon_coverage_planning/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers /home/harshal/cov_planner_ws/build/polygon_coverage_solvers/CMakeFiles/gtsp_instances.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
/usr/bin/make  -f CMakeFiles/gtsp_instances.dir/build.make CMakeFiles/gtsp_instances.dir/build
make[2]: Entering directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
make[2]: Nothing to be done for 'CMakeFiles/gtsp_instances.dir/build'.
make[2]: Leaving directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
[ 65%] Built target gtsp_instances
make[1]: Leaving directory '/home/harshal/cov_planner_ws/build/polygon_coverage_solvers'
Makefile:159: recipe for target 'all' failed
make: *** [all] Error 2

Is there another way to install the GTSP library?

line distance

Hello thanks for repository.it's very good. How i adjust line-to-line distance (sweep distance)?

1(1)

sweep_test

sweep_test Can this file be run? Why do I report an error [ERROR] [1693816274.180911416]: No polygon set on parameter server. I have already added parameters to my ROS parameter service

Point Angle

Hello,

When I get to one point, I want it to look at the other point. Is there anything in your work made for this?

Thanks,
Salih.

What is lateral FOV in yaml file?

What does the lateral feild of view mean exactly in the coverage_planner.yaml file? WHat is the unit? is it in meters? does it mean sensing range? Or more the area around the robot whcih it can sense at any given time? for instance if the sensing range is 0.84m, then lateral FOV is pi* 0.84^2(if 360 view)? what are the units of the lateral FOV value?

catkin build error at polygon_coverage_ros

When I execute in the command line catkin build (with the previous steps successfully done) the following occurs:
Do you have any idea to solve this?

(base) simon@simon-ThinkPad-T480:~/catkin_ws/src$ catkin build
----------------------------------------------------------
Profile:                     default
Extending:        [explicit] /opt/ros/melodic
Workspace:                   /home/simon/catkin_ws
----------------------------------------------------------
Build Space:        [exists] /home/simon/catkin_ws/build
Devel Space:        [exists] /home/simon/catkin_ws/devel
Install Space:      [unused] /home/simon/catkin_ws/install
Log Space:         [missing] /home/simon/catkin_ws/logs
Source Space:       [exists] /home/simon/catkin_ws/src
DESTDIR:            [unused] None
----------------------------------------------------------
Devel Space Layout:          linked
Install Space Layout:        None
----------------------------------------------------------
Additional CMake Args:       None
Additional Make Args:        None
Additional catkin Make Args: None
Internal Make Job Server:    True
Cache Job Environments:      False
----------------------------------------------------------
Whitelisted Packages:        None
Blacklisted Packages:        None
----------------------------------------------------------
Workspace configuration appears valid.

NOTE: Forcing CMake to run for each package.
----------------------------------------------------------
[build] Found '12' packages in 0.0 seconds.                                    
[build] Updating package table.                                                
Starting  >>> catkin_tools_prebuild                                            
Finished  <<< catkin_tools_prebuild                             [ 1.6 seconds ]
Starting  >>> catkin_simple                                                    
Starting  >>> mav_msgs                                                         
Finished  <<< catkin_simple                                     [ 1.9 seconds ]
Starting  >>> cgal_catkin                                                      
Starting  >>> mav_2d_coverage_planning_benchmark                               
Starting  >>> polygon_coverage_solvers                                         
Finished  <<< mav_msgs                                          [ 4.8 seconds ]
Starting  >>> mav_planning_msgs                                                
Finished  <<< mav_2d_coverage_planning_benchmark                [ 4.1 seconds ]
Finished  <<< mav_planning_msgs                                 [ 4.3 seconds ]
Finished  <<< polygon_coverage_solvers                          [ 43.0 seconds ]
________________________________________________________________________________________________________________________________________
Warnings   << cgal_catkin:make /home/simon/catkin_ws/logs/cgal_catkin/build.make.000.log                                                
Cloning into 'cgal_src'...
Checking out files: 100% (15950/15950), done.
Note: checking out 'releases/CGAL-4.14-beta4'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 0c40d4356e Merge pull request #3805 from maxGimeno/Internal_nt_for_arm-GF
== CMake setup ==
== CMake setup (DONE) ==

== Setting paths ==
== Setting paths (DONE) ==

== Generate version files ==
== Generate version files (DONE) ==

== Detect external libraries ==
== Detect external libraries (DONE) ==

== Write compiler_config.h ==
== Write compiler_config.h (DONE) ==

== Generating build files ==
Configuring libCGAL
libCGAL is configured
Configuring libCGAL_Core
libCGAL_Core is configured
Configuring libCGAL_ImageIO
libCGAL_ImageIO is configured
Configuring libCGAL_Qt5
libCGAL_Qt5 is configured
== Generating build files (DONE) ==

CMake Warning at Installation/src/CMakeLists.txt:48 (add_library):
  Cannot generate a safe runtime search path for target CGAL_Qt5 because
  files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libmpfr.so.6] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/simon/anaconda3/lib
    runtime library [libgmp.so.10] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/simon/anaconda3/lib

  Some of these libraries may not be found correctly.
Call Stack (most recent call first):
  GraphicsView/src/CGAL_Qt5/CMakeLists.txt:17 (collect_cgal_library)


make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
cd /home/simon/catkin_ws/build/cgal_catkin; catkin build --get-env cgal_catkin | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
........................................................................................................................................
Finished  <<< cgal_catkin                                       [ 13 minutes and 18.7 seconds ]                                         
Starting  >>> polygon_coverage_geometry                                                                                                 
Finished  <<< polygon_coverage_geometry                         [ 44.5 seconds ]                                                        
Starting  >>> polygon_coverage_msgs                                                                                                     
Starting  >>> polygon_coverage_planners                                                                                                 
Finished  <<< polygon_coverage_msgs                             [ 12.0 seconds ]                                                        
Starting  >>> rviz_polygon_tool                                                                                                         
Finished  <<< rviz_polygon_tool                                 [ 17.1 seconds ]                                                        
Finished  <<< polygon_coverage_planners                         [ 37.9 seconds ]                                                        
Starting  >>> polygon_coverage_ros                                                                                                      
________________________________________________________________________________________________________________________________________
Errors     << polygon_coverage_ros:cmake /home/simon/catkin_ws/logs/polygon_coverage_ros/build.cmake.000.log                            
CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:415 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:593 (_pkg_check_modules_internal)
  CMakeLists.txt:26 (pkg_check_modules)


cd /home/simon/catkin_ws/build/polygon_coverage_ros; catkin build --get-env polygon_coverage_ros | catkin env -si  /usr/bin/cmake /home/simon/catkin_ws/src/polygon_coverage_planning/polygon_coverage_ros --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/simon/catkin_ws/devel/.private/polygon_coverage_ros -DCMAKE_INSTALL_PREFIX=/home/simon/catkin_ws/install; cd -
........................................................................................................................................
Failed     << polygon_coverage_ros:cmake                        [ Exited with code 1 ]                                                  
Failed    <<< polygon_coverage_ros                              [ 2.3 seconds ]                                                         
[build] Summary: 11 of 12 packages succeeded.                                                                                           
[build]   Ignored:   1 packages were skipped or are blacklisted.                                                                        
[build]   Warnings:  1 packages succeeded with warnings.                                                                                
[build]   Abandoned: None.                                                                                                              
[build]   Failed:    1 packages failed.                                                                                                 
[build] Runtime: 14 minutes and 47.4 seconds total.                                                                                     
[build] Note: Workspace packages have changed, please re-source setup files to use them.

When I launch the node I get the following, with the error message. The application starts nevertheless, but I do not think it works as intended, as I can not publish a polygon and get to the Boustrophedon decompostion. Thank you very much for your help!

(base) simon@simon-ThinkPad-T480:~$ roslaunch polygon_coverage_ros coverage_planner.launch
... logging to /home/simon/.ros/log/6509a7f2-ac91-11e9-a1bc-181dea02845b/roslaunch-simon-ThinkPad-T480-17441.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://simon-ThinkPad-T480:33609/

SUMMARY
========

CLEAR PARAMETERS
 * /coverage_planner/

PARAMETERS
 * /coverage_planner/a_max: 1.0
 * /coverage_planner/cost_function_type: 1
 * /coverage_planner/decomposition_type: 0
 * /coverage_planner/latch_topics: True
 * /coverage_planner/lateral_footprint: 1.0
 * /coverage_planner/lateral_fov: 0.84
 * /coverage_planner/lateral_overlap: 0.6
 * /coverage_planner/offset_polygons: False
 * /coverage_planner/polygon/header/frame_id: world
 * /coverage_planner/polygon/header/seq: 0
 * /coverage_planner/polygon/header/stamp/nsecs: 0
 * /coverage_planner/polygon/header/stamp/secs: 0
 * /coverage_planner/polygon/polygon/holes: [{'points': [{'y'...
 * /coverage_planner/polygon/polygon/hull/points: [{'y': 0.0, 'x': ...
 * /coverage_planner/publish_plan_on_planning_complete: False
 * /coverage_planner/publish_visualization_on_planning_complete: True
 * /coverage_planner/sensor_model_type: 1
 * /coverage_planner/set_polygon_from_rviz: True
 * /coverage_planner/set_start_goal_from_rviz: True
 * /coverage_planner/sweep_single_direction: False
 * /coverage_planner/v_max: 3.0
 * /coverage_planner/wall_distance: 0.0
 * /rosdistro: melodic
 * /rosversion: 1.14.3

NODES
  /
    coverage_planner (polygon_coverage_ros/coverage_planner)
    rviz (rviz/rviz)

auto-starting new master
process[master]: started with pid [17451]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 6509a7f2-ac91-11e9-a1bc-181dea02845b
process[rosout-1]: started with pid [17462]
started core service [/rosout]
process[rviz-2]: started with pid [17470]
ERROR: cannot launch node of type [polygon_coverage_ros/coverage_planner]: can't locate node [coverage_planner] in package [polygon_coverage_ros]

Build failure

Hi, I ran all the commands as per the readme file but couldn't seem to resolve this issue. My builds are failing due to a symlink error. Only 3/9 packages are successfully installed. It would be great help if you could tell me how to fix it!

This is the error message:

Errors << polygon_coverage_solvers:symlink /home/maithili/polygon_ws/logs/polygon_coverage_solvers/build.symlink.020.log
Could not create symlink /home/maithili/polygon_ws/devel/lib/System.Native referencing /home/maithili/polygon_ws/devel/.private/polygon_coverage_solvers/lib/System.Native
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/catkin_tools/execution/stages.py", line 174, in function_proxy
return function(logger, event_queue, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/catkin_tools/jobs/catkin.py", line 308, in link_devel_products
os.symlink(source_file, dest_file)
OSError: [Errno 17] File exists

Stage symlink failed with arguments:
package: {'buildtool_export_depends': [], 'test_depends': [], 'exec_depends': [Dependency(name='rosconsole', evaluated_condition=True), Dependency(name='roslib', evaluated_condition=True)], 'build_depends': [Dependency(name='rosconsole', evaluated_condition=True), Dependency(name='roslib', evaluated_condition=True)], 'licenses': ['GPL'], 'group_depends': [], 'doc_depends': [], 'filename': '/home/maithili/polygon_ws/src/polygon_coverage_planning/polygon_coverage_solvers/package.xml', 'version': '0.0.0', 'package_format': 2, 'exports': [], 'description': u'Solvers for the underlying graph optimization problems.', 'build_export_depends': [Dependency(name='rosconsole', evaluated_condition=True), Dependency(name='roslib', evaluated_condition=True)], 'maintainers': [<catkin_pkg.package.Person object at 0x7f9b3a1dbfd0>], 'member_of_groups': [], 'authors': [<catkin_pkg.package.Person object at 0x7f9b3a466090>], 'conflicts': [], 'buildtool_depends': [Dependency(name='catkin', evaluated_condition=True), Dependency(name='catkin_simple', evaluated_condition=True)], 'version_compatibility': None, 'replaces': [], 'name': 'polygon_coverage_solvers', 'urls': []}
metadata_path: /home/maithili/polygon_ws/.catkin_tools/profiles/default
devel_manifest_path: /home/maithili/polygon_ws/.catkin_tools/profiles/default/packages/polygon_coverage_solvers
prebuild: False
package_path: polygon_coverage_planning/polygon_coverage_solvers
dest_devel_path: /home/maithili/polygon_ws/devel
source_devel_path: /home/maithili/polygon_ws/devel/.private/polygon_coverage_solvers

catkin build fail

Hi everyone,

unfortunately I ran into problems when trying to execute catkin build. It appears to be related to missing eigen-XX.cmake files. Could be the error coming up while executing "wstool update" contribute to this problem? I have followed the description in the readme.md but still encounter this problem. Could you please help me? Thank you very much!

Here is what I get when executing wstool update

(base) simon@simon-ThinkPad-T480:~/catkin_ws/src$ wstool update
[catkin_simple] Updating /home/simon/catkin_ws/src/catkin_simple
[catkin_simple] Done.
[cgal_catkin] Updating /home/simon/catkin_ws/src/cgal_catkin
WARNING [vcstools] Command failed: 'git checkout feature/4.14'
 run at: '/home/simon/catkin_ws/src/cgal_catkin'
 errcode: 1:
error: pathspec 'feature/4.14' did not match any file(s) known to git.
[/vcstools]
[mav_comm] Updating /home/simon/catkin_ws/src/mav_comm
[mav_comm] Done.
[mav_trajectory_generation] Updating /home/simon/catkin_ws/src/mav_trajectory_generation
[mav_trajectory_generation] Done.
Exception caught during install: Error processing 'cgal_catkin' : [cgal_catkin] Update Failed of /home/simon/catkin_ws/src/cgal_catkin

ERROR in config: Error processing 'cgal_catkin' : [cgal_catkin] Update Failed of /home/simon/catkin_ws/src/cgal_catkin

And for catkin build:

(base) simon@simon-ThinkPad-T480:~/catkin_ws/src$ catkin build
----------------------------------------------------------
Profile:                     default
Extending:        [explicit] /opt/ros/melodic
Workspace:                   /home/simon/catkin_ws
----------------------------------------------------------
Build Space:        [exists] /home/simon/catkin_ws/build
Devel Space:        [exists] /home/simon/catkin_ws/devel
Install Space:      [unused] /home/simon/catkin_ws/install
Log Space:          [exists] /home/simon/catkin_ws/logs
Source Space:       [exists] /home/simon/catkin_ws/src
DESTDIR:            [unused] None
----------------------------------------------------------
Devel Space Layout:          linked
Install Space Layout:        None
----------------------------------------------------------
Additional CMake Args:       None
Additional Make Args:        None
Additional catkin Make Args: None
Internal Make Job Server:    True
Cache Job Environments:      False
----------------------------------------------------------
Whitelisted Packages:        None
Blacklisted Packages:        None
----------------------------------------------------------
Workspace configuration appears valid.
----------------------------------------------------------
[build] Found '18' packages in 0.0 seconds.                                                                                                                                                                       
[build] Package table is up to date.                                                                                                                                                                              
Starting  >>> catkin_simple                                                                                                                                                                                       
Starting  >>> mav_msgs                                                                                                                                                                                            
Finished  <<< catkin_simple                                     [ 0.1 seconds ]                                                                                                                                   
Starting  >>> cuckoo_time_translator_algorithms                                                                                                                                                                   
Starting  >>> mav_2d_coverage_planning_benchmark                                                                                                                                                                  
Starting  >>> mav_visualization                                                                                                                                                                                   
Starting  >>> polygon_coverage_solvers                                                                                                                                                                            
Finished  <<< polygon_coverage_solvers                          [ 0.2 seconds ]                                                                                                                                   
Starting  >>> polygon_coverage_geometry                                                                                                                                                                           
Finished  <<< cuckoo_time_translator_algorithms                 [ 0.3 seconds ]                                                                                                                                   
Starting  >>> cuckoo_time_translator                                                                                                                                                                              
Starting  >>> cuckoo_time_translator_python                                                                                                                                                                       
Finished  <<< mav_msgs                                          [ 0.5 seconds ]                                                                                                                                   
Starting  >>> mav_planning_msgs                                                                                                                                                                                   
Starting  >>> mav_trajectory_generation                                                                                                                                                                           
Finished  <<< mav_2d_coverage_planning_benchmark                [ 0.2 seconds ]                                                                                                                                   
__________________________________________________________________________________________________________________________________________________________________________________________________________________
Errors     << cuckoo_time_translator:make /home/simon/catkin_ws/logs/cuckoo_time_translator/build.make.001.log                                                                                                    
Traceback (most recent call last):
  File "/home/simon/catkin_ws/src/cgal_catkin/cuckoo_time_translator/cfg/DeviceTimeTranslator.cfg", line 4, in <module>
    from dynamic_reconfigure.parameter_generator_catkin import *
  File "/opt/ros/melodic/lib/python2.7/dist-packages/dynamic_reconfigure/__init__.py", line 38, in <module>
    import roslib
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
    from roslib.launcher import load_manifest
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
    import rospkg
ModuleNotFoundError: No module named 'rospkg'
make[2]: *** [/home/simon/catkin_ws/devel/.private/cuckoo_time_translator/include/cuckoo_time_translator/DeviceTimeTranslatorConfig.h] Error 1
make[2]: *** Waiting for unfinished jobs....
Traceback (most recent call last):
  File "/home/simon/catkin_ws/src/cgal_catkin/cuckoo_time_translator/cfg/MockCuckooClock.cfg", line 4, in <module>
    from dynamic_reconfigure.parameter_generator_catkin import *
  File "/opt/ros/melodic/lib/python2.7/dist-packages/dynamic_reconfigure/__init__.py", line 38, in <module>
    import roslib
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
    from roslib.launcher import load_manifest
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
    import rospkg
ModuleNotFoundError: No module named 'rospkg'
make[2]: *** [/home/simon/catkin_ws/devel/.private/cuckoo_time_translator/include/cuckoo_time_translator/MockCuckooClockConfig.h] Error 1
make[1]: *** [CMakeFiles/cuckoo_time_translator_gencfg.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
cd /home/simon/catkin_ws/build/cuckoo_time_translator; catkin build --get-env cuckoo_time_translator | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
..................................................................................................................................................................................................................
Failed     << cuckoo_time_translator:make                       [ Exited with code 2 ]                                                                                                                            
Failed    <<< cuckoo_time_translator                            [ 0.3 seconds ]                                                                                                                                   
Abandoned <<< mav_trajectory_generation_ros                     [ Unrelated job failed ]                                                                                                                          
Abandoned <<< mav_trajectory_generation_example                 [ Unrelated job failed ]                                                                                                                          
Abandoned <<< polygon_coverage_msgs                             [ Unrelated job failed ]                                                                                                                          
Abandoned <<< polygon_coverage_planners                         [ Unrelated job failed ]                                                                                                                          
Abandoned <<< polygon_coverage_ros                              [ Unrelated job failed ]                                                                                                                          
Abandoned <<< rviz_polygon_tool                                 [ Unrelated job failed ]                                                                                                                          
Finished  <<< cuckoo_time_translator_python                     [ 0.3 seconds ]                                                                                                                                   
__________________________________________________________________________________________________________________________________________________________________________________________________________________
Errors     << mav_visualization:cmake /home/simon/catkin_ws/logs/mav_visualization/build.cmake.002.log                                                                                                            
CMake Error at /home/simon/catkin_ws/devel/share/catkin_simple/cmake/catkin_simple-extras.cmake:38 (find_package):
  By not providing "Findeigen_catkin.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "eigen_catkin", but CMake did not find one.

  Could not find a package configuration file provided by "eigen_catkin" with
  any of the following names:

    eigen_catkinConfig.cmake
    eigen_catkin-config.cmake

  Add the installation prefix of "eigen_catkin" to CMAKE_PREFIX_PATH or set
  "eigen_catkin_DIR" to a directory containing one of the above files.  If
  "eigen_catkin" provides a separate development package or SDK, be sure it
  has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:5 (catkin_simple)


cd /home/simon/catkin_ws/build/mav_visualization; catkin build --get-env mav_visualization | catkin env -si  /usr/bin/cmake /home/simon/catkin_ws/src/mav_trajectory_generation/mav_visualization --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/simon/catkin_ws/devel/.private/mav_visualization -DCMAKE_INSTALL_PREFIX=/home/simon/catkin_ws/install; cd -
..................................................................................................................................................................................................................
Failed     << mav_visualization:cmake                           [ Exited with code 1 ]                                                                                                                            
Failed    <<< mav_visualization                                 [ 0.8 seconds ]                                                                                                                                   
__________________________________________________________________________________________________________________________________________________________________________________________________________________
Errors     << polygon_coverage_geometry:cmake /home/simon/catkin_ws/logs/polygon_coverage_geometry/build.cmake.001.log                                                                                            
CMake Error at /home/simon/catkin_ws/devel/share/catkin_simple/cmake/catkin_simple-extras.cmake:38 (find_package):
  By not providing "Findcgal_catkin.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "cgal_catkin", but CMake did not find one.

  Could not find a package configuration file provided by "cgal_catkin" with
  any of the following names:

    cgal_catkinConfig.cmake
    cgal_catkin-config.cmake

  Add the installation prefix of "cgal_catkin" to CMAKE_PREFIX_PATH or set
  "cgal_catkin_DIR" to a directory containing one of the above files.  If
  "cgal_catkin" provides a separate development package or SDK, be sure it
  has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:5 (catkin_simple)


cd /home/simon/catkin_ws/build/polygon_coverage_geometry; catkin build --get-env polygon_coverage_geometry | catkin env -si  /usr/bin/cmake /home/simon/catkin_ws/src/polygon_coverage_planning/polygon_coverage_geometry --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/simon/catkin_ws/devel/.private/polygon_coverage_geometry -DCMAKE_INSTALL_PREFIX=/home/simon/catkin_ws/install; cd -
..................................................................................................................................................................................................................
Failed     << polygon_coverage_geometry:cmake                   [ Exited with code 1 ]                                                                                                                            
Failed    <<< polygon_coverage_geometry                         [ 0.8 seconds ]                                                                                                                                   
Finished  <<< mav_planning_msgs                                 [ 0.6 seconds ]                                                                                                                                   
__________________________________________________________________________________________________________________________________________________________________________________________________________________
Errors     << mav_trajectory_generation:cmake /home/simon/catkin_ws/logs/mav_trajectory_generation/build.cmake.002.log                                                                                            
CMake Error at /home/simon/catkin_ws/devel/share/catkin_simple/cmake/catkin_simple-extras.cmake:38 (find_package):
  By not providing "Findeigen_catkin.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "eigen_catkin", but CMake did not find one.

  Could not find a package configuration file provided by "eigen_catkin" with
  any of the following names:

    eigen_catkinConfig.cmake
    eigen_catkin-config.cmake

  Add the installation prefix of "eigen_catkin" to CMAKE_PREFIX_PATH or set
  "eigen_catkin_DIR" to a directory containing one of the above files.  If
  "eigen_catkin" provides a separate development package or SDK, be sure it
  has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:5 (catkin_simple)


cd /home/simon/catkin_ws/build/mav_trajectory_generation; catkin build --get-env mav_trajectory_generation | catkin env -si  /usr/bin/cmake /home/simon/catkin_ws/src/mav_trajectory_generation/mav_trajectory_generation --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/simon/catkin_ws/devel/.private/mav_trajectory_generation -DCMAKE_INSTALL_PREFIX=/home/simon/catkin_ws/install; cd -
..................................................................................................................................................................................................................
Failed     << mav_trajectory_generation:cmake                   [ Exited with code 1 ]                                                                                                                            
Failed    <<< mav_trajectory_generation                         [ 0.8 seconds ]                                                                                                                                   
[build] Summary: 7 of 17 packages succeeded.                                                                                                                                                                      
[build]   Ignored:   1 packages were skipped or are blacklisted.                                                                                                                                                  
[build]   Warnings:  None.                                                                                                                                                                                        
[build]   Abandoned: 6 packages were abandoned.                                                                                                                                                                   
[build]   Failed:    4 packages failed.                                                                                                                                                                           
[build] Runtime: 1.7 seconds total.                                                                                                                                                                               
(base) simon@simon-ThinkPad-T480:~/catkin_ws/src$ wstool update
[catkin_simple] Updating /home/simon/catkin_ws/src/catkin_simple
[catkin_simple] Done.
[cgal_catkin] Updating /home/simon/catkin_ws/src/cgal_catkin
WARNING [vcstools] Command failed: 'git checkout feature/4.14'
 run at: '/home/simon/catkin_ws/src/cgal_catkin'
 errcode: 1:
error: pathspec 'feature/4.14' did not match any file(s) known to git.
[/vcstools]
[mav_comm] Updating /home/simon/catkin_ws/src/mav_comm
[mav_comm] Done.
[mav_trajectory_generation] Updating /home/simon/catkin_ws/src/mav_trajectory_generation
[mav_trajectory_generation] Done.
Exception caught during install: Error processing 'cgal_catkin' : [cgal_catkin] Update Failed of /home/simon/catkin_ws/src/cgal_catkin

ERROR in config: Error processing 'cgal_catkin' : [cgal_catkin] Update Failed of /home/simon/catkin_ws/src/cgal_catkin

(base) simon@simon-ThinkPad-T480:~/catkin_ws/src$ 

Error while trying to solve

Hi, I am facing the following error at the Start solving GTSP stage when using both the master branch as well as Release 2.1.0.

Running ROS Noetic

[ INFO] [1694411265.128227484]: Start solving GTSP

Unhandled Exception:
System.TypeInitializationException: The type initializer for 'GkMa.Helper' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Random' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Sys' threw an exception. ---> System.DllNotFoundException: System.Native assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Interop+Sys.LChflagsCanSetHiddenFlag()
  at Interop+Sys..cctor () [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
   --- End of inner exception stack trace ---
  at Interop.GetRandomBytes (System.Byte* buffer, System.Int32 length) [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.Random.GenerateGlobalSeed () [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.Random..cctor () [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
   --- End of inner exception stack trace ---
  at GkMa.Helper..cctor () [0x00000] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
   --- End of inner exception stack trace ---
  at GkMa.OurHeuristic.Types.Permutation.GenerateRandom (System.Int32 n) [0x0000e] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Operators.RandomGenerate.GenerateKeyPure () [0x0000b] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Operators.Generate.GenerateKey () [0x00000] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Types.Tour..ctor (GkMa.OurHeuristic.Operators.Generate generate) [0x00020] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Algorithm.FirstGeneration (GkMa.OurHeuristic.Types.Generation cur) [0x00013] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.GeneticAlgorithm.Run () [0x0000d] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurSolver.Solve () [0x00027] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'GkMa.Helper' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Random' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Sys' threw an exception. ---> System.DllNotFoundException: System.Native assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Interop+Sys.LChflagsCanSetHiddenFlag()
  at Interop+Sys..cctor () [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
   --- End of inner exception stack trace ---
  at Interop.GetRandomBytes (System.Byte* buffer, System.Int32 length) [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.Random.GenerateGlobalSeed () [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.Random..cctor () [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
   --- End of inner exception stack trace ---
  at GkMa.Helper..cctor () [0x00000] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
   --- End of inner exception stack trace ---
  at GkMa.OurHeuristic.Types.Permutation.GenerateRandom (System.Int32 n) [0x0000e] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Operators.RandomGenerate.GenerateKeyPure () [0x0000b] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Operators.Generate.GenerateKey () [0x00000] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Types.Tour..ctor (GkMa.OurHeuristic.Operators.Generate generate) [0x00020] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.Algorithm.FirstGeneration (GkMa.OurHeuristic.Types.Generation cur) [0x00013] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurHeuristic.GeneticAlgorithm.Run () [0x0000d] in <f7cacbf5176e46a2b3004d0aab038a40>:0 
  at GkMa.OurSolver.Solve () [0x00027] in <f7cacbf5176e46a2b3004d0aab038a40>:0 

Is there something I am missing here? I have checked to make sure that mono and all the dependencies have been installed correctly.

Thanks in advance!

Can't echo /waypoint_list

rostopic echo /waypoint_list informs me it is not published yet.
How to find the pose array generated .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.