example for an interface to a SLAM algorithm
More...
#include <example_slam_interface.h>
|
| ExampleSlamInterface () |
|
bool | addNode (const std::string &tag, int id, int dimension, const std::vector< double > &values) |
|
bool | addEdge (const std::string &tag, int id, int dimension, int v1, int v2, const std::vector< double > &measurement, const std::vector< double > &information) |
|
bool | fixNode (const std::vector< int > &nodes) |
|
bool | queryState (const std::vector< int > &nodes) |
|
bool | solveState () |
|
|
std::map< int, std::pair< std::string, std::vector< double > > > | _vertices |
| the original value of the input (actually not needed if a real SLAM engine is running) More...
|
|
example for an interface to a SLAM algorithm
Example for an interface to a SLAM algorithm. You may modify this class to fit your needs. The example class does not actually perform any optimization, it just keeps the input values and outputs the same values if asked. See the documentation of SlamParser::AbstractSlamInterface for details.
Definition at line 43 of file example_slam_interface.h.
ExampleSlamInterface::ExampleSlamInterface |
( |
| ) |
|
bool ExampleSlamInterface::addEdge |
( |
const std::string & |
tag, |
|
|
int |
id, |
|
|
int |
dimension, |
|
|
int |
v1, |
|
|
int |
v2, |
|
|
const std::vector< double > & |
measurement, |
|
|
const std::vector< double > & |
information |
|
) |
| |
|
virtual |
adding an edge to the SLAM engine.
- Parameters
-
tag | the tag specifying the type of the vertex |
id | the unique id of the edge. |
dimension | the dimension of the edge. |
v1 | the unique id of the edge of the first vertex |
v2 | the unique id of the edge of the second vertex |
measurement | the measurement of the constraint |
information | the information matrix (inverse of the covariance) representing the uncertainty of the measurement (row-major upper triangular and diagonal) |
- Returns
- true, if adding was successful
Implements SlamParser::AbstractSlamInterface.
Definition at line 55 of file example_slam_interface.cpp.
57 cerr <<
"ADDING EDGE " << tag <<
" id=" <<
id <<
" dim=" << dimension
58 <<
" (" << v1 <<
" <-> " << v2 <<
")" <<
" measurement=";
59 for (
size_t i = 0; i < measurement.size(); ++i)
60 cerr <<
" " << measurement[i];
61 cerr <<
" information=";
62 for (
size_t i = 0; i < information.size(); ++i)
63 cerr <<
" " << information[i];
bool ExampleSlamInterface::addNode |
( |
const std::string & |
tag, |
|
|
int |
id, |
|
|
int |
dimension, |
|
|
const std::vector< double > & |
values |
|
) |
| |
|
virtual |
adding a node to the SLAM engine.
- Parameters
-
tag | the tag specifying the type of the vertex |
id | the unique id of the node. |
dimension | the dimension of the node. |
values | the pose of the node, may be empty (i.e., the engine should initialize the node itself) |
- Returns
- true, if adding was successful
Implements SlamParser::AbstractSlamInterface.
Definition at line 36 of file example_slam_interface.cpp.
38 cerr <<
"ADDING NODE " << tag <<
" id=" <<
id <<
" dim=" << dimension;
41 for (
size_t i = 0; i <
values.size(); ++i)
48 _vertices[
id] = make_pair(tag, std::vector<double>(dimension));
std::map< int, std::pair< std::string, std::vector< double > > > _vertices
the original value of the input (actually not needed if a real SLAM engine is running) ...
Protocol The SLAM executable accepts such as solving the and retrieving or vertices in the explicitly state the reprensentation poses are represented by poses by VERTEX_XYZRPY In the Quaternions and other representations could be but note that it is up to the SLAM algorithm to choose the internal representation of the angles The keyword is followed by a unique vertex ID and an optional initialization of the values
bool ExampleSlamInterface::fixNode |
( |
const std::vector< int > & |
nodes | ) |
|
|
virtual |
set some nodes to a fixed position
- Parameters
-
nodes | the list of vertex IDs to fix |
- Returns
- true, if successful
Implements SlamParser::AbstractSlamInterface.
Definition at line 68 of file example_slam_interface.cpp.
70 cerr <<
"FIXING NODE";
71 for (
size_t i = 0; i < nodes.size(); ++i)
72 cerr <<
" " << nodes[i];
bool ExampleSlamInterface::queryState |
( |
const std::vector< int > & |
nodes | ) |
|
|
virtual |
Ask the SLAM engine to print the current estimate of the variables
- Parameters
-
nodes | the list of vertex IDs to print, if empty print all variables |
- Returns
- true, if successful
Implements SlamParser::AbstractSlamInterface.
Definition at line 77 of file example_slam_interface.cpp.
References values.
79 cerr <<
"QUERY STATE";
80 for (
size_t i = 0; i < nodes.size(); ++i)
81 cerr <<
" " << nodes[i];
86 if (nodes.size() == 0) {
88 for (std::map<
int, std::pair<std::string, std::vector<double> > >::const_iterator it =
_vertices.begin();
90 cout << it->second.first <<
" " << it->first;
91 const vector<double>&
values = it->second.second;
92 for (
size_t j = 0; j < values.size(); ++j)
93 cout <<
" " << values[j];
97 for (
size_t i = 0; i < nodes.size(); ++i) {
98 std::map<int, std::pair<std::string, std::vector<double> > >::const_iterator it =
_vertices.find(nodes[i]);
100 cout << it->second.first <<
" " << it->first;
101 const vector<double>& values = it->second.second;
102 for (
size_t j = 0; j < values.size(); ++j)
103 cout <<
" " << values[j];
std::map< int, std::pair< std::string, std::vector< double > > > _vertices
the original value of the input (actually not needed if a real SLAM engine is running) ...
Protocol The SLAM executable accepts such as solving the and retrieving or vertices in the explicitly state the reprensentation poses are represented by poses by VERTEX_XYZRPY In the Quaternions and other representations could be but note that it is up to the SLAM algorithm to choose the internal representation of the angles The keyword is followed by a unique vertex ID and an optional initialization of the values
bool ExampleSlamInterface::solveState |
( |
| ) |
|
|
virtual |
std::map<int, std::pair<std::string, std::vector<double> > > ExampleSlamInterface::_vertices |
|
protected |
the original value of the input (actually not needed if a real SLAM engine is running)
Definition at line 60 of file example_slam_interface.h.
The documentation for this class was generated from the following files: