00001
00002 #ifndef FAST_PLANE_DETECTION_MESSAGE_PLANE_H
00003 #define FAST_PLANE_DETECTION_MESSAGE_PLANE_H
00004 #include <string>
00005 #include <vector>
00006 #include <map>
00007 #include <ostream>
00008 #include "ros/serialization.h"
00009 #include "ros/builtin_message_traits.h"
00010 #include "ros/message_operations.h"
00011 #include "ros/time.h"
00012
00013 #include "ros/macros.h"
00014
00015 #include "ros/assert.h"
00016
00017 #include "geometry_msgs/PoseStamped.h"
00018 #include "geometry_msgs/PointStamped.h"
00019 #include "geometry_msgs/Vector3Stamped.h"
00020 #include "geometry_msgs/PointStamped.h"
00021 #include "geometry_msgs/Point32.h"
00022 #include "geometry_msgs/Point32.h"
00023 #include "geometry_msgs/Point32.h"
00024 #include "geometry_msgs/Point32.h"
00025
00026 namespace fast_plane_detection
00027 {
00028 template <class ContainerAllocator>
00029 struct Plane_ {
00030 typedef Plane_<ContainerAllocator> Type;
00031
00032 Plane_()
00033 : pose()
00034 , plane_point()
00035 , normal()
00036 , slave_point()
00037 , top_left()
00038 , top_right()
00039 , bottom_left()
00040 , bottom_right()
00041 , result(0)
00042 , percentage_inliers(0.0)
00043 , percentage_disp_inliers(0)
00044 , percentage_valid_disp(0)
00045 , error(0.0)
00046 {
00047 }
00048
00049 Plane_(const ContainerAllocator& _alloc)
00050 : pose(_alloc)
00051 , plane_point(_alloc)
00052 , normal(_alloc)
00053 , slave_point(_alloc)
00054 , top_left(_alloc)
00055 , top_right(_alloc)
00056 , bottom_left(_alloc)
00057 , bottom_right(_alloc)
00058 , result(0)
00059 , percentage_inliers(0.0)
00060 , percentage_disp_inliers(0)
00061 , percentage_valid_disp(0)
00062 , error(0.0)
00063 {
00064 }
00065
00066 typedef ::geometry_msgs::PoseStamped_<ContainerAllocator> _pose_type;
00067 ::geometry_msgs::PoseStamped_<ContainerAllocator> pose;
00068
00069 typedef ::geometry_msgs::PointStamped_<ContainerAllocator> _plane_point_type;
00070 ::geometry_msgs::PointStamped_<ContainerAllocator> plane_point;
00071
00072 typedef ::geometry_msgs::Vector3Stamped_<ContainerAllocator> _normal_type;
00073 ::geometry_msgs::Vector3Stamped_<ContainerAllocator> normal;
00074
00075 typedef ::geometry_msgs::PointStamped_<ContainerAllocator> _slave_point_type;
00076 ::geometry_msgs::PointStamped_<ContainerAllocator> slave_point;
00077
00078 typedef ::geometry_msgs::Point32_<ContainerAllocator> _top_left_type;
00079 ::geometry_msgs::Point32_<ContainerAllocator> top_left;
00080
00081 typedef ::geometry_msgs::Point32_<ContainerAllocator> _top_right_type;
00082 ::geometry_msgs::Point32_<ContainerAllocator> top_right;
00083
00084 typedef ::geometry_msgs::Point32_<ContainerAllocator> _bottom_left_type;
00085 ::geometry_msgs::Point32_<ContainerAllocator> bottom_left;
00086
00087 typedef ::geometry_msgs::Point32_<ContainerAllocator> _bottom_right_type;
00088 ::geometry_msgs::Point32_<ContainerAllocator> bottom_right;
00089
00090 typedef int32_t _result_type;
00091 int32_t result;
00092
00093 typedef float _percentage_inliers_type;
00094 float percentage_inliers;
00095
00096 typedef int32_t _percentage_disp_inliers_type;
00097 int32_t percentage_disp_inliers;
00098
00099 typedef int32_t _percentage_valid_disp_type;
00100 int32_t percentage_valid_disp;
00101
00102 typedef float _error_type;
00103 float error;
00104
00105 enum { SUCCESS = 1 };
00106 enum { FEW_INLIERS = 2 };
00107 enum { NO_PLANE = 3 };
00108 enum { OTHER_ERROR = 4 };
00109
00110 typedef boost::shared_ptr< ::fast_plane_detection::Plane_<ContainerAllocator> > Ptr;
00111 typedef boost::shared_ptr< ::fast_plane_detection::Plane_<ContainerAllocator> const> ConstPtr;
00112 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00113 };
00114 typedef ::fast_plane_detection::Plane_<std::allocator<void> > Plane;
00115
00116 typedef boost::shared_ptr< ::fast_plane_detection::Plane> PlanePtr;
00117 typedef boost::shared_ptr< ::fast_plane_detection::Plane const> PlaneConstPtr;
00118
00119
00120 template<typename ContainerAllocator>
00121 std::ostream& operator<<(std::ostream& s, const ::fast_plane_detection::Plane_<ContainerAllocator> & v)
00122 {
00123 ros::message_operations::Printer< ::fast_plane_detection::Plane_<ContainerAllocator> >::stream(s, "", v);
00124 return s;}
00125
00126 }
00127
00128 namespace ros
00129 {
00130 namespace message_traits
00131 {
00132 template<class ContainerAllocator> struct IsMessage< ::fast_plane_detection::Plane_<ContainerAllocator> > : public TrueType {};
00133 template<class ContainerAllocator> struct IsMessage< ::fast_plane_detection::Plane_<ContainerAllocator> const> : public TrueType {};
00134 template<class ContainerAllocator>
00135 struct MD5Sum< ::fast_plane_detection::Plane_<ContainerAllocator> > {
00136 static const char* value()
00137 {
00138 return "e876d3c2247eeda0c0207fae33ce01a9";
00139 }
00140
00141 static const char* value(const ::fast_plane_detection::Plane_<ContainerAllocator> &) { return value(); }
00142 static const uint64_t static_value1 = 0xe876d3c2247eeda0ULL;
00143 static const uint64_t static_value2 = 0xc0207fae33ce01a9ULL;
00144 };
00145
00146 template<class ContainerAllocator>
00147 struct DataType< ::fast_plane_detection::Plane_<ContainerAllocator> > {
00148 static const char* value()
00149 {
00150 return "fast_plane_detection/Plane";
00151 }
00152
00153 static const char* value(const ::fast_plane_detection::Plane_<ContainerAllocator> &) { return value(); }
00154 };
00155
00156 template<class ContainerAllocator>
00157 struct Definition< ::fast_plane_detection::Plane_<ContainerAllocator> > {
00158 static const char* value()
00159 {
00160 return "# Informs that a plane has been detected at a given location\n\
00161 \n\
00162 # The pose gives you the transform that take you to the coordinate system\n\
00163 # of the plane, with the origin somewhere in the plane and the \n\
00164 # z axis normal to the plane\n\
00165 geometry_msgs/PoseStamped pose\n\
00166 \n\
00167 # Point + normal vector of the plane\n\
00168 geometry_msgs/PointStamped plane_point\n\
00169 geometry_msgs/Vector3Stamped normal\n\
00170 geometry_msgs/PointStamped slave_point\n\
00171 \n\
00172 # These values give you the observed extents of the plane, along x and y,\n\
00173 # in the plane's own coordinate system (above)\n\
00174 # there is no guarantee that the origin of the plane coordinate system is\n\
00175 # inside the boundary defined by these values. \n\
00176 geometry_msgs/Point32 top_left\n\
00177 geometry_msgs/Point32 top_right\n\
00178 \n\
00179 geometry_msgs/Point32 bottom_left\n\
00180 geometry_msgs/Point32 bottom_right\n\
00181 \n\
00182 # There is no guarantee that the plane doe NOT extend further than these \n\
00183 # values; this is just as far as we've observed it.\n\
00184 \n\
00185 # Whether the detection has succeeded or failed\n\
00186 int32 SUCCESS = 1\n\
00187 int32 FEW_INLIERS = 2\n\
00188 int32 NO_PLANE = 3\n\
00189 int32 OTHER_ERROR = 4\n\
00190 int32 result\n\
00191 \n\
00192 # inliers over whole region\n\
00193 float32 percentage_inliers\n\
00194 # inliers of valid disparities\n\
00195 int32 percentage_disp_inliers\n\
00196 # number of valid disparities\n\
00197 int32 percentage_valid_disp\n\
00198 \n\
00199 # confidence indicators of plane detection\n\
00200 # mean squared error\n\
00201 float32 error\n\
00202 \n\
00203 ================================================================================\n\
00204 MSG: geometry_msgs/PoseStamped\n\
00205 # A Pose with reference coordinate frame and timestamp\n\
00206 Header header\n\
00207 Pose pose\n\
00208 \n\
00209 ================================================================================\n\
00210 MSG: std_msgs/Header\n\
00211 # Standard metadata for higher-level stamped data types.\n\
00212 # This is generally used to communicate timestamped data \n\
00213 # in a particular coordinate frame.\n\
00214 # \n\
00215 # sequence ID: consecutively increasing ID \n\
00216 uint32 seq\n\
00217 #Two-integer timestamp that is expressed as:\n\
00218 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00219 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00220 # time-handling sugar is provided by the client library\n\
00221 time stamp\n\
00222 #Frame this data is associated with\n\
00223 # 0: no frame\n\
00224 # 1: global frame\n\
00225 string frame_id\n\
00226 \n\
00227 ================================================================================\n\
00228 MSG: geometry_msgs/Pose\n\
00229 # A representation of pose in free space, composed of postion and orientation. \n\
00230 Point position\n\
00231 Quaternion orientation\n\
00232 \n\
00233 ================================================================================\n\
00234 MSG: geometry_msgs/Point\n\
00235 # This contains the position of a point in free space\n\
00236 float64 x\n\
00237 float64 y\n\
00238 float64 z\n\
00239 \n\
00240 ================================================================================\n\
00241 MSG: geometry_msgs/Quaternion\n\
00242 # This represents an orientation in free space in quaternion form.\n\
00243 \n\
00244 float64 x\n\
00245 float64 y\n\
00246 float64 z\n\
00247 float64 w\n\
00248 \n\
00249 ================================================================================\n\
00250 MSG: geometry_msgs/PointStamped\n\
00251 # This represents a Point with reference coordinate frame and timestamp\n\
00252 Header header\n\
00253 Point point\n\
00254 \n\
00255 ================================================================================\n\
00256 MSG: geometry_msgs/Vector3Stamped\n\
00257 # This represents a Vector3 with reference coordinate frame and timestamp\n\
00258 Header header\n\
00259 Vector3 vector\n\
00260 \n\
00261 ================================================================================\n\
00262 MSG: geometry_msgs/Vector3\n\
00263 # This represents a vector in free space. \n\
00264 \n\
00265 float64 x\n\
00266 float64 y\n\
00267 float64 z\n\
00268 ================================================================================\n\
00269 MSG: geometry_msgs/Point32\n\
00270 # This contains the position of a point in free space(with 32 bits of precision).\n\
00271 # It is recommeded to use Point wherever possible instead of Point32. \n\
00272 # \n\
00273 # This recommendation is to promote interoperability. \n\
00274 #\n\
00275 # This message is designed to take up less space when sending\n\
00276 # lots of points at once, as in the case of a PointCloud. \n\
00277 \n\
00278 float32 x\n\
00279 float32 y\n\
00280 float32 z\n\
00281 ";
00282 }
00283
00284 static const char* value(const ::fast_plane_detection::Plane_<ContainerAllocator> &) { return value(); }
00285 };
00286
00287 }
00288 }
00289
00290 namespace ros
00291 {
00292 namespace serialization
00293 {
00294
00295 template<class ContainerAllocator> struct Serializer< ::fast_plane_detection::Plane_<ContainerAllocator> >
00296 {
00297 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00298 {
00299 stream.next(m.pose);
00300 stream.next(m.plane_point);
00301 stream.next(m.normal);
00302 stream.next(m.slave_point);
00303 stream.next(m.top_left);
00304 stream.next(m.top_right);
00305 stream.next(m.bottom_left);
00306 stream.next(m.bottom_right);
00307 stream.next(m.result);
00308 stream.next(m.percentage_inliers);
00309 stream.next(m.percentage_disp_inliers);
00310 stream.next(m.percentage_valid_disp);
00311 stream.next(m.error);
00312 }
00313
00314 ROS_DECLARE_ALLINONE_SERIALIZER;
00315 };
00316 }
00317 }
00318
00319 namespace ros
00320 {
00321 namespace message_operations
00322 {
00323
00324 template<class ContainerAllocator>
00325 struct Printer< ::fast_plane_detection::Plane_<ContainerAllocator> >
00326 {
00327 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::fast_plane_detection::Plane_<ContainerAllocator> & v)
00328 {
00329 s << indent << "pose: ";
00330 s << std::endl;
00331 Printer< ::geometry_msgs::PoseStamped_<ContainerAllocator> >::stream(s, indent + " ", v.pose);
00332 s << indent << "plane_point: ";
00333 s << std::endl;
00334 Printer< ::geometry_msgs::PointStamped_<ContainerAllocator> >::stream(s, indent + " ", v.plane_point);
00335 s << indent << "normal: ";
00336 s << std::endl;
00337 Printer< ::geometry_msgs::Vector3Stamped_<ContainerAllocator> >::stream(s, indent + " ", v.normal);
00338 s << indent << "slave_point: ";
00339 s << std::endl;
00340 Printer< ::geometry_msgs::PointStamped_<ContainerAllocator> >::stream(s, indent + " ", v.slave_point);
00341 s << indent << "top_left: ";
00342 s << std::endl;
00343 Printer< ::geometry_msgs::Point32_<ContainerAllocator> >::stream(s, indent + " ", v.top_left);
00344 s << indent << "top_right: ";
00345 s << std::endl;
00346 Printer< ::geometry_msgs::Point32_<ContainerAllocator> >::stream(s, indent + " ", v.top_right);
00347 s << indent << "bottom_left: ";
00348 s << std::endl;
00349 Printer< ::geometry_msgs::Point32_<ContainerAllocator> >::stream(s, indent + " ", v.bottom_left);
00350 s << indent << "bottom_right: ";
00351 s << std::endl;
00352 Printer< ::geometry_msgs::Point32_<ContainerAllocator> >::stream(s, indent + " ", v.bottom_right);
00353 s << indent << "result: ";
00354 Printer<int32_t>::stream(s, indent + " ", v.result);
00355 s << indent << "percentage_inliers: ";
00356 Printer<float>::stream(s, indent + " ", v.percentage_inliers);
00357 s << indent << "percentage_disp_inliers: ";
00358 Printer<int32_t>::stream(s, indent + " ", v.percentage_disp_inliers);
00359 s << indent << "percentage_valid_disp: ";
00360 Printer<int32_t>::stream(s, indent + " ", v.percentage_valid_disp);
00361 s << indent << "error: ";
00362 Printer<float>::stream(s, indent + " ", v.error);
00363 }
00364 };
00365
00366
00367 }
00368 }
00369
00370 #endif // FAST_PLANE_DETECTION_MESSAGE_PLANE_H
00371