00001
00002 #ifndef ASCTEC_HL_COMM_MESSAGE_MAV_CTRL_H
00003 #define ASCTEC_HL_COMM_MESSAGE_MAV_CTRL_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 "std_msgs/Header.h"
00018
00019 namespace asctec_hl_comm
00020 {
00021 template <class ContainerAllocator>
00022 struct mav_ctrl_ {
00023 typedef mav_ctrl_<ContainerAllocator> Type;
00024
00025 mav_ctrl_()
00026 : header()
00027 , type(0)
00028 , x(0.0)
00029 , y(0.0)
00030 , z(0.0)
00031 , yaw(0.0)
00032 , v_max_xy(0.0)
00033 , v_max_z(0.0)
00034 {
00035 }
00036
00037 mav_ctrl_(const ContainerAllocator& _alloc)
00038 : header(_alloc)
00039 , type(0)
00040 , x(0.0)
00041 , y(0.0)
00042 , z(0.0)
00043 , yaw(0.0)
00044 , v_max_xy(0.0)
00045 , v_max_z(0.0)
00046 {
00047 }
00048
00049 typedef ::std_msgs::Header_<ContainerAllocator> _header_type;
00050 ::std_msgs::Header_<ContainerAllocator> header;
00051
00052 typedef int8_t _type_type;
00053 int8_t type;
00054
00055 typedef float _x_type;
00056 float x;
00057
00058 typedef float _y_type;
00059 float y;
00060
00061 typedef float _z_type;
00062 float z;
00063
00064 typedef float _yaw_type;
00065 float yaw;
00066
00067 typedef float _v_max_xy_type;
00068 float v_max_xy;
00069
00070 typedef float _v_max_z_type;
00071 float v_max_z;
00072
00073 enum { acceleration = 1 };
00074 enum { velocity = 2 };
00075 enum { position = 3 };
00076 enum { velocity_body = 4 };
00077 enum { position_body = 5 };
00078
00079 typedef boost::shared_ptr< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> > Ptr;
00080 typedef boost::shared_ptr< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> const> ConstPtr;
00081 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00082 };
00083 typedef ::asctec_hl_comm::mav_ctrl_<std::allocator<void> > mav_ctrl;
00084
00085 typedef boost::shared_ptr< ::asctec_hl_comm::mav_ctrl> mav_ctrlPtr;
00086 typedef boost::shared_ptr< ::asctec_hl_comm::mav_ctrl const> mav_ctrlConstPtr;
00087
00088
00089 template<typename ContainerAllocator>
00090 std::ostream& operator<<(std::ostream& s, const ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> & v)
00091 {
00092 ros::message_operations::Printer< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> >::stream(s, "", v);
00093 return s;}
00094
00095 }
00096
00097 namespace ros
00098 {
00099 namespace message_traits
00100 {
00101 template<class ContainerAllocator> struct IsMessage< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> > : public TrueType {};
00102 template<class ContainerAllocator> struct IsMessage< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> const> : public TrueType {};
00103 template<class ContainerAllocator>
00104 struct MD5Sum< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> > {
00105 static const char* value()
00106 {
00107 return "845e0a830a06ad942cc0b1907c31bc38";
00108 }
00109
00110 static const char* value(const ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> &) { return value(); }
00111 static const uint64_t static_value1 = 0x845e0a830a06ad94ULL;
00112 static const uint64_t static_value2 = 0x2cc0b1907c31bc38ULL;
00113 };
00114
00115 template<class ContainerAllocator>
00116 struct DataType< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> > {
00117 static const char* value()
00118 {
00119 return "asctec_hl_comm/mav_ctrl";
00120 }
00121
00122 static const char* value(const ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> &) { return value(); }
00123 };
00124
00125 template<class ContainerAllocator>
00126 struct Definition< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> > {
00127 static const char* value()
00128 {
00129 return "Header header\n\
00130 \n\
00131 int8 type #message type\n\
00132 \n\
00133 # control commands, all units in SI units !!!\n\
00134 # There are 3 operating modes of the helicopter:\n\
00135 # 1. Acceleration: x, y, z correspond to x_dotdot etc... with the exception that yaw is angular velocity\n\
00136 # Inputs must be in body-coordinates\n\
00137 # Currently x~pitch, y~roll, z~thrust, units in rad and rad/s for yaw\n\
00138 # 2. Velocity: x, y, z, yaw correspond to x_dot etc...\n\
00139 # Vehicle must have it's own pose estimation e.g. vision/GPS\n\
00140 # Inputs must be in body-coordinates\n\
00141 # Units in m/s and rad/s respectively\n\
00142 # 3. Position\n\
00143 # Vehicle must have it's own pose estimation e.g. vision/GPS\n\
00144 # Inputs in fixed coordinate system\n\
00145 # v_max_* is only valid for this mode and limits the velocity a vehicle approaches the waypoint\n\
00146 \n\
00147 float32 x\n\
00148 float32 y\n\
00149 float32 z\n\
00150 float32 yaw\n\
00151 float32 v_max_xy\n\
00152 float32 v_max_z\n\
00153 \n\
00154 int8 acceleration = 1\n\
00155 int8 velocity = 2\n\
00156 int8 position = 3\n\
00157 int8 velocity_body = 4\n\
00158 int8 position_body = 5\n\
00159 \n\
00160 ================================================================================\n\
00161 MSG: std_msgs/Header\n\
00162 # Standard metadata for higher-level stamped data types.\n\
00163 # This is generally used to communicate timestamped data \n\
00164 # in a particular coordinate frame.\n\
00165 # \n\
00166 # sequence ID: consecutively increasing ID \n\
00167 uint32 seq\n\
00168 #Two-integer timestamp that is expressed as:\n\
00169 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00170 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00171 # time-handling sugar is provided by the client library\n\
00172 time stamp\n\
00173 #Frame this data is associated with\n\
00174 # 0: no frame\n\
00175 # 1: global frame\n\
00176 string frame_id\n\
00177 \n\
00178 ";
00179 }
00180
00181 static const char* value(const ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> &) { return value(); }
00182 };
00183
00184 template<class ContainerAllocator> struct HasHeader< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> > : public TrueType {};
00185 template<class ContainerAllocator> struct HasHeader< const ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> > : public TrueType {};
00186 }
00187 }
00188
00189 namespace ros
00190 {
00191 namespace serialization
00192 {
00193
00194 template<class ContainerAllocator> struct Serializer< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> >
00195 {
00196 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00197 {
00198 stream.next(m.header);
00199 stream.next(m.type);
00200 stream.next(m.x);
00201 stream.next(m.y);
00202 stream.next(m.z);
00203 stream.next(m.yaw);
00204 stream.next(m.v_max_xy);
00205 stream.next(m.v_max_z);
00206 }
00207
00208 ROS_DECLARE_ALLINONE_SERIALIZER;
00209 };
00210 }
00211 }
00212
00213 namespace ros
00214 {
00215 namespace message_operations
00216 {
00217
00218 template<class ContainerAllocator>
00219 struct Printer< ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> >
00220 {
00221 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::asctec_hl_comm::mav_ctrl_<ContainerAllocator> & v)
00222 {
00223 s << indent << "header: ";
00224 s << std::endl;
00225 Printer< ::std_msgs::Header_<ContainerAllocator> >::stream(s, indent + " ", v.header);
00226 s << indent << "type: ";
00227 Printer<int8_t>::stream(s, indent + " ", v.type);
00228 s << indent << "x: ";
00229 Printer<float>::stream(s, indent + " ", v.x);
00230 s << indent << "y: ";
00231 Printer<float>::stream(s, indent + " ", v.y);
00232 s << indent << "z: ";
00233 Printer<float>::stream(s, indent + " ", v.z);
00234 s << indent << "yaw: ";
00235 Printer<float>::stream(s, indent + " ", v.yaw);
00236 s << indent << "v_max_xy: ";
00237 Printer<float>::stream(s, indent + " ", v.v_max_xy);
00238 s << indent << "v_max_z: ";
00239 Printer<float>::stream(s, indent + " ", v.v_max_z);
00240 }
00241 };
00242
00243
00244 }
00245 }
00246
00247 #endif // ASCTEC_HL_COMM_MESSAGE_MAV_CTRL_H
00248