| 
    OKVIS
    
   | 
 
The estimator class. More...
#include <Estimator.hpp>
  
 Classes | |
| struct | StateInfo | 
| StateInfo This configures the state vector ordering.  More... | |
| struct | States | 
| States This summarizes all the possible states – i.e. their ids:  More... | |
Public Member Functions | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW | Estimator () | 
| The default constructor.  More... | |
| Estimator (std::shared_ptr< okvis::ceres::Map > mapPtr) | |
| Constructor if a ceres map is already available.  More... | |
| virtual | ~Estimator () | 
| bool | addStates (okvis::MultiFramePtr multiFrame, const okvis::ImuMeasurementDeque &imuMeasurements, bool asKeyframe) | 
| Add a pose to the state.  More... | |
| void | printStates (uint64_t poseId, std::ostream &buffer) const | 
| Prints state information to buffer.  More... | |
| bool | addLandmark (uint64_t landmarkId, const Eigen::Vector4d &landmark) | 
| Add a landmark.  More... | |
| template<class GEOMETRY_TYPE > | |
| ::ceres::ResidualBlockId | addObservation (uint64_t landmarkId, uint64_t poseId, size_t camIdx, size_t keypointIdx) | 
| Add an observation to a landmark.  More... | |
| bool | removeObservation (uint64_t landmarkId, uint64_t poseId, size_t camIdx, size_t keypointIdx) | 
| Remove an observation from a landmark, if available.  More... | |
| bool | applyMarginalizationStrategy (size_t numKeyframes, size_t numImuFrames, okvis::MapPointVector &removedLandmarks) | 
| Applies the dropping/marginalization strategy according to the RSS'13/IJRR'14 paper. The new number of frames in the window will be numKeyframes+numImuFrames.  More... | |
| void | optimize (size_t numIter, size_t numThreads=1, bool verbose=false) | 
| Start ceres optimization.  More... | |
| bool | setOptimizationTimeLimit (double timeLimit, int minIterations) | 
| Set a time limit for the optimization process.  More... | |
| bool | isLandmarkAdded (uint64_t landmarkId) const | 
| Checks whether the landmark is added to the estimator.  More... | |
| bool | isLandmarkInitialized (uint64_t landmarkId) const | 
| Checks whether the landmark is initialized.  More... | |
| bool | isKeyframe (uint64_t frameId) const | 
| Checks if a particular frame is a keyframe.  More... | |
| bool | isInImuWindow (uint64_t frameId) const | 
| Checks if a particular frame is still in the IMU window.  More... | |
| template<class GEOMETRY_TYPE > | |
| ::ceres::ResidualBlockId | addObservation (uint64_t landmarkId, uint64_t poseId, size_t camIdx, size_t keypointIdx) | 
Sensor configuration related  | |
| int | addCamera (const okvis::ExtrinsicsEstimationParameters &extrinsicsEstimationParameters) | 
| Add a camera to the configuration. Sensors can only be added and never removed.  More... | |
| int | addImu (const okvis::ImuParameters &imuParameters) | 
| Add an IMU to the configuration.  More... | |
| void | clearCameras () | 
| Remove all cameras from the configuration.  More... | |
| void | clearImus () | 
| Remove all IMUs from the configuration.  More... | |
Getters  | |
| bool | getLandmark (uint64_t landmarkId, okvis::MapPoint &mapPoint) const | 
| Get a specific landmark.  More... | |
| size_t | getLandmarks (okvis::PointMap &landmarks) const | 
| Get a copy of all the landmarks as a PointMap.  More... | |
| size_t | getLandmarks (okvis::MapPointVector &landmarks) const | 
| Get a copy of all the landmark in a MapPointVector. This is for legacy support. Use getLandmarks(okvis::PointMap&) if possible.  More... | |
| okvis::MultiFramePtr | multiFrame (uint64_t frameId) const | 
| Get a multiframe.  More... | |
| bool | get_T_WS (uint64_t poseId, okvis::kinematics::Transformation &T_WS) const | 
| Get pose for a given pose ID.  More... | |
| bool | getSpeedAndBias (uint64_t poseId, uint64_t imuIdx, okvis::SpeedAndBias &speedAndBias) const | 
| Get speeds and IMU biases for a given pose ID.  More... | |
| bool | getCameraSensorStates (uint64_t poseId, size_t cameraIdx, okvis::kinematics::Transformation &T_SCi) const | 
| Get camera states for a given pose ID.  More... | |
| size_t | numFrames () const | 
| Get the number of states/frames in the estimator.  More... | |
| size_t | numLandmarks () const | 
| Get the number of landmarks in the estimator.  More... | |
| uint64_t | currentKeyframeId () const | 
| Get the ID of the current keyframe.  More... | |
| uint64_t | frameIdByAge (size_t age) const | 
| Get the ID of an older frame.  More... | |
| uint64_t | currentFrameId () const | 
| Get the ID of the newest frame added to the state.  More... | |
| okvis::Time | timestamp (uint64_t frameId) const | 
| Get the timestamp for a particular frame.  More... | |
Setters  | |
| bool | set_T_WS (uint64_t poseId, const okvis::kinematics::Transformation &T_WS) | 
| Set pose for a given pose ID.  More... | |
| bool | setSpeedAndBias (uint64_t poseId, size_t imuIdx, const okvis::SpeedAndBias &speedAndBias) | 
| Set the speeds and IMU biases for a given pose ID.  More... | |
| bool | setCameraSensorStates (uint64_t poseId, size_t cameraIdx, const okvis::kinematics::Transformation &T_SCi) | 
| Set the transformation from sensor to camera frame for a given pose ID.  More... | |
| bool | setLandmark (uint64_t landmarkId, const Eigen::Vector4d &landmark) | 
| Set the homogeneous coordinates for a landmark.  More... | |
| void | setLandmarkInitialized (uint64_t landmarkId, bool initialized) | 
| Set the landmark initialization state.  More... | |
| void | setKeyframe (uint64_t frameId, bool isKeyframe) | 
| Set whether a frame is a keyframe or not.  More... | |
| void | setMap (std::shared_ptr< okvis::ceres::Map > mapPtr) | 
| set ceres map  More... | |
  Public Member Functions inherited from okvis::VioBackendInterface | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW | VioBackendInterface () | 
