Ocean
Loading...
Searching...
No Matches
OnDeviceRelocalizerTracker6DOF.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_DEVICES_MAPBUILDING_ON_DEVICE_RELOCALIZER_TRACKER_6DOF_H
9#define META_OCEAN_DEVICES_MAPBUILDING_ON_DEVICE_RELOCALIZER_TRACKER_6DOF_H
10
13
14#include "ocean/base/Thread.h"
15
19
21
22namespace Ocean
23{
24
25namespace Devices
26{
27
28namespace MapBuilding
29{
30
31/**
32 * This class implements an On-Device Relocalizer based on offline created feature maps.
33 * @ingroup devicesmapbuilding
34 */
35class OCEAN_DEVICES_MAPBUILDING_EXPORT OnDeviceRelocalizerTracker6DOF :
36 virtual public MapBuildingDevice,
37 virtual public SceneTracker6DOF,
38 virtual public ObjectTracker,
39 virtual public VisualTracker,
40 protected Thread
41{
42 friend class MapBuildingFactory;
43
44 public:
45
46 /**
47 * Adds a new tracking object.
48 * The description must be the url of a file containing the feature map
49 * @see ObjectTracker::registerObject().
50 */
51 ObjectId registerObject(const std::string& description, const Vector3& dimension) override;
52
53 /**
54 * Returns whether this device is active.
55 * @see Devices::isStarted().
56 */
57 bool isStarted() const override;
58
59 /**
60 * Starts the device.
61 * @see Device::start().
62 */
63 bool start() override;
64
65 /**
66 * Stops the device.
67 * @see Device::stop().
68 */
69 bool stop() override;
70
71 /**
72 * Returns whether a specific object is currently actively tracked by this tracker.
73 * @see Tracker::isObjectTracked().
74 */
75 bool isObjectTracked(const ObjectId& objectId) const override;
76
77 /**
78 * Returns the name of this tracker.
79 * @return Tracker name
80 */
81 static inline std::string deviceNameOnDeviceRelocalizerTracker6DOF();
82
83 /**
84 * Returns the type of this tracker.
85 * @return Tracker type
86 */
87 static inline DeviceType deviceTypeOnDeviceRelocalizerTracker6DOF();
88
89 private:
90
91 /**
92 * Creates a new 6DOF tracker object.
93 */
95
96 /**
97 * Destructs a 6DOF tracker object.
98 */
100
101 /**
102 * Thread function.
103 * @see Thread::threadRun().
104 */
105 void threadRun() override;
106
107 private:
108
109 /// The map's unique id.
110 ObjectId mapObjectId_ = invalidObjectId();
111
112 /// True, if the map is currently tracked.
113 bool isMapTracked_ = false;
114
115 /// The reusable frame.
117
118 /// The relocalizer to be used to determine the 6-DOF pose.
120
121 /// The 3D object points of the relocalizer.
123
124 /// The ids of the object points of the relocalizer.
126};
127
129{
130 return std::string("On-Device Relocalizer 6DOF Tracker");
131}
132
137
138}
139
140}
141
142}
143
144#endif // META_OCEAN_DEVICES_MAPBUILDING_ON_DEVICE_RELOCALIZER_TRACKER_6DOF_H
Definition of a class holding the major and minor device type.
Definition devices/Device.h:62
This class implements a base class for all devices of the MapBuilding library.
Definition MapBuildingDevice.h:29
This class implements a device factory for the MapBuilding feature-based tracking system.
Definition MapBuildingFactory.h:29
This class implements an On-Device Relocalizer based on offline created feature maps.
Definition OnDeviceRelocalizerTracker6DOF.h:41
OnDeviceRelocalizerTracker6DOF()
Creates a new 6DOF tracker object.
bool isObjectTracked(const ObjectId &objectId) const override
Returns whether a specific object is currently actively tracked by this tracker.
static std::string deviceNameOnDeviceRelocalizerTracker6DOF()
Returns the name of this tracker.
Definition OnDeviceRelocalizerTracker6DOF.h:128
Vectors3 objectPoints_
The 3D object points of the relocalizer.
Definition OnDeviceRelocalizerTracker6DOF.h:122
~OnDeviceRelocalizerTracker6DOF() override
Destructs a 6DOF tracker object.
Tracking::MapBuilding::RelocalizerMono relocalizer_
The relocalizer to be used to determine the 6-DOF pose.
Definition OnDeviceRelocalizerTracker6DOF.h:119
Indices64 objectPointIds_
The ids of the object points of the relocalizer.
Definition OnDeviceRelocalizerTracker6DOF.h:125
static DeviceType deviceTypeOnDeviceRelocalizerTracker6DOF()
Returns the type of this tracker.
Definition OnDeviceRelocalizerTracker6DOF.h:133
ObjectId registerObject(const std::string &description, const Vector3 &dimension) override
Adds a new tracking object.
bool isStarted() const override
Returns whether this device is active.
Frame yFrame_
The reusable frame.
Definition OnDeviceRelocalizerTracker6DOF.h:116
unsigned int ObjectId
Definition of an object id.
Definition Measurement.h:46
This class is the base class for all tracker allowing to track an object or location.
Definition ObjectTracker.h:38
This class implements the base for all 6-DOF scene trackers.
Definition SceneTracker6DOF.h:42
static DeviceType deviceTypeTracker6DOF()
Definition of this device type.
Definition Tracker6DOF.h:100
@ TRACKER_VISUAL
Tracker using a visual input for their measurements.
Definition devices/Tracker.h:62
@ TRACKER_OBJECT
Tracker allowing to register tracking objects at runtime.
Definition devices/Tracker.h:64
This class is the base class for all tracker using visual input to create the tracking results.
Definition devices/VisualTracker.h:41
This class implements Ocean's image class.
Definition Frame.h:1808
This class implements a thread.
Definition Thread.h:115
This class implements a relocalizer for mono cameras.
Definition RelocalizerMono.h:33
std::vector< Index64 > Indices64
Definition of a vector holding 64 bit index values.
Definition Base.h:108
std::vector< Vector3 > Vectors3
Definition of a vector holding Vector3 objects.
Definition Vector3.h:65
The namespace covering the entire Ocean framework.
Definition Accessor.h:15