Skip to content

Commit 9039af2

Browse files
committed
Add rvc4 specific Feature Tracker node
1 parent 1d38b66 commit 9039af2

18 files changed

+710
-0
lines changed

CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ add_library(${TARGET_CORE_NAME}
254254
src/pipeline/node/EdgeDetector.cpp
255255
src/pipeline/node/SPIIn.cpp
256256
src/pipeline/node/FeatureTracker.cpp
257+
src/pipeline/node/FeatureTrackerRvc4.cpp
257258
src/pipeline/node/ToF.cpp
258259
src/pipeline/node/DetectionParser.cpp
259260
src/pipeline/node/test/MyProducer.cpp
@@ -286,6 +287,7 @@ add_library(${TARGET_CORE_NAME}
286287
src/pipeline/datatype/EdgeDetectorConfig.cpp
287288
src/pipeline/datatype/TrackedFeatures.cpp
288289
src/pipeline/datatype/FeatureTrackerConfig.cpp
290+
src/pipeline/datatype/FeatureTrackerConfigRvc4.cpp
289291
src/pipeline/datatype/ToFConfig.cpp
290292
src/pipeline/datatype/BenchmarkReport.cpp
291293
src/pipeline/datatype/PointCloudConfig.cpp

bindings/python/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ set(SOURCE_LIST
9595
src/pipeline/node/IMUBindings.cpp
9696
src/pipeline/node/EdgeDetectorBindings.cpp
9797
src/pipeline/node/FeatureTrackerBindings.cpp
98+
src/pipeline/node/FeatureTrackerBindingsRvc4.cpp
9899
src/pipeline/node/ToFBindings.cpp
99100
src/pipeline/node/AprilTagBindings.cpp
100101
src/pipeline/node/DetectionParserBindings.cpp
@@ -117,6 +118,7 @@ set(SOURCE_LIST
117118
src/pipeline/datatype/CameraControlBindings.cpp
118119
src/pipeline/datatype/EdgeDetectorConfigBindings.cpp
119120
src/pipeline/datatype/FeatureTrackerConfigBindings.cpp
121+
src/pipeline/datatype/FeatureTrackerConfigBindingsRvc4.cpp
120122
src/pipeline/datatype/ToFConfigBindings.cpp
121123
src/pipeline/datatype/ImageManipConfigBindings.cpp
122124
src/pipeline/datatype/ImgDetectionsBindings.cpp

bindings/python/src/DatatypeBindings.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ void bind_buffer(pybind11::module& m, void* pCallstack);
1010
void bind_cameracontrol(pybind11::module& m, void* pCallstack);
1111
void bind_edgedetectorconfig(pybind11::module& m, void* pCallstack);
1212
void bind_featuretrackerconfig(pybind11::module& m, void* pCallstack);
13+
void bind_featuretrackerconfigRvc4(pybind11::module& m, void* pCallstack);
1314
void bind_tofconfig(pybind11::module& m, void* pCallstack);
1415
void bind_imagemanipconfig(pybind11::module& m, void* pCallstack);
1516
void bind_imgdetections(pybind11::module& m, void* pCallstack);
@@ -42,6 +43,7 @@ void DatatypeBindings::addToCallstack(std::deque<StackFunction>& callstack) {
4243
callstack.push_front(bind_cameracontrol);
4344
callstack.push_front(bind_edgedetectorconfig);
4445
callstack.push_front(bind_featuretrackerconfig);
46+
callstack.push_front(bind_featuretrackerconfigRvc4);
4547
callstack.push_front(bind_tofconfig);
4648
callstack.push_front(bind_imagemanipconfig);
4749
callstack.push_front(bind_imgdetections);
@@ -102,6 +104,7 @@ void DatatypeBindings::bind(pybind11::module& m, void* pCallstack){
102104
.value("IMUData", DatatypeEnum::IMUData)
103105
.value("StereoDepthConfig", DatatypeEnum::StereoDepthConfig)
104106
.value("FeatureTrackerConfig", DatatypeEnum::FeatureTrackerConfig)
107+
.value("FeatureTrackerConfigRvc4", DatatypeEnum::FeatureTrackerConfigRvc4)
105108
.value("TrackedFeatures", DatatypeEnum::TrackedFeatures)
106109
.value("PointCloudConfig", DatatypeEnum::PointCloudConfig)
107110
.value("PointCloudData", DatatypeEnum::PointCloudData)

bindings/python/src/pipeline/PipelineBindings.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "depthai/pipeline/node/IMU.hpp"
3434
#include "depthai/pipeline/node/EdgeDetector.hpp"
3535
#include "depthai/pipeline/node/FeatureTracker.hpp"
36+
#include "depthai/pipeline/node/FeatureTrackerRvc4.hpp"
3637
#include "depthai/pipeline/node/AprilTag.hpp"
3738
#include "depthai/pipeline/node/DetectionParser.hpp"
3839
#include "depthai/pipeline/node/UVC.hpp"
@@ -207,6 +208,7 @@ void PipelineBindings::bind(pybind11::module& m, void* pCallstack){
207208
.def("createIMU", &Pipeline::create<node::IMU>)
208209
.def("createEdgeDetector", &Pipeline::create<node::EdgeDetector>)
209210
.def("createFeatureTracker", &Pipeline::create<node::FeatureTracker>)
211+
.def("createFeatureTrackerRvc4", &Pipeline::create<node::FeatureTrackerRvc4>)
210212
.def("createAprilTag", &Pipeline::create<node::AprilTag>)
211213
.def("createDetectionParser", &Pipeline::create<node::DetectionParser>)
212214
.def("createUVC", &Pipeline::create<node::UVC>)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
#include "DatatypeBindings.hpp"
2+
#include "pipeline/CommonBindings.hpp"
3+
#include <unordered_map>
4+
#include <memory>
5+
6+
// depthai
7+
#include "depthai/pipeline/datatype/FeatureTrackerConfigRvc4.hpp"
8+
9+
//pybind
10+
#include <pybind11/chrono.h>
11+
#include <pybind11/numpy.h>
12+
13+
// #include "spdlog/spdlog.h"
14+
15+
void bind_featuretrackerconfigRvc4(pybind11::module& m, void* pCallstack){
16+
17+
using namespace dai;
18+
19+
// py::class_<RawFeatureTrackerConfig, RawBuffer, std::shared_ptr<RawFeatureTrackerConfig>> rawFeatureTrackerConfig(m, "RawFeatureTrackerConfig", DOC(dai, RawFeatureTrackerConfig));
20+
py::class_<FeatureTrackerConfigRvc4, Py<FeatureTrackerConfigRvc4>, Buffer, std::shared_ptr<FeatureTrackerConfigRvc4>> featureTrackerConfigRvc4(m, "FeatureTrackerConfigRvc4", DOC(dai, FeatureTrackerConfigRvc4));
21+
py::class_<FeatureTrackerConfigRvc4::CornerDetector> cornerDetector(featureTrackerConfigRvc4, "CornerDetector", DOC(dai, FeatureTrackerConfigRvc4, CornerDetector));
22+
py::enum_<FeatureTrackerConfigRvc4::CornerDetector::Type> cornerDetectorType(cornerDetector, "Type", DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, Type));
23+
py::class_<FeatureTrackerConfigRvc4::CornerDetector::Thresholds> cornerDetectorThresholds(cornerDetector, "Thresholds", DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, Thresholds));
24+
py::class_<FeatureTrackerConfigRvc4::MotionEstimator> motionEstimator(featureTrackerConfigRvc4, "MotionEstimator", DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator));
25+
py::enum_<FeatureTrackerConfigRvc4::MotionEstimator::Type> motionEstimatorType(motionEstimator, "Type", DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, Type));
26+
py::class_<FeatureTrackerConfigRvc4::MotionEstimator::OpticalFlow> motionEstimatorOpticalFlow(motionEstimator, "OpticalFlow", DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, OpticalFlow));
27+
py::class_<FeatureTrackerConfigRvc4::FeatureMaintainer> featureMaintainer(featureTrackerConfigRvc4, "FeatureMaintainer", DOC(dai, FeatureTrackerConfigRvc4, FeatureMaintainer));
28+
29+
///////////////////////////////////////////////////////////////////////
30+
///////////////////////////////////////////////////////////////////////
31+
///////////////////////////////////////////////////////////////////////
32+
// Call the rest of the type defines, then perform the actual bindings
33+
Callstack* callstack = (Callstack*) pCallstack;
34+
auto cb = callstack->top();
35+
callstack->pop();
36+
cb(m, pCallstack);
37+
// Actual bindings
38+
///////////////////////////////////////////////////////////////////////
39+
///////////////////////////////////////////////////////////////////////
40+
///////////////////////////////////////////////////////////////////////
41+
42+
// // Metadata / raw
43+
// rawFeatureTrackerConfig
44+
// .def(py::init<>())
45+
// .def_readwrite("cornerDetector", &FeatureTrackerConfigRvc4::cornerDetector, DOC(dai, FeatureTrackerConfigRvc4, cornerDetector))
46+
// .def_readwrite("motionEstimator", &FeatureTrackerConfigRvc4::motionEstimator, DOC(dai, FeatureTrackerConfigRvc4, motionEstimator))
47+
// .def_readwrite("featureMaintainer", &FeatureTrackerConfigRvc4::featureMaintainer, DOC(dai, FeatureTrackerConfigRvc4, featureMaintainer))
48+
// ;
49+
50+
cornerDetectorType
51+
.value("HARRIS", FeatureTrackerConfigRvc4::CornerDetector::Type::HARRIS)
52+
;
53+
54+
cornerDetectorThresholds
55+
.def(py::init<>())
56+
.def_readwrite("harrisScore", &FeatureTrackerConfigRvc4::CornerDetector::Thresholds::harrisScore, DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, Thresholds, harrisScore))
57+
.def_readwrite("robustness", &FeatureTrackerConfigRvc4::CornerDetector::Thresholds::robustness, DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, Thresholds, robustness))
58+
;
59+
60+
cornerDetector
61+
.def(py::init<>())
62+
.def_readwrite("type", &FeatureTrackerConfigRvc4::CornerDetector::type, DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, type))
63+
.def_readwrite("numMaxFeatures", &FeatureTrackerConfigRvc4::CornerDetector::numMaxFeatures, DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, numMaxFeatures))
64+
.def_readwrite("gradientFilterShift", &FeatureTrackerConfigRvc4::CornerDetector::gradientFilterShift, DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, gradientFilterShift))
65+
.def_readwrite("descriptorLpf", &FeatureTrackerConfigRvc4::CornerDetector::descriptorLpf, DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, descriptorLpf))
66+
.def_readwrite("thresholds", &FeatureTrackerConfigRvc4::CornerDetector::thresholds, DOC(dai, FeatureTrackerConfigRvc4, CornerDetector, thresholds))
67+
;
68+
69+
motionEstimatorType
70+
.value("HW_MOTION_ESTIMATION", FeatureTrackerConfigRvc4::MotionEstimator::Type::HW_MOTION_ESTIMATION)
71+
;
72+
73+
motionEstimatorOpticalFlow
74+
.def(py::init<>())
75+
.def_readwrite("pyramidLevels", &FeatureTrackerConfigRvc4::MotionEstimator::OpticalFlow::pyramidLevels, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, OpticalFlow, pyramidLevels))
76+
.def_readwrite("searchWindowWidth", &FeatureTrackerConfigRvc4::MotionEstimator::OpticalFlow::searchWindowWidth, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, OpticalFlow, searchWindowWidth))
77+
.def_readwrite("searchWindowHeight", &FeatureTrackerConfigRvc4::MotionEstimator::OpticalFlow::searchWindowHeight, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, OpticalFlow, searchWindowHeight))
78+
.def_readwrite("epsilon", &FeatureTrackerConfigRvc4::MotionEstimator::OpticalFlow::epsilon, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, OpticalFlow, epsilon))
79+
.def_readwrite("maxIterations", &FeatureTrackerConfigRvc4::MotionEstimator::OpticalFlow::maxIterations, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, OpticalFlow, maxIterations))
80+
;
81+
82+
motionEstimator
83+
.def(py::init<>())
84+
.def_readwrite("enable", &FeatureTrackerConfigRvc4::MotionEstimator::enable, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, enable))
85+
.def_readwrite("type", &FeatureTrackerConfigRvc4::MotionEstimator::type, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, type))
86+
.def_readwrite("opticalFlow", &FeatureTrackerConfigRvc4::MotionEstimator::opticalFlow, DOC(dai, FeatureTrackerConfigRvc4, MotionEstimator, opticalFlow))
87+
;
88+
89+
featureMaintainer
90+
.def(py::init<>())
91+
.def_readwrite("enable", &FeatureTrackerConfigRvc4::FeatureMaintainer::enable, DOC(dai, FeatureTrackerConfigRvc4, FeatureMaintainer, enable))
92+
.def_readwrite("minimumDistanceBetweenFeatures", &FeatureTrackerConfigRvc4::FeatureMaintainer::minimumDistanceBetweenFeatures, DOC(dai, FeatureTrackerConfigRvc4, FeatureMaintainer, minimumDistanceBetweenFeatures))
93+
.def_readwrite("lostFeatureErrorThreshold", &FeatureTrackerConfigRvc4::FeatureMaintainer::lostFeatureErrorThreshold, DOC(dai, FeatureTrackerConfigRvc4, FeatureMaintainer, lostFeatureErrorThreshold))
94+
.def_readwrite("trackedFeatureThreshold", &FeatureTrackerConfigRvc4::FeatureMaintainer::trackedFeatureThreshold, DOC(dai, FeatureTrackerConfigRvc4, FeatureMaintainer, trackedFeatureThreshold))
95+
.def_readwrite("confidenceThreshold", &FeatureTrackerConfigRvc4::FeatureMaintainer::confidenceThreshold, DOC(dai, FeatureTrackerConfigRvc4, FeatureMaintainer, confidenceThreshold))
96+
;
97+
98+
// Message
99+
featureTrackerConfigRvc4
100+
.def(py::init<>())
101+
// .def(py::init<std::shared_ptr<FeatureTrackerConfigRvc4>>())
102+
103+
.def("setCornerDetector", static_cast<FeatureTrackerConfigRvc4&(FeatureTrackerConfigRvc4::*)(dai::FeatureTrackerConfigRvc4::CornerDetector::Type)>(&FeatureTrackerConfigRvc4::setCornerDetector), py::arg("cornerDetector"), DOC(dai, FeatureTrackerConfigRvc4, setCornerDetector))
104+
.def("setCornerDetector", static_cast<FeatureTrackerConfigRvc4&(FeatureTrackerConfigRvc4::*)(dai::FeatureTrackerConfigRvc4::CornerDetector)>(&FeatureTrackerConfigRvc4::setCornerDetector), py::arg("config"), DOC(dai, FeatureTrackerConfigRvc4, setCornerDetector, 2))
105+
.def("setMotionEstimator", static_cast<FeatureTrackerConfigRvc4&(FeatureTrackerConfigRvc4::*)(bool)>(&FeatureTrackerConfigRvc4::setMotionEstimator), py::arg("enable"), DOC(dai, FeatureTrackerConfigRvc4, setMotionEstimator))
106+
.def("setMotionEstimator", static_cast<FeatureTrackerConfigRvc4&(FeatureTrackerConfigRvc4::*)(dai::FeatureTrackerConfigRvc4::MotionEstimator)>(&FeatureTrackerConfigRvc4::setMotionEstimator), py::arg("config"), DOC(dai, FeatureTrackerConfigRvc4, setMotionEstimator, 2))
107+
.def("setHwMotionEstimation", &FeatureTrackerConfigRvc4::setHwMotionEstimation, DOC(dai, FeatureTrackerConfigRvc4, setHwMotionEstimation))
108+
.def("setFeatureMaintainer", static_cast<FeatureTrackerConfigRvc4&(FeatureTrackerConfigRvc4::*)(bool)>(&FeatureTrackerConfigRvc4::setFeatureMaintainer), py::arg("enable"), DOC(dai, FeatureTrackerConfigRvc4, setFeatureMaintainer))
109+
.def("setFeatureMaintainer", static_cast<FeatureTrackerConfigRvc4&(FeatureTrackerConfigRvc4::*)(dai::FeatureTrackerConfigRvc4::FeatureMaintainer)>(&FeatureTrackerConfigRvc4::setFeatureMaintainer), py::arg("config"), DOC(dai, FeatureTrackerConfigRvc4, setFeatureMaintainer, 2))
110+
.def("setNumMaxFeatures", &FeatureTrackerConfigRvc4::setNumMaxFeatures, py::arg("numMaxFeatures"), DOC(dai, FeatureTrackerConfigRvc4, setNumMaxFeatures))
111+
.def("setHarrisCornerDetectorThreshold", &FeatureTrackerConfigRvc4::setHarrisCornerDetectorThreshold, py::arg("cornerDetectorThreshold"), DOC(dai, FeatureTrackerConfigRvc4, setHarrisCornerDetectorThreshold))
112+
.def("setHarrisCornerDetectorRobustness", &FeatureTrackerConfigRvc4::setHarrisCornerDetectorRobustness, py::arg("cornerDetectorRobustness"), DOC(dai, FeatureTrackerConfigRvc4, setHarrisCornerDetectorRobustness))
113+
.def("setConfidence", &FeatureTrackerConfigRvc4::setConfidence, py::arg("confidenceThreshold"), DOC(dai, FeatureTrackerConfigRvc4, setConfidence))
114+
.def("setFilterCoeffs", &FeatureTrackerConfigRvc4::setFilterCoeffs, py::arg("filterCoeffs"), DOC(dai, FeatureTrackerConfigRvc4, setFilterCoeffs))
115+
116+
117+
// .def("set", &FeatureTrackerConfigRvc4::set, py::arg("config"), DOC(dai, FeatureTrackerConfigRvc4, set))
118+
// .def("get", &FeatureTrackerConfigRvc4::get, DOC(dai, FeatureTrackerConfigRvc4, get))
119+
;
120+
121+
// add aliases
122+
m.attr("FeatureTrackerConfigRvc4").attr("CornerDetector") = m.attr("FeatureTrackerConfigRvc4").attr("CornerDetector");
123+
m.attr("FeatureTrackerConfigRvc4").attr("MotionEstimator") = m.attr("FeatureTrackerConfigRvc4").attr("MotionEstimator");
124+
m.attr("FeatureTrackerConfigRvc4").attr("FeatureMaintainer") = m.attr("FeatureTrackerConfigRvc4").attr("FeatureMaintainer");
125+
126+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include "NodeBindings.hpp"
2+
#include "Common.hpp"
3+
4+
#include "depthai/pipeline/Pipeline.hpp"
5+
#include "depthai/pipeline/Node.hpp"
6+
#include "depthai/pipeline/node/FeatureTrackerRvc4.hpp"
7+
8+
9+
void bind_featuretrackerRvc4(pybind11::module& m, void* pCallstack){
10+
11+
using namespace dai;
12+
using namespace dai::node;
13+
14+
// Node and Properties declare upfront
15+
py::class_<FeatureTrackerPropertiesRvc4> featureTrackerProperties(m, "FeatureTrackerPropertiesRvc4", DOC(dai, FeatureTrackerPropertiesRvc4));
16+
auto featureTracker = ADD_NODE(FeatureTrackerRvc4);
17+
18+
///////////////////////////////////////////////////////////////////////
19+
///////////////////////////////////////////////////////////////////////
20+
///////////////////////////////////////////////////////////////////////
21+
// Call the rest of the type defines, then perform the actual bindings
22+
Callstack* callstack = (Callstack*) pCallstack;
23+
auto cb = callstack->top();
24+
callstack->pop();
25+
cb(m, pCallstack);
26+
// Actual bindings
27+
///////////////////////////////////////////////////////////////////////
28+
///////////////////////////////////////////////////////////////////////
29+
///////////////////////////////////////////////////////////////////////
30+
31+
// FeatureTrackerRvc4 properties
32+
featureTrackerProperties
33+
.def_readwrite("initialConfig", &FeatureTrackerPropertiesRvc4::initialConfig, DOC(dai, FeatureTrackerPropertiesRvc4, initialConfig))
34+
;
35+
36+
// FeatureTrackerRvc4 Node
37+
featureTracker
38+
.def_readonly("inputConfig", &FeatureTrackerRvc4::inputConfig, DOC(dai, node, FeatureTrackerRvc4, inputConfig))
39+
.def_readonly("inputImage", &FeatureTrackerRvc4::inputImage, DOC(dai, node, FeatureTrackerRvc4, inputImage))
40+
.def_readonly("outputFeatures", &FeatureTrackerRvc4::outputFeatures, DOC(dai, node, FeatureTrackerRvc4, outputFeatures))
41+
.def_readonly("passthroughInputImage", &FeatureTrackerRvc4::passthroughInputImage, DOC(dai, node, FeatureTrackerRvc4, passthroughInputImage))
42+
.def_readonly("initialConfig", &FeatureTrackerRvc4::initialConfig, DOC(dai, node, FeatureTrackerRvc4, initialConfig))
43+
44+
.def("setWaitForConfigInput", [](FeatureTrackerRvc4& obj, bool wait){
45+
// Issue a deprecation warning
46+
PyErr_WarnEx(PyExc_DeprecationWarning, "Use 'inputConfig.setWaitForMessage()' instead", 1);
47+
HEDLEY_DIAGNOSTIC_PUSH
48+
HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
49+
obj.setWaitForConfigInput(wait);
50+
HEDLEY_DIAGNOSTIC_POP
51+
}, py::arg("wait"), DOC(dai, node, FeatureTrackerRvc4, setWaitForConfigInput))
52+
53+
.def("getWaitForConfigInput", [](FeatureTrackerRvc4& obj){
54+
// Issue a deprecation warning
55+
PyErr_WarnEx(PyExc_DeprecationWarning, "Use 'inputConfig.setWaitForMessage()' instead", 1);
56+
HEDLEY_DIAGNOSTIC_PUSH
57+
HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
58+
return obj.getWaitForConfigInput();
59+
HEDLEY_DIAGNOSTIC_POP
60+
}, DOC(dai, node, FeatureTrackerRvc4, getWaitForConfigInput))
61+
62+
;
63+
daiNodeModule.attr("FeatureTrackerRvc4").attr("Properties") = featureTrackerProperties;
64+
65+
}

