Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <iostream>
00018 #include <iomanip>
00019 #include <csignal>
00020 #include <cstdlib>
00021
00022 #include "g2o/stuff/macros.h"
00023 #include "g2o/stuff/command_args.h"
00024 #include "g2o/stuff/timeutil.h"
00025
00026 #include "slam_parser/interface/parser_interface.h"
00027
00028 #include "g2o_slam_interface.h"
00029 #include "graph_optimizer_sparse_online.h"
00030
00031 static bool hasToStop=false;
00032
00033 using namespace std;
00034 using namespace g2o;
00035
00036 void sigquit_handler(int sig)
00037 {
00038 if (sig == SIGINT) {
00039 hasToStop = 1;
00040 static int cnt = 0;
00041 if (cnt++ == 2) {
00042 cerr << __PRETTY_FUNCTION__ << " forcing exit" << endl;
00043 exit(1);
00044 }
00045 }
00046 }
00047
00048 int main(int argc, char** argv)
00049 {
00050 bool pcg;
00051 int updateEachN;
00052 bool vis;
00053 bool verbose;
00054
00055 CommandArgs arg;
00056 arg.param("update", updateEachN, 10, "update the graph after inserting N nodes");
00057 arg.param("pcg", pcg, false, "use PCG instead of Cholesky");
00058 arg.param("v", verbose, false, "verbose output of the optimization process");
00059 arg.param("g", vis, false, "gnuplot visualization");
00060
00061 arg.parseArgs(argc, argv);
00062
00063 SparseOptimizerOnline optimizer(pcg);
00064
00065 optimizer.setVerbose(verbose);
00066 optimizer.setForceStopFlag(&hasToStop);
00067 optimizer.vizWithGnuplot = vis;
00068
00069 G2oSlamInterface slamInterface(&optimizer);
00070 slamInterface.setUpdateGraphEachN(updateEachN);
00071
00072 SlamParser::ParserInterface parserInterface(&slamInterface);
00073
00074 while (parserInterface.parseCommand(cin))
00075 {
00076
00077 }
00078
00079 return 0;
00080 }