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 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/image_detections_2d.hpp>
36#include <memory>
37#include <string>
38
39namespace auterion {
40
41class SDK;
42
52using ObjectDetectionEnabledCallback = std::function<void(bool enable)>;
53
61 public:
68 const std::shared_ptr<class ObjectDetectionEnabledSubscriptionImpl>& impl);
69
79 void onUpdate(ObjectDetectionEnabledCallback callback);
80
89 void subscribe(ObjectDetectionEnabledCallback callback = nullptr);
90
97 bool last() const;
98
104 bool isLastValid() const;
105
106 private:
107 std::shared_ptr<class ObjectDetectionEnabledSubscriptionImpl> _impl;
108};
109
180 public:
189 SDK& sdk, const std::string& detections_topic = "object_detection/detections_2d",
190 const std::string& enabled_topic = "object_detection/detections_2d_enabled");
191
196
197 // Make non-copyable and non-movable
199 ObjectDetectionProvider& operator=(const ObjectDetectionProvider&) = delete;
202
208 void updateDetections2D(const ImageDetections2D& image_detections);
209
216
228 ObjectDetectionEnabledCallback callback = nullptr) {
230 return *this;
231 }
232
233 private:
234 class Impl;
235 std::shared_ptr<Impl> _impl;
236};
237
238} // namespace auterion
A class for managing subscriptions to object detection service state changes.
Definition object_detection_provider.hpp:60
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:179
ObjectDetectionEnabledSubscription & objectDetectionEnabledSubscription() const
Get the object detection enabled subscription.
ObjectDetectionProvider(SDK &sdk, const std::string &detections_topic="object_detection/detections_2d", const std::string &enabled_topic="object_detection/detections_2d_enabled")
Construct a new Object Detection Provider object.
ObjectDetectionProvider & subscribeObjectDetectionEnabled(ObjectDetectionEnabledCallback callback=nullptr)
Subscribe to object detection enabled state changes to control provider operation.
Definition object_detection_provider.hpp:227
virtual ~ObjectDetectionProvider()
Destroy the Object Detection Provider object.
void updateDetections2D(const ImageDetections2D &image_detections)
Publishes 2D object detections.
SDK execution class. All callbacks are called on the same thread.
Definition auterion.hpp:119
2D detections for a single source frame.
Definition image_detections_2d.hpp:45