34#include "g2o/config.h"
63template <
class VertexType_>
73 if (!
dynamic_cast<VertexType*
>(vertex_))
return;
91 const std::string&
name()
const {
return _name; }
94 const std::set<BaseSensor*>
sensors() {
return _sensors; }
115 std::set<BaseWorldObject*>&
objects() {
return _objects; }
116 std::set<BaseRobot*>&
robots() {
return _robots; }
126template <
class RobotPoseObject>
133 typedef typename PoseObject::EstimateType
PoseType;
145 po->vertex()->setEstimate(
_pose);
164 World* world()
const;
166 const std::vector<Parameter*>&
parameters() {
return _parameters; }
176template <
class RobotType_,
class EdgeType_>
201 if (!
robot())
return;
206 if (!r->trajectory().empty())
213 e->setMeasurementFromState();
226 e->vertices()[0] = robotVertex;
227 e->information().setIdentity();
234template <
class RobotType_,
class EdgeType_,
class WorldObjectType_>
261 if (!
robot())
return;
266 if (!r->trajectory().empty())
272 for (std::set<BaseWorldObject*>::iterator it =
world()->
objects().begin();
278 e->setMeasurementFromState();
293 e->vertices()[0] = robotVertex;
294 e->vertices()[1] =
object->vertex();
295 e->information().setIdentity();
BaseRobot(World *world_, const std::string &name_)
void setWorld(World *world_)
const std::string & name() const
const std::set< BaseSensor * > sensors()
std::set< BaseSensor * > _sensors
OptimizableGraph * graph() const
std::vector< Parameter * > _parameters
BaseSensor(const std::string &name_)
const std::vector< Parameter * > & parameters()
virtual void addParameters()
void setRobot(BaseRobot *robot_)
BaseWorldObject(World *world_=0)
OptimizableGraph::Vertex * _vertex
OptimizableGraph::Vertex * vertex()
OptimizableGraph * _graph
void setWorld(World *world_)
InformationType _information
EdgeType::InformationType InformationType
WorldObjectType::VertexType VertexType
WorldObjectType_ WorldObjectType
RobotType::TrajectoryType TrajectoryType
EdgeType * mkEdge(WorldObjectType *object)
PoseObject * _robotPoseObject
RobotType::PoseObject::VertexType PoseVertexType
const InformationType & information()
RobotType::PoseObject PoseObject
void setInformation(const InformationType &information_)
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
GaussianSampler< typename EdgeType::ErrorVector, InformationType > _sampler
BinarySensor(const std::string &name)
virtual void addNoise(EdgeType *)
void setDistribution(const CovarianceType &cov)
A general case Vertex for optimization.
Robot(World *world_, const std::string &name_)
TrajectoryType _trajectory
PoseObject::VertexType VertexType
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
virtual void move(const PoseType &pose_)
const PoseType & pose() const
TrajectoryType & trajectory()
virtual void relativeMove(const PoseType &movement_)
RobotPoseObject PoseObject
std::list< PoseObject * > TrajectoryType
PoseObject::EstimateType PoseType
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
EdgeType::InformationType InformationType
InformationType _information
virtual void addNoise(EdgeType *)
UnarySensor(const std::string &name)
PoseObject * _robotPoseObject
void setInformation(const InformationType &information_)
RobotType::PoseObject PoseObject
GaussianSampler< typename EdgeType::ErrorVector, InformationType > _sampler
RobotType::PoseObject::VertexType PoseVertexType
RobotType::TrajectoryType TrajectoryType
const InformationType & information()
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
virtual void setVertex(OptimizableGraph::Vertex *vertex_)
WorldObject(World *world_=0)
VertexType_::EstimateType EstimateType
std::set< BaseWorldObject * > _objects
std::set< BaseWorldObject * > & objects()
OptimizableGraph * _graph
std::set< BaseRobot * > _robots
std::set< BaseRobot * > & robots()
bool addWorldObject(BaseWorldObject *worldObject)
OptimizableGraph * graph()
World(OptimizableGraph *graph_)
#define G2O_SIMULATOR_API
virtual bool addEdge(HyperGraph::Edge *e)