Calico
A visual-inertial calibration library designed for rapid problem construction and debugging.
batch_optimizer.h
1 #ifndef CALICO_BATCH_OPTIMIZER_H_
2 #define CALICO_BATCH_OPTIMIZER_H_
3 
4 #include <memory>
5 
6 #include "calico/sensors/sensor_base.h"
7 #include "calico/trajectory.h"
8 #include "calico/world_model.h"
9 #include "ceres/solver.h"
10 #include "absl/status/statusor.h"
11 
12 
14 namespace calico {
15 
17 ceres::Solver::Options DefaultSolverOptions();
18 
24  public:
25 
26  ~BatchOptimizer();
27 
33  void AddSensor(sensors::Sensor* sensor, bool take_ownership = true);
34 
40  void AddWorldModel(WorldModel* world_model, bool take_ownership = true);
41 
54  void AddTrajectory(Trajectory* trajectory_world_sensorrig,
55  bool take_ownership = true);
56 
62  absl::StatusOr<ceres::Solver::Summary> Optimize(
63  const ceres::Solver::Options& options = DefaultSolverOptions());
64 
65  private:
66  bool own_trajectory_world_body_;
67  bool own_world_model_;
68  std::vector<bool> own_sensors_;
69  std::vector<std::unique_ptr<sensors::Sensor>> sensors_;
70  std::unique_ptr<WorldModel> world_model_;
71  std::unique_ptr<Trajectory> trajectory_world_body_;
72 };
73 
74 } // namespace calico
75 
76 #endif // CALICO_BATCH_OPTIMIZER_H_
Definition: batch_optimizer.h:23
void AddTrajectory(Trajectory *trajectory_world_sensorrig, bool take_ownership=true)
Definition: batch_optimizer.cpp:46
absl::StatusOr< ceres::Solver::Summary > Optimize(const ceres::Solver::Options &options=DefaultSolverOptions())
Definition: batch_optimizer.cpp:52
void AddWorldModel(WorldModel *world_model, bool take_ownership=true)
Definition: batch_optimizer.cpp:40
void AddSensor(sensors::Sensor *sensor, bool take_ownership=true)
Definition: batch_optimizer.cpp:35
Definition: trajectory.h:25
Definition: world_model.h:73
Definition: sensor_base.h:20
Primary calico namespace.
Definition: __init__.py:1
ceres::Solver::Options DefaultSolverOptions()
Default solver options.
Definition: batch_optimizer.cpp:10