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
178 public:
187 SDK& sdk, const std::string& detections_topic = "object_detection/detections_2d",
188 const std::string& enabled_topic = "object_detection/detections_2d_enabled");
189
194
195 // Make non-copyable and non-movable
197 ObjectDetectionProvider& operator=(const ObjectDetectionProvider&) = delete;
200
206 void updateDetections2D(const ImageDetections2D& image_detections);
207
214
226 ObjectDetectionEnabledCallback callback = nullptr) {
228 return *this;
229 }
230
231 private:
232 class Impl;
233 std::shared_ptr<Impl> _impl;
234};
235
236} // 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:177
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:225
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:97
Contains 2D detections for a specific image.
Definition image_detections_2d.hpp:44