| Default constructor.  More... | |
| virtual | ~VioBackendInterface () | 
| virtual InitializationStatus | initializationStatus () const | 
| Obtain the initialization status.  More... | |
| virtual bool | getPoseUncertainty (Eigen::Matrix< double, 6, 6 > &) const | 
| Get the current frame pose uncertainty. param[out] P_T_WS Current pose uncertainty w.r.t. [r_WS,delta_alpha_WS].  More... | |
| virtual bool | getStateUncertainty (Eigen::Matrix< double, 15, 15 > &) const | 
| Get the current frame state uncertainty. param[out] P_T_WS Current pose uncertainty w.r.t. [r_WS,delta_alpha_WS,v_W,b_g,b_a].  More... | |
| virtual void | setComputeUncertainty (bool) | 
| Request computation of uncertainties. param[in] computeUncertainty True, if uncertainties should be computed.  More... | |
Static Public Member Functions | |
| static bool | initPoseFromImu (const okvis::ImuMeasurementDeque &imuMeasurements, okvis::kinematics::Transformation &T_WS) | 
| Initialise pose from IMU measurements. For convenience as static.  More... | |
Private Types | |
| enum | GlobalStates { T_WS = 0, MagneticZBias = 1, Qff = 2, T_GW = 3 } | 
| GlobalStates The global states enumerated.  More... | |
| enum | SensorStates {  Camera = 0, Imu = 1, Position = 2, Gps = 3, Magnetometer = 4, StaticPressure = 5, DynamicPressure = 6 }  | 
| SensorStates The sensor-internal states enumerated.  More... | |
| enum | CameraSensorStates { T_SCi = 0, Intrinsics = 1 } | 
| CameraSensorStates The camera-internal states enumerated.  More... | |
| enum | ImuSensorStates { SpeedAndBias = 0 } | 
| ImuSensorStates The IMU-internal states enumerated.  More... | |
| enum | PositionSensorStates { T_PiW = 0, PositionSensorB_t_BA = 1 } | 
| PositionSensorStates, currently unused.  More... | |
| enum | GpsSensorStates { GpsB_t_BA = 0 } | 
| GpsSensorStates, currently unused.  More... | |
| enum | MagnetometerSensorStates { MagnetometerBias = 0 } | 
| MagnetometerSensorStates, currently unused.  More... | |
| enum | StaticPressureSensorStates { StaticPressureBias = 0 } | 
| GpsSensorStates, currently unused.  More... | |
| enum | DynamicPressureSensorStates { DynamicPressureBias = 0 } | 
| GpsSensorStates, currently unused.  More... | |
| typedef std::array< StateInfo, 6 > | GlobalStatesContainer | 
| Container for global states.  More... | |
| typedef std::vector< StateInfo > | SpecificSensorStatesContainer | 
| Container for sensor states. The dimension can vary from sensor to sensor...  More... | |
| typedef std::array < std::vector < SpecificSensorStatesContainer >, 7 >  | AllSensorStatesContainer | 
| Union of all sensor states.  More... | |
Private Member Functions | |
| bool | removeObservation (::ceres::ResidualBlockId residualBlockId) | 
| Remove an observation from a landmark.  More... | |
| bool | getGlobalStateParameterBlockPtr (uint64_t poseId, int stateType, std::shared_ptr< ceres::ParameterBlock > &stateParameterBlockPtr) const | 
| template<class PARAMETER_BLOCK_T > | |
| bool | getGlobalStateParameterBlockAs (uint64_t poseId, int stateType, PARAMETER_BLOCK_T &stateParameterBlock) const | 
| template<class PARAMETER_BLOCK_T > | |
| bool | getGlobalStateEstimateAs (uint64_t poseId, int stateType, typename PARAMETER_BLOCK_T::estimate_t &state) const | 
| bool | getSensorStateParameterBlockPtr (uint64_t poseId, int sensorIdx, int sensorType, int stateType, std::shared_ptr< ceres::ParameterBlock > &stateParameterBlockPtr) const | 
| template<class PARAMETER_BLOCK_T > | |
| bool | getSensorStateParameterBlockAs (uint64_t poseId, int sensorIdx, int sensorType, int stateType, PARAMETER_BLOCK_T &stateParameterBlock) const | 
| template<class PARAMETER_BLOCK_T > | |
| bool | getSensorStateEstimateAs (uint64_t poseId, int sensorIdx, int sensorType, int stateType, typename PARAMETER_BLOCK_T::estimate_t &state) const | 
| template<class PARAMETER_BLOCK_T > | |
| bool | setGlobalStateEstimateAs (uint64_t poseId, int stateType, const typename PARAMETER_BLOCK_T::estimate_t &state) | 
| template<class PARAMETER_BLOCK_T > | |
| bool | setSensorStateEstimateAs (uint64_t poseId, int sensorIdx, int sensorType, int stateType, const typename PARAMETER_BLOCK_T::estimate_t &state) | 
Private Attributes | |
| std::map< uint64_t, States > | statesMap_ | 
| Buffer for currently considered states.  More... | |
| std::map< uint64_t,  okvis::MultiFramePtr >  | multiFramePtrMap_ | 
| remember all needed okvis::MultiFrame.  More... | |
| std::shared_ptr < okvis::ceres::Map >  | mapPtr_ | 
| The underlying okvis::Map.  More... | |
| uint64_t | referencePoseId_ | 
| The pose ID of the reference (currently not changing)  More... | |
| okvis::PointMap | landmarksMap_ | 
| Contains all the current landmarks (synched after optimisation).  More... | |
| std::mutex | statesMutex_ | 
| Regulate access of landmarksMap_.  More... | |
| std::vector < okvis::ExtrinsicsEstimationParameters, Eigen::aligned_allocator < okvis::ExtrinsicsEstimationParameters > >  | extrinsicsEstimationParametersVec_ | 
| Extrinsics parameters.  More... | |
| std::vector < okvis::ImuParameters, Eigen::aligned_allocator < okvis::ImuParameters > >  | imuParametersVec_ | 
| IMU parameters.  More... | |
| std::shared_ptr < ::ceres::LossFunction >  | cauchyLossFunctionPtr_ | 
| Cauchy loss.  More... | |
| std::shared_ptr < ::ceres::LossFunction >  | huberLossFunctionPtr_ | 
| Huber loss.  More... | |
| std::shared_ptr < ceres::MarginalizationError >  | marginalizationErrorPtr_ | 
| The marginalisation class.  More... | |
| ::ceres::ResidualBlockId | marginalizationResidualId_ | 
| Remembers the marginalisation object's Id.  More... | |
| std::unique_ptr < okvis::ceres::CeresIterationCallback >  | ceresCallback_ | 
| Maybe there was a callback registered, store it here.  More... | |
Additional Inherited Members | |
  Public Types inherited from okvis::VioBackendInterface | |
