November 27, 2022
Track without prior model of world
Challenges:
Model-based tracking is
More accurate
Mandates sparse map of high-quality features
Keyframes
Split the tracking and mapping into two threads
Tracking Thread vs Mapping Thread
Asynchronous mapping thread
User input required:
Keyframes are only added if:
When a keyframe is added:
Check all maximal FAST corners in the keyframe:
Bundle Adjustment
Compatible with M-estimators (we use Tukey)
// This is the Tukey biweight loss function which aggressively
// attempts to suppress large errors.
class CERES_EXPORT TukeyLoss final : public ceres::LossFunction {
public:
explicit TukeyLoss(double a) : a_squared_(a * a) {}
void Evaluate(double, double*) const override;
private:
const double a_squared_;
};
When camera is not exploring, mapping thread has idle time
Make mono and RGB version of image
Make four pyramid levels
Detect FAST corners
Choose subset to measure
Search a fixed radius around projected position
What can we draw in an unknown scene?
Three quality levels: Good
, Poor
, Lost
Good
Lost