Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef EDGE_SE3SWITCHABLE_H_
00012 #define EDGE_SE3SWITCHABLE_H_
00013
00014 #include "g2o/types/slam3d/vertex_se3.h"
00015 #include "g2o/core/base_multi_edge.h"
00016 #include "g2o/core/hyper_graph_action.h"
00017
00018 class EdgeSE3Switchable : public g2o::BaseMultiEdge<6, Eigen::Isometry3d>
00019 {
00020 public:
00021 EdgeSE3Switchable();
00022
00023 virtual bool read(std::istream& is);
00024 virtual bool write(std::ostream& os) const;
00025 void computeError();
00026 void linearizeOplus();
00027
00028 virtual void setMeasurement(const Eigen::Isometry3d& m){
00029 _measurement = m;
00030 _inverseMeasurement = m.inverse();
00031 }
00032
00033 protected:
00034 Eigen::Isometry3d _inverseMeasurement;
00035 };
00036
00037
00038 #ifdef G2O_HAVE_OPENGL
00039 class EdgeSE3SwitchableDrawAction: public g2o::DrawAction{
00040 public:
00041 EdgeSE3SwitchableDrawAction();
00042 virtual g2o::HyperGraphElementAction* operator()(g2o::HyperGraph::HyperGraphElement* element,
00043 g2o::HyperGraphElementAction::Parameters* params_);
00044 };
00045 #endif
00046
00047
00048 #endif