| enum | InitializationStatus { InitializationStatus::NotStarted = 0, InitializationStatus::Ongoing = 1, InitializationStatus::Complete = 2 } | 
| Enum to define the status of initialization.  More... | |
The estimator class.
The estimator class. This does all the backend work. Frames: W: World B: Body C: Camera S: Sensor (IMU)
      
  | 
  private | 
Union of all sensor states.
      
  | 
  private | 
Container for global states.
      
  | 
  private | 
Container for sensor states. The dimension can vary from sensor to sensor...
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
| okvis::Estimator::Estimator | ( | ) | 
The default constructor.
| okvis::Estimator::Estimator | ( | std::shared_ptr< okvis::ceres::Map > | mapPtr | ) | 
Constructor if a ceres map is already available.
| mapPtr | Shared pointer to ceres map. | 
      
  | 
  virtual | 
      
  | 
  virtual | 
Add a camera to the configuration. Sensors can only be added and never removed.
| extrinsicsEstimationParameters | The parameters that tell how to estimate extrinsics. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Add an IMU to the configuration.
| imuParameters | The IMU parameters. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Add a landmark.
| landmarkId | ID of the new landmark. | 
| landmark | Homogeneous coordinates of landmark in W-frame. | 
Implements okvis::VioBackendInterface.
| ::ceres::ResidualBlockId okvis::Estimator::addObservation | ( | uint64_t | landmarkId, | 
| uint64_t | poseId, | ||
| size_t | camIdx, | ||
| size_t | keypointIdx | ||
| ) | 
| ::ceres::ResidualBlockId okvis::Estimator::addObservation | ( | uint64_t | landmarkId, | 
| uint64_t | poseId, | ||
| size_t | camIdx, | ||
| size_t | keypointIdx | ||
| ) | 
Add an observation to a landmark.
| GEOMETRY_TYPE | The camera geometry type for this observation. | 
| landmarkId | ID of landmark. | 
| poseId | ID of pose where the landmark was observed. | 
| camIdx | ID of camera frame where the landmark was observed. | 
| keypointIdx | ID of keypoint corresponding to the landmark. | 
      
  | 
  virtual | 
