Go to the documentation of this file.00001 #include <cstdlib>
00002 #include <fstream>
00003 #include <iostream>
00004 #include <log/carmenconfiguration.h>
00005 #include <log/sensorlog.h>
00006
00007
00008 using namespace std;
00009 using namespace GMapping;
00010
00011 int main(int argc, char ** argv){
00012 if (argc<2){
00013 cerr << "usage "<<argv[0]<<" <filename> <outfilename>" << endl;
00014 cerr << "or "<<argv[0]<<" <filename> for standard output" << endl;
00015 exit (-1);
00016 }
00017 ifstream is(argv[1]);
00018 if (! is){
00019 cerr << "no file " << argv[1] << " found" << endl;
00020 exit (-1);
00021 }
00022 ostream *os;
00023 if (argc<3)
00024 os=&cout;
00025 else{
00026 os=new ofstream(argv[2]);
00027 if (! os){
00028 cerr << "no file " << argv[1] << " found" << endl;
00029 exit (-1);
00030 }
00031 }
00032 CarmenConfiguration conf;
00033 conf.load(is);
00034
00035 SensorMap m=conf.computeSensorMap();
00036
00037
00038
00039
00040 SensorLog log(m);
00041 is.close();
00042
00043 ifstream ls(argv[1]);
00044 log.load(ls);
00045 ls.close();
00046 cerr << "log size" << log.size() << endl;
00047 for (SensorLog::iterator it=log.begin(); it!=log.end(); it++){
00048 RangeReading* rr=dynamic_cast<RangeReading*>(*it);
00049 if (rr){
00050 *os << rr->getSensor()->getName() << " ";
00051 *os << rr->size()<< " ";
00052 for (RangeReading::const_iterator it=rr->begin(); it!=rr->end(); it++){
00053 *os << (*it)*0.001 << " ";
00054 }
00055 *os<< rr->getPose().x*0.001 << " " << rr->getPose().y*0.001 << " " << rr->getPose().theta << endl;
00056 }
00057 }
00058 }