gtsam/cpp/Pose2Config.h

65 lines
1.4 KiB
C++

/**
* @file VectorConfig.cpp
* @brief Pose2Graph Configuration
* @author Frank Dellaert
*/
#pragma once
#include <map>
#include <string>
#include "Pose2.h"
#include "Testable.h"
namespace gtsam {
class VectorConfig;
class Pose2Config: public Testable<Pose2Config> {
private:
std::map<std::string, Pose2> values_;
public:
typedef std::map<std::string, Pose2>::const_iterator iterator;
typedef iterator const_iterator;
Pose2Config() {}
Pose2Config(const Pose2Config &config) :values_(config.values_) {}
virtual ~Pose2Config() {}
const Pose2& get(std::string key) const;
void insert(const std::string& name, const Pose2& val);
inline Pose2Config& operator=(const Pose2Config& rhs) {
values_ = rhs.values_;
return (*this);
}
bool equals(const Pose2Config& expected, double tol) const;
void print(const std::string &s) const;
void clear() { values_.clear(); }
int size() { return values_.size(); };
inline const_iterator begin() const {return values_.begin();}
inline const_iterator end() const {return values_.end();}
inline iterator begin() {return values_.begin();}
inline iterator end() {return values_.end();}
friend Pose2Config expmap(const Pose2Config& c, const VectorConfig& delta);
};
/**
* Add a delta config, needed for use in NonlinearOptimizer
*/
Pose2Config expmap(const Pose2Config& c, const VectorConfig& delta);
} // namespace