Add a pose to the state.
| multiFrame | Matched multiFrame. | 
| imuMeasurements | IMU measurements from last state to new one. | 
| asKeyframe | Is this new frame a keyframe? | 
Implements okvis::VioBackendInterface.
| bool okvis::Estimator::applyMarginalizationStrategy | ( | size_t | numKeyframes, | 
| size_t | numImuFrames, | ||
| okvis::MapPointVector & | removedLandmarks | ||
| ) | 
Applies the dropping/marginalization strategy according to the RSS'13/IJRR'14 paper. The new number of frames in the window will be numKeyframes+numImuFrames.
| numKeyframes | Number of keyframes. | 
| numImuFrames | Number of frames in IMU window. | 
| removedLandmarks | Get the landmarks that were removed by this operation. | 
      
  | 
  virtual | 
Remove all cameras from the configuration.
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Remove all IMUs from the configuration.
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Get the ID of the newest frame added to the state.
Implements okvis::VioBackendInterface.
| uint64_t okvis::Estimator::currentKeyframeId | ( | ) | const | 
Get the ID of the current keyframe.
| uint64_t okvis::Estimator::frameIdByAge | ( | size_t | age | ) | const | 
Get the ID of an older frame.
| [in] | age | age of desired frame. 0 would be the newest frame added to the state. | 
      
  | 
  virtual | 
Get pose for a given pose ID.
| [in] | poseId | ID of desired pose. | 
| [out] | T_WS | Homogeneous transformation of this pose. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Get camera states for a given pose ID.
| [in] | poseId | ID of pose to get camera state for. | 
| [in] | cameraIdx | index of camera to get state for. | 
| [out] | T_SCi | Homogeneous transformation from sensor (IMU) frame to camera frame. | 
Implements okvis::VioBackendInterface.
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  virtual | 
Get a specific landmark.
| [in] | landmarkId | ID of desired landmark. | 
| [out] | mapPoint | Landmark information, such as quality, coordinates etc. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Get a copy of all the landmarks as a PointMap.
| [out] | landmarks | The landmarks. | 
Implements okvis::VioBackendInterface.
| size_t okvis::Estimator::getLandmarks | ( | okvis::MapPointVector & | landmarks | ) | const | 
Get a copy of all the landmark in a MapPointVector. This is for legacy support. Use getLandmarks(okvis::PointMap&) if possible.
| [out] | landmarks | A vector of all landmarks. | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  virtual | 
Get speeds and IMU biases for a given pose ID.
| [in] | poseId | ID of pose to get speeds and biases for. | 
| [in] | imuIdx | index of IMU to get biases for. As only one IMU is supported this is always 0. | 
| [out] | speedAndBias | Speed And bias requested. | 
Implements okvis::VioBackendInterface.
      
  | 
  static | 
Initialise pose from IMU measurements. For convenience as static.
| [in] | imuMeasurements | The IMU measurements to be used for this. | 
| [out] | T_WS | initialised pose. | 
| bool okvis::Estimator::isInImuWindow | ( | uint64_t | frameId | ) | const | 
Checks if a particular frame is still in the IMU window.
| [in] | frameId | ID of frame to check. | 
      
  | 
  inlinevirtual | 
