00001
00002 #ifndef ARTICULATION_MSGS_MESSAGE_TRACKMSG_H
00003 #define ARTICULATION_MSGS_MESSAGE_TRACKMSG_H
00004 #include <string>
00005 #include <vector>
00006 #include <ostream>
00007 #include "ros/serialization.h"
00008 #include "ros/builtin_message_traits.h"
00009 #include "ros/message_operations.h"
00010 #include "ros/message.h"
00011 #include "ros/time.h"
00012
00013 #include "std_msgs/Header.h"
00014 #include "geometry_msgs/Pose.h"
00015 #include "geometry_msgs/Pose.h"
00016 #include "geometry_msgs/Pose.h"
00017 #include "sensor_msgs/ChannelFloat32.h"
00018
00019 namespace articulation_msgs
00020 {
00021 template <class ContainerAllocator>
00022 struct TrackMsg_ : public ros::Message
00023 {
00024 typedef TrackMsg_<ContainerAllocator> Type;
00025
00026 TrackMsg_()
00027 : header()
00028 , id(0)
00029 , pose()
00030 , pose_projected()
00031 , pose_resampled()
00032 , pose_flags()
00033 , channels()
00034 {
00035 }
00036
00037 TrackMsg_(const ContainerAllocator& _alloc)
00038 : header(_alloc)
00039 , id(0)
00040 , pose(_alloc)
00041 , pose_projected(_alloc)
00042 , pose_resampled(_alloc)
00043 , pose_flags(_alloc)
00044 , channels(_alloc)
00045 {
00046 }
00047
00048 typedef ::std_msgs::Header_<ContainerAllocator> _header_type;
00049 ::std_msgs::Header_<ContainerAllocator> header;
00050
00051 typedef int32_t _id_type;
00052 int32_t id;
00053
00054 typedef std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > _pose_type;
00055 std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > pose;
00056
00057 typedef std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > _pose_projected_type;
00058 std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > pose_projected;
00059
00060 typedef std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > _pose_resampled_type;
00061 std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > pose_resampled;
00062
00063 typedef std::vector<uint32_t, typename ContainerAllocator::template rebind<uint32_t>::other > _pose_flags_type;
00064 std::vector<uint32_t, typename ContainerAllocator::template rebind<uint32_t>::other > pose_flags;
00065
00066 typedef std::vector< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> >::other > _channels_type;
00067 std::vector< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> >::other > channels;
00068
00069 enum { POSE_VISIBLE = 1 };
00070 enum { POSE_END_OF_SEGMENT = 2 };
00071
00072 ROS_DEPRECATED uint32_t get_pose_size() const { return (uint32_t)pose.size(); }
00073 ROS_DEPRECATED void set_pose_size(uint32_t size) { pose.resize((size_t)size); }
00074 ROS_DEPRECATED void get_pose_vec(std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > & vec) const { vec = this->pose; }
00075 ROS_DEPRECATED void set_pose_vec(const std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > & vec) { this->pose = vec; }
00076 ROS_DEPRECATED uint32_t get_pose_projected_size() const { return (uint32_t)pose_projected.size(); }
00077 ROS_DEPRECATED void set_pose_projected_size(uint32_t size) { pose_projected.resize((size_t)size); }
00078 ROS_DEPRECATED void get_pose_projected_vec(std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > & vec) const { vec = this->pose_projected; }
00079 ROS_DEPRECATED void set_pose_projected_vec(const std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > & vec) { this->pose_projected = vec; }
00080 ROS_DEPRECATED uint32_t get_pose_resampled_size() const { return (uint32_t)pose_resampled.size(); }
00081 ROS_DEPRECATED void set_pose_resampled_size(uint32_t size) { pose_resampled.resize((size_t)size); }
00082 ROS_DEPRECATED void get_pose_resampled_vec(std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > & vec) const { vec = this->pose_resampled; }
00083 ROS_DEPRECATED void set_pose_resampled_vec(const std::vector< ::geometry_msgs::Pose_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Pose_<ContainerAllocator> >::other > & vec) { this->pose_resampled = vec; }
00084 ROS_DEPRECATED uint32_t get_pose_flags_size() const { return (uint32_t)pose_flags.size(); }
00085 ROS_DEPRECATED void set_pose_flags_size(uint32_t size) { pose_flags.resize((size_t)size); }
00086 ROS_DEPRECATED void get_pose_flags_vec(std::vector<uint32_t, typename ContainerAllocator::template rebind<uint32_t>::other > & vec) const { vec = this->pose_flags; }
00087 ROS_DEPRECATED void set_pose_flags_vec(const std::vector<uint32_t, typename ContainerAllocator::template rebind<uint32_t>::other > & vec) { this->pose_flags = vec; }
00088 ROS_DEPRECATED uint32_t get_channels_size() const { return (uint32_t)channels.size(); }
00089 ROS_DEPRECATED void set_channels_size(uint32_t size) { channels.resize((size_t)size); }
00090 ROS_DEPRECATED void get_channels_vec(std::vector< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> >::other > & vec) const { vec = this->channels; }
00091 ROS_DEPRECATED void set_channels_vec(const std::vector< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> >::other > & vec) { this->channels = vec; }
00092 private:
00093 static const char* __s_getDataType_() { return "articulation_msgs/TrackMsg"; }
00094 public:
00095 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00096
00097 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00098
00099 private:
00100 static const char* __s_getMD5Sum_() { return "4d31433dbfca9abee6e8969e22b59c72"; }
00101 public:
00102 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00103
00104 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00105
00106 private:
00107 static const char* __s_getMessageDefinition_() { return "# Single kinematic trajectory\n\
00108 #\n\
00109 # This message contains a kinematic trajectory. The trajectory is specified\n\
00110 # as a vector of 6D poses. An additional flag, track_type, indicates whether\n\
00111 # the track is valid, and whether it includes orientation. The track id\n\
00112 # can be used for automatic coloring in the RVIZ track plugin, and can be \n\
00113 # freely chosen by the client. \n\
00114 #\n\
00115 # A model is fitting only from the trajectory stored in the pose[]-vector. \n\
00116 # Additional information may be associated to each pose using the channels\n\
00117 # vector, with arbitrary # fields (e.g., to include applied/measured forces). \n\
00118 #\n\
00119 # After model evaluation,\n\
00120 # also the associated configurations of the object are stored in the channels,\n\
00121 # named \"q[0]\"..\"q[DOF-1]\", where DOF is the number of degrees of freedom.\n\
00122 # Model evaluation also projects the poses in the pose vector onto the model,\n\
00123 # and stores these ideal poses in the vector pose_projected. Further, during model\n\
00124 # evaluation, a new set of (uniform) configurations over the valid configuration\n\
00125 # range is sampled, and the result is stored in pose_resampled.\n\
00126 # The vector pose_flags contains additional display flags for the poses in the\n\
00127 # pose vector, for example, whether a pose is visible and/or\n\
00128 # the end of a trajectory segment. At the moment, this is only used by the\n\
00129 # prior_model_learner.\n\
00130 #\n\
00131 \n\
00132 Header header # Timestamp and frame\n\
00133 int32 id # used-specified track id\n\
00134 \n\
00135 geometry_msgs/Pose[] pose # sequence of poses, defining the observed trajectory\n\
00136 geometry_msgs/Pose[] pose_projected # sequence of poses, projected to the model \n\
00137 # (after model evaluation)\n\
00138 geometry_msgs/Pose[] pose_resampled # sequence of poses, re-sampled from the model in\n\
00139 # the valid configuration range\n\
00140 uint32[] pose_flags # bit-wise combination of POSE_VISIBLE and POSE_END_OF_SEGMENT\n\
00141 \n\
00142 uint32 POSE_VISIBLE=1\n\
00143 uint32 POSE_END_OF_SEGMENT=2\n\
00144 \n\
00145 # Each channel should have the same number of elements as pose array, \n\
00146 # and the data in each channel should correspond 1:1 with each pose\n\
00147 # possible channels: \"width\", \"height\", \"rgb\", ...\n\
00148 sensor_msgs/ChannelFloat32[] channels \n\
00149 \n\
00150 \n\
00151 \n\
00152 ================================================================================\n\
00153 MSG: std_msgs/Header\n\
00154 # Standard metadata for higher-level stamped data types.\n\
00155 # This is generally used to communicate timestamped data \n\
00156 # in a particular coordinate frame.\n\
00157 # \n\
00158 # sequence ID: consecutively increasing ID \n\
00159 uint32 seq\n\
00160 #Two-integer timestamp that is expressed as:\n\
00161 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00162 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00163 # time-handling sugar is provided by the client library\n\
00164 time stamp\n\
00165 #Frame this data is associated with\n\
00166 # 0: no frame\n\
00167 # 1: global frame\n\
00168 string frame_id\n\
00169 \n\
00170 ================================================================================\n\
00171 MSG: geometry_msgs/Pose\n\
00172 # A representation of pose in free space, composed of postion and orientation. \n\
00173 Point position\n\
00174 Quaternion orientation\n\
00175 \n\
00176 ================================================================================\n\
00177 MSG: geometry_msgs/Point\n\
00178 # This contains the position of a point in free space\n\
00179 float64 x\n\
00180 float64 y\n\
00181 float64 z\n\
00182 \n\
00183 ================================================================================\n\
00184 MSG: geometry_msgs/Quaternion\n\
00185 # This represents an orientation in free space in quaternion form.\n\
00186 \n\
00187 float64 x\n\
00188 float64 y\n\
00189 float64 z\n\
00190 float64 w\n\
00191 \n\
00192 ================================================================================\n\
00193 MSG: sensor_msgs/ChannelFloat32\n\
00194 # This message is used by the PointCloud message to hold optional data\n\
00195 # associated with each point in the cloud. The length of the values\n\
00196 # array should be the same as the length of the points array in the\n\
00197 # PointCloud, and each value should be associated with the corresponding\n\
00198 # point.\n\
00199 \n\
00200 # Channel names in existing practice include:\n\
00201 # \"u\", \"v\" - row and column (respectively) in the left stereo image.\n\
00202 # This is opposite to usual conventions but remains for\n\
00203 # historical reasons. The newer PointCloud2 message has no\n\
00204 # such problem.\n\
00205 # \"rgb\" - For point clouds produced by color stereo cameras. uint8\n\
00206 # (R,G,B) values packed into the least significant 24 bits,\n\
00207 # in order.\n\
00208 # \"intensity\" - laser or pixel intensity.\n\
00209 # \"distance\"\n\
00210 \n\
00211 # The channel name should give semantics of the channel (e.g.\n\
00212 # \"intensity\" instead of \"value\").\n\
00213 string name\n\
00214 \n\
00215 # The values array should be 1-1 with the elements of the associated\n\
00216 # PointCloud.\n\
00217 float32[] values\n\
00218 \n\
00219 "; }
00220 public:
00221 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00222
00223 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00224
00225 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00226 {
00227 ros::serialization::OStream stream(write_ptr, 1000000000);
00228 ros::serialization::serialize(stream, header);
00229 ros::serialization::serialize(stream, id);
00230 ros::serialization::serialize(stream, pose);
00231 ros::serialization::serialize(stream, pose_projected);
00232 ros::serialization::serialize(stream, pose_resampled);
00233 ros::serialization::serialize(stream, pose_flags);
00234 ros::serialization::serialize(stream, channels);
00235 return stream.getData();
00236 }
00237
00238 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00239 {
00240 ros::serialization::IStream stream(read_ptr, 1000000000);
00241 ros::serialization::deserialize(stream, header);
00242 ros::serialization::deserialize(stream, id);
00243 ros::serialization::deserialize(stream, pose);
00244 ros::serialization::deserialize(stream, pose_projected);
00245 ros::serialization::deserialize(stream, pose_resampled);
00246 ros::serialization::deserialize(stream, pose_flags);
00247 ros::serialization::deserialize(stream, channels);
00248 return stream.getData();
00249 }
00250
00251 ROS_DEPRECATED virtual uint32_t serializationLength() const
00252 {
00253 uint32_t size = 0;
00254 size += ros::serialization::serializationLength(header);
00255 size += ros::serialization::serializationLength(id);
00256 size += ros::serialization::serializationLength(pose);
00257 size += ros::serialization::serializationLength(pose_projected);
00258 size += ros::serialization::serializationLength(pose_resampled);
00259 size += ros::serialization::serializationLength(pose_flags);
00260 size += ros::serialization::serializationLength(channels);
00261 return size;
00262 }
00263
00264 typedef boost::shared_ptr< ::articulation_msgs::TrackMsg_<ContainerAllocator> > Ptr;
00265 typedef boost::shared_ptr< ::articulation_msgs::TrackMsg_<ContainerAllocator> const> ConstPtr;
00266 };
00267 typedef ::articulation_msgs::TrackMsg_<std::allocator<void> > TrackMsg;
00268
00269 typedef boost::shared_ptr< ::articulation_msgs::TrackMsg> TrackMsgPtr;
00270 typedef boost::shared_ptr< ::articulation_msgs::TrackMsg const> TrackMsgConstPtr;
00271
00272
00273 template<typename ContainerAllocator>
00274 std::ostream& operator<<(std::ostream& s, const ::articulation_msgs::TrackMsg_<ContainerAllocator> & v)
00275 {
00276 ros::message_operations::Printer< ::articulation_msgs::TrackMsg_<ContainerAllocator> >::stream(s, "", v);
00277 return s;}
00278
00279 }
00280
00281 namespace ros
00282 {
00283 namespace message_traits
00284 {
00285 template<class ContainerAllocator>
00286 struct MD5Sum< ::articulation_msgs::TrackMsg_<ContainerAllocator> > {
00287 static const char* value()
00288 {
00289 return "4d31433dbfca9abee6e8969e22b59c72";
00290 }
00291
00292 static const char* value(const ::articulation_msgs::TrackMsg_<ContainerAllocator> &) { return value(); }
00293 static const uint64_t static_value1 = 0x4d31433dbfca9abeULL;
00294 static const uint64_t static_value2 = 0xe6e8969e22b59c72ULL;
00295 };
00296
00297 template<class ContainerAllocator>
00298 struct DataType< ::articulation_msgs::TrackMsg_<ContainerAllocator> > {
00299 static const char* value()
00300 {
00301 return "articulation_msgs/TrackMsg";
00302 }
00303
00304 static const char* value(const ::articulation_msgs::TrackMsg_<ContainerAllocator> &) { return value(); }
00305 };
00306
00307 template<class ContainerAllocator>
00308 struct Definition< ::articulation_msgs::TrackMsg_<ContainerAllocator> > {
00309 static const char* value()
00310 {
00311 return "# Single kinematic trajectory\n\
00312 #\n\
00313 # This message contains a kinematic trajectory. The trajectory is specified\n\
00314 # as a vector of 6D poses. An additional flag, track_type, indicates whether\n\
00315 # the track is valid, and whether it includes orientation. The track id\n\
00316 # can be used for automatic coloring in the RVIZ track plugin, and can be \n\
00317 # freely chosen by the client. \n\
00318 #\n\
00319 # A model is fitting only from the trajectory stored in the pose[]-vector. \n\
00320 # Additional information may be associated to each pose using the channels\n\
00321 # vector, with arbitrary # fields (e.g., to include applied/measured forces). \n\
00322 #\n\
00323 # After model evaluation,\n\
00324 # also the associated configurations of the object are stored in the channels,\n\
00325 # named \"q[0]\"..\"q[DOF-1]\", where DOF is the number of degrees of freedom.\n\
00326 # Model evaluation also projects the poses in the pose vector onto the model,\n\
00327 # and stores these ideal poses in the vector pose_projected. Further, during model\n\
00328 # evaluation, a new set of (uniform) configurations over the valid configuration\n\
00329 # range is sampled, and the result is stored in pose_resampled.\n\
00330 # The vector pose_flags contains additional display flags for the poses in the\n\
00331 # pose vector, for example, whether a pose is visible and/or\n\
00332 # the end of a trajectory segment. At the moment, this is only used by the\n\
00333 # prior_model_learner.\n\
00334 #\n\
00335 \n\
00336 Header header # Timestamp and frame\n\
00337 int32 id # used-specified track id\n\
00338 \n\
00339 geometry_msgs/Pose[] pose # sequence of poses, defining the observed trajectory\n\
00340 geometry_msgs/Pose[] pose_projected # sequence of poses, projected to the model \n\
00341 # (after model evaluation)\n\
00342 geometry_msgs/Pose[] pose_resampled # sequence of poses, re-sampled from the model in\n\
00343 # the valid configuration range\n\
00344 uint32[] pose_flags # bit-wise combination of POSE_VISIBLE and POSE_END_OF_SEGMENT\n\
00345 \n\
00346 uint32 POSE_VISIBLE=1\n\
00347 uint32 POSE_END_OF_SEGMENT=2\n\
00348 \n\
00349 # Each channel should have the same number of elements as pose array, \n\
00350 # and the data in each channel should correspond 1:1 with each pose\n\
00351 # possible channels: \"width\", \"height\", \"rgb\", ...\n\
00352 sensor_msgs/ChannelFloat32[] channels \n\
00353 \n\
00354 \n\
00355 \n\
00356 ================================================================================\n\
00357 MSG: std_msgs/Header\n\
00358 # Standard metadata for higher-level stamped data types.\n\
00359 # This is generally used to communicate timestamped data \n\
00360 # in a particular coordinate frame.\n\
00361 # \n\
00362 # sequence ID: consecutively increasing ID \n\
00363 uint32 seq\n\
00364 #Two-integer timestamp that is expressed as:\n\
00365 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00366 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00367 # time-handling sugar is provided by the client library\n\
00368 time stamp\n\
00369 #Frame this data is associated with\n\
00370 # 0: no frame\n\
00371 # 1: global frame\n\
00372 string frame_id\n\
00373 \n\
00374 ================================================================================\n\
00375 MSG: geometry_msgs/Pose\n\
00376 # A representation of pose in free space, composed of postion and orientation. \n\
00377 Point position\n\
00378 Quaternion orientation\n\
00379 \n\
00380 ================================================================================\n\
00381 MSG: geometry_msgs/Point\n\
00382 # This contains the position of a point in free space\n\
00383 float64 x\n\
00384 float64 y\n\
00385 float64 z\n\
00386 \n\
00387 ================================================================================\n\
00388 MSG: geometry_msgs/Quaternion\n\
00389 # This represents an orientation in free space in quaternion form.\n\
00390 \n\
00391 float64 x\n\
00392 float64 y\n\
00393 float64 z\n\
00394 float64 w\n\
00395 \n\
00396 ================================================================================\n\
00397 MSG: sensor_msgs/ChannelFloat32\n\
00398 # This message is used by the PointCloud message to hold optional data\n\
00399 # associated with each point in the cloud. The length of the values\n\
00400 # array should be the same as the length of the points array in the\n\
00401 # PointCloud, and each value should be associated with the corresponding\n\
00402 # point.\n\
00403 \n\
00404 # Channel names in existing practice include:\n\
00405 # \"u\", \"v\" - row and column (respectively) in the left stereo image.\n\
00406 # This is opposite to usual conventions but remains for\n\
00407 # historical reasons. The newer PointCloud2 message has no\n\
00408 # such problem.\n\
00409 # \"rgb\" - For point clouds produced by color stereo cameras. uint8\n\
00410 # (R,G,B) values packed into the least significant 24 bits,\n\
00411 # in order.\n\
00412 # \"intensity\" - laser or pixel intensity.\n\
00413 # \"distance\"\n\
00414 \n\
00415 # The channel name should give semantics of the channel (e.g.\n\
00416 # \"intensity\" instead of \"value\").\n\
00417 string name\n\
00418 \n\
00419 # The values array should be 1-1 with the elements of the associated\n\
00420 # PointCloud.\n\
00421 float32[] values\n\
00422 \n\
00423 ";
00424 }
00425
00426 static const char* value(const ::articulation_msgs::TrackMsg_<ContainerAllocator> &) { return value(); }
00427 };
00428
00429 template<class ContainerAllocator> struct HasHeader< ::articulation_msgs::TrackMsg_<ContainerAllocator> > : public TrueType {};
00430 template<class ContainerAllocator> struct HasHeader< const ::articulation_msgs::TrackMsg_<ContainerAllocator> > : public TrueType {};
00431 }
00432 }
00433
00434 namespace ros
00435 {
00436 namespace serialization
00437 {
00438
00439 template<class ContainerAllocator> struct Serializer< ::articulation_msgs::TrackMsg_<ContainerAllocator> >
00440 {
00441 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00442 {
00443 stream.next(m.header);
00444 stream.next(m.id);
00445 stream.next(m.pose);
00446 stream.next(m.pose_projected);
00447 stream.next(m.pose_resampled);
00448 stream.next(m.pose_flags);
00449 stream.next(m.channels);
00450 }
00451
00452 ROS_DECLARE_ALLINONE_SERIALIZER;
00453 };
00454 }
00455 }
00456
00457 namespace ros
00458 {
00459 namespace message_operations
00460 {
00461
00462 template<class ContainerAllocator>
00463 struct Printer< ::articulation_msgs::TrackMsg_<ContainerAllocator> >
00464 {
00465 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::articulation_msgs::TrackMsg_<ContainerAllocator> & v)
00466 {
00467 s << indent << "header: ";
00468 s << std::endl;
00469 Printer< ::std_msgs::Header_<ContainerAllocator> >::stream(s, indent + " ", v.header);
00470 s << indent << "id: ";
00471 Printer<int32_t>::stream(s, indent + " ", v.id);
00472 s << indent << "pose[]" << std::endl;
00473 for (size_t i = 0; i < v.pose.size(); ++i)
00474 {
00475 s << indent << " pose[" << i << "]: ";
00476 s << std::endl;
00477 s << indent;
00478 Printer< ::geometry_msgs::Pose_<ContainerAllocator> >::stream(s, indent + " ", v.pose[i]);
00479 }
00480 s << indent << "pose_projected[]" << std::endl;
00481 for (size_t i = 0; i < v.pose_projected.size(); ++i)
00482 {
00483 s << indent << " pose_projected[" << i << "]: ";
00484 s << std::endl;
00485 s << indent;
00486 Printer< ::geometry_msgs::Pose_<ContainerAllocator> >::stream(s, indent + " ", v.pose_projected[i]);
00487 }
00488 s << indent << "pose_resampled[]" << std::endl;
00489 for (size_t i = 0; i < v.pose_resampled.size(); ++i)
00490 {
00491 s << indent << " pose_resampled[" << i << "]: ";
00492 s << std::endl;
00493 s << indent;
00494 Printer< ::geometry_msgs::Pose_<ContainerAllocator> >::stream(s, indent + " ", v.pose_resampled[i]);
00495 }
00496 s << indent << "pose_flags[]" << std::endl;
00497 for (size_t i = 0; i < v.pose_flags.size(); ++i)
00498 {
00499 s << indent << " pose_flags[" << i << "]: ";
00500 Printer<uint32_t>::stream(s, indent + " ", v.pose_flags[i]);
00501 }
00502 s << indent << "channels[]" << std::endl;
00503 for (size_t i = 0; i < v.channels.size(); ++i)
00504 {
00505 s << indent << " channels[" << i << "]: ";
00506 s << std::endl;
00507 s << indent;
00508 Printer< ::sensor_msgs::ChannelFloat32_<ContainerAllocator> >::stream(s, indent + " ", v.channels[i]);
00509 }
00510 }
00511 };
00512
00513
00514 }
00515 }
00516
00517 #endif // ARTICULATION_MSGS_MESSAGE_TRACKMSG_H
00518