#ifndef COSTMAP_2D_COST_VALUES_H_MSG
#define COSTMAP_2D_COST_VALUES_H_MSG
/** Provides a mapping for often used cost values */
#include<vector>
#include<string>
#include<chrono>

namespace costmap_2d
{
 struct Header
 {
   uint32_t seq;
   std::chrono::system_clock::time_point stamp;
   std::string frame_id;
 };

 struct Point
 {
    double x;
    double y;
    double z;
 };

 struct Point32
 {
    float x;
    float y;
    float z;
 };

 struct PointStamped
 {
      Header header;
      Point point;
 };

 struct Polygon
 {
    std::vector<Point32> points;
 };

 struct PolygonStamped
 {
    // std_msgs/Header header;  // Ignored for simplicity
    Polygon polygon;
 };

 struct XmlRpcValue
 {
    std::vector<Point32> points;
 };

 struct PointField
 {
   uint8_t INT8=1;
   uint8_t UINT8=2;
   uint8_t INT16=3;
   uint8_t UINT16=4;
   uint8_t INT32=5;
   uint8_t UINT32=6;
   uint8_t FLOAT32=7;
   uint8_t FLOAT64=8;
   std::string name;
   uint32_t offset;
   uint8_t datatype;
   uint32_t count;
 };

 struct PointCloud2
 {
   Header header;
   uint32_t height;
   uint32_t width;
   std::vector<PointField> fields;
   bool is_bigendian;
   uint32_t point_step;
   uint32_t row_step;
   std::vector<uint8_t> data;
   bool is_dense;
 };

 

}
#endif  // COSTMAP_2D_COST_VALUES_H_MSG
