00001
00002
00003
00004
00005
00006
00007
00008 #include "BagFile.hpp"
00009 #include <rosbag/bag.h>
00010 #include <rosbag/view.h>
00011
00012
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
00024
00025 }
00026
00027 BagFile::~BagFile() {
00028
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
00039 rosbag::View view(bag, rosbag::TopicQuery(options.tTopic->getValue()));
00040 BOOST_FOREACH(rosbag::MessageInstance const m, view)
00041 {
00042
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
00120
00121
00122 }
00123
00124
00125 bag.close();
00126 }
00127
00128 }