BagFile.cpp
Go to the documentation of this file.
00001 /*
00002  * BagFile.cpp
00003  *
00004  *  Created on: Apr 30, 2012
00005  *      Author: mriedel
00006  */
00007 
00008 #include "BagFile.hpp"
00009 #include <rosbag/bag.h>
00010 #include <rosbag/view.h>
00011 
00012 //Messages
00013 #include <geometry_msgs/Vector3Stamped.h>
00014 #include <sensor_msgs/CompressedImage.h>
00015 #include <tk_haptics_msgs/TKHapticOutput.h>
00016 #include <telekyb_msgs/TKState.h>
00017 #include <telekyb_msgs/TKTrajectory.h>
00018 
00019 namespace TELEKYB_NAMESPACE
00020 {
00021 
00022 BagFile::BagFile() {
00023         // TODO Auto-generated constructor stub
00024 
00025 }
00026 
00027 BagFile::~BagFile() {
00028         // TODO Auto-generated destructor stub
00029 }
00030 
00031 
00032 void BagFile::process()
00033 {
00034         rosbag::Bag bag;
00035         bag.open(options.tInputFilename->getValue(), rosbag::bagmode::Read);
00036         std::cout << options.tTopic->getValue() << std::endl;
00037 
00038         // View
00039         rosbag::View view(bag, rosbag::TopicQuery(options.tTopic->getValue()));
00040         BOOST_FOREACH(rosbag::MessageInstance const m, view)
00041         {
00042                 // cast to specific msg
00043                 std::string dataType = m.getDataType();
00044                 if (dataType.compare("geometry_msgs/Vector3Stamped") == 0) {
00045                         geometry_msgs::Vector3Stamped::ConstPtr msg = m.instantiate<geometry_msgs::Vector3Stamped>();
00046                         std::cout << m.getTime() << ",";
00047                         std::cout << msg->header.seq  << ",";
00048                         std::cout << msg->header.stamp  << ",";
00049                         std::cout << msg->vector.x << ",";
00050                         std::cout << msg->vector.y << ",";
00051                         std::cout << msg->vector.z << std::endl;
00052                 } else if (dataType.compare("sensor_msgs/CompressedImage") == 0) {
00053                         sensor_msgs::CompressedImage::ConstPtr msg = m.instantiate<sensor_msgs::CompressedImage>();
00054                         std::cout << m.getTime() << ",";
00055                         std::cout << msg->header.seq  << ",";
00056                         std::cout << msg->header.stamp << std::endl;
00057                 } else if (dataType.compare("tk_haptics_msgs/TKHapticOutput") == 0) {
00058                         tk_haptics_msgs::TKHapticOutput::ConstPtr msg = m.instantiate<tk_haptics_msgs::TKHapticOutput>();
00059                         std::cout << m.getTime() << ",";
00060                         std::cout << msg->header.seq  << ",";
00061                         std::cout << msg->header.stamp  << ",";
00062                         std::cout << msg->force.x << ",";
00063                         std::cout << msg->force.y << ",";
00064                         std::cout << msg->force.z << ",";
00065                         std::cout << msg->frequency << ",";
00066                         std::cout << msg->pose.position.x << ",";
00067                         std::cout << msg->pose.position.y << ",";
00068                         std::cout << msg->pose.position.z << ",";
00069                         std::cout << msg->pose.orientation.w << ",";
00070                         std::cout << msg->pose.orientation.x << ",";
00071                         std::cout << msg->pose.orientation.y << ",";
00072                         std::cout << msg->pose.orientation.z << ",";
00073                         std::cout << msg->linear.x << ",";
00074                         std::cout << msg->linear.y << ",";
00075                         std::cout << msg->linear.z << ",";
00076                         std::cout << msg->primaryButton << std::endl;
00077                 } else if (dataType.compare("telekyb_msgs/TKTrajectory") == 0) {
00078                         telekyb_msgs::TKTrajectory::ConstPtr msg = m.instantiate<telekyb_msgs::TKTrajectory>();
00079                         std::cout << m.getTime() << ",";
00080                         std::cout << msg->header.seq  << ",";
00081                         std::cout << msg->header.stamp  << ",";
00082                         std::cout << msg->position.x << ",";
00083                         std::cout << msg->position.y << ",";
00084                         std::cout << msg->position.z << ",";
00085                         std::cout << msg->velocity.x << ",";
00086                         std::cout << msg->velocity.y << ",";
00087                         std::cout << msg->velocity.z << ",";
00088                         std::cout << msg->acceleration.x << ",";
00089                         std::cout << msg->acceleration.y << ",";
00090                         std::cout << msg->acceleration.z << ",";
00091                         std::cout << (int)msg->xAxisCtrlType << ",";
00092                         std::cout << (int)msg->yAxisCtrlType << ",";
00093                         std::cout << (int)msg->zAxisCtrlType << ",";
00094                         std::cout << msg->yawAngle << ",";
00095                         std::cout << msg->yawRate << ",";
00096                         std::cout << msg->yawAcceleration << ",";
00097                         std::cout << (int)msg->yawCtrlType << std::endl;
00098                 } else if (dataType.compare("telekyb_msgs/TKState") == 0) {
00099                         telekyb_msgs::TKState::ConstPtr msg = m.instantiate<telekyb_msgs::TKState>();
00100                         std::cout << m.getTime() << ",";
00101                         std::cout << msg->header.seq  << ",";
00102                         std::cout << msg->header.stamp  << ",";
00103                         std::cout << msg->pose.position.x << ",";
00104                         std::cout << msg->pose.position.y << ",";
00105                         std::cout << msg->pose.position.z << ",";
00106                         std::cout << msg->pose.orientation.w  << ",";
00107                         std::cout << msg->pose.orientation.x << ",";
00108                         std::cout << msg->pose.orientation.y << ",";
00109                         std::cout << msg->pose.orientation.z << ",";
00110                         std::cout << msg->twist.linear.x << ",";
00111                         std::cout << msg->twist.linear.y << ",";
00112                         std::cout << msg->twist.linear.z << ",";
00113                         std::cout << msg->twist.angular.x << ",";
00114                         std::cout << msg->twist.angular.y << ",";
00115                         std::cout << msg->twist.angular.z << std::endl;
00116                 }
00117 
00118 
00119                 //std::cout << m.getDataType() << std::endl;
00120 
00121 
00122         }
00123 
00124 
00125         bag.close();
00126 }
00127 
00128 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends


tk_bagtools
Author(s): Martin Riedel
autogenerated on Mon Nov 11 2013 11:14:47