bindings/python/src/pipeline/node/NodeBindings.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ void bind_objecttracker(pybind11::module& m, void* pCallstack);
143143
void bind_imu(pybind11::module& m, void* pCallstack);
144144
void bind_edgedetector(pybind11::module& m, void* pCallstack);
145145
void bind_featuretracker(pybind11::module& m, void* pCallstack);
146+
void bind_featuretrackerRvc4(pybind11::module& m, void* pCallstack);
146147
void bind_apriltag(pybind11::module& m, void* pCallstack);
147148
void bind_detectionparser(pybind11::module& m, void* pCallstack);
148149
void bind_uvc(pybind11::module& m, void* pCallstack);
@@ -181,6 +182,7 @@ void NodeBindings::addToCallstack(std::deque<StackFunction>& callstack) {
181182
callstack.push_front(bind_imu);
182183
callstack.push_front(bind_edgedetector);
183184
callstack.push_front(bind_featuretracker);
185+
callstack.push_front(bind_featuretrackerRvc4);
184186
callstack.push_front(bind_apriltag);
185187
callstack.push_front(bind_detectionparser);
186188
callstack.push_front(bind_uvc);

bindings/python/tests/inherited_messages_test.py

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
dai.CameraControl,
1010
dai.EdgeDetectorConfig,
1111
dai.FeatureTrackerConfig,
12+
dai.FeatureTrackerConfigRvc4,
1213
dai.ImageManipConfig,
1314
dai.ImgDetections,
1415
dai.ImgFrame,

include/depthai/pipeline/datatype/DatatypeEnum.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ enum class DatatypeEnum : std::int32_t {
2525
IMUData,
2626
StereoDepthConfig,
2727
FeatureTrackerConfig,
28+
FeatureTrackerConfigRvc4,
2829
ToFConfig,
2930
TrackedFeatures,
3031
BenchmarkReport,

0 commit comments

Comments
 (0)