Checks if a particular frame is a keyframe.
| [in] | frameId | ID of frame to check. | 
Implements okvis::VioBackendInterface.
      
  | 
  inlinevirtual | 
Checks whether the landmark is added to the estimator.
| landmarkId | The ID. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Checks whether the landmark is initialized.
| landmarkId | The ID. | 
Implements okvis::VioBackendInterface.
      
  | 
  inlinevirtual | 
Get a multiframe.
| frameId | ID of desired multiframe. | 
Implements okvis::VioBackendInterface.
      
  | 
  inlinevirtual | 
Get the number of states/frames in the estimator.
Implements okvis::VioBackendInterface.
      
  | 
  inlinevirtual | 
Get the number of landmarks in the estimator.
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Start ceres optimization.
| [in] | numIter | Maximum number of iterations. | 
| [in] | numThreads | Number of threads. | 
| [in] | verbose | Print out optimization progress and result, if true. | 
Implements okvis::VioBackendInterface.
| void okvis::Estimator::printStates | ( | uint64_t | poseId, | 
| std::ostream & | buffer | ||
| ) | const | 
Prints state information to buffer.
| poseId | The pose Id for which to print. | 
| buffer | The puffer to print into. | 
      
  | 
  virtual | 
Remove an observation from a landmark, if available.
| landmarkId | ID of landmark. | 
| poseId | ID of pose where the landmark was observed. | 
| camIdx | ID of camera frame where the landmark was observed. | 
| keypointIdx | ID of keypoint corresponding to the landmark. | 
Implements okvis::VioBackendInterface.
      
  | 
  private | 
Remove an observation from a landmark.
| residualBlockId | Residual ID for this landmark. | 
      
  | 
  virtual | 
Set pose for a given pose ID.
| [in] | poseId | ID of the pose that should be changed. | 
| [in] | T_WS | new homogeneous transformation. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Set the transformation from sensor to camera frame for a given pose ID.
| [in] | poseId | ID of the pose to change corresponding camera states for. | 
| [in] | cameraIdx | Index of camera to set state for. | 
| [in] | T_SCi | new homogeneous transformation from sensor (IMU) to camera frame. | 
Implements okvis::VioBackendInterface.
      
  | 
  private | 
      
  | 
  inlinevirtual | 
Set whether a frame is a keyframe or not.
| [in] | frameId | The frame ID. | 
| [in] | isKeyframe | Whether or not keyrame. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Set the homogeneous coordinates for a landmark.
| [in] | landmarkId | The landmark ID. | 
| [in] | landmark | Homogeneous coordinates of landmark in W-frame. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Set the landmark initialization state.
| [in] | landmarkId | The landmark ID. | 
| [in] | initialized | Whether or not initialised. | 
Implements okvis::VioBackendInterface.
      
  | 
  inlinevirtual | 
set ceres map
| [in] | mapPtr | The pointer to the okvis::ceres::Map. | 
Implements okvis::VioBackendInterface.
      
  | 
  virtual | 
Set a time limit for the optimization process.
| [in] | timeLimit | Time limit in seconds. If timeLimit < 0 the time limit is removed. | 
| [in] | minIterations | minimum iterations the optimization process should do disregarding the time limit. | 
Implements okvis::VioBackendInterface.
      
  | 
  private | 
      
  | 
  virtual | 
Set the speeds and IMU biases for a given pose ID.
| [in] | poseId | ID of the pose to change corresponding speeds and biases for. | 
| [in] | imuIdx | index of IMU to get biases for. As only one IMU is supported this is always 0. | 
| [in] | speedAndBias | new speeds and biases. | 
Implements okvis::VioBackendInterface.
      
  | 
  inlinevirtual | 
Get the timestamp for a particular frame.
| [in] | frameId | ID of frame. | 
Implements okvis::VioBackendInterface.
      
  | 
  private | 
Cauchy loss.
      
  | 
  private | 
Maybe there was a callback registered, store it here.
      
  | 
  private | 
Extrinsics parameters.
      
  | 
  private | 
Huber loss.
      
  | 
  private | 
IMU parameters.
      
  | 
  private | 
Contains all the current landmarks (synched after optimisation).
      
  | 
  private | 
The underlying okvis::Map.
      
  | 
  private | 
The marginalisation class.
      
  | 
  private | 
Remembers the marginalisation object's Id.
      
  | 
  private | 
remember all needed okvis::MultiFrame.
      
  | 
  private | 
The pose ID of the reference (currently not changing)
      
  | 
  private | 
Buffer for currently considered states.
      
  | 
  mutableprivate | 
Regulate access of landmarksMap_.
 1.8.6