Auterion App SDK
Auterion SDK is a library that can be used by AuterionOS apps to communicate with the system.
Loading...
Searching...
No Matches
object_detection_provider.hpp
1/****************************************************************************
2 *
3 * Copyright 2025-2026 Auterion AG. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice, this
9 * list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its contributors
16 * may be used to endorse or promote products derived from this software without
17 * specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 ****************************************************************************/
32
33#pragma once
34
35#include <auterion_sdk/object_detection/class_catalog.hpp>
36#include <auterion_sdk/object_detection/image_detections_2d.hpp>
37#include <functional>
38#include <memory>
39#include <utility>
40
41namespace auterion {
42
43class SDK;
44
54using ObjectDetectionEnabledCallback = std::function<void(bool enable)>;
55
63 public:
70 const std::shared_ptr<class ObjectDetectionEnabledSubscriptionImpl>& impl);
71
81 void onUpdate(ObjectDetectionEnabledCallback callback);
82
91 void subscribe(ObjectDetectionEnabledCallback callback = nullptr);
92
99 bool last() const;
100
106 bool isLastValid() const;
107
108 private:
109 std::shared_ptr<class ObjectDetectionEnabledSubscriptionImpl> _impl;
110};
111
120 bool ros{true};
122 bool mavlink{true};
124
132 ros = enable;
133 return *this;
134 }
135
145 mavlink = enable;
146 return *this;
147 }
148
157 class_catalog = std::move(catalog);
158 return *this;
159 }
160};
161
231 public:
240
245
246 // Make non-copyable and non-movable
248 ObjectDetectionProvider& operator=(const ObjectDetectionProvider&) = delete;
251
257 void updateDetections2D(const ImageDetections2D& image_detections);
258
267 void setClassCatalog(const ClassCatalog& catalog);
268
275
287 ObjectDetectionEnabledCallback callback = nullptr) {
289 return *this;
290 }
291
292 private:
293 class Impl;
294 std::shared_ptr<Impl> _impl;
295};
296
297} // namespace auterion
Names for the classes a detector reports, for the ground station to display.
Definition class_catalog.hpp:65
A class for managing subscriptions to object detection service state changes.
Definition object_detection_provider.hpp:62
ObjectDetectionEnabledSubscription(const std::shared_ptr< class ObjectDetectionEnabledSubscriptionImpl > &impl)
Construct a new ObjectDetectionEnabledSubscription object.
void subscribe(ObjectDetectionEnabledCallback callback=nullptr)
Activates the subscription process and registers a callback function if provided.
void onUpdate(ObjectDetectionEnabledCallback callback)
Registers a callback function to be called when the object detection enabled state changes.
bool isLastValid() const
Checks if the last received object detection state is valid.
bool last() const
Retrieves the last received object detection enabled state.
Publisher for 2D object detections.
Definition object_detection_provider.hpp:230
void setClassCatalog(const ClassCatalog &catalog)
Replaces the class catalog at runtime, for example after a model switch.
ObjectDetectionEnabledSubscription & objectDetectionEnabledSubscription() const
Get the object detection enabled subscription.
ObjectDetectionProvider & subscribeObjectDetectionEnabled(ObjectDetectionEnabledCallback callback=nullptr)
Subscribe to object detection enabled state changes to control provider operation.
Definition object_detection_provider.hpp:286
virtual ~ObjectDetectionProvider()
Destroy the Object Detection Provider object.
void updateDetections2D(const ImageDetections2D &image_detections)
Publishes 2D object detections.
ObjectDetectionProvider(SDK &sdk, DetectionProviderOptions options={})
Construct a new Object Detection Provider object.
SDK execution class. All callbacks are called on the same thread.
Definition auterion.hpp:119
Configures an ObjectDetectionProvider: where detections go, and their class names.
Definition object_detection_provider.hpp:119
DetectionProviderOptions & withMavlink(bool enable)
Enable or disable the MAVLink detection output.
Definition object_detection_provider.hpp:144
bool mavlink
Send detections to the ground station. A batch without image dimensions is not sent.
Definition object_detection_provider.hpp:122
DetectionProviderOptions & withRos(bool enable)
Enable or disable the ROS detections topic.
Definition object_detection_provider.hpp:131
DetectionProviderOptions & withClassCatalog(ClassCatalog catalog)
Set the class catalog the ground station shows.
Definition object_detection_provider.hpp:156
bool ros
Definition object_detection_provider.hpp:120
ClassCatalog class_catalog
names for the class ids reported; empty is valid
Definition object_detection_provider.hpp:123
2D detections for a single source frame.
Definition image_detections_2d.hpp:50