1 #ifndef CALICO_WORLD_MODEL_H_
2 #define CALICO_WORLD_MODEL_H_
6 #include "calico/typedefs.h"
7 #include "absl/container/flat_hash_map.h"
8 #include "absl/status/status.h"
9 #include "ceres/problem.h"
10 #include "Eigen/Dense"
97 const absl::flat_hash_map<int, std::unique_ptr<Landmark>>&
landmarks()
const;
98 absl::flat_hash_map<int, std::unique_ptr<Landmark>>&
landmarks();
101 const absl::flat_hash_map<int, std::unique_ptr<RigidBody>>&
rigidbodies()
const;
102 absl::flat_hash_map<int, std::unique_ptr<RigidBody>>&
rigidbodies();
108 const Eigen::Vector3d&
gravity()
const;
134 absl::flat_hash_map<int, bool> rigidbody_id_to_own_rigidbody_;
135 absl::flat_hash_map<int, bool> landmark_id_to_own_landmark_;
136 absl::flat_hash_map<int, std::unique_ptr<RigidBody>> rigidbody_id_to_rigidbody_;
137 absl::flat_hash_map<int, std::unique_ptr<Landmark>> landmark_id_to_landmark_;
139 Eigen::Vector3d gravity_;
140 bool gravity_enabled_;
Definition: world_model.h:73
void EnableGravityEstimation(bool enable)
Enable flag for gravity estimation.
Definition: world_model.cpp:79
const Eigen::Vector3d & gravity() const
Accessor for gravity vector.
Definition: world_model.cpp:103
void ClearRigidBodies()
Remove all RigidBody objects from the world model.
Definition: world_model.cpp:133
int NumberOfRigidBodies() const
Get the number of rigid bodies currently in this world model.
Definition: world_model.cpp:119
const absl::flat_hash_map< int, std::unique_ptr< RigidBody > > & rigidbodies() const
Accessor for rigid bodies.
Definition: world_model.cpp:95
absl::Status AddRigidBody(RigidBody *rigidbody, bool take_ownership=true)
Definition: world_model.cpp:30
const Eigen::Vector3d & GetGravity() const
Getter for gravity for easy pybind integration.
Definition: world_model.cpp:111
void SetGravity(const Eigen::Vector3d &gravity)
Setter for gravity for easy pybind integration.
Definition: world_model.cpp:107
const absl::flat_hash_map< int, std::unique_ptr< Landmark > > & landmarks() const
Accessor for landmarks.
Definition: world_model.cpp:87
int AddParametersToProblem(ceres::Problem &problem)
Definition: world_model.cpp:40
void ClearLandmarks()
Remove all Landmark objects from the world model.
Definition: world_model.cpp:123
static constexpr double kGravityDefaultZ
Definition: world_model.h:78
int NumberOfLandmarks() const
Get the number of landmarks currently in this world model.
Definition: world_model.cpp:115
void Clear()
Remove all objects from the world model.
Definition: world_model.cpp:143
absl::Status AddLandmark(Landmark *landmark, bool take_ownership=true)
Definition: world_model.cpp:20
Primary calico namespace.
Definition: __init__.py:1
constexpr int kLandmarkFrameId
Default frame id for a landmark (i.e. World frame).
Definition: world_model.h:16
Definition: world_model.h:22
int id
Unique id for this landmark.
Definition: world_model.h:26
Eigen::Vector3d point
This landmark's location in the world frame. .
Definition: world_model.h:24
bool point_is_constant
Flag for keeping this landmark's point constant or as a free parameter.
Definition: world_model.h:29
Definition: world_model.h:53
bool model_definition_is_constant
Flag for keeping the model definition constant or as free parameters.
Definition: world_model.h:68
int id
Id of this rigid body. When adding rigid bodies to the BatchOptimizer, id's for all rigid bodies must...
Definition: world_model.h:62
Pose3d T_world_rigidbody
FROM world TO rigidbody transform, .
Definition: world_model.h:59
std::unordered_map< int, Eigen::Vector3d > model_definition
Maps feature id to its 3d point definition resolved in the rigid body frame, . Each feature needs a u...
Definition: world_model.h:57
bool world_pose_is_constant
Flag for keeping this rigid body's world-from-rigidbody pose constant or as a free parameter.
Definition: world_model.h:65