1 #ifndef CALICO_SENSORS_ACCELEROMETER_H_
2 #define CALICO_SENSORS_ACCELEROMETER_H_
8 #include "absl/container/flat_hash_map.h"
9 #include "absl/status/status.h"
10 #include "absl/strings/string_view.h"
11 #include "calico/sensors/accelerometer_models.h"
12 #include "calico/sensors/sensor_base.h"
13 #include "calico/trajectory.h"
14 #include "calico/typedefs.h"
15 #include "ceres/problem.h"
54 void SetName(
const std::string& name);
55 const std::string& GetName()
const;
56 void SetExtrinsics(
const Pose3d& T_sensorrig_sensor);
57 const Pose3d& GetExtrinsics()
const;
58 absl::Status SetIntrinsics(
const Eigen::VectorXd& intrinsics);
59 const Eigen::VectorXd& GetIntrinsics()
const;
60 absl::Status SetLatency(
double latency);
61 double GetLatency()
const;
62 void EnableExtrinsicsEstimation(
bool enable);
63 void EnableIntrinsicsEstimation(
bool enable);
64 void EnableLatencyEstimation(
bool enable);
86 absl::StatusOr<std::vector<AccelerometerMeasurement>>
Project(
87 const std::vector<double>& interp_times,
110 const std::vector<AccelerometerMeasurement>& measurements);
120 bool intrinsics_enabled_;
121 bool extrinsics_enabled_;
122 bool latency_enabled_;
123 std::unique_ptr<AccelerometerModel> accelerometer_model_;
124 Pose3d T_sensorrig_sensor_;
125 Eigen::VectorXd intrinsics_;
126 double latency_ = 0.0;
129 double loss_scale_ = 1.0;
130 absl::flat_hash_map<AccelerometerObservationId, AccelerometerMeasurement>
132 absl::flat_hash_map<AccelerometerObservationId, Eigen::Vector3d>
134 absl::flat_hash_map<AccelerometerObservationId, ceres::ResidualBlockId>
Definition: trajectory.h:25
Definition: world_model.h:73
Accelerometer class.
Definition: accelerometer.h:47
absl::StatusOr< int > AddResidualsToProblem(ceres::Problem &problem, Trajectory &sensorrig_trajectory, WorldModel &world_model) final
Contribue this sensor's residuals to the ceres problem.
Definition: accelerometer.cpp:35
absl::Status SetMeasurementNoise(double sigma) final
Set the measurement noise .
Definition: accelerometer.cpp:183
absl::Status SetModel(AccelerometerIntrinsicsModel accelerometer_model)
Setter for accelerometer model.
Definition: accelerometer.cpp:196
AccelerometerIntrinsicsModel GetModel() const
Getter for accelerometer model.
Definition: accelerometer.cpp:207
void ClearMeasurements()
Clear all measurements.
Definition: accelerometer.cpp:238
int NumberOfMeasurements() const
Get current number of measurements stored.
Definition: accelerometer.cpp:242
void ClearResidualInfo() final
Clear all stored info about residuals.
Definition: accelerometer.cpp:71
void SetLossFunction(utils::LossFunctionType loss, double scale)
Setter for loss function and scale.
Definition: accelerometer.cpp:191
absl::Status UpdateResiduals(ceres::Problem &problem) final
Update residuals for this sensor.
Definition: accelerometer.cpp:58
absl::Status AddMeasurements(const std::vector< AccelerometerMeasurement > &measurements)
Add multiple measurements to the measurement list.
Definition: accelerometer.cpp:223
absl::StatusOr< std::vector< AccelerometerMeasurement > > Project(const std::vector< double > &interp_times, const Trajectory &sensorrig_trajectory, const WorldModel &world_model) const
Definition: accelerometer.cpp:76
absl::StatusOr< int > AddParametersToProblem(ceres::Problem &problem) final
Add this sensor's calibration parameters to the ceres problem.
Definition: accelerometer.cpp:10
absl::Status AddMeasurement(const AccelerometerMeasurement &measurement)
Add an accelerometer measurement to the measurement list.
Definition: accelerometer.cpp:212
Definition: sensor_base.h:20
Sensors namespace.
Definition: accelerometer.cpp:8
AccelerometerIntrinsicsModel
Accelerometer model types.
Definition: accelerometer_models.h:16
LossFunctionType
Definition: optimization_utils.h:15
Accelerometer measurement type.
Definition: accelerometer.h:39
AccelerometerObservationId id
Id of this observation.
Definition: accelerometer.h:43
Eigen::Vector3d measurement
Raw uncalibrated measurement value from an accelerometer.
Definition: accelerometer.h:41
Definition: accelerometer.h:22
double stamp
Timestamp in seconds.
Definition: accelerometer.h:24
int sequence
Sequence number of this measurement.
Definition: accelerometer.h:26