Ocean
Loading...
Searching...
No Matches
Ocean SLAM Tracking Library

The Ocean SLAM Tracking Library provides a monocular visual SLAM implementation for real-time camera tracking and 3D environment reconstruction, optimized for mobile AR/VR applications. More...

Collaboration diagram for Ocean SLAM Tracking Library:

Data Structures

class  Ocean::Tracking::SLAM::BackgroundTask
 This class implements a task which runs in the background while the caller is able to wait for the task to be finished. More...
 
class  Ocean::Tracking::SLAM::CameraPose
 This class holds the camera pose of a camera in relation to the world. More...
 
class  Ocean::Tracking::SLAM::CameraPoses
 This class implements a container for camera poses. More...
 
class  Ocean::Tracking::SLAM::FramePyramidManager
 This class manages a pool of frame pyramids for efficient reuse. More...
 
class  Ocean::Tracking::SLAM::Gravities
 This class implements a container for gravity vectors associated with frame indices. More...
 
class  Ocean::Tracking::SLAM::LocalizedObjectPoint
 This class implements a localized 3D object point. More...
 
class  Ocean::Tracking::SLAM::LockManager
 This class implements a singleton manager for collecting and reporting lock timing measurements. More...
 
class  Ocean::Tracking::SLAM::LockTimer< tEnable >
 This class implements a helper for timing lock acquisition and hold durations. More...
 
class  Ocean::Tracking::SLAM::LockTimer< false >
 Specialization of LockTimer for disabled timing. More...
 
class  Ocean::Tracking::SLAM::ReadLock
 This class implements a scoped read lock for a shared mutex. More...
 
class  Ocean::Tracking::SLAM::WriteLock
 This class implements a scoped write lock for a shared mutex. More...
 
class  Ocean::Tracking::SLAM::Observation
 This class implements an observation of a 3D feature point in a camera frame. More...
 
class  Ocean::Tracking::SLAM::OccupancyArray
 This class implements an occupancy array allowing to keep track of occupied and unoccupied bins in a camera image. More...
 
class  Ocean::Tracking::SLAM::PointTrack
 This class implements a point track which stores continuous 2D observations of a 3D object point over consecutive frames. More...
 
class  Ocean::Tracking::SLAM::PoseCorrespondences
 This class holds 2D-3D point correspondences for camera pose estimation. More...
 
class  Ocean::Tracking::SLAM::SLAMDebugElements
 The class extends DebugElements to provide visual debugging output for various SLAM components such as occupancy arrays, tracked image points, object points, and overall tracking results. More...
 
class  Ocean::Tracking::SLAM::Tracker
 This class implements the base class for all SLAM trackers. More...
 
class  Ocean::Tracking::SLAM::TrackerMono
 This class implements a monocular SLAM tracker. More...
 
class  Ocean::Tracking::SLAM::TrackingCorrespondences
 This class holds 2D-2D point correspondences for frame-to-frame tracking. More...
 
class  Ocean::Tracking::SLAM::Utilities
 This class implements utility functions for SLAM. More...
 

Typedefs

using Ocean::Tracking::SLAM::SharedCameraPose = std::shared_ptr< CameraPose >
 Definition of a shared pointer holding a CameraPose object.
 
using Ocean::Tracking::SLAM::LocalizedObjectPointMap = std::unordered_map< Index32, LocalizedObjectPoint >
 Definition of an unordered map mapping object point ids to localized object points.
 
using Ocean::Tracking::SLAM::Mutex = std::shared_mutex
 Definition of a mutex supporting read and write locks.
 
using Ocean::Tracking::SLAM::Observations = std::vector< Observation >
 Definition of a vector holding observations.
 
using Ocean::Tracking::SLAM::PointTrackMap = std::unordered_map< Index32, PointTrack >
 Definition of an unordered map mapping object point ids to point tracks.
 

Detailed Description

The Ocean SLAM Tracking Library provides a monocular visual SLAM implementation for real-time camera tracking and 3D environment reconstruction, optimized for mobile AR/VR applications.

The pipeline detects and tracks Harris corner features across image pyramids, estimates camera poses using P3P+RANSAC with optional IMU gravity constraints, and builds a 3D map through multi-view triangulation with background bundle adjustment. Core classes include TrackerMono (main tracker), LocalizedObjectPoint (3D map points with FREAK descriptors), CameraPoses (thread-safe pose storage), and TrackingCorrespondences (frame-to-frame feature tracking).

See also
Tracker, TrackerMono, CameraPose, LocalizedObjectPoint

Typedef Documentation

◆ LocalizedObjectPointMap

Definition of an unordered map mapping object point ids to localized object points.

◆ Mutex

using Ocean::Tracking::SLAM::Mutex = typedef std::shared_mutex

Definition of a mutex supporting read and write locks.

The mutex is not recursive.

This mutex allows multiple concurrent read locks (shared access) but only one write lock (exclusive access). Use ReadLock for read-only operations and WriteLock when modifying shared data.

Example usage:

class SharedResource
{
public:
// Read operation: multiple threads can read simultaneously
int getValue() const
{
const ReadLock readLock(mutex_);
return value_;
}
// Write operation: exclusive access, blocks all readers and writers
void setValue(int newValue)
{
const WriteLock writeLock(mutex_);
value_ = newValue;
}
// Named locks for timing diagnostics (when LockManager::isEnabled_ is true)
void updateWithTiming(int newValue)
{
const WriteLock writeLock(mutex_, "SharedResource::updateWithTiming");
value_ = newValue;
}
protected:
/// The value of the shared resource.
int value_ = 0;
/// The mutex of the shared resource.
mutable Mutex mutex_;
};
This class implements a scoped read lock for a shared mutex.
Definition Mutex.h:261

◆ Observations

using Ocean::Tracking::SLAM::Observations = typedef std::vector<Observation>

Definition of a vector holding observations.

◆ PointTrackMap

using Ocean::Tracking::SLAM::PointTrackMap = typedef std::unordered_map<Index32, PointTrack>

Definition of an unordered map mapping object point ids to point tracks.

◆ SharedCameraPose

using Ocean::Tracking::SLAM::SharedCameraPose = typedef std::shared_ptr<CameraPose>

Definition of a shared pointer holding a CameraPose object.

See also
CameraPose