Added two ReadMe files to document the plethora of smart factors.
parent
4ef234bbbb
commit
372ae27a5e
|
@ -0,0 +1,64 @@
|
|||
# SLAM Factors
|
||||
|
||||
## GenericProjectionFactor (defined in ProjectionFactor.h)
|
||||
|
||||
Non-linear factor for a constraint derived from a 2D measurement.
|
||||
The calibration is assumed known and passed in the constructor.
|
||||
The main building block for visual SLAM.
|
||||
|
||||
Templated on
|
||||
- `POSE`, default `Pose3`
|
||||
- `LANDMARK`, default `Point3`
|
||||
- `CALIBRATION`, default `Cal3_S2`
|
||||
|
||||
## SmartFactors
|
||||
|
||||
These are "structure-less" factors, i.e., rather than introducing a new variable for an observed 3D point or landmark, a single factor is created that provides a multi-view constraint on several poses and/or cameras.
|
||||
|
||||
### SmartFactorBase
|
||||
|
||||
This is the base class for smart factors, templated on a `CAMERA` type.
|
||||
It has no internal point, but it saves the measurements, keeps a noise model, and an optional sensor pose.
|
||||
|
||||
### SmartProjectionFactor
|
||||
|
||||
Also templated on `CAMERA`. Triangulates a 3D point and keeps an estimate of it around.
|
||||
This factor operates with monocular cameras, and is used to optimize the camera pose
|
||||
*and* calibration for each camera, and requires variables of type `CAMERA` in values.
|
||||
|
||||
If the calibration is fixed use `SmartProjectionPoseFactor` instead!
|
||||
|
||||
|
||||
### SmartProjectionPoseFactor
|
||||
|
||||
Derives from `SmartProjectionFactor` but is templated on a `CALIBRATION` type, setting `CAMERA = PinholePose<CALIBRATION>`.
|
||||
This factor assumes that the camera calibration is fixed and the same for all cameras involved in this factor.
|
||||
The factor only constrains poses.
|
||||
|
||||
If the calibration should be optimized, as well, use `SmartProjectionFactor` instead!
|
||||
|
||||
### SmartProjectionFactorP
|
||||
|
||||
Same as `SmartProjectionPoseFactor`, except:
|
||||
- it is templated on `CAMERA`, i.e., it allows cameras beyond pinhole;
|
||||
- it admits a different calibration for each measurement, i.e., it can model a multi-camera system;
|
||||
- it allows multiple observations from the same pose/key, again, to model a multi-camera system.
|
||||
|
||||
TODO: DimPose and ZDim are hardcoded. Copy/paste from `SmartProjectionPoseFactor`. Unclear what the use case is.
|
||||
|
||||
### RegularImplicitSchurFactor
|
||||
|
||||
A specialization of a GaussianFactor to structure-less SFM, which is very fast in a conjugate gradient (CG) solver.
|
||||
It is produced by calling `createRegularImplicitSchurFactor` in `SmartFactorBase` or `SmartProjectionFactor`.
|
||||
|
||||
### JacobianFactorQ
|
||||
|
||||
A RegularJacobianFactor that uses some badly documented reduction on the Jacobians.
|
||||
|
||||
### JacobianFactorQR
|
||||
|
||||
A RegularJacobianFactor that eliminates a point using sequential elimination.
|
||||
|
||||
### JacobianFactorQR
|
||||
|
||||
A RegularJacobianFactor that uses the "Nullspace Trick" by Mourikis et al. See the documentation in the file, which *is* well documented.
|
|
@ -0,0 +1,39 @@
|
|||
# SLAM Factors
|
||||
|
||||
## SmartFactors
|
||||
|
||||
These are "structure-less" factors, i.e., rather than introducing a new variable for an observed 3D point or landmark, a single factor is created that provides a multi-view constraint on several poses and/or cameras.
|
||||
|
||||
### SmartRangeFactor
|
||||
|
||||
An experiment in creating a structure-less 2D range-SLAM factor with range-only measurements.
|
||||
It uses a sophisticated `triangulate` logic based on circle intersections.
|
||||
|
||||
### SmartStereoProjectionFactor
|
||||
|
||||
Version of `SmartProjectionFactor` for stereo observations, specializes SmartFactorBase for `CAMERA == StereoCamera`.
|
||||
|
||||
TODO: a lot of commented out code and could move a lot to .cpp file.
|
||||
|
||||
### SmartStereoProjectionPoseFactor
|
||||
|
||||
Derives from `SmartStereoProjectionFactor` but adds an array of `Cal3_S2Stereo` calibration objects .
|
||||
|
||||
TODO: Again, as no template arguments, we could move a lot to .cpp file.
|
||||
|
||||
### SmartStereoProjectionFactorPP
|
||||
|
||||
Similar `SmartStereoProjectionPoseFactor` but *additionally* adds an array of body_P_cam poses. The dimensions seem to be hardcoded and the types defined in the SmartFactorBase have been re-defined.
|
||||
|
||||
TODO: See above, same issues as `SmartStereoProjectionPoseFactor`.
|
||||
|
||||
### SmartProjectionPoseFactorRollingShutter
|
||||
|
||||
Is templated on a `CAMERA` type and derives from `SmartProjectionFactor`.
|
||||
|
||||
This factor optimizes two consecutive poses of a body assuming a rolling
|
||||
shutter model of the camera with given readout time. The factor requires that
|
||||
values contain (for each 2D observation) two consecutive camera poses from
|
||||
which the 2D observation pose can be interpolated.
|
||||
|
||||
TODO: the dimensions seem to be hardcoded and the types defined in the SmartFactorBase have been re-defined. Also, possibly a lot of copy/paste computation of things that (should) happen in base class.
|
Loading…
Reference